@qodalis/angular-cli
Version:
A lightweight and flexible command-line interface (CLI) tool designed to streamline workflows and automate tasks for developers.
1 lines • 320 kB
Source Map (JSON)
{"version":3,"file":"qodalis-angular-cli.mjs","sources":["../../../projects/cli/src/lib/cli/tokens/index.ts","../../../projects/cli/src/lib/cli/state/cli-state-store.ts","../../../projects/cli/src/lib/cli/state/cli-state-store-manager.ts","../../../projects/cli/src/lib/cli/context/cli-command-executution-context.ts","../../../projects/cli/src/lib/cli/services/cli-terminal-writer.ts","../../../projects/cli/src/lib/cli/services/progress-bars/cli-terminal-spinner.ts","../../../projects/cli/src/lib/cli/services/progress-bars/cli-terminal-progress-bar.ts","../../../projects/cli/src/lib/cli/services/cli-clipboard.ts","../../../projects/cli/src/lib/cli/context/errors/index.ts","../../../projects/cli/src/lib/cli/context/cli-execution-process.ts","../../../projects/cli/src/lib/cli/services/progress-bars/cli-terminal-text-animator.ts","../../../projects/cli/src/lib/cli/context/cli-execution-context.ts","../../../projects/cli/src/lib/cli/storage/cli-key-value-store.ts","../../../projects/cli/src/lib/cli/services/system/cli-boot.ts","../../../projects/cli/src/lib/version.ts","../../../projects/cli/src/lib/cli/constants/index.ts","../../../projects/cli/src/lib/utils/command-parser.ts","../../../projects/cli/src/lib/utils/dependency-injection.ts","../../../projects/cli/src/lib/utils/index.ts","../../../projects/cli/src/lib/cli/services/system/cli-welcome-message.service.ts","../../../projects/cli/src/lib/cli/processors/theme/types/index.ts","../../../projects/cli/src/lib/cli/services/cli-command-history.service.ts","../../../projects/cli/src/lib/cli/services/cli-user-session.service.ts","../../../projects/cli/src/lib/cli/services/cli-users-store.service.ts","../../../projects/cli/src/lib/utils/args-parser.ts","../../../projects/cli/src/lib/cli/services/cli-command-executor.service.ts","../../../projects/cli/src/lib/cli/services/cli-default-ping-server.service.ts","../../../projects/cli/src/lib/cli/services/script-loader.service.ts","../../../projects/cli/src/lib/addons/overlay.ts","../../../projects/cli/src/lib/cli-terminal/cli-terminal.component.ts","../../../projects/cli/src/lib/cli-terminal/cli-terminal.component.html","../../../projects/cli/src/lib/cli/cli.component.ts","../../../projects/cli/src/lib/cli/cli.component.html","../../../projects/cli/src/lib/collapsable-content/collapsable-content.component.ts","../../../projects/cli/src/lib/collapsable-content/collapsable-content.component.html","../../../projects/cli/src/lib/services/cli-can-view.service.ts","../../../projects/cli/src/lib/cli-panel/cli-panel.component.ts","../../../projects/cli/src/lib/cli-panel/cli-panel.component.html","../../../projects/cli/src/lib/cli/processors/cli-ping-command-processor.ts","../../../projects/cli/src/lib/cli/processors/cli-eval-command-processor.ts","../../../projects/cli/src/lib/cli/processors/system/cli-feedback-command-processor.ts","../../../projects/cli/src/lib/utils/arrays.ts","../../../projects/cli/src/lib/cli/processors/system/cli-help-command-processor.ts","../../../projects/cli/src/lib/cli/processors/system/cli-history-command-processor.ts","../../../projects/cli/src/lib/cli/processors/system/cli-hot-keys-command-processor.ts","../../../projects/cli/src/lib/cli/services/cli-package-manager.service.ts","../../../projects/cli/src/lib/cli/processors/system/cli-packages-command-processor.ts","../../../projects/cli/src/lib/cli/processors/system/cli-version-command-processor.ts","../../../projects/cli/src/lib/cli/processors/system/index.ts","../../../projects/cli/src/lib/cli/processors/misc/cli-clear-command-processor.ts","../../../projects/cli/src/lib/cli/processors/misc/cli-uname-command-processor.ts","../../../projects/cli/src/lib/cli/processors/misc/cli-echo-command-processor.ts","../../../projects/cli/src/lib/cli/processors/misc/cli-alias-command-processor.ts","../../../projects/cli/src/lib/cli/processors/misc/cli-unalias-command-processor.ts","../../../projects/cli/src/lib/cli/processors/misc/cli-sleep-command-processor.ts","../../../projects/cli/src/lib/cli/processors/misc/index.ts","../../../projects/cli/src/lib/cli/processors/users/cli-add-user-command-processor.ts","../../../projects/cli/src/lib/cli/processors/users/cli-list-users-command-processor.ts","../../../projects/cli/src/lib/cli/processors/users/cli-switch-user-command-processor.ts","../../../projects/cli/src/lib/cli/processors/users/cli-whoami-command-processor.ts","../../../projects/cli/src/lib/cli/processors/users/index.ts","../../../projects/cli/src/lib/services/cli-logger.service.ts","../../../projects/cli/src/lib/cli/services/cli-command-processor-registry.ts","../../../projects/cli/src/lib/cli/services/system/cli-service-provider.ts","../../../projects/cli/src/lib/cli/processors/theme/cli-theme-command-processor.ts","../../../projects/cli/src/lib/index.ts","../../../projects/cli/src/lib/cli.module.ts","../../../projects/cli/src/public-api.ts","../../../projects/cli/src/qodalis-angular-cli.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport {\n ICliCommandProcessor,\n ICliCommandProcessorRegistry,\n ICliLogger,\n ICliPingServerService,\n ICliServiceProvider,\n ICliUserSessionService,\n ICliUsersStoreService,\n} from '@qodalis/cli-core';\n\n/**\n * Represents a command processor token for dependency injection\n */\nexport const CliCommandProcessor_TOKEN = new InjectionToken<\n ICliCommandProcessor[]\n>('cli-processors');\n\n/**\n * Represents a user session service token for dependency injection\n */\nexport const ICliUserSessionService_TOKEN =\n new InjectionToken<ICliUserSessionService>('cli-user-session-service');\n\n/**\n * Represents a user store service token for dependency injection\n */\nexport const ICliUsersStoreService_TOKEN = new InjectionToken<\n ICliUsersStoreService[]\n>('cli-users-store-service');\n\n/**\n * Represents a ping server service token for dependency injection\n */\nexport const ICliPingServerService_TOKEN = new InjectionToken<\n ICliPingServerService[]\n>('cli-ping-server-service');\n\n/**\n * Represents a logger token for dependency injection\n */\nexport const CliLogger_TOKEN = new InjectionToken<ICliLogger>('cli-logger');\n\n/**\n * Represents a command processor registry token for dependency injection\n */\nexport const CliProcessorsRegistry_TOKEN =\n new InjectionToken<ICliCommandProcessorRegistry>('cli-processors-registry');\n\nexport const CliServiceProvider_TOKEN = new InjectionToken<ICliServiceProvider>(\n 'cli-service-provider',\n);\n","import {\n CliState,\n ICliServiceProvider,\n ICliKeyValueStore,\n ICliStateStore,\n} from '@qodalis/cli-core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nexport class CliStateStore implements ICliStateStore {\n private state$: BehaviorSubject<CliState>;\n\n private storageKey: string;\n\n constructor(\n private readonly services: ICliServiceProvider,\n public readonly name: string,\n private readonly initialState: CliState,\n ) {\n this.state$ = new BehaviorSubject<CliState>(initialState);\n\n this.storageKey = `store-state-${name}`;\n }\n\n getState<T extends CliState = CliState>(): T {\n return this.state$.getValue() as T;\n }\n\n updateState(newState: Partial<CliState>): void {\n this.state$.next({ ...this.getState(), ...newState });\n }\n\n select<K>(selector: (state: CliState) => K): Observable<K> {\n return this.state$.asObservable().pipe(\n map(selector),\n distinctUntilChanged(), // Emit only when the selected value changes\n );\n }\n\n subscribe(callback: (state: CliState) => void): Subscription {\n return this.state$.asObservable().subscribe(callback);\n }\n\n reset(): void {\n this.state$.next(this.initialState);\n }\n\n async persist(): Promise<void> {\n const keyValueStore = this.services.get<ICliKeyValueStore>(\n 'cli-key-value-store',\n );\n\n await keyValueStore.set(this.storageKey, this.getState());\n }\n\n async initialize(): Promise<void> {\n const keyValueStore = this.services.get<ICliKeyValueStore>(\n 'cli-key-value-store',\n );\n\n const state = await keyValueStore.get<CliState>(this.storageKey);\n\n if (state) {\n this.state$.next(state);\n }\n }\n}\n","import {\n ICliCommandProcessor,\n ICliCommandProcessorRegistry,\n ICliServiceProvider,\n ICliStateStore,\n} from '@qodalis/cli-core';\nimport { CliStateStore } from './cli-state-store';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n CliProcessorsRegistry_TOKEN,\n CliServiceProvider_TOKEN,\n} from '../tokens';\n\n@Injectable()\nexport class CliStateStoreManager {\n private stores = new Map<string, ICliStateStore>();\n\n constructor(\n @Inject(CliServiceProvider_TOKEN)\n private readonly services: ICliServiceProvider,\n ) {}\n\n public getStateStore(\n name: string,\n defaultState?: Record<string, any>,\n ): ICliStateStore {\n if (!this.stores.has(name)) {\n this.stores.set(\n name,\n new CliStateStore(this.services, name, defaultState ?? {}),\n );\n }\n\n return this.stores.get(name)!;\n }\n\n public getProcessorStateStore(\n processor: ICliCommandProcessor,\n ): ICliStateStore {\n const registry = this.services.get<ICliCommandProcessorRegistry>(\n CliProcessorsRegistry_TOKEN,\n );\n\n const rootProcessor = registry.getRootProcessor(processor);\n\n return this.getStateStore(\n rootProcessor.stateConfiguration?.storeName ||\n rootProcessor.command,\n rootProcessor.stateConfiguration?.initialState,\n );\n }\n}\n","import {\n CliOptions,\n ICliClipboard,\n ICliCommandExecutorService,\n ICliCommandProcessor,\n ICliServiceProvider,\n ICliExecutionContext,\n ICliExecutionProcess,\n ICliLogger,\n ICliPercentageProgressBar,\n ICliSpinner,\n ICliStateStore,\n ICliTerminalWriter,\n ICliUserSession,\n ICliTextAnimator,\n} from '@qodalis/cli-core';\nimport { Terminal } from '@xterm/xterm';\nimport { Subject } from 'rxjs';\nimport { CliExecutionContext } from './cli-execution-context';\nimport { CliStateStoreManager } from '../state/cli-state-store-manager';\n\nexport class CliCommandExecutionContext implements ICliExecutionContext {\n userSession?: ICliUserSession | undefined;\n spinner?: ICliSpinner | undefined;\n progressBar: ICliPercentageProgressBar;\n textAnimator?: ICliTextAnimator | undefined;\n onAbort: Subject<void>;\n terminal: Terminal;\n writer: ICliTerminalWriter;\n executor: ICliCommandExecutorService;\n clipboard: ICliClipboard;\n state: ICliStateStore;\n options?: CliOptions | undefined;\n showPrompt: () => void;\n setContextProcessor: (\n processor: ICliCommandProcessor,\n silent?: boolean,\n ) => void;\n process: ICliExecutionProcess;\n logger: ICliLogger;\n services: ICliServiceProvider;\n\n constructor(\n public readonly context: CliExecutionContext,\n processor: ICliCommandProcessor,\n ) {\n this.userSession = context.userSession;\n this.spinner = context.spinner;\n this.progressBar = context.progressBar;\n this.textAnimator = context.textAnimator;\n this.onAbort = context.onAbort;\n this.terminal = context.terminal;\n this.writer = context.writer;\n this.executor = context.executor;\n this.clipboard = context.clipboard;\n this.options = context.options;\n this.showPrompt = context.showPrompt;\n this.setContextProcessor = context.setContextProcessor;\n this.process = context.process;\n this.logger = context.logger;\n this.services = context.services;\n\n this.state = context.services\n .get<CliStateStoreManager>(CliStateStoreManager)\n .getProcessorStateStore(processor);\n }\n}\n","import { Terminal } from '@xterm/xterm';\nimport {\n CliBackgroundColor,\n CliForegroundColor,\n CliIcon,\n formatJson,\n ICliTerminalWriter,\n} from '@qodalis/cli-core';\n\nexport class CliTerminalWriter implements ICliTerminalWriter {\n constructor(public readonly terminal: Terminal) {}\n\n write(text: string): void {\n this.terminal.write(text);\n }\n writeln(text?: string): void {\n this.terminal.writeln(text || '');\n }\n\n public writeSuccess(message: string) {\n this.writeLog(message, CliForegroundColor.Green, CliIcon.CheckIcon);\n }\n\n public writeInfo(message: string) {\n this.writeLog(message, CliForegroundColor.Cyan, CliIcon.InfoIcon);\n }\n\n public writeWarning(message: string) {\n this.writeLog(message, CliForegroundColor.Yellow, CliIcon.WarningIcon);\n }\n\n public writeError(message: string) {\n this.writeLog(message, CliForegroundColor.Red, CliIcon.CrossIcon);\n }\n\n private writeLog(\n message: string,\n color: CliForegroundColor,\n icon?: CliIcon,\n ) {\n this.terminal.writeln(\n this.wrapInColor(icon ? icon + ' ' + message : message, color),\n );\n }\n\n public writeDivider(options?: {\n color?: CliForegroundColor;\n length?: number;\n char?: string;\n }) {\n const { color, length: oLength, char: oChar } = options || {};\n\n let length = oLength ?? 80;\n let char = oChar ?? '-';\n\n if (this.terminal.cols < length) {\n length = this.terminal.cols;\n }\n\n let text = char.repeat(length);\n\n if (color) {\n text = this.wrapInColor(text, color);\n }\n\n this.writeln(text);\n }\n\n public wrapInColor(text: string, color: CliForegroundColor): string {\n return color + text + CliForegroundColor.Reset;\n }\n\n public wrapInBackgroundColor(text: string, color: CliBackgroundColor) {\n return color + text + CliForegroundColor.Reset;\n }\n\n public writeJson(json: any) {\n this.terminal.writeln(formatJson(json));\n }\n\n public writeToFile(fileName: string, content: string): void {\n const blob = new Blob([content], { type: 'text/plain' });\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = fileName;\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n public writeObjectsAsTable(objects: any[]): void {\n if (objects.length === 0) {\n this.writeInfo('No objects to display');\n return;\n }\n\n const headers = Object.keys(objects[0]);\n const rows = objects.map((object) =>\n headers.map((header) => object[header]),\n );\n\n this.writeTable(headers, rows);\n }\n\n public writeTable(headers: string[], rows: string[][]): void {\n // Calculate column widths\n const colWidths = headers.map((header, colIndex) =>\n Math.max(\n header.length,\n ...rows.map((row) => row[colIndex]?.length || 0),\n ),\n );\n\n // Function to pad text to a specific width\n const padText = (text: string, width: number) =>\n text?.toString()?.padEnd(width, ' ');\n\n // Write the header\n this.write(\n headers\n .map((header, i) =>\n this.wrapInColor(\n padText(header, colWidths[i]),\n CliForegroundColor.Yellow,\n ),\n )\n .join(' | ') + '\\r\\n',\n );\n this.write(\n '-'.repeat(colWidths.reduce((sum, w) => sum + w + 3, -3)) + '\\r\\n',\n );\n\n // Write the rows\n rows.forEach((row) => {\n this.write(\n row.map((cell, i) => padText(cell, colWidths[i])).join(' | ') +\n '\\r\\n',\n );\n });\n }\n}\n","import { Terminal } from '@xterm/xterm';\nimport { ICliSpinner } from '@qodalis/cli-core';\n\nexport class CliTerminalSpinner implements ICliSpinner {\n isRunning: boolean = false;\n\n text: string = '';\n\n constructor(private terminal: Terminal) {}\n\n private spinnerInterval?: ReturnType<typeof setInterval> | null;\n private spinnerFrames = ['|', '/', '-', '\\\\'];\n private spinnerIndex = 0;\n\n public show(text?: string): void {\n if (text) {\n this.text = text;\n }\n\n this.isRunning = true;\n this.spinnerInterval = setInterval(() => {\n // Clear the current line\n this.terminal.write('\\x1b[2K\\r');\n // Write the spinner frame\n this.terminal.write(\n this.spinnerFrames[this.spinnerIndex] +\n (this.text.length > 0 ? ` ${this.text}` : ''),\n );\n // Update the frame index\n this.spinnerIndex =\n (this.spinnerIndex + 1) % this.spinnerFrames.length;\n }, 100);\n }\n\n public hide(): void {\n this.isRunning = false;\n if (this.spinnerInterval) {\n clearInterval(this.spinnerInterval);\n this.spinnerInterval = null;\n }\n\n // Clear the spinner character and reset the line\n this.terminal.write('\\x1b[2K\\r');\n\n this.text = '';\n }\n\n public setText(text: string) {\n this.text = text;\n }\n}\n","import { Terminal } from '@xterm/xterm';\nimport {\n CliPercentageProgressBarUpdateValueOptions,\n ICliPercentageProgressBar,\n} from '@qodalis/cli-core';\n\nexport class CliTerminalProgressBar implements ICliPercentageProgressBar {\n isRunning: boolean = false;\n\n private text: string = '';\n private progressBarInterval?: ReturnType<typeof setInterval> | null;\n private progress = 0;\n private total = 100;\n private progressText = '';\n\n constructor(private terminal: Terminal) {}\n\n public show(text?: string): void {\n this.isRunning = true;\n this.progress = 0;\n this.text = text || '';\n\n // Update progress bar every 100ms\n this.progressBarInterval = setInterval(() => {\n this.updateProgressBar();\n\n // Stop when progress reaches 100%\n if (this.progress > this.total) {\n this.progress = this.total;\n this.hide(); // Stop the progress bar\n }\n }, 100);\n }\n\n public hide(): void {\n this.isRunning = false;\n if (this.progressBarInterval) {\n clearInterval(this.progressBarInterval);\n this.progressBarInterval = null;\n }\n\n this.clearCurrentLine();\n\n this.text = '';\n this.progressText = '';\n }\n\n public update(\n progress: number,\n options?: CliPercentageProgressBarUpdateValueOptions,\n ) {\n if (options?.type === 'increment') {\n this.progress += progress;\n } else {\n this.progress = progress;\n }\n\n if (this.progress > this.total) {\n this.progress = this.total;\n }\n\n this.updateProgressBar();\n }\n\n public complete() {\n this.progress = 100;\n this.hide();\n }\n\n public setText(text: string) {\n this.text = text;\n\n this.updateProgressBar();\n }\n\n private updateProgressBar(): void {\n const totalBars = 50; // Length of the progress bar\n const filledBars = Math.round((this.progress / this.total) * totalBars);\n const emptyBars = totalBars - filledBars;\n\n const progressBar = `[${'#'.repeat(filledBars)}${'.'.repeat(emptyBars)}]`;\n const percentage = `${this.progress}%`.padStart(4, ' ');\n const text = this.text.length > 0 ? ` ${this.text}` : '';\n\n this.clearCurrentLine();\n this.progressText = `${progressBar} ${percentage} ${text}`;\n\n this.terminal.write(this.progressText); // Write progress bar\n }\n\n private clearCurrentLine(): void {\n const wrappedLines = Math.ceil(\n this.progressText.length / this.terminal.cols,\n );\n\n for (let i = 0; i < wrappedLines; i++) {\n this.terminal.write('\\x1b[2K'); // Clear the current line\n this.terminal.write('\\r'); // Move the cursor to the start of the line\n if (i < wrappedLines - 1) {\n this.terminal.write('\\x1b[F'); // Move the cursor up for all but the last line\n }\n\n if (i === wrappedLines - 1) {\n this.terminal.write('\\r');\n }\n }\n }\n}\n","import { ICliClipboard, ICliExecutionContext } from '@qodalis/cli-core';\n\nexport class CliClipboard implements ICliClipboard {\n constructor(private readonly context: ICliExecutionContext) {}\n\n async write(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n } catch (error) {\n this.context.writer.writeError('Failed to write to clipboard');\n }\n }\n\n async read(): Promise<string> {\n try {\n return await navigator.clipboard.readText();\n } catch (error) {\n this.context.writer.writeError('Failed to read from clipboard');\n return '';\n }\n }\n}\n","export class ProcessExitedError extends Error {\n code: number;\n\n constructor(code: number) {\n super(`Process exited with code ${code}`);\n this.name = 'ProcessExitedError';\n this.code = code;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { ICliExecutionContext, ICliExecutionProcess } from '@qodalis/cli-core';\nimport { ProcessExitedError } from './errors';\n\nexport class CliExecutionProcess implements ICliExecutionProcess {\n exited?: boolean | undefined;\n exitCode?: number | undefined;\n running: boolean = false;\n data: any | undefined;\n\n constructor(private readonly context: ICliExecutionContext) {}\n\n exit(\n code?: number,\n options?: {\n silent?: boolean;\n },\n ) {\n code = code ?? 0;\n\n this.exited = true;\n this.exitCode = code;\n\n if (!options?.silent) {\n throw new ProcessExitedError(code);\n }\n }\n\n output(data: any) {\n this.data = data;\n }\n\n start() {\n this.exited = undefined;\n this.exitCode = undefined;\n this.data = undefined;\n this.running = true;\n }\n\n end() {\n this.running = false;\n this.exitCode = 0;\n }\n}\n","import { Terminal } from '@xterm/xterm';\nimport {\n CliTextAnimatorOptions,\n delay,\n ICliTextAnimator,\n} from '@qodalis/cli-core';\n\nexport class CliTerminalTextAnimator implements ICliTextAnimator {\n isRunning: boolean = false;\n\n private animationInterval?: ReturnType<typeof setInterval> | null;\n private text: string = '';\n\n constructor(private terminal: Terminal) {}\n\n public show(text?: string): void {\n this.showText(text || '');\n }\n\n showText(text: string, options?: CliTextAnimatorOptions) {\n const { speed, removeAfterTyping } = options || {};\n\n if (this.isRunning) {\n return; // Prevent multiple animations\n }\n\n this.isRunning = true;\n this.text = text || this.text;\n\n let index = 0;\n let isTyping = true;\n\n this.animationInterval = setInterval(() => {\n if (isTyping) {\n // Write text character by character\n this.terminal.write(this.text[index]);\n index++;\n\n // Switch to erasing mode once typing is done\n if (index === this.text.length) {\n isTyping = false;\n }\n } else if (removeAfterTyping) {\n clearInterval(this.animationInterval!);\n this.animationInterval = null;\n\n delay(1000).then(() => {\n for (let i = 0; i < this.text.length; i++) {\n this.terminal.write('\\b \\b');\n }\n });\n\n this.isRunning = false;\n } else {\n // Erase text character by character\n this.terminal.write('\\b \\b'); // Backspace, overwrite with space, and backspace again\n index--;\n\n // Stop animation once all characters are erased\n if (index < 0) {\n clearInterval(this.animationInterval!);\n this.animationInterval = null;\n this.isRunning = false;\n }\n }\n }, speed || 100);\n }\n\n /**\n * Hide the animation and reset the state.\n */\n public hide(): void {\n if (!this.isRunning) {\n return; // Prevent stopping if not running\n }\n\n this.isRunning = false;\n\n if (this.animationInterval) {\n clearInterval(this.animationInterval);\n this.animationInterval = null;\n }\n\n this.text = '';\n }\n}\n","import { Terminal } from '@xterm/xterm';\nimport { Subject } from 'rxjs';\nimport {\n ICliExecutionContext,\n ICliTerminalWriter,\n ICliUserSession,\n CliOptions,\n ICliSpinner,\n ICliPercentageProgressBar,\n ICliClipboard,\n ICliExecutionProcess,\n ICliCommandProcessor,\n ICliLogger,\n CliLogLevel,\n ICliServiceProvider,\n ICliStateStore,\n ICliTextAnimator,\n} from '@qodalis/cli-core';\nimport { CliCommandExecutorService } from '../services/cli-command-executor.service';\nimport { CliTerminalWriter } from '../services/cli-terminal-writer';\nimport { CliTerminalSpinner } from '../services/progress-bars/cli-terminal-spinner';\nimport { CliTerminalProgressBar } from '../services/progress-bars/cli-terminal-progress-bar';\nimport { CliClipboard } from '../services/cli-clipboard';\nimport { CliExecutionProcess } from './cli-execution-process';\nimport { Injector } from '@angular/core';\nimport { CliLogger_TOKEN, CliServiceProvider_TOKEN } from '../tokens';\nimport { CliStateStoreManager } from '../state/cli-state-store-manager';\nimport { CliTerminalTextAnimator } from '../services/progress-bars/cli-terminal-text-animator';\n\nexport class CliExecutionContext implements ICliExecutionContext {\n public userSession?: ICliUserSession;\n\n public contextProcessor?: ICliCommandProcessor;\n\n public readonly writer: ICliTerminalWriter;\n\n public readonly spinner: ICliSpinner;\n\n public readonly textAnimator: ICliTextAnimator;\n\n public readonly progressBar: ICliPercentageProgressBar;\n\n public readonly options?: CliOptions;\n\n public readonly onAbort = new Subject<void>();\n\n public readonly state: ICliStateStore;\n\n public readonly clipboard: ICliClipboard;\n\n public readonly process: ICliExecutionProcess;\n\n public readonly logger: ICliLogger;\n\n public readonly services: ICliServiceProvider;\n\n constructor(\n injector: Injector,\n public terminal: Terminal,\n public executor: CliCommandExecutorService,\n public showPrompt: (options?: {\n reset?: boolean;\n newLine?: boolean;\n }) => void,\n cliOptions?: CliOptions,\n ) {\n //initialize services\n this.services = injector.get(CliServiceProvider_TOKEN);\n\n //initialize state store\n const stateStoreManager = injector.get(CliStateStoreManager);\n this.state = stateStoreManager.getStateStore('shared');\n\n this.options = cliOptions;\n this.writer = new CliTerminalWriter(terminal);\n\n this.spinner = new CliTerminalSpinner(terminal);\n this.progressBar = new CliTerminalProgressBar(terminal);\n this.textAnimator = new CliTerminalTextAnimator(terminal);\n\n this.clipboard = new CliClipboard(this);\n this.process = new CliExecutionProcess(this);\n\n //initialize logger\n this.logger = injector.get(CliLogger_TOKEN);\n this.logger.setCliLogLevel(cliOptions?.logLevel || CliLogLevel.ERROR);\n }\n\n setContextProcessor(\n processor: ICliCommandProcessor | undefined,\n silent?: boolean,\n ): void {\n if (!processor) {\n this.contextProcessor = processor;\n\n return;\n }\n\n if (!silent) {\n this.writer.writeInfo(\n 'Set ' +\n processor?.command +\n ' as context processor, press Ctrl+C to exit',\n );\n }\n\n this.contextProcessor = processor;\n }\n\n /**\n * Checks if there is a progress running\n * @returns true if there is a progress running\n * @returns false if there is no progress running\n */\n public isProgressRunning(): boolean {\n return (\n this.progressBar.isRunning ||\n this.spinner.isRunning ||\n this.textAnimator.isRunning\n );\n }\n\n /**\n * Aborts the current command\n */\n public abort(): void {\n this.onAbort.next();\n }\n\n public setSession(session: ICliUserSession): void {\n this.userSession = session;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ICliKeyValueStore } from '@qodalis/cli-core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliKeyValueStore implements ICliKeyValueStore {\n private dbName = 'CliKeyValueDB';\n private storeName = 'KeyValueStore';\n private db!: IDBDatabase;\n\n constructor() {}\n\n /**\n * Initializes the IndexedDB instance.\n */\n public initialize(): Promise<void> {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName, 1);\n\n request.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result;\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName);\n }\n };\n\n request.onsuccess = (event) => {\n this.db = (event.target as IDBOpenDBRequest).result;\n resolve();\n };\n\n request.onerror = (event) => {\n console.error('Error initializing IndexedDB:', event);\n reject();\n };\n });\n }\n\n /**\n * Retrieves a value by key.\n * @param key - The key to retrieve the value for.\n * @returns A promise resolving to the value or undefined if not found.\n */\n async get<T = any>(key: string): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n try {\n const transaction = this.db.transaction(\n this.storeName,\n 'readonly',\n );\n const store = transaction.objectStore(this.storeName);\n const request = store.get(key);\n\n request.onsuccess = () => {\n resolve(request.result as T);\n };\n\n request.onerror = (event) => {\n console.error('Error getting value:', event);\n reject(undefined);\n };\n } catch (e) {\n console.error('Error getting value:', e);\n reject(undefined);\n }\n });\n }\n\n /**\n * Sets a key-value pair in the store.\n * @param key - The key to set.\n * @param value - The value to store.\n * @returns A promise resolving when the value is stored.\n */\n async set(key: string, value: any): Promise<void> {\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(\n this.storeName,\n 'readwrite',\n );\n const store = transaction.objectStore(this.storeName);\n const request = store.put(value, key);\n\n request.onsuccess = () => resolve();\n\n request.onerror = (event) => {\n console.error('Error setting value:', event);\n reject();\n };\n });\n }\n\n /**\n * Removes a key-value pair by key.\n * @param key - The key to remove.\n * @returns A promise resolving when the key is removed.\n */\n async remove(key: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(\n this.storeName,\n 'readwrite',\n );\n const store = transaction.objectStore(this.storeName);\n const request = store.delete(key);\n\n request.onsuccess = () => resolve();\n\n request.onerror = (event) => {\n console.error('Error removing value:', event);\n reject();\n };\n });\n }\n\n /**\n * Clears all key-value pairs from the store.\n * @returns A promise resolving when the store is cleared.\n */\n async clear(): Promise<void> {\n return new Promise((resolve, reject) => {\n const transaction = this.db.transaction(\n this.storeName,\n 'readwrite',\n );\n const store = transaction.objectStore(this.storeName);\n const request = store.clear();\n\n request.onsuccess = () => resolve();\n\n request.onerror = (event) => {\n console.error('Error clearing store:', event);\n reject();\n };\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n CliIcon,\n delay,\n ICliCommandChildProcessor,\n ICliCommandProcessor,\n ICliCommandProcessorRegistry,\n ICliUmdModule,\n initializeBrowserEnvironment,\n} from '@qodalis/cli-core';\nimport {\n CliCommandProcessor_TOKEN,\n CliProcessorsRegistry_TOKEN,\n} from '../../tokens';\nimport { CliCommandExecutionContext, CliExecutionContext } from '../../context';\nimport { CliKeyValueStore } from '../../storage/cli-key-value-store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliBoot {\n private initialized = false;\n private initializing = false;\n\n constructor(\n @Inject(CliCommandProcessor_TOKEN)\n private readonly implementations: ICliCommandProcessor[],\n\n @Inject(CliProcessorsRegistry_TOKEN)\n private readonly registry: ICliCommandProcessorRegistry,\n ) {}\n\n public async boot(context: CliExecutionContext): Promise<void> {\n context.spinner?.show(CliIcon.Rocket + ' Booting...');\n\n if (this.initialized || this.initializing) {\n await this.bootShared(context);\n\n context.spinner?.hide();\n\n return;\n }\n\n this.initializing = true;\n\n await this.registerServices(context);\n\n initializeBrowserEnvironment({\n context,\n handlers: [\n async (module: ICliUmdModule) => {\n await this.registerUmdModule(module, context);\n },\n ],\n });\n\n let processors = this.implementations;\n\n //TODO: refactor in a better way\n if (!context.options?.usersModule?.enabled) {\n processors = processors.filter(\n (p) => p.metadata?.module !== 'users',\n );\n }\n\n processors.forEach((impl) => this.registry.registerProcessor(impl));\n\n await this.bootShared(context);\n\n context.spinner?.hide();\n\n this.initialized = true;\n }\n\n private async bootShared(context: CliExecutionContext): Promise<void> {\n await this.initializeProcessorsInternal(\n context,\n this.registry.processors,\n );\n\n await delay(300);\n }\n\n private async initializeProcessorsInternal(\n context: CliExecutionContext,\n processors: ICliCommandProcessor[],\n parent?: ICliCommandProcessor,\n ): Promise<void> {\n try {\n for (const p of processors) {\n (p as ICliCommandChildProcessor).parent = parent;\n\n if (p.initialize) {\n const processorContext = new CliCommandExecutionContext(\n context,\n p,\n );\n\n await processorContext.state.initialize();\n\n await p.initialize(processorContext);\n }\n\n if (p.processors && p.processors.length > 0) {\n await this.initializeProcessorsInternal(\n context,\n p.processors,\n p,\n );\n }\n }\n } catch (e) {\n context.writer.writeError(`Error initializing processors: ${e}`);\n }\n }\n\n private async registerServices(\n context: CliExecutionContext,\n ): Promise<void> {\n context.services.set([\n {\n provide: 'cli-key-value-store',\n useValue: context.services.get(CliKeyValueStore),\n },\n ]);\n }\n\n private async registerUmdModule(\n module: ICliUmdModule,\n context: CliExecutionContext,\n ): Promise<void> {\n const { logger } = context;\n if (!module) {\n return;\n }\n\n if (module.processors) {\n logger.info('Registering processors from module ' + module.name);\n for (const processor of module.processors) {\n this.registry.registerProcessor(processor);\n }\n\n await this.initializeProcessorsInternal(context, module.processors);\n } else {\n logger.warn(`Module ${module.name} has no processors`);\n }\n }\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '1.0.35';\n ","export const CLi_Name_Art = `\n ____ _ _ _ _____ _ _____\n / __ \\\\ | | | (_) / ____| | |_ _|\n | | | | ___ __| | __ _| |_ ___ | | | | | |\n | | | |/ _ \\\\ / _\\` |/ _\\` | | / __| | | | | | |\n | |__| | (_) | (_| | (_| | | \\\\__ \\\\ | |____| |____ _| |_\n \\\\___\\\\_\\\\\\\\___/ \\\\__,_|\\\\__,_|_|_|___/ \\\\_____|______|_____|\n`;\n\nexport const hotkeysInfo = [\n {\n key: 'Ctrl + C',\n description:\n 'Cancel the current command (if possible) or copy the current selection',\n },\n {\n key: 'Ctrl + V',\n description: 'Paste the copied text',\n },\n {\n key: 'Ctrl + L',\n description: 'Clear the screen',\n },\n];\n","export type ParsedArg = {\n name: string;\n value: any;\n};\n\nexport type CommandParserOutput = {\n commandName: string;\n args: ParsedArg[];\n};\n\n/**\n * A utility class for parsing command strings into command names and arguments.\n */\nexport class CommandParser {\n /**\n * Parse a command string into a full command name and arguments.\n * @param command - The full command string.\n * @returns An object containing the full command name and arguments.\n */\n parse(command: string): CommandParserOutput {\n try {\n // Match quoted strings, single-quoted strings, or unquoted words\n const regex =\n /(?:--?([a-zA-Z0-9-_]+)(?:=(\"[^\"]*\"|'[^']*'|[^\\s]+))?)|(?:[^\\s]+)/g;\n\n const matches = Array.from(command.matchAll(regex));\n\n if (matches.length === 0) {\n throw new Error('Invalid command string');\n }\n\n const commandParts: string[] = [];\n const args: ParsedArg[] = [];\n\n // Process matches\n matches.forEach((match) => {\n if (match[1]) {\n // Handle arguments\n const key = match[1];\n let value: any = match[2];\n if (value) {\n // Remove surrounding quotes, if any\n value = value.replace(/^['\"]|['\"]$/g, '');\n } else {\n // Flag without a value\n value = true;\n }\n args.push({\n name: key,\n value: this.parseValue(value),\n });\n } else if (!match[0].startsWith('--')) {\n // Command name\n commandParts.push(match[0]);\n }\n });\n\n const commandName = commandParts.join(' ');\n\n return {\n commandName,\n args,\n };\n } catch (e) {\n console.error('Unable to parse the command:', command, e);\n\n return {\n commandName: '',\n args: [],\n };\n }\n }\n\n /**\n * Parse individual values to their appropriate type.\n * @param value - The value to parse.\n * @returns The parsed value.\n */\n private parseValue(value: string): any {\n if (!isNaN(Number(value))) return Number(value); // Convert numeric strings to numbers\n if (value === 'true' || value === 'false') return value === 'true'; // Convert \"true\"/\"false\" to boolean\n return value; // Return as string otherwise\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { ICliCommandProcessor } from '@qodalis/cli-core';\nimport { CliCommandProcessor_TOKEN } from '../cli/tokens';\n\nexport const resolveCliProvider = <T extends any>(\n token: InjectionToken<T>,\n provider: new (...args: any[]) => T,\n): Provider => ({\n provide: token,\n useExisting: provider,\n multi: true,\n});\n\nexport const resolveCommandProcessorProvider = <T extends ICliCommandProcessor>(\n provider: new (...args: any[]) => T,\n): Provider => [\n provider,\n resolveCliProvider<T>(CliCommandProcessor_TOKEN, provider),\n];\n","export { CommandParser } from './command-parser';\n\nexport const openLink = (link: string) => {\n try {\n window.open(link, '_blank');\n } catch (e) {\n console.error(e);\n }\n};\n\nexport const getGreetingBasedOnTime = (date?: Date) => {\n const currentHour = (date ?? new Date()).getHours();\n\n if (currentHour >= 5 && currentHour < 12) {\n return 'Good morning! Wishing you a productive day ahead!';\n } else if (currentHour >= 12 && currentHour < 18) {\n return 'Good afternoon! Keep up the great work!';\n } else if (currentHour >= 18 && currentHour < 22) {\n return 'Good evening! Hope you had a fantastic day!';\n } else {\n return 'Good night! Rest well and see you tomorrow!';\n }\n};\n\nexport * from './dependency-injection';\n","import { Injectable } from '@angular/core';\nimport { LIBRARY_VERSION } from '../../../version';\nimport { CLi_Name_Art } from '../../constants';\nimport { CliForegroundColor, ICliExecutionContext } from '@qodalis/cli-core';\nimport { getGreetingBasedOnTime } from '../../../utils';\n\n/**\n * Service that displays the welcome message to the user.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class CliWelcomeMessageService {\n /**\n * Displays the welcome message to the user.\n * @param context\n * @returns void\n */\n public displayWelcomeMessage(context: ICliExecutionContext) {\n const welcomeConfig = context.options?.welcomeMessage;\n\n // Handle the 'show' property\n if (welcomeConfig?.show) {\n const showOption = welcomeConfig.show;\n\n // Determine if the welcome message should be shown\n if (!this.shouldDisplayWelcomeMessage(showOption)) {\n context.showPrompt();\n return;\n }\n }\n\n if (welcomeConfig?.message) {\n context.terminal.writeln(welcomeConfig?.message);\n } else {\n const welcomeMessage = [\n `Welcome to Web CLI [Version ${context.writer.wrapInColor(LIBRARY_VERSION, CliForegroundColor.Green)}]`,\n '(c) 2024 Qodalis Solutions. All rights reserved.',\n CLi_Name_Art,\n '',\n context.writer.wrapInColor(\n 'Documentation: ',\n CliForegroundColor.Green,\n ) + 'https://cli-docs.qodalis.com/',\n '',\n \"Type 'help' to get started.\",\n '',\n ];\n\n welcomeMessage.forEach((line, index) => {\n context.terminal.write(line + '\\r\\n');\n });\n }\n\n this.recordWelcomeMessageDisplay();\n context.showPrompt();\n context.textAnimator?.showText(getGreetingBasedOnTime(), {\n speed: 60,\n removeAfterTyping: true,\n });\n }\n\n /**\n * Determines if the welcome message should be displayed based on the show option.\n * @param showOption - The show option from the config.\n * @returns true if the message should be displayed, false otherwise.\n */\n private shouldDisplayWelcomeMessage(\n showOption: 'always' | 'once' | 'daily' | 'never',\n ): boolean {\n const lastDisplayed = this.getLastWelcomeMessageDisplayTime();\n\n switch (showOption) {\n case 'always':\n return true;\n case 'once':\n return !lastDisplayed; // Show only if it hasn't been shown before\n case 'daily':\n if (!lastDisplayed) return true; // No previous display, show it\n const now = new Date();\n const lastDate = new Date(lastDisplayed);\n return now.toDateString() !== lastDate.toDateString(); // Compare dates\n case 'never':\n return false;\n default:\n return true;\n }\n }\n\n /**\n * Records the current time as the last display time for the welcome message.\n */\n private recordWelcomeMessageDisplay(): void {\n localStorage.setItem(\n 'cliWelcomeMessageLastDisplayed',\n new Date().toISOString(),\n );\n }\n\n /**\n * Retrieves the last display time of the welcome message.\n * @returns The ISO string of the last display time or null if not recorded.\n */\n private getLastWelcomeMessageDisplayTime(): string | null {\n return localStorage.getItem('cliWelcomeMessageLastDisplayed');\n }\n}\n","import { DefaultThemes } from '@qodalis/cli-core';\nimport { ITheme } from '@xterm/xterm';\n\nexport type ThemeState = {\n selectedTheme?: string;\n customOptions?: ITheme;\n};\n\nexport const themes = {\n ...DefaultThemes,\n};\n","import { Injectable } from '@angular/core';\nimport { CliKeyValueStore } from '../storage/cli-key-value-store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliCommandHistoryService {\n private readonly storageKey = 'cli-command-history';\n private commandHistory: string[] = [];\n\n constructor(private readonly store: CliKeyValueStore) {}\n\n public async addCommand(command: string): Promise<void> {\n const normalizedCommand = command.trim();\n if (normalizedCommand) {\n if (this.commandHistory.length > 0) {\n const lastCommand =\n this.commandHistory[this.commandHistory.length - 1];\n if (lastCommand === normalizedCommand) {\n return;\n }\n }\n this.commandHistory.push(command);\n await this.saveHistory();\n }\n }\n\n public getLastIndex(): number {\n return this.commandHistory.length;\n }\n\n public getHistory(): string[] {\n return [...this.commandHistory];\n }\n\n public async clearHistory(): Promise<void> {\n this.commandHistory = [];\n await this.saveHistory();\n }\n\n public getCommand(index: number): string | undefined {\n return this.commandHistory[index];\n }\n\n private async saveHistory(): Promise<void> {\n //save only last 500 commands\n const trimmedHistory = this.commandHistory.slice(-500);\n return await this.store.set(this.storageKey, trimmedHistory);\n }\n\n private async loadHistory(): Promise<void> {\n const savedOldHistory = localStorage.getItem('cliCommandHistory');\n if (savedOldHistory) {\n localStorage.removeItem('cliCommandHistory');\n await this.store.set(this.storageKey, JSON.parse(savedOldHistory));\n }\n\n const savedHistory = await this.store.get<string[]>(this.storageKey);\n\n if (savedHistory) {\n this.commandHistory = savedHistory;\n }\n }\n\n public async initialize(): Promise<void> {\n await this.loadHistory();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n ICliUserSessionService,\n ICliUserSession,\n ICliUsersStoreService,\n} from '@qodalis/cli-core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ICliUsersStoreService_TOKEN } from '../tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliUserSessionService implements ICliUserSessionService {\n private userSessionSubject = new BehaviorSubject<\n ICliUserSession | undefined\n >({\n user: {\n id: 'anonymous',\n name: 'Anonymous',\n email: 'anonymous',\n },\n });\n\n constructor(\n @Inject(ICliUsersStoreService_TOKEN)\n private readonly usersService: ICliUsersStoreService,\n ) {\n this.usersService.getUsers().subscribe((users) => {\n const user = users.find((u) => u.id === 'root');\n if (user) {\n this.setUserSession({\n user,\n });\n }\n });\n }\n\n async setUserSession(session: ICliUserSession): Promise<void> {\n this.userSessionSubject.next(session);\n }\n\n getUserSession(): Observable<ICliUserSession | undefined> {\n return this.userSessionSubject.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ICliUser, ICliUsersStoreService } from '@qodalis/cli-core';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliUsersStoreService implements ICliUsersStoreService {\n private localStorageKey = 'users';\n\n protected defaultUsers: ICliUser[] = [\n {\n id: 'root',\n name: 'root',\n email: 'root@domain.com',\n groups: ['admin'],\n },\n ];\n\n protected usersSubject = new BehaviorSubject<ICliUser[]>([]);\n\n constructor() {\n this.initialize(this.defaultUsers);\n }\n\n protected initialize(defaultUsers: ICliUser[]): void {\n const storedUsers = this.loadUsers(defaultUsers);\n this.usersSubject.next(storedUsers);\n }\n\n async createUser(user: Omit<ICliUser, 'id'>): Promise<ICliUser> {\n const users = this.usersSubject.getValue();\n\n if (users.some((u) => u.email === user.email || u.name === user.name)) {\n return Promise.reject('User already exists');\n }\n\n const newUser: ICliUser = {\n ...user,\n id: user.email,\n };\n\n users.push(newUser);\n this.saveUsers(users);\n this.usersSubject.next(users);\n\n return newUser;\n }\n\n getUsers(options?: {\n query?: string;\n skip?: number;\n take?: number;\n }): Observable<ICliUser[]> {\n const { query, skip, take } = options || {};\n\n return this.usersSubject.asObservable().pipe(\n map((users) => {\n if (query) {\n const queryLower = query.toLowerCase();\n users = users.filter(\n (u) =>\n u.name.toLowerCase().includes(queryLower) ||\n u.email.toLowerCase().includes(queryLower),\n );\n }\n\n if (skip) {\n users = users.slice(skip);\n }\n\n if (take) {\n users = users.slice(0, take);\n }\n\n return users;\n }),\n );\n }\n\n getUser(id: string): Observable<ICliUser | undefined> {\n return this.usersSubject\n .asObservable()\n .pipe(\n map((users) =>\n users.find(\n (u) => u.id === id || u.name === id || u.email === id,\n ),\n ),\n );\n }\n\n private saveUsers(users: ICliUser[]): void {\n localStorage.setItem(this.localStorageKey, JSON.stringify(users));\n }\n\n private loadUsers(fallbackUsers: ICliUser[]): ICliUser[] {\n const data = localStorage.getItem(this.localStorageKey);\n if (!data) {\n return fallbackUsers;\n }\n\n try {\n return JSON.parse(data) as ICliUser[];\n } catch (error) {\n console.error('Failed to parse user data from localStorage', error);\n return [];\n }\n }\n}\n","import {\n ICliCommandProcessor,\n ICliCommandParameterDescriptor,\n} from '@qodalis/cli-core';\nimport { ParsedArg } from './command-parser';\n\nexport class CliArgsParser {\n public static convertToRecord(\n args: ParsedArg[],\n processor: ICliCommandProcessor,\n ): Record<string, any> {\n const result: Record<string, any> = {};\n\n const updateParamValue = (\n parameter: ICliCommandParameterDescriptor,\n value: any,\n ) => {\n result[parameter.name] = value;\n parameter.aliases?.forEach((alias) => {\n result[alias] = value;\n });\n };\n\n args.forEach((arg) => {\n const parameter = processor.parameters?.find(\n (p) =>\n p.name === arg.name ||\n p.aliases?.some((a) => a === arg.name),\n );\n\n if (parameter) {\n let value = arg.value;\n\n switch (parameter.type) {\n case 'array':\n const previousValue = Array.isArray(result[arg.name])\n ? result[arg.name]\n : [];\n value = [...previousValue, arg.value];\n break;\n case 'boolean':\n value =\n value === 'true' ||\n value === '1' ||\n value === 'yes' ||\n value === 'y' ||\n value === 1;\n break;\n default:\n value = arg.value;\n break;\n }\n updateParamValue(parameter, value);\n } else {\n result[arg.name] = arg.value;\n }\n });\n\n return result;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n ICliExecutionContext,\n ICliCommandProcessor,\n CliProcessCommand,\n getRightOfWord,\n getParameterValue,\n ICliCommandExecutorService,\n CancellablePromise,\n CliForegroundColor,\n ICliCommandProcessorRegistry,\n} from '@qodalis/cli-core';\nimport { CommandParser } from '../../utils';\nimport { CliExecutionProcess } from '../context/cli-execution-process';\nimport { CliExecutionContext } from '../context/cli-execution-context';\nimport { CliArgsParser } from '../../utils/args-parser';\nimport { ProcessExitedError } from '../context/errors';\nimport { CliCommandExecutionContext } from '../context/cli-command-executution-context';\nimport { CliAliasCommandProcessor } from '../processors';\nimport { CliProcessorsRegistry_TOKEN } from '../tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliCommandExecutorService implements ICliCommandExecutorService {\n private commandParser: CommandParser = new CommandParser();\n\n constructor(\n @Inject(CliProcessorsRegistry_TOKEN)\n private readonly registry: ICliCommandProcessorRegistry,\n ) {}\n\n public async executeCommand(\n command: string,\n context: ICliExecutionContext,\n ): Promise<void> {\n // Split commands by logical operators\n const parts = command.split(/(&&|\\|\\|)/).map((part) => part.trim());\n let shouldRunNextCommand = true; // Tracks whether to execute the next command\n\n let rootContext: CliExecutionContext;\n if (context instanceof CliCommandExecutionContext) {\n rootContext = context.context;\n } else {\n rootContext = context as CliExecutionContext;\n }\n\n for (let i = 0; i < parts.length; i++) {\n const current = parts[i];\n\n // If the current part is a logical operator, adjust the shouldRunNextCommand flag\n if (current === '&&') {\n shouldRunNextCommand = shouldRunNextCommand && true;\n continue;\n } else if (current === '||') {\n shouldRunNextCommand = !shouldRunNextCommand;\n continue;\n }\n\n // Skip execution based on previous command's result and operator\n if (!shouldRunNextCommand) {\n shouldRunNextCommand = true; // Reset for next iteration\n continue;\n }\n\n // Execute the command\n let commandSuccess = true;\n try {\n const data = context.process.data;\n const command = current;\n\n await this.executeSingleCommand(command, data, rootContext);\n\n commandSuccess = context.process.exitCode === 0;\n } catch (e) {\n commandSuccess = false;\n\n context.writer.writeError(`Command ${current} failed: ${e}`);\n }\n\n shouldRunNextCommand = commandSuccess;\n }\n }\n\n private async executeSingleCommand(\n command: string,\n data: any | undefined,\n context: CliExecutionContext,\n ): Promise<void> {\n const process = context.process as CliExecutionProcess;\n\n process.start();\n\n const { commandName, args: parsedArgs } =\n this.commandParser.parse(command);\n\n const [mainCommand, ...other] = commandName.split(' ');\n\n const chainCommands = other.map((c) => c.toLowerCase());\n\n const searchableProcessors = context.contextProcessor\n ? (context.contextProcessor.processors ?? [])\n : this.registry.processors;\n\n const processor = this.registry.findProcessorInCollection(\n mainCommand,\n chainCommands,\n searchableProcessors,\n );\n\n if (!processor) {\n const aliases =\n (\n this.registry.findProcessor(\n 'alias',\n [],\n ) as CliAliasCommandProcessor\n ).aliases ?? {};\n\n if (aliases[mainCommand]) {\n const alias = aliases[mainCommand];\n return await this.executeSingleCommand(alias, data, context);\n }\n\n context.writer.writeError(\n `Command: ${commandName} not found or not installed`,\n );\n\n context.writer.writeln();\n\n context.writer.writeInfo(\n 'Type \"help\" for a list of available commands.',\n );\n context.writer.writeInfo(\n 'Use packages to install additional commands.',\n );\n\n context.process.exit(-1, {\n silent: true,\n });\n\n return;\n }\n\n const args = CliArgsParser.convertToRecord(parsedArgs, processor);\n\n const commandToProcess: CliProcessCommand = {\n command: commandName,\n chainCommands: chainCommands,\n rawCommand: command,\n args: args,\n data: data,\n };\n\n if (this.versionRequested(context, processor, args)) {\n process.end();\n return;\n }\n\n if (await this.helpRequested(commandToProcess, context)) {\n process.end();\n return;\n }\n\n if (this.setContextProcessorRequested(context, processor, args)) {\n process.end();\n return;\n }\n\n if (!this.validateBeforeExecution(context, processor, args)) {\n process.end();\n return;\n }\n\n const value =\n processor.allowUnlistedCommands || processor.valueRequired\n ? getRightOfWord(commandName, processor.command)\n : undefined;\n\n commandToProcess.value = value;\n\n const missingValue = processor.valueRequired && !value;\n\n if (missingValue) {\n context.writer.writeError(\n `Value required for command: ${commandName} <value>`,\n );\n\n context.process.exit(-1);\n\n return;\n }\n\n if (processor.validateBeforeExecution) {\n const validationResult = processor.validateBeforeExecution(\n commandToProcess,\n context,\n );\n\n if (validationResult.valid === false) {\n context.writer.writeError(\n validationResult?.message ||\n 'An error occurred while validating the command.',\n );\n\n context.process.exit(-1);\n\n return;\n }\n }\n\n let cancellable: CancellablePromise<void> = null!;\n\n const commandContext = new CliCommandExecutionContext(\n context,\n processor,\n );\n\n try {\n const hooks = processor.hooks ?? [];\n\n for (const hook of hooks.filter((h) => h.when === 'before')) {\n await hook.execute(commandContext);\n }\n\n cancellable = new CancellablePromise<void>(\n async (resolve, reject) => {\n processor\n .processCommand(commandToProcess, commandContext)\n .then(() => {\n resolve();\n })\n .catch((e) => {\n reject(e);\n });\n },\n );\n\n await cancellable.execute();\n\n for (const hook of hooks.filter((h) => h.when === 'after')) {\n await hook.execute(commandContext);\n }\n\n process.end();\n } catch (e) {\n context.spinner?.hide();\n\n if (e instanceof ProcessExitedError) {\n cancellable?.cancel();\n\n (context as CliExecutionContext)?.abort();\n\n if (e.code !== 0) {\n context.writer.writeError(\n `Process exited with code ${e.code}`,\n );\n } else {\n context.writer.writeInfo(\n 'Process exited successfully with code 0',\n );\n }\n } else {\n context.writer.writeError(`Error executing command: ${e}`);\n context.process.exit(-1);\n }\n }\n }\n\n public async showHelp(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n try {\n await this.executeCommand('help ' + command.rawCommand, context);\n } catch (e) {\n context.writer.writeError(`Error executing command: ${e}`);\n }\n }\n\n private versionRequested(\n context: ICliExecutionContext,\n processor: ICliCommandProcessor,\n args: Record<string, any>,\n ): boolean {\n if (args['v'] || args['version']) {\n context.writer.writeln(\n `${context.writer.wrapInColor(processor.version || '1.0.0', CliForegroundColor.Cyan)}`,\n );\n return true;\n }\n\n return false;\n }\n\n private setContextProcessorRequested(\n context: ICliExecutionContext,\n processor: ICliCommandProcessor,\n args: Record<string, any>,\n ): boolean {\n if (args['context']) {\n context.setContextProcessor(processor);\n return true;\n }\n\n return false;\n }\n\n private async helpRequested(\n commandToProcess: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<boolean> {\n if (commandToProcess.command?.startsWith('help')) {\n return false;\n }\n\n if (commandToProcess.args['h'] || commandToProcess.args['help']) {\n await this.showHelp(commandToProcess, context);\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Validates the command arguments before execution.\n * @param context The current CLI execution context.\n * @param processor The processor to validate.\n * @param args The command arguments.\n * @returns True if the arguments are valid, false otherwise.\n */\n private validateBeforeExecution(\n context: ICliExecutionContext,\n processor: ICliCommandProcessor,\n args: Record<string, any>,\n ): boolean {\n // Check for required parameters\n if (processor.parameters?.some((p) => p.required)) {\n const missingParams = processor.parameters?.filter(\n (p) =>\n p.required &&\n !args[p.name] &&\n !p.aliases?.some((a) => args[a]),\n );\n\n if (missingParams?.length) {\n context.writer.writeError(\n `Missing required parameters: ${missingParams\n .map((p) => p.name)\n .join(', ')}`,\n );\n\n return false;\n }\n }\n\n // Check for parameter validation\n const parametersToValidate =\n processor.parameters\n ?.filter((x) => x.validator)\n ?.map((p) => ({\n parameter: p,\n value: getParameterValue(p, args),\n }))\n ?.filter((p) => p.value) ?? [];\n\n if (parametersToValidate.length > 0) {\n const invalidParams = parametersToValidate\n .filter((x) => !x.parameter.validator!(x.value).valid)\n .map((p) => ({\n name: p.parameter.name,\n message: p.parameter.validator!(args[p.parameter.name])\n .message,\n }));\n\n if (invalidParams?.length) {\n context.writer.writeError('Invalid parameters:');\n\n invalidParams.forEach((p, index) => {\n context.writer.writeln(\n `${index + 1}. Invalid value for ${p.name}: ${args[p.name]} -> ${\n p.message\n }`,\n );\n });\n\n return false;\n }\n }\n\n return true;\n }\n}\n","import { ICliPingServerService } from '@qodalis/cli-core';\n\nexport class CliDefaultPingServerService implements ICliPingServerService {\n ping(): Promise<void> {\n // Simulate a server ping\n return new Promise((resolve) => setTimeout(resolve, 2000));\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScriptLoaderService {\n constructor() {}\n\n injectScript(src: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n script.onload = () => resolve();\n script.onerror = () =>\n reject(new Error(`Failed to load script: ${src}`));\n document.head.appendChild(script);\n });\n }\n\n getScript(\n src: string,\n options?: {\n onProgress?: (progress: number) => void;\n },\n ): Promise<{\n xhr: XMLHttpRequest;\n content?: string;\n error?: any;\n }> {\n const { onProgress } = options || {};\n\n let fetchProgress = 0;\n\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src, true);\n\n xhr.onprogress = (event) => {\n if (event.lengthComputable) {\n const progress = Math.round(\n (event.loaded / event.total) * 100,\n );\n fetchProgress = progress;\n\n onProgress?.(progress);\n } else {\n fetchProgress += 20;\n onProgress?.(fetchProgress);\n }\n };\n\n xhr.onload = () => {\n if (xhr.status === 200) {\n onProgress?.(100);\n fetchProgress = 100;\n resolve({\n xhr,\n content: xhr.responseText,\n });\n } else {\n reject(\n new Error(\n `Failed to load package: ${src}, Status: ${xhr.status}, Message: ${xhr.responseText}`,\n ),\n );\n }\n };\n\n xhr.onerror = () => {\n reject(new Error(`Failed to load package: ${src}`));\n };\n\n xhr.send();\n });\n }\n\n injectBodyScript(code: string): void {\n const script = document.createElement('script');\n script.text = code;\n document.head.appendChild(script);\n }\n}\n","import { ITerminalAddon, Terminal } from '@xterm/xterm';\n\nexport class OverlayAddon implements ITerminalAddon {\n private terminal!: Terminal;\n private overlayNode: HTMLElement;\n private overlayTimeout?: number;\n\n constructor() {\n this.overlayNode = document.createElement('div');\n this.overlayNode.style.cssText = `border-radius: 15px;\nfont-size: xx-large;\nopacity: 0.75;\npadding: 0.2em 0.5em 0.2em 0.5em;\nposition: absolute;\n-webkit-user-select: none;\n-webkit-transition: opacity 180ms ease-in;\n-moz-user-select: none;\n-moz-transition: opacity 180ms ease-in;`;\n\n this.overlayNode.addEventListener(\n 'mousedown',\n (e) => {\n e.preventDefault();\n e.stopPropagation();\n },\n true,\n );\n }\n\n activate(terminal: Terminal): void {\n this.terminal = terminal;\n }\n\n dispose(): void {}\n\n showOverlay(msg: string, timeout?: number): void {\n const { terminal, overlayNode } = this;\n if (!terminal.element) return;\n\n overlayNode.style.color = '#101010';\n overlayNode.style.backgroundColor = '#f0f0f0';\n overlayNode.textContent = msg;\n overlayNode.style.opacity = '0.75';\n\n if (!overlayNode.parentNode) {\n terminal.element.appendChild(overlayNode);\n }\n\n const divSize = terminal.element.getBoundingClientRect();\n const overlaySize = overlayNode.getBoundingClientRect();\n\n overlayNode.style.top =\n (divSize.height - overlaySize.height) / 2 + 'px';\n overlayNode.style.left = (divSize.width - overlaySize.width) / 2 + 'px';\n\n if (this.overlayTimeout) clearTimeout(this.overlayTimeout);\n if (!timeout) return;\n\n this.overlayTimeout = window.setTimeout(() => {\n overlayNode.style.opacity = '0';\n this.overlayTimeout = window.setTimeout(() => {\n if (overlayNode.parentNode) {\n overlayNode.parentNode.removeChild(overlayNode);\n }\n this.overlayTimeout = undefined;\n overlayNode.style.opacity = '0.75';\n }, 200);\n }, timeout || 1500);\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n ITerminalInitOnlyOptions,\n ITerminalOptions,\n Terminal,\n} from '@xterm/xterm';\nimport { FitAddon } from '@xterm/addon-fit';\nimport { WebLinksAddon } from '@xterm/addon-web-links';\nimport { OverlayAddon } from '../addons/overlay';\nimport { WebglAddon } from '@xterm/addon-webgl';\nimport { Unicode11Addon } from '@xterm/addon-unicode11';\n\nexport type ContainerSize =\n | `${number}%`\n | `${number}vh`\n | `${number}px`\n | `${number}rem`;\n\n@Component({\n selector: 'cli-terminal',\n templateUrl: './cli-terminal.component.html',\n styleUrls: ['./cli-terminal.component.sass'],\n})\nexport class CliTerminalComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() options!: ITerminalOptions & ITerminalInitOnlyOptions;\n\n @Input()\n height?: ContainerSize;\n\n @Output() onTerminalReady = new EventEmitter<Terminal>();\n\n // xterm dependencies\n @ViewChild('terminal', { static: true }) terminalDiv!: ElementRef;\n private terminal!: Terminal;\n private fitAddon!: FitAddon;\n private resizeObserver!: ResizeObserver;\n\n constructor() {}\n\n ngOnInit(): void {\n this.initializeTerminal();\n }\n\n ngAfterViewInit(): void {\n this.handleResize();\n }\n\n private initializeTerminal(): void {\n if (!this.options) {\n this.options = {\n allowProposedApi: true,\n };\n }\n\n this.terminal = new Terminal(this.options);\n\n this.fitAddon = new FitAddon();\n this.terminal.loadAddon(this.fitAddon);\n\n const webLinksAddon = new WebLinksAddon();\n this.terminal.loadAddon(webLinksAddon);\n\n const overlayAddon = new OverlayAddon();\n this.terminal.loadAddon(overlayAddon);\n\n // const webGlAddon = new WebglAddon();\n // webGlAddon.onContextLoss((e) => {\n // webGlAddon.dispose();\n // });\n // this.terminal.loadAddon(webGlAddon);\n\n const unicode11Addon = new Unicode11Addon();\n this.terminal.loadAddon(unicode11Addon);\n\n this.terminal.open(this.terminalDiv.nativeElement);\n this.fitAddon.fit();\n\n this.terminal.focus();\n\n this.onTerminalReady.emit(this.terminal);\n }\n\n private handleResize(): void {\n window.addEventListener('resize', () => {\n this.fitAddon.fit();\n });\n\n this.observeContainerSize();\n }\n\n private observeContainerSize(): void {\n this.resizeObserver = new ResizeObserver(() => {\n this.fitAddon.fit();\n });\n\n this.resizeObserver.observe(this.terminalDiv.nativeElement);\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n this.terminal?.dispose();\n }\n}\n","<div #terminal class=\"terminal-container\" [style.height]=\"height\"></div>\n","import {\n Component,\n Inject,\n Injector,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CliForegroundColor,\n CliOptions,\n colorFirstWord,\n ICliUserSession,\n ICliUserSessionService,\n} from '@qodalis/cli-core';\nimport {\n CliCommandExecutorService,\n CliCommandHistoryService,\n} from './services';\nimport { CliKeyValueStore } from './storage/cli-key-value-store';\nimport {\n ITerminalInitOnlyOptions,\n ITerminalOptions,\n Terminal,\n} from '@xterm/xterm';\nimport { ICliUserSessionService_TOKEN } from './tokens';\nimport { CliExecutionContext } from './context';\nimport { CliBoot } from './services/system/cli-boot';\nimport { CliWelcomeMessageService } from './services/system/cli-welcome-message.service';\nimport { BehaviorSubject, combineLatest, filter } from 'rxjs';\nimport { themes } from './processors/theme/types';\nimport { ContainerSize } from '../cli-terminal/cli-terminal.component';\n\n@Component({\n selector: 'cli',\n templateUrl: './cli.component.html',\n styleUrls: ['./cli.component.sass'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CliComponent implements OnInit {\n @Input() options?: CliOptions;\n\n @Input() height?: ContainerSize;\n\n protected terminalOptions!: ITerminalOptions & ITerminalInitOnlyOptions;\n private terminal!: Terminal;\n\n private currentLine = '';\n private executionContext?: CliExecutionContext;\n private currentUserSession: ICliUserSession | undefined;\n\n protected minDepsInitialized = new BehaviorSubject<boolean>(false);\n protected terminalInitialized = new BehaviorSubject<boolean>(false);\n\n constructor(\n private injector: Injector,\n @Inject(ICliUserSessionService_TOKEN)\n private readonly userManagementService: ICliUserSessionService,\n private commandExecutor: CliCommandExecutorService,\n private readonly commandHistoryService: CliCommandHistoryService,\n private readonly store: CliKeyValueStore,\n ) {\n this.userManagementService.getUserSession().subscribe((session) => {\n this.currentUserSession = session;\n this.executionContext?.setSession(session!);\n\n if (this.terminal) {\n this.printPrompt({\n reset: true,\n });\n }\n });\n }\n\n ngOnInit(): void {\n combineLatest([this.minDepsInitialized, this.terminalInitialized])\n .pipe(filter(([x, y]) => x && y))\n .subscribe(() => {\n this.initialize();\n });\n\n this.terminalOptions = {\n cursorBlink: true,\n allowProposedApi: true,\n fontSize: 20,\n theme: themes.default,\n convertEol: true,\n ...(this.options?.terminalOptions ?? {}),\n };\n\n this.store.initialize().then(() => {\n this.minDepsInitialized.next(true);\n });\n }\n\n protected onTerminalReady(terminal: Terminal): void {\n this.terminal = terminal;\n\n this.terminalInitialized.next(true);\n }\n\n private initialize() {\n this.commandHistoryService.initialize().then(() => {\n this.historyIndex = this.commandHistoryService.getLastIndex();\n });\n\n this.addTerminalEventListeners();\n\n this.executionContext = new CliExecutionContext(\n this.injector,\n this.terminal,\n this.commandExecutor,\n (o) => this.printPrompt(o),\n {\n ...(this.options ?? {}),\n terminalOptions: this.terminalOptions,\n },\n );\n\n this.executionContext.setSession(this.currentUserSession!);\n\n this.injector\n .get(CliBoot)\n .boot(this.executionContext)\n .then(() => {\n this.injector\n .get(CliWelcomeMessageService)\n .displayWelcomeMessage(this.executionContext!);\n });\n }\n\n private getTerminalCursorPosition() {\n const x: number = (this.terminal as any)._core.buffer.x;\n const y: number = (this.terminal as any)._core.buffer.y;\n\n return {\n x,\n y,\n };\n }\n\n private selectionStart: { x: number; y: number } | null = null;\n private selectionEnd: { x: number; y: number } | null = null;\n\n private addTerminalEventListeners(): void {\n // Handle user input\n this.terminal.onData(async (data) => await this.handleInput(data));\n\n this.terminal.onKey(async (event) => {});\n\n this.terminal.attachCustomKeyEventHandler((event) => {\n if (event.type === 'keydown') {\n if (event.code === 'KeyC' && event.ctrlKey) {\n // Handle Ctrl+C\n this.executionContext?.abort();\n this.executionContext?.setContextProcessor(undefined);\n this.terminal.writeln('Ctrl+C');\n this.printPrompt();\n\n return false;\n }\n\n if (event.code === 'Escape') {\n // Handle Escape\n this.executionContext?.abort();\n this.printPrompt({\n newLine: true,\n });\n\n return false;\n }\n\n if (event.code === 'KeyV' && event.ctrlKey) {\n //Handle Ctrl+V\n return false;\n }\n\n if (event.code === 'KeyL' && event.ctrlKey) {\n // Prevent the browser's default action (e.g., focusing the address bar)\n event.preventDefault();\n\n this.clearCurrentLine();\n\n // Clear the terminal screen\n this.terminal.clear();\n\n return false;\n }\n\n if (\n event.shiftKey &&\n (event.code === 'ArrowLeft' || event.code === 'ArrowRight')\n ) {\n if (!this.selectionStart) {\n this.selectionStart = this.getTerminalCursorPosition();\n }\n\n switch (event.code) {\n case 'ArrowLeft':\n this.moveCursorLeft();\n break;\n case 'ArrowRight':\n this.moveCursorRight();\n break;\n }\n\n this.selectionEnd = this.getTerminalCursorPosition();\n\n this.updateSelection();\n return false;\n } else {\n this.selectionStart = null;\n }\n }\n\n return true;\n });\n }\n\n private updateSelection(): void {\n if (this.selectionStart && this.selectionEnd) {\n const startRow = Math.min(\n this.selectionStart.y,\n this.selectionEnd.y,\n );\n const endRow = Math.max(this.selectionStart.y, this.selectionEnd.y);\n\n if (startRow === endRow) {\n const startCol = Math.min(\n this.selectionStart.x,\n this.selectionEnd.x,\n );\n const endCol = Math.max(\n this.selectionStart.x,\n this.selectionEnd.x,\n );\n\n // Select text on the same line\n this.terminal.select(\n startCol,\n startRow,\n Math.abs(endCol - startCol),\n );\n } else {\n // Select multiple lines\n this.terminal.selectLines(startRow, endRow);\n }\n }\n }\n\n private printPrompt(options?: {\n reset?: boolean;\n newLine?: boolean;\n keepCurrentLine?: boolean;\n }): void {\n const { reset, newLine, keepCurrentLine } = options || {};\n\n if (reset) {\n this.terminal.write('\\x1b[2K\\r');\n }\n\n if (newLine) {\n this.terminal.write('\\r\\n');\n }\n\n if (!keepCurrentLine) {\n this.currentLine = '';\n this.cursorPosition = 0;\n }\n\n let promtStartMessage =\n this.options?.usersModule?.hideUserName ||\n !this.options?.usersModule?.enabled\n ? ''\n : `\\x1b[32m${this.currentUserSession?.user.email}\\x1b[0m:`;\n\n if (this.executionContext?.contextProcessor) {\n promtStartMessage = `${this.executionContext.contextProcessor.command}`;\n }\n\n const promtEndMessage = '\\x1b[34m~\\x1b[0m$ ';\n\n const prompt = `${promtStartMessage}${promtEndMessage}`;\n\n this.terminal.write(prompt);\n }\n\n private historyIndex: number = 0;\n private cursorPosition: number = 0;\n\n private async handleInput(data: string): Promise<void> {\n if (this.executionContext?.isProgressRunning()) {\n return;\n }\n\n if (data === '\\r') {\n // Enter key: Process the current command\n this.terminal.write('\\r\\n'); // Move to the next line\n\n if (this.currentLine) {\n await this.commandHistoryService.addCommand(this.currentLine);\n\n this.historyIndex = this.commandHistoryService.getLastIndex();\n\n //reset cursor position\n this.cursorPosition = 0;\n\n await this.commandExecutor.executeCommand(\n this.currentLine,\n this.executionContext!,\n );\n\n //check if the command has subscribed to the onAbort event\n if (this.executionContext?.onAbort.observed) {\n this.terminal.writeln(\n '\\x1b[33m' + 'Press Ctrl+C to cancel' + '\\x1b[0m',\n );\n }\n }\n\n this.printPrompt();\n } else if (data === '\\u001B[A') {\n // Arrow Up\n this.showPreviousCommand();\n } else if (data === '\\u001B[B') {\n // Arrow Down\n this.showNextCommand();\n } else if (data === '\\u001B[D') {\n // Left Arrow\n this.moveCursorLeft(data);\n } else if (data === '\\u001B[C') {\n // Right Arrow\n this.moveCursorRight(data);\n } else if (data === '\\u007F') {\n // Backspace key\n this.handleBackspace();\n } else {\n // Append character at cursor position\n this.handleInputText(data);\n }\n }\n\n private normalizeText(text: string): string {\n //handle tab\n if (text === '\\u0009') {\n return ' ';\n }\n\n return text.replace(/[\\r\\n]+/g, '');\n }\n\n private handleInputText(text: string): void {\n text = this.normalizeText(text);\n\n this.currentLine =\n this.currentLine.slice(0, this.cursorPosition) +\n text +\n this.currentLine.slice(this.cursorPosition);\n\n this.cursorPosition += text.length;\n\n this.refreshCurrentLine();\n }\n\n private refreshCurrentLine(): void {\n this.terminal.write('\\x1b[2K'); // Clear the current line\n this.terminal.write('\\r'); // Move the cursor to the start\n\n this.printPrompt({\n keepCurrentLine: true,\n });\n\n // Redraw the prompt\n this.writeCurrentLine();\n\n // Move cursor to the correct position\n const cursorOffset = this.currentLine.length - this.cursorPosition;\n if (cursorOffset > 0) {\n this.terminal.write(`\\x1b[${cursorOffset}D`);\n }\n }\n\n private writeCurrentLine() {\n this.terminal.write(\n colorFirstWord(\n this.currentLine,\n (word) =>\n this.executionContext?.writer.wrapInColor(\n word,\n CliForegroundColor.Yellow,\n ) ?? this.currentLine,\n ),\n );\n }\n\n private showPreviousCommand(): void {\n if (this.historyIndex > 0) {\n this.historyIndex--;\n this.displayCommandFromHistory();\n }\n }\n\n private showNextCommand(): void {\n if (this.historyIndex < this.commandHistoryService.getLastIndex() - 1) {\n this.historyIndex++;\n this.displayCommandFromHistory();\n } else {\n this.historyIndex = this.commandHistoryService.getLastIndex();\n this.clearCurrentLine();\n }\n }\n\n private displayCommandFromHistory(): void {\n this.clearCurrentLine();\n this.currentLine =\n this.commandHistoryService.getCommand(this.historyIndex) || '';\n this.writeCurrentLine();\n this.cursorPosition = this.currentLine.length;\n }\n\n private clearCurrentLine(): void {\n const wrappedLines = Math.ceil(\n this.currentLine.length / this.terminal.cols,\n );\n\n for (let i = 0; i < wrappedLines; i++) {\n this.terminal.write('\\x1b[2K'); // Clear the current line\n this.terminal.write('\\r'); // Move the cursor to the start of the line\n if (i < wrappedLines - 1) {\n this.terminal.write('\\x1b[F'); // Move the cursor up for all but the last line\n }\n\n if (i === wrappedLines - 1) {\n this.terminal.write('\\r');\n this.printPrompt();\n }\n }\n\n this.currentLine = '';\n this.cursorPosition = 0;\n }\n\n private moveCursorLeft(key: string = '\\x1b[D'): void {\n if (this.cursorPosition > 0) {\n this.cursorPosition--;\n this.terminal.write(key);\n }\n }\n\n private moveCursorRight(key: string = '\\x1b[C'): void {\n if (this.cursorPosition < this.currentLine.length) {\n this.cursorPosition++;\n this.terminal.write(key);\n }\n }\n\n private handleBackspace(): void {\n if (this.cursorPosition > 0) {\n this.currentLine =\n this.currentLine.slice(0, this.cursorPosition - 1) +\n this.currentLine.slice(this.cursorPosition);\n this.cursorPosition--;\n\n this.refreshCurrentLine();\n }\n }\n}\n","<cli-terminal\n [options]=\"terminalOptions\"\n [height]=\"height\"\n (onTerminalReady)=\"onTerminalReady($event)\"\n/>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n HostListener,\n ElementRef,\n} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'collapsable-content',\n templateUrl: './collapsable-content.component.html',\n styleUrls: ['./collapsable-content.component.sass'],\n})\nexport class CollapsableContentComponent implements OnInit {\n previousPanelHeight = 500;\n panelHeight = 500;\n\n isResizing = false;\n startY = 0;\n startHeight = 0;\n\n @Input() visible: boolean = true;\n @Input() isCollapsed: boolean = true;\n @Input() isMaximized: boolean = false;\n\n @Output()\n public onToggle = new EventEmitter<boolean>();\n\n @Output()\n public onContentSizeChange = new EventEmitter<number>();\n\n items: MenuItem[] | undefined;\n\n activeItem: MenuItem | undefined;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit() {\n this.items = [\n {\n label: 'Tab 1',\n icon: 'pi pi-plus',\n },\n ];\n }\n\n onActiveItemChange(event: MenuItem) {\n this.activeItem = event;\n }\n\n toggleTerminal(): void {\n this.isCollapsed = !this.isCollapsed;\n\n this.onToggle.emit(this.isCollapsed);\n }\n\n closeTerminal(): void {\n this.visible = false;\n }\n\n toggleMaximizationTerminal(): void {\n //check next\n if (!this.isMaximized) {\n this.previousPanelHeight = this.panelHeight;\n const windowHeight = window.innerHeight;\n this.panelHeight = windowHeight;\n } else {\n this.panelHeight = this.previousPanelHeight;\n }\n\n this.isMaximized = !this.isMaximized;\n this.updateTerminalSize();\n }\n\n onResizeStart(event: MouseEvent) {\n this.isResizing = true;\n if (this.isCollapsed) {\n this.toggleTerminal();\n }\n\n this.startY = event.clientY;\n this.startHeight = this.panelHeight;\n event.preventDefault();\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (this.isResizing) {\n const deltaY = this.startY - event.clientY;\n let nextHeight = Math.max(100, this.startHeight + deltaY);\n\n if (nextHeight > window.innerHeight) {\n nextHeight = window.innerHeight;\n }\n\n this.panelHeight = nextHeight;\n this.updateTerminalSize();\n }\n }\n\n @HostListener('document:mouseup')\n onMouseUp() {\n this.isResizing = false;\n }\n\n private updateTerminalSize() {\n this.onContentSizeChange.emit(this.panelHeight - 60 - 8);\n }\n}\n","<div\n *ngIf=\"visible\"\n class=\"terminal-wrapper\"\n [class.collapsed]=\"isCollapsed\"\n [style]=\"{\n height: panelHeight + 'px',\n }\"\n>\n <div class=\"card terminal-header\">\n <div class=\"divider\">\n <i class=\"pi pi-minus\" (mousedown)=\"onResizeStart($event)\"></i>\n </div>\n <div class=\"header-content\">\n <p class=\"terminal-title\">\n <i class=\"pi pi-desktop\" style=\"font-size: 2rem\"></i>\n CLI\n </p>\n <div class=\"action-buttons\">\n <p-button\n [icon]=\"\n isMaximized ? 'pi pi-window-minimize' : 'pi pi-window-maximize'\n \"\n class=\"p-button-rounded p-button-text p-button-secondary\"\n [pTooltip]=\"!isMaximized ? 'Maximize' : 'Minimize'\"\n tooltipPosition=\"top\"\n [disabled]=\"isCollapsed\"\n (onClick)=\"toggleMaximizationTerminal()\"\n />\n\n <p-button\n [icon]=\"isCollapsed ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\n class=\"p-button-rounded p-button-text p-button-secondary\"\n [pTooltip]=\"isCollapsed ? 'Expand' : 'Collapse'\"\n tooltipPosition=\"top\"\n (onClick)=\"toggleTerminal()\"\n />\n\n <p-button\n [icon]=\"'pi pi-eye-slash'\"\n class=\"p-button-rounded p-button-text p-button-secondary\"\n [pTooltip]=\"'Close'\"\n tooltipPosition=\"top\"\n (onClick)=\"closeTerminal()\"\n />\n </div>\n </div>\n </div>\n <div class=\"terminal-content\" *ngIf=\"!isCollapsed\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliCanViewService {\n constructor() {}\n\n canView(): Observable<boolean> {\n return of(true);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CliOptions } from '@qodalis/cli-core';\nimport { CliCanViewService } from '../services';\nimport { Subscription } from 'rxjs';\nimport { ContainerSize } from '../cli-terminal/cli-terminal.component';\n\nexport type CliPanelOptions = CliOptions & {\n /**\n * Whether the CLI should be collapsed by default. Defaults to `true`.\n */\n isCollapsed?: boolean;\n};\n\n/**\n * A component that displays the CLI on the bottom of page.\n */\n@Component({\n selector: 'cli-panel',\n templateUrl: './cli-panel.component.html',\n styleUrls: ['./cli-panel.component.sass'],\n})\nexport class CliPanelComponent {\n /**\n * The options for the CLI.\n */\n @Input() options?: CliPanelOptions;\n\n visible = false;\n\n protected terminalHeight: ContainerSize = `${450 - 8}px`;\n\n protected initialized: boolean = false;\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(private readonly canView: CliCanViewService) {\n this.subscriptions.add(\n this.canView.canView().subscribe((canView) => {\n this.visible = canView;\n }),\n );\n }\n\n onToggle($event: boolean) {\n if (!$event && !this.initialized) {\n this.initialized = true;\n }\n }\n\n onContentSizeChange($event: number) {\n this.terminalHeight = `${$event}px`;\n }\n}\n","<collapsable-content\n [isCollapsed]=\"options?.isCollapsed ?? true\"\n (onToggle)=\"onToggle($event)\"\n (onContentSizeChange)=\"onContentSizeChange($event)\"\n *ngIf=\"visible\"\n>\n <ng-container *ngIf=\"initialized\">\n <cli [options]=\"options\" [height]=\"terminalHeight\" />\n </ng-container>\n</collapsable-content>\n","import { Inject, Injectable } from '@angular/core';\nimport { CliProcessorMetadata, DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport {\n CliProcessCommand,\n ICliCommandAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n ICliPingServerService,\n} from '@qodalis/cli-core';\nimport { ICliPingServerService_TOKEN } from '../tokens';\n\n@Injectable()\nexport class CliPingCommandProcessor implements ICliCommandProcessor {\n command = 'ping';\n\n description?: string | undefined = 'Pings the server';\n\n author?: ICliCommandAuthor | undefined = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '🏓',\n };\n\n constructor(\n @Inject(ICliPingServerService_TOKEN)\n private pingServerService: ICliPingServerService,\n ) {}\n\n async processCommand(\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.spinner?.show();\n context?.spinner?.setText('Pinging server...');\n this.pingServerService\n .ping()\n .then(() => {\n context.spinner?.hide();\n context.writer.writeln('pong');\n context.showPrompt();\n })\n .catch(() => {\n context.spinner?.hide();\n context.writer.writeError('Failed to ping the server');\n context.showPrompt();\n });\n }\n}\n","import { CliProcessorMetadata, DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport {\n CliProcessCommand,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nexport class CliEvalCommandProcessor implements ICliCommandProcessor {\n command = 'eval';\n description = 'Evaluate a JavaScript expression';\n author = DefaultLibraryAuthor;\n allowUnlistedCommands = true;\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '🧮',\n module: 'misc',\n };\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n try {\n const output = eval(command.value ?? '');\n\n if (Array.isArray(output)) {\n context.writer.writeln('Output:');\n context.writer.writeJson(output);\n return;\n }\n\n if (typeof output === 'object') {\n context.writer.writeln('Output:');\n context.writer.writeJson(output);\n return;\n }\n\n context.writer.writeln('Output: ' + output?.toString());\n } catch (e) {\n context.writer.writeError(e!.toString());\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln(this.description);\n context.writer.writeln('Examples:');\n context.writer.writeln(' eval 1 + 1');\n context.writer.writeln(' eval \"Hello, \" + \"World!\"');\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ICliExecutionContext,\n CliProcessCommand,\n ICliCommandProcessor,\n ICliCommandAuthor,\n CliProcessorMetadata,\n CliIcon,\n ICliCommandChildProcessor,\n CliForegroundColor,\n} from '@qodalis/cli-core';\n\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { openLink } from '../../../utils';\n\nconst githubUrl = 'https://github.com/qodalis-solutions/angular-web-cli';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliFeedbackCommandProcessor implements ICliCommandProcessor {\n command = 'feedback';\n\n description?: string | undefined =\n 'Allows users to report bugs or request features';\n\n processors?: ICliCommandChildProcessor[] | undefined = [];\n\n author?: ICliCommandAuthor | undefined = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: CliIcon.Bug,\n module: 'system',\n };\n\n constructor() {\n this.processors?.push(\n {\n command: 'report-bug',\n description: 'Reports a bug on GitHub',\n allowUnlistedCommands: true,\n async processCommand(\n { value }: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n openLink(\n `${githubUrl}/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=${value}`,\n );\n },\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln(\n 'Reports a bug on GitHub. Usage: feedback report-bug <description>',\n );\n },\n },\n {\n command: 'request-feature',\n description: 'Requests a new feature on GitHub',\n allowUnlistedCommands: true,\n async processCommand(\n { value }: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n openLink(\n `${githubUrl}/issues/new?assignees=&labels=feature-request&projects=&template=feature_request.md&title=${value}`,\n );\n },\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln(\n 'Requests a new feature on GitHub. Usage: feedback request-feature <description>',\n );\n },\n },\n {\n command: 'request-command',\n description: 'Requests a new command on GitHub',\n allowUnlistedCommands: true,\n async processCommand(\n { value }: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n openLink(\n `${githubUrl}/issues/new?assignees=&labels=command-request&projects=&template=command-request.md&title=${value}`,\n );\n },\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln(\n 'Requests a new command on GitHub. Usage: feedback request-command <description>',\n );\n },\n },\n );\n }\n\n async processCommand(\n _: CliProcessCommand,\n { writer }: ICliExecutionContext,\n ): Promise<void> {\n writer.writeln('Use one of the following subcommands:');\n this.processors?.forEach((processor) => {\n writer.writeln(\n `- ${writer.wrapInColor(`feedback ${processor.command}`, CliForegroundColor.Cyan)}: ${processor.description}`,\n );\n });\n }\n\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln(\n 'Allows users to report bugs or request features on GitHub.',\n );\n }\n}\n","export const groupBy = <T, K>(\n list: T[],\n keySelector: (item: T) => K,\n): Map<K, T[]> => {\n return list.reduce((map, item) => {\n const key = keySelector(item);\n if (!map.has(key)) {\n map.set(key, []);\n }\n map.get(key)!.push(item);\n return map;\n }, new Map<K, T[]>());\n};\n","import { Injectable, Injector } from '@angular/core';\nimport {\n ICliExecutionContext,\n CliProcessCommand,\n ICliCommandProcessor,\n ICliCommandParameterDescriptor,\n CliForegroundColor,\n CliProcessorMetadata,\n CliIcon,\n ICliCommandProcessorRegistry,\n} from '@qodalis/cli-core';\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { CliProcessorsRegistry_TOKEN } from '../../tokens';\nimport { groupBy } from '../../../utils/arrays';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliHelpCommandProcessor implements ICliCommandProcessor {\n command = 'help';\n\n description = 'Displays help for a command';\n\n allowUnlistedCommands?: boolean | undefined = true;\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: CliIcon.Help,\n module: 'system',\n };\n\n private readonly registry: ICliCommandProcessorRegistry;\n\n constructor(private readonly injector: Injector) {\n this.registry = this.injector.get<ICliCommandProcessorRegistry>(\n CliProcessorsRegistry_TOKEN,\n );\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const { writer } = context;\n\n const [_, ...commandsToHelp] = command.command.split(' ');\n\n if (commandsToHelp.length === 0) {\n await context.executor.executeCommand('version', context);\n\n this.writeSeparator(context);\n\n writer.writeln(\n writer.wrapInColor(\n 'Available commands:',\n CliForegroundColor.Yellow,\n ),\n );\n\n const groupedCommands = groupBy<ICliCommandProcessor, string>(\n this.registry.processors,\n (x) => x.metadata?.module || 'uncategorized',\n );\n\n groupedCommands.forEach((processors, module) => {\n writer.writeln(\n writer.wrapInColor(module, CliForegroundColor.Yellow),\n );\n\n processors.forEach((processor) => {\n writer.writeln(\n `- ${processor?.metadata?.icon ? processor.metadata.icon : CliIcon.Extension} ${writer.wrapInColor(processor.command, CliForegroundColor.Cyan)} - ${\n processor?.description || 'Missing description'\n }`,\n );\n });\n\n this.writeSeparator(context);\n });\n\n context.writer.writeln();\n\n await context.executor.executeCommand('hotkeys', context);\n\n this.writeSeparator(context);\n\n writer.writeln(\n '\\nType `help <command>` to get more information about a specific command',\n );\n } else {\n const processor = this.registry.findProcessor(\n commandsToHelp[0],\n commandsToHelp.slice(1),\n );\n\n if (processor) {\n this.writeProcessorDescription(processor, context);\n } else {\n writer.writeln(`\\x1b[33mUnknown command: ${commandsToHelp[0]}`);\n }\n }\n }\n\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln('Displays help for a command');\n\n writer.writeln(\n 'If no command is specified, it will display a list of available commands',\n );\n\n writer.writeln(\n 'If a command is specified, it will display information about that command',\n );\n\n writer.writeln(\n 'If a command is specified with a subcommand, it will display information about that subcommand',\n );\n }\n\n private writeProcessorDescription(\n processor: ICliCommandProcessor,\n context: ICliExecutionContext,\n ) {\n const { writer } = context;\n\n writer.write('\\x1b[33mCommand: \\x1b[0m');\n\n if (processor.metadata?.icon) {\n writer.write(`${processor.metadata.icon} `);\n }\n\n writer.writeln(\n `${writer.wrapInColor(\n processor.command,\n CliForegroundColor.Cyan,\n )} @${processor.version || '1.0.0'} - ${processor.description}`,\n );\n\n this.writeSeparator(context);\n\n if (processor.author) {\n writer.writeln(\n `\\x1b[33mAuthor:\\x1b[0m ${processor.author.name}<${processor.author.email}>`,\n );\n\n this.writeSeparator(context);\n }\n\n writer.write(\n writer.wrapInColor('Description: ', CliForegroundColor.Yellow),\n );\n\n if (processor.writeDescription) {\n processor.writeDescription(context);\n } else if (processor.description) {\n writer.writeln(\n `${writer.wrapInColor('Description:', CliForegroundColor.Yellow)} ${processor.description}`,\n );\n } else {\n writer.writeln(\n writer.wrapInColor(\n 'No description available',\n CliForegroundColor.Yellow,\n ),\n );\n }\n\n this.writeSeparator(context);\n\n if (processor.processors?.length) {\n writer.writeln(\n writer.wrapInColor('Subcommands:', CliForegroundColor.Yellow),\n );\n\n processor.processors.forEach((subprocessor) => {\n writer.writeln(\n `- ${writer.wrapInColor(\n subprocessor.command,\n CliForegroundColor.Cyan,\n )} - ${subprocessor.description}`,\n );\n });\n\n this.writeSeparator(context);\n }\n\n const parameters = [\n ...(processor.parameters || []),\n ...defaultParameters,\n ];\n\n writer.writeln(\n writer.wrapInColor('Parameters:', CliForegroundColor.Yellow),\n );\n\n parameters.forEach((parameter) => {\n writer.writeln(\n `--${writer.wrapInColor(\n parameter.name,\n CliForegroundColor.Cyan,\n )} (${parameter.type}) ${\n parameter.aliases ? `(${parameter.aliases.join(', ')})` : ''\n } - ${parameter.description}${\n parameter.required ? ' (required)' : ''\n }`,\n );\n });\n\n this.writeSeparator(context);\n\n if (processor.metadata?.requireServer) {\n writer.writeln(\n writer.wrapInColor(\n 'Requires server to be running',\n CliForegroundColor.Red,\n ),\n );\n }\n }\n\n private writeSeparator({ writer }: ICliExecutionContext) {\n writer.writeDivider({\n char: '=',\n });\n }\n}\n\nconst defaultParameters: ICliCommandParameterDescriptor[] = [\n {\n name: 'version',\n aliases: ['v'],\n type: 'boolean',\n description: 'Displays the version of the command',\n required: false,\n },\n {\n name: 'main',\n type: 'boolean',\n description: 'Set the command as the main command',\n required: false,\n },\n];\n","import { Injectable } from '@angular/core';\nimport {\n ICliExecutionContext,\n CliProcessCommand,\n ICliCommandProcessor,\n ICliCommandAuthor,\n CliProcessorMetadata,\n CliIcon,\n} from '@qodalis/cli-core';\n\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { CliCommandHistoryService } from '../../services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliHistoryCommandProcessor implements ICliCommandProcessor {\n command = 'history';\n\n description?: string | undefined =\n 'Prints the command history of the current session';\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n author?: ICliCommandAuthor | undefined = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: CliIcon.Code,\n module: 'system',\n };\n\n constructor(\n private readonly commandHistoryService: CliCommandHistoryService,\n ) {\n this.processors?.push({\n command: 'list',\n description: this.description,\n processCommand: this.processCommand.bind(this),\n writeDescription: this.writeDescription.bind(this),\n });\n\n this.processors?.push({\n command: 'clear',\n description: 'Clears the command history',\n processCommand: async (\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n await this.commandHistoryService.clearHistory();\n context.writer.writeInfo('Command history cleared');\n },\n writeDescription: (context: ICliExecutionContext) => {\n context.writer.writeln('Clears the command history');\n },\n });\n }\n\n async processCommand(\n _: CliProcessCommand,\n { writer }: ICliExecutionContext,\n ): Promise<void> {\n const history = this.commandHistoryService.getHistory();\n\n if (history.length === 0) {\n writer.writeln('No history available');\n return;\n } else {\n writer.writeln('Command history:');\n history.forEach((command, index) => {\n writer.writeln(`${index + 1}. ${command}`);\n });\n }\n }\n\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln('Prints the command history of the current session');\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ICliExecutionContext,\n CliProcessCommand,\n ICliCommandProcessor,\n CliForegroundColor,\n CliProcessorMetadata,\n} from '@qodalis/cli-core';\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { hotkeysInfo } from '../../constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliHotKeysCommandProcessor implements ICliCommandProcessor {\n command = 'hotkeys';\n\n description = 'Displays the hotkeys information';\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: '🔥',\n module: 'system',\n };\n\n async processCommand(\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.writer.writeln(\n context.writer.wrapInColor(\n 'Avalaible hotkeys:',\n CliForegroundColor.Yellow,\n ),\n );\n\n hotkeysInfo.forEach((hotkey) => {\n context.writer.writeln(\n `- ${context.writer.wrapInColor(\n hotkey.key,\n CliForegroundColor.Yellow,\n )} - ${hotkey.description}`,\n );\n });\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln(\n this.description || 'Displays the hotkeys information',\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Package } from '@qodalis/cli-core';\nimport { CliKeyValueStore } from '../storage/cli-key-value-store';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliPackageManagerService {\n private readonly storageKey = 'cli-packages';\n\n public QODALIS_COMMAND_PREFIX = '@qodalis/cli-';\n\n constructor(private readonly store: CliKeyValueStore) {}\n\n /**\n * Retrieves the list of packages\n * @returns {Package[]} Array of packages\n */\n async getPackages(): Promise<Package[]> {\n const oldPackages = localStorage.getItem('cliPackages');\n if (oldPackages) {\n localStorage.removeItem('cliPackages');\n await this.store.set(this.storageKey, JSON.parse(oldPackages));\n }\n\n const packages = await this.store.get<Package[]>(this.storageKey);\n\n return packages ? packages : [];\n }\n\n /**\n * Retrieves a package by name from the list.\n * @param packageName {string} The name of the package to retrieve\n * @returns {Package | undefined} The package if found, undefined otherwise\n */\n async getPackage(packageName: string): Promise<Package | undefined> {\n return (await this.getPackages()).find(\n (p) =>\n p.name === packageName ||\n p.name === this.QODALIS_COMMAND_PREFIX + packageName,\n );\n }\n\n /**\n * Checks if a package with the given name exists in the list.\n * @param packageName {string} The name of the package to check\n * @returns {boolean} True if the package exists, false otherwise\n */\n async hasPackage(packageName: string): Promise<boolean> {\n return (await this.getPackage(packageName)) !== undefined;\n }\n\n /**\n * Adds a new package to the list and saves it in storage.\n * @param pkg {Package} The package to add\n */\n async addPackage(pkg: Package): Promise<void> {\n const packages = await this.getPackages();\n if (packages.find((p) => p.name === pkg.name)) {\n throw new Error(`Package with name \"${pkg.name}\" already exists.`);\n }\n packages.push(pkg);\n await this.savePackages(packages);\n }\n\n /**\n * Removes a package by name and saves the updated list in storage\n * @param packageName {string} The name of the package to remove\n */\n async removePackage(packageName: string): Promise<Package> {\n const packages = await this.getPackages();\n const packageToRemove = packages.find(\n (p) =>\n p.name === packageName ||\n p.name === this.QODALIS_COMMAND_PREFIX + packageName,\n );\n\n if (!packageToRemove) {\n throw new Error(`Package with name \"${packageName}\" not found.`);\n }\n\n const updatedPackages = packages.filter(\n (p) => p.name !== packageToRemove.name,\n );\n\n if (packages.length === updatedPackages.length) {\n throw new Error(`Package with name \"${packageName}\" not found.`);\n }\n\n this.savePackages(updatedPackages);\n\n return packageToRemove!;\n }\n\n /**\n * Updates an existing package in the list and saves the updated list in storage.\n * @param pkg {Package} The updated package\n * @throws {Error} If the package to update is not found\n * @returns {void}\n * @throws {Error} If the package to update is not found\n * @returns {void}\n */\n async updatePackage(pkg: Package): Promise<void> {\n const packages = await this.getPackages();\n const index = packages.findIndex((p) => p.name === pkg.name);\n if (index === -1) {\n throw new Error(`Package with name \"${pkg.name}\" not found.`);\n }\n packages[index] = pkg;\n await this.savePackages(packages);\n }\n\n /**\n * Saves the list of packages to storage.\n * @param packages {Package[]} The list of packages to save\n */\n private async savePackages(packages: Package[]): Promise<void> {\n await this.store.set(this.storageKey, packages);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n CliForegroundColor,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessorRegistry,\n} from '@qodalis/cli-core';\nimport {\n CliProcessCommand,\n ICliCommandProcessor,\n ICliExecutionContext,\n ICliUmdModule,\n Package,\n} from '@qodalis/cli-core';\nimport { ScriptLoaderService } from '../../services/script-loader.service';\nimport { CliPackageManagerService } from '../../services/cli-package-manager.service';\nimport { CliProcessorsRegistry_TOKEN } from '../../tokens';\n\n@Injectable()\nexport class CliPackagesCommandProcessor implements ICliCommandProcessor {\n readonly command = 'packages';\n\n description = 'Manage packages in the cli';\n\n author = DefaultLibraryAuthor;\n\n readonly version = '1.0.2';\n\n readonly processors?: ICliCommandProcessor[] | undefined = [];\n\n readonly metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: '📦',\n module: 'system',\n };\n\n private registeredDependencies: string[] = [];\n\n constructor(\n private readonly scriptsLoader: ScriptLoaderService,\n private readonly packagesManager: CliPackageManagerService,\n @Inject(CliProcessorsRegistry_TOKEN)\n private readonly registry: ICliCommandProcessorRegistry,\n ) {\n const scope = this;\n\n this.processors = [\n {\n command: 'ls',\n description: 'List all packages in the cli',\n author: DefaultLibraryAuthor,\n async processCommand(_, context) {\n const packages = await packagesManager.getPackages();\n\n context.writer.writeln('Packages:');\n\n if (packages.length === 0) {\n context.writer.writeInfo('No packages installed');\n context.writer.writeInfo(\n \"Use 'packages add <package>' to add a package\",\n );\n return;\n }\n\n packages.forEach((pkg) => {\n context.writer.writeInfo(\n `- ${pkg.name}@${pkg.version}`,\n );\n });\n },\n writeDescription(context) {\n context.writer.writeln(' packages ls');\n },\n },\n {\n command: 'add',\n description:\n 'Add a package to the cli, e.g. packages add guid.',\n valueRequired: true,\n async processCommand(command, context) {\n const packages = command.value!.split(' ');\n for (const pkg of packages) {\n await scope.addPackage(pkg, context);\n }\n },\n writeDescription({ writer }) {\n writer.writeInfo(\n \"Supoorts multiple packages, e.g. 'packages add guid server-logs'\",\n );\n writer.writeln(\n ' packages add <package> ' +\n writer.wrapInColor(\n '# Add a package',\n CliForegroundColor.Green,\n ),\n );\n writer.writeln(' packages add guid');\n writer.writeln(' packages add @qodalis/cli-guid');\n writer.writeln(' packages add @qodalis/cli-server-logs');\n },\n },\n {\n command: 'remove',\n description: 'Remove a package from the cli',\n valueRequired: true,\n async processCommand(command, context) {\n const packages = command.value!.split(' ');\n\n for (const pkg of packages) {\n await scope.removePackage(pkg, context);\n }\n },\n },\n {\n command: 'update',\n description:\n 'Update a package in the cli to the latest version or update all packages',\n allowUnlistedCommands: true,\n valueRequired: false,\n async processCommand(command, context) {\n if (command.value) {\n await scope.updatePackage(command.value!, context);\n } else {\n const packages = await packagesManager.getPackages();\n for (const pkg of packages) {\n await scope.updatePackage(pkg.name, context);\n }\n\n context.writer.writeSuccess('All packages updated');\n }\n },\n writeDescription(context) {\n context.writer.writeln(\n ' packages update <package> ' +\n context.writer.wrapInColor(\n '# Update a specific package',\n CliForegroundColor.Green,\n ),\n );\n context.writer.writeln(\n ' packages update ' +\n context.writer.wrapInColor(\n '# Update all packages',\n CliForegroundColor.Green,\n ),\n );\n },\n },\n ];\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n await context.executor.showHelp(command, context);\n }\n\n writeDescription?({ writer }: ICliExecutionContext): void {\n writer.writeln(this.description);\n\n writer.writeInfo(\n 'Available packages can be found at https://www.npmjs.com/org/qodalis',\n );\n\n writer.writeln(' packages ls');\n writer.writeln(' packages add <package>');\n }\n\n async initialize(context: ICliExecutionContext): Promise<void> {\n const packages = await this.packagesManager.getPackages();\n\n for (const pkg of packages) {\n await this.registerPackageDependencies(pkg, context);\n\n await this.scriptsLoader.injectScript(pkg.url);\n }\n }\n\n private async removePackage(name: string, context: ICliExecutionContext) {\n context.progressBar.show();\n\n try {\n const pkg = await this.packagesManager.removePackage(name);\n\n if (pkg) {\n const module = (window as any)[pkg.name] as ICliUmdModule;\n if (module) {\n module.processors?.forEach((processor) => {\n this.registry.unregisterProcessor(processor);\n });\n }\n }\n\n context.progressBar.complete();\n context.writer.writeSuccess(\n `Package ${pkg.name}@${pkg.version} removed successfully`,\n );\n } catch (e) {\n context.progressBar.complete();\n context.writer.writeError(e?.toString() || 'Unknown error');\n }\n }\n\n private async addPackage(name: string, context: ICliExecutionContext) {\n const { progressBar, writer } = context;\n\n const hasPackage = await this.packagesManager.hasPackage(name);\n if (hasPackage) {\n writer.writeInfo(`Package ${name} already installed`);\n\n return;\n }\n\n progressBar.show();\n progressBar.setText(`Fetching package ${name}`);\n\n try {\n const promises = [\n this.scriptsLoader\n .getScript(`https://unpkg.com/${name}` + '/package.json')\n .catch((error) => ({\n error,\n content: null,\n xhr: null,\n }))\n .finally(() => {\n progressBar.update(10, {\n type: 'increment',\n });\n }),\n ];\n\n if (!name.startsWith(this.packagesManager.QODALIS_COMMAND_PREFIX)) {\n promises.push(\n this.scriptsLoader\n .getScript(\n `https://unpkg.com/${this.packagesManager.QODALIS_COMMAND_PREFIX}${name}` +\n '/package.json',\n )\n .catch((error) => ({\n error,\n content: null,\n xhr: null,\n }))\n .finally(() => {\n progressBar.update(10, {\n type: 'increment',\n });\n }),\n );\n }\n\n progressBar.update(10);\n\n const packages = await Promise.all(promises);\n\n if (packages.every((p) => p.error)) {\n progressBar.setText('Package not found');\n throw packages[0].error;\n }\n\n const validResponses = packages\n .filter((p) => p.content)\n .map((p) => JSON.parse(p.content || '{}'));\n\n progressBar.update(20, {\n type: 'increment',\n });\n progressBar.setText(\"Checking package's dependencies\");\n\n const packgeInfo = validResponses.some((x) =>\n x.name.startsWith(this.packagesManager.QODALIS_COMMAND_PREFIX),\n )\n ? validResponses.find((x) =>\n x.name.startsWith(\n this.packagesManager.QODALIS_COMMAND_PREFIX,\n ),\n )\n : validResponses[0];\n\n const response = await this.scriptsLoader.getScript(\n `https://unpkg.com/${packgeInfo.name}`,\n {\n onProgress: (progress) => {\n context.progressBar.update(progress);\n },\n },\n );\n\n progressBar.update(20, {\n type: 'increment',\n });\n progressBar.setText('Injecting package');\n\n const pkg: Package = {\n name: packgeInfo.name,\n version: packgeInfo.version || 'latest',\n url: response.xhr.responseURL,\n dependencies: packgeInfo.cliDependencies || [],\n };\n\n progressBar.update(80);\n progressBar.setText('Registering dependencies');\n\n await this.registerPackageDependencies(pkg, context);\n\n progressBar.update(90);\n progressBar.setText('Dependencies registered');\n\n if (response.content) {\n await this.scriptsLoader.injectBodyScript(response.content);\n }\n\n progressBar.update(95);\n progressBar.setText('Saving package');\n\n await this.packagesManager.addPackage(pkg);\n\n context.progressBar.complete();\n\n context.writer.writeSuccess(\n `Package ${packgeInfo.name}@${packgeInfo.version} added successfully`,\n );\n } catch (e) {\n context.progressBar.complete();\n context.writer.writeError(e?.toString() || 'Unknown error');\n }\n }\n\n private async updatePackage(\n name: string,\n context: ICliExecutionContext,\n ): Promise<void> {\n const { progressBar, writer } = context;\n\n progressBar.show();\n\n try {\n progressBar.update(10, {\n type: 'increment',\n });\n progressBar.setText(`Updating package ${name}`);\n const currentPackage = await this.packagesManager.getPackage(name);\n\n if (!currentPackage) {\n progressBar.complete();\n writer.writeError(`Package ${name} not found`);\n return;\n }\n\n const packageUrl = `https://unpkg.com/${currentPackage.name}`;\n\n const newPackage = await this.scriptsLoader\n .getScript(packageUrl + '/package.json')\n .then((response) => {\n return JSON.parse(response.content || '{}');\n });\n\n progressBar.update(20, {\n type: 'increment',\n });\n\n progressBar.setText(\n `Checking for updates for package ${currentPackage.name}`,\n );\n\n if (newPackage.version === currentPackage.version) {\n context.progressBar.complete();\n context.writer.writeInfo(\n `Package ${currentPackage.name} is already up to date with version ${currentPackage.version}`,\n );\n return;\n }\n\n const response = await this.scriptsLoader.getScript(packageUrl, {\n onProgress: (progress) => {\n context.progressBar.update(progress);\n },\n });\n\n progressBar.update(20, {\n type: 'increment',\n });\n progressBar.setText(`Updating package ${currentPackage.name}`);\n\n const updatedPkg: Package = {\n name: newPackage.name,\n version: newPackage.version || 'latest',\n url: response.xhr.responseURL,\n dependencies: newPackage.cliDependencies || [],\n };\n\n await this.registerPackageDependencies(updatedPkg, context);\n\n progressBar.update(90);\n progressBar.setText(`Injecting package ${currentPackage.name}`);\n\n if (response.content) {\n await this.scriptsLoader.injectBodyScript(response.content);\n }\n\n await this.packagesManager.updatePackage(updatedPkg);\n\n progressBar.setText(\n `Package ${currentPackage.name} updated successfully`,\n );\n progressBar.complete();\n\n writer.writeSuccess(\n `Package ${currentPackage.name} updated successfully to version ${newPackage.version} from ${currentPackage.version}`,\n );\n } catch (e) {\n progressBar.complete();\n writer.writeError(e?.toString() || 'Unknown error');\n }\n }\n\n private async registerPackageDependencies(\n pkg: Package,\n { logger }: ICliExecutionContext,\n ): Promise<void> {\n if (pkg.dependencies && pkg.dependencies.length > 0) {\n logger.info(`Injecting package ${pkg.name} dependencies`);\n\n for (const dependency of pkg.dependencies) {\n if (this.registeredDependencies.includes(dependency.name!)) {\n logger.info(\n `Dependency ${dependency.globalName} already registered`,\n );\n continue;\n }\n\n await this.scriptsLoader.injectScript(dependency.url);\n\n if (dependency.globalName) {\n const isAvailable = await this.waitForGlobal(\n dependency.globalName,\n 3000,\n );\n\n if (!isAvailable) {\n logger.error(\n `Dependency ${dependency.globalName} not found in global scope within timeout`,\n );\n\n return;\n } else {\n logger.info(\n `Dependency ${dependency.globalName} is available in global scope`,\n );\n }\n }\n\n this.registeredDependencies.push(dependency.name);\n }\n } else {\n logger.info(`Package ${pkg.name} has no dependencies`);\n }\n }\n\n /**\n * Waits until a global variable is available on the `window` object.\n * @param globalName {string} The name of the global variable to check.\n * @param timeout {number} The maximum time to wait in milliseconds.\n * @returns {Promise<boolean>} Resolves to `true` if the variable is found, `false` otherwise.\n */\n private waitForGlobal(\n globalName: string,\n timeout: number,\n ): Promise<boolean> {\n return new Promise((resolve) => {\n const interval = 50; // Check every 50ms\n let elapsed = 0;\n\n const check = () => {\n if ((window as any)[globalName]) {\n resolve(true);\n } else if (elapsed >= timeout) {\n resolve(false);\n } else {\n elapsed += interval;\n setTimeout(check, interval);\n }\n };\n\n check();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ICliExecutionContext,\n CliProcessCommand,\n ICliCommandProcessor,\n ICliCommandAuthor,\n CliProcessorMetadata,\n CliIcon,\n CliForegroundColor,\n} from '@qodalis/cli-core';\n\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../../../version';\nimport { CLi_Name_Art } from '../../constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliVersionCommandProcessor implements ICliCommandProcessor {\n command = 'version';\n\n description?: string | undefined = 'Prints the version information';\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n author?: ICliCommandAuthor | undefined = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: CliIcon.Settings,\n module: 'system',\n };\n\n async processCommand(\n _: CliProcessCommand,\n { writer }: ICliExecutionContext,\n ): Promise<void> {\n writer.writeln(\n `CLI Version@${writer.wrapInColor(LIBRARY_VERSION, CliForegroundColor.Green)}`,\n );\n\n writer.writeln(CLi_Name_Art);\n\n writer.writeln(\n writer.wrapInColor('Documentation: ', CliForegroundColor.Green) +\n 'https://cli-docs.qodalis.com/',\n );\n\n writer.writeln();\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln('Prints the current version of the CLI');\n }\n}\n","import { resolveCommandProcessorProvider } from '../../../utils';\nimport { CliFeedbackCommandProcessor } from './cli-feedback-command-processor';\nimport { CliHelpCommandProcessor } from './cli-help-command-processor';\nimport { CliHistoryCommandProcessor } from './cli-history-command-processor';\nimport { CliHotKeysCommandProcessor } from './cli-hot-keys-command-processor';\nimport { CliPackagesCommandProcessor } from './cli-packages-command-processor';\nimport { CliVersionCommandProcessor } from './cli-version-command-processor';\n\nexport { CliPackagesCommandProcessor } from './cli-packages-command-processor';\n\nexport { CliHotKeysCommandProcessor } from './cli-hot-keys-command-processor';\n\nexport { CliHelpCommandProcessor } from './cli-help-command-processor';\n\nexport { CliVersionCommandProcessor } from './cli-version-command-processor';\n\nexport { CliHistoryCommandProcessor } from './cli-history-command-processor';\n\nexport { CliFeedbackCommandProcessor } from './cli-feedback-command-processor';\n\nexport const systemProviders = [\n resolveCommandProcessorProvider(CliHelpCommandProcessor),\n resolveCommandProcessorProvider(CliVersionCommandProcessor),\n resolveCommandProcessorProvider(CliFeedbackCommandProcessor),\n resolveCommandProcessorProvider(CliHistoryCommandProcessor),\n resolveCommandProcessorProvider(CliPackagesCommandProcessor),\n resolveCommandProcessorProvider(CliHotKeysCommandProcessor),\n];\n","import {\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nexport class CliClearCommandProcessor implements ICliCommandProcessor {\n command = 'clear';\n\n description?: string | undefined = 'Clears the terminal';\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '🧹',\n module: 'misc',\n };\n\n async processCommand(\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.terminal.clear();\n }\n}\n","import {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION as Core_Version } from '@qodalis/cli-core';\nimport { LIBRARY_VERSION as CLI_Version } from '../../../version';\n\nexport class CliUnameCommandProcessor implements ICliCommandProcessor {\n command = 'uname';\n\n description?: string | undefined =\n 'Prints detailed system and browser information';\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: CliIcon.Flame,\n module: 'misc',\n };\n\n async processCommand(\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const { writer } = context;\n\n function writeItem(key: string, value: string): void {\n writer.writeln(\n `- ${writer.wrapInColor(key, CliForegroundColor.Cyan)}: ${value}`,\n );\n }\n\n writer.writeInfo('CLI:');\n writeItem('Core version', Core_Version);\n writeItem('Cli version', CLI_Version);\n\n writer.writeln();\n\n if (typeof navigator !== 'undefined') {\n writer.writeInfo('Browser Information:');\n\n writeItem('User Agent', navigator.userAgent);\n writeItem('Language', navigator.language);\n writeItem('Platform', navigator.platform);\n\n // Extracting more detailed information from userAgent\n const browserDetails = this.parseUserAgent(navigator.userAgent);\n writeItem('Browser', browserDetails.browserName);\n writeItem('Version', browserDetails.version);\n writeItem('OS', browserDetails.os);\n } else {\n writer.writeError(\n 'Browser information is not available in this environment.',\n );\n }\n }\n\n parseUserAgent(userAgent: string): {\n browserName: string;\n version: string;\n os: string;\n } {\n let browserName = 'Unknown';\n let version = 'Unknown';\n let os = 'Unknown';\n\n // Simple parsing logic for demonstration purposes\n if (userAgent.includes('Chrome')) {\n browserName = 'Chrome';\n version = userAgent.match(/Chrome\\/([\\d.]+)/)?.[1] || 'Unknown';\n } else if (userAgent.includes('Firefox')) {\n browserName = 'Firefox';\n version = userAgent.match(/Firefox\\/([\\d.]+)/)?.[1] || 'Unknown';\n } else if (\n userAgent.includes('Safari') &&\n !userAgent.includes('Chrome')\n ) {\n browserName = 'Safari';\n version = userAgent.match(/Version\\/([\\d.]+)/)?.[1] || 'Unknown';\n } else if (\n userAgent.includes('MSIE') ||\n userAgent.includes('Trident')\n ) {\n browserName = 'Internet Explorer';\n version =\n userAgent.match(/(?:MSIE |rv:)([\\d.]+)/)?.[1] || 'Unknown';\n }\n\n if (userAgent.includes('Windows')) {\n os = 'Windows';\n } else if (userAgent.includes('Mac OS')) {\n os = 'Mac OS';\n } else if (userAgent.includes('Linux')) {\n os = 'Linux';\n } else if (userAgent.includes('Android')) {\n os = 'Android';\n } else if (userAgent.includes('iPhone') || userAgent.includes('iPad')) {\n os = 'iOS';\n }\n\n return { browserName, version, os };\n }\n}\n","import {\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nexport class CliEchoCommandProcessor implements ICliCommandProcessor {\n command = 'echo';\n\n description = 'Prints the specified text';\n\n allowUnlistedCommands = true;\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '📢',\n module: 'misc',\n };\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const text = command.value || command.data || '';\n\n if (typeof text === 'object') {\n context.writer.writeJson(text);\n } else {\n context.writer.writeln(text);\n }\n\n context.process.output(text);\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln('echo <text>');\n context.writer.writeln('Prints the specified text');\n }\n}\n","import {\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliCommandProcessorRegistry,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport { CliProcessorsRegistry_TOKEN } from '../../tokens';\n\nexport class CliAliasCommandProcessor implements ICliCommandProcessor {\n command = 'alias';\n\n author = DefaultLibraryAuthor;\n\n description = 'Manage aliases for commands';\n\n processors?: ICliCommandProcessor[] | undefined;\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '🔥',\n module: 'misc',\n sealed: true,\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {\n aliases: {},\n },\n storeName: 'aliases',\n };\n\n public aliases: Record<string, string> = {};\n\n constructor() {\n this.processors = [\n {\n command: 'ls',\n description: 'List all aliases',\n processCommand: async (_, context) => {\n const { writer } = context;\n\n writer.writeln('Aliases:');\n Object.entries(this.aliases).forEach(([alias, command]) => {\n writer.writeInfo(` ${alias} -> ${command}`);\n });\n\n if (Object.keys(this.aliases).length === 0) {\n writer.writeInfo(' No aliases defined');\n }\n },\n },\n ];\n }\n\n public async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const registry = context.services.get<ICliCommandProcessorRegistry>(\n CliProcessorsRegistry_TOKEN,\n );\n\n const { writer } = context;\n const aliases = Object.keys(command.args);\n\n if (aliases.length === 0) {\n writer.writeError('No aliases provided');\n context.process.exit(-1);\n return;\n }\n\n for (const alias of aliases) {\n if (registry.processors.some((p) => p.command === alias)) {\n writer.writeError(\n `${alias} cannot be aliased to ${command.args[alias]}`,\n );\n context.process.exit(-1);\n return;\n }\n\n context.writer.writeInfo(`${alias} -> ${command.args[alias]}`);\n }\n\n context.state.updateState({\n aliases: {\n ...this.aliases,\n ...command.args,\n },\n });\n\n await context.state.persist();\n }\n\n async initialize(context: ICliExecutionContext): Promise<void> {\n context.state\n .select((x) => x['aliases'])\n .subscribe((aliases) => {\n this.aliases = aliases ?? {};\n });\n }\n}\n","import {\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nexport class CliUnAliasCommandProcessor implements ICliCommandProcessor {\n command = 'unalias';\n\n author = DefaultLibraryAuthor;\n\n description = 'Remove aliases for commands';\n\n valueRequired?: boolean | undefined = true;\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {},\n storeName: 'aliases',\n };\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '🔥',\n module: 'misc',\n sealed: true,\n };\n\n public async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const { writer } = context;\n\n const aliasToRemove = command.value!;\n\n const { aliases } = context.state.getState();\n\n if (!aliases[aliasToRemove]) {\n writer.writeError(`Alias ${aliasToRemove} not found`);\n context.process.exit(-1);\n return;\n }\n\n const updated: Record<string, any> = {};\n\n Object.keys(aliases)\n .filter((alias) => alias !== aliasToRemove)\n .forEach((alias) => {\n updated[alias] = aliases[alias];\n });\n\n context.state.updateState({\n aliases: updated,\n });\n\n await context.state.persist();\n }\n}\n","import {\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n delay,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nexport class CliSleepCommandProcessor implements ICliCommandProcessor {\n command = 'sleep';\n\n description?: string | undefined = 'Sleep for a specified amount of time';\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n module: 'misc',\n icon: CliIcon.Timer,\n };\n\n valueRequired?: boolean | undefined = true;\n\n constructor() {}\n\n async processCommand(\n command: CliProcessCommand,\n { writer }: ICliExecutionContext,\n ) {\n const time = parseInt(command.value!);\n\n await delay(time);\n\n writer.writeInfo(`Slept for ${time}ms`);\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln('Sleep for a specified amount of time');\n context.writer.writeln('Usage: sleep <time>');\n context.writer.writeln('Usage: sleep 5000 # Sleep for 5 seconds');\n }\n}\n","import {\n CliAliasCommandProcessor,\n CliEchoCommandProcessor,\n CliEvalCommandProcessor,\n CliSleepCommandProcessor,\n CliUnAliasCommandProcessor,\n} from '..';\nimport { CliClearCommandProcessor } from './cli-clear-command-processor';\nimport { CliUnameCommandProcessor } from './cli-uname-command-processor';\n\nexport * from './cli-echo-command-processor';\nexport * from './cli-clear-command-processor';\nexport * from './cli-alias-command-processor';\nexport * from './cli-unalias-command-processor';\nexport * from './cli-sleep-command-processor';\n\nexport const miscProcessors = [\n new CliClearCommandProcessor(),\n new CliEchoCommandProcessor(),\n new CliEvalCommandProcessor(),\n new CliAliasCommandProcessor(),\n new CliUnAliasCommandProcessor(),\n new CliSleepCommandProcessor(),\n new CliUnameCommandProcessor(),\n];\n","import { Inject, Injectable } from '@angular/core';\nimport {\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n ICliCommandParameterDescriptor,\n ICliCommandProcessor,\n ICliExecutionContext,\n ICliUsersStoreService,\n} from '@qodalis/cli-core';\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { ICliUsersStoreService_TOKEN } from '../../tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliAddUserCommandProcessor implements ICliCommandProcessor {\n command = 'adduser';\n\n description?: string | undefined = 'Add a new user';\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n module: 'users',\n icon: CliIcon.User,\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {},\n storeName: 'users',\n };\n\n allowUnlistedCommands?: boolean | undefined = true;\n\n valueRequired?: boolean | undefined = true;\n\n parameters?: ICliCommandParameterDescriptor[] | undefined = [\n {\n name: 'email',\n description: 'The email of the user',\n required: true,\n type: 'email',\n validator: (value: string) => {\n //validate email format\n const emailRegex =\n /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n if (!emailRegex.test(value)) {\n return {\n valid: false,\n message: 'Invalid email format',\n };\n }\n\n return {\n valid: true,\n };\n },\n },\n {\n name: 'groups',\n description: 'The groups the user belongs to, separated by commas',\n type: 'string',\n required: false,\n },\n ];\n\n constructor(\n @Inject(ICliUsersStoreService_TOKEN)\n private readonly usersStore: ICliUsersStoreService,\n ) {}\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const name: string = command.value as string;\n const email: string = command.args['email'];\n const groups: string[] = command.args['groups']?.split(',') || [];\n\n try {\n await this.usersStore.createUser({\n name,\n email,\n groups,\n });\n\n context.writer.writeInfo('User created successfully');\n } catch (e) {\n console.error(e);\n context.writer.writeError(\n e?.toString() || 'An error occurred while creating the user',\n );\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln('Add a new user');\n context.writer.writeln(\n 'Usage: adduser <name> --email=<email> --groups=<groups>',\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n ICliCommandParameterDescriptor,\n ICliCommandProcessor,\n ICliExecutionContext,\n ICliUsersStoreService,\n} from '@qodalis/cli-core';\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { ICliUsersStoreService_TOKEN } from '../../tokens';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliListUsersCommandProcessor implements ICliCommandProcessor {\n command = 'listusers';\n\n description?: string | undefined = 'List all users';\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n module: 'users',\n icon: CliIcon.User,\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {},\n storeName: 'users',\n };\n\n parameters?: ICliCommandParameterDescriptor[] | undefined = [\n {\n name: 'query',\n description: 'The query to filter the users',\n type: 'string',\n required: false,\n },\n {\n name: 'skip',\n description: 'The number of users to skip',\n type: 'number',\n required: false,\n },\n {\n name: 'take',\n description: 'The maximum number of users to return',\n type: 'number',\n required: false,\n },\n ];\n\n constructor(\n @Inject(ICliUsersStoreService_TOKEN)\n private readonly usersStore: ICliUsersStoreService,\n ) {}\n\n async processCommand(\n command: CliProcessCommand,\n { writer }: ICliExecutionContext,\n ): Promise<void> {\n const users = await firstValueFrom(\n this.usersStore.getUsers({\n query: command.args['query'],\n skip: command.args['skip'],\n take: command.args['take'],\n }),\n );\n\n writer.writeln('Users:');\n writer.writeObjectsAsTable(users);\n }\n\n writeDescription({ writer }: ICliExecutionContext): void {\n writer.writeln(this.description!);\n writer.writeln('Usage: listusers');\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n ICliExecutionContext,\n CliProcessCommand,\n ICliCommandProcessor,\n ICliCommandParameterDescriptor,\n ICliUsersStoreService,\n ICliUserSessionService,\n CliProcessorMetadata,\n CliIcon,\n CliForegroundColor,\n CliStateConfiguration,\n} from '@qodalis/cli-core';\n\nimport { firstValueFrom } from 'rxjs';\nimport {\n ICliUserSessionService_TOKEN,\n ICliUsersStoreService_TOKEN,\n} from '../../tokens';\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliSwitchUserCommandProcessor implements ICliCommandProcessor {\n command = 'su';\n\n description?: string | undefined = 'Switch user';\n\n allowUnlistedCommands?: boolean | undefined = true;\n\n parameters?: ICliCommandParameterDescriptor[] | undefined = [\n {\n name: 'reload',\n description: 'Reload the page after switching user',\n type: 'boolean',\n required: false,\n aliases: ['r'],\n },\n ];\n\n author = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n module: 'users',\n icon: CliIcon.User,\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {},\n storeName: 'users',\n };\n\n valueRequired = true;\n\n constructor(\n @Inject(ICliUserSessionService_TOKEN)\n private readonly userSessionService: ICliUserSessionService,\n @Inject(ICliUsersStoreService_TOKEN)\n private readonly usersStore: ICliUsersStoreService,\n ) {}\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n try {\n const fromUser = context.userSession?.user;\n\n const toUser = command.value;\n\n if (!fromUser) {\n context.writer.writeError('Missing user to switch from');\n context.process.exit(-1);\n return;\n }\n\n if (!toUser) {\n context.writer.writeError('Missing user to switch to');\n context.process.exit(-1);\n return;\n }\n\n context.spinner?.show(CliIcon.User + ' Switching...');\n\n const user = await firstValueFrom(this.usersStore.getUser(toUser));\n\n if (!user) {\n context.writer.writeError(`User ${toUser} not found`);\n\n context.spinner?.hide();\n context.process.exit(-1);\n return;\n }\n\n if (user.id === fromUser.id) {\n context.writer.writeError('Already on the user');\n context.spinner?.hide();\n context.process.exit(-1);\n return;\n }\n\n await this.userSessionService.setUserSession({\n user,\n });\n\n context.spinner?.hide();\n\n context.writer.writeSuccess(\n `Switch to ${context.writer.wrapInColor(toUser, CliForegroundColor.Cyan)} was successfully`,\n );\n\n const reload =\n command.args['reload'] ||\n command.args['r'] ||\n context.options?.usersModule?.reloadPageOnUserChange === true;\n\n if (reload) {\n context.writer.writeln('Reloading the page in 3 seconds...');\n setTimeout(() => {\n window.location.reload();\n }, 3000);\n }\n } catch (e) {\n console.error(e);\n context.spinner?.hide();\n context.writer.writeError('Failed to switch user');\n\n context.process.exit(-1);\n return;\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln('Switch user command');\n context.writer.writeln('Usage: su <user email>');\n context.writer.writeln('Example: su user@domain.com');\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n ICliCommandAuthor,\n ICliCommandParameterDescriptor,\n ICliCommandProcessor,\n ICliExecutionContext,\n ICliUserSessionService,\n} from '@qodalis/cli-core';\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { ICliUserSessionService_TOKEN } from '../../tokens';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliWhoamiCommandProcessor implements ICliCommandProcessor {\n command = 'whoami';\n\n description?: string | undefined = 'Display current user information';\n\n author?: ICliCommandAuthor | undefined = DefaultLibraryAuthor;\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n module: 'users',\n icon: CliIcon.User,\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {},\n storeName: 'users',\n };\n\n parameters?: ICliCommandParameterDescriptor[] | undefined = [\n {\n name: 'info',\n description: 'Display user information',\n type: 'boolean',\n required: false,\n aliases: ['i'],\n },\n ];\n\n constructor(\n @Inject(ICliUserSessionService_TOKEN)\n private readonly userSessionService: ICliUserSessionService,\n ) {}\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const user = await firstValueFrom(\n this.userSessionService.getUserSession(),\n );\n\n if (!user) {\n context.writer.writeln('No user session found');\n return;\n }\n\n if (command.args['info'] || command.args['i']) {\n context.writer.writeln('User information:');\n context.writer.writeObjectsAsTable([user.user]);\n } else {\n context.writer.writeln(user?.user.email);\n }\n }\n\n writeDescription(context: ICliExecutionContext): void {\n context.writer.writeln(this.description!);\n }\n}\n","import { resolveCommandProcessorProvider } from '../../../utils';\nimport { CliAddUserCommandProcessor } from './cli-add-user-command-processor';\nimport { CliListUsersCommandProcessor } from './cli-list-users-command-processor';\nimport { CliSwitchUserCommandProcessor } from './cli-switch-user-command-processor';\nimport { CliWhoamiCommandProcessor } from './cli-whoami-command-processor';\n\nexport * from './cli-switch-user-command-processor';\nexport * from './cli-whoami-command-processor';\nexport * from './cli-add-user-command-processor';\nexport * from './cli-list-users-command-processor';\n\nexport const usersProviders = [\n resolveCommandProcessorProvider(CliSwitchUserCommandProcessor),\n resolveCommandProcessorProvider(CliWhoamiCommandProcessor),\n resolveCommandProcessorProvider(CliAddUserCommandProcessor),\n resolveCommandProcessorProvider(CliListUsersCommandProcessor),\n];\n","import { CliLogLevel, ICliLogger } from '@qodalis/cli-core';\n\nexport class CliLogger implements ICliLogger {\n private CliLogLevel: CliLogLevel = CliLogLevel.ERROR;\n\n constructor() {}\n\n setCliLogLevel(level: CliLogLevel): void {\n this.CliLogLevel = level;\n }\n\n log(...args: any[]): void {\n if (this.CliLogLevel <= CliLogLevel.LOG) {\n console.log(...args);\n }\n }\n\n info(...args: any[]): void {\n if (this.CliLogLevel <= CliLogLevel.INFO) {\n console.info(...args);\n }\n }\n\n warn(...args: any[]): void {\n if (this.CliLogLevel <= CliLogLevel.WARN) {\n console.warn(...args);\n }\n }\n\n error(...args: any[]): void {\n if (this.CliLogLevel <= CliLogLevel.ERROR) {\n console.error(...args);\n }\n }\n\n debug(...args: any[]): void {\n if (this.CliLogLevel <= CliLogLevel.DEBUG) {\n console.debug(...args);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ICliCommandChildProcessor,\n ICliCommandProcessor,\n ICliCommandProcessorRegistry,\n} from '@qodalis/cli-core';\nimport { miscProcessors } from '../processors';\n\n@Injectable()\nexport class CliCommandProcessorRegistry\n implements ICliCommandProcessorRegistry\n{\n public readonly processors: ICliCommandProcessor[] = [...miscProcessors];\n\n constructor() {}\n\n public registerProcessor(processor: ICliCommandProcessor): void {\n const existingProcessor = this.getProcessorByName(processor.command);\n\n if (existingProcessor) {\n if (existingProcessor.metadata?.sealed) {\n console.warn(\n `Processor with command: ${processor.command} is sealed and cannot be replaced.`,\n );\n\n return;\n }\n\n const existingIndex = this.processors.findIndex(\n (p) => p.command === processor.command,\n );\n\n // Replace the existing processor\n this.processors[existingIndex] = processor;\n } else {\n this.processors.push(processor);\n }\n }\n\n public unregisterProcessor(processor: ICliCommandProcessor): void {\n const existingProcessor = this.getProcessorByName(processor.command);\n\n if (existingProcessor) {\n if (existingProcessor.metadata?.sealed) {\n console.warn(\n `Processor with command: ${processor.command} is sealed and cannot be removed.`,\n );\n return;\n }\n }\n\n const index = this.processors.findIndex(\n (p) => p.command === processor.command,\n );\n\n if (index !== -1) {\n this.processors.splice(index, 1);\n }\n }\n\n public findProcessor(\n mainCommand: string,\n chainCommands: string[],\n ): ICliCommandProcessor | undefined {\n return this.findProcessorInCollection(\n mainCommand,\n chainCommands,\n this.processors,\n );\n }\n\n /**\n * Recursively searches for a processor matching the given command.\n * @param mainCommand The main command name.\n * @param chainCommands The remaining chain commands (if any).\n * @param processors The list of available processors.\n * @returns The matching processor or undefined if not found.\n */\n public findProcessorInCollection(\n mainCommand: string,\n chainCommands: string[],\n processors: ICliCommandProcessor[],\n ): ICliCommandProcessor | undefined {\n const processor = processors.find(\n (p) => p.command.toLowerCase() === mainCommand.toLowerCase(),\n );\n\n if (!processor) {\n return undefined;\n }\n\n if (chainCommands.length === 0) {\n return processor;\n }\n\n if (processor.processors && processor.processors.length > 0) {\n return this.findProcessorInCollection(\n chainCommands[0],\n chainCommands.slice(1),\n processor.processors,\n );\n } else if (processor.allowUnlistedCommands || processor.valueRequired) {\n return processor;\n }\n\n return undefined;\n }\n\n public getRootProcessor(\n child: ICliCommandChildProcessor,\n ): ICliCommandProcessor {\n return child.parent ? this.getRootProcessor(child.parent) : child;\n }\n\n private getProcessorByName(name: string): ICliCommandProcessor | undefined {\n return this.processors.find(\n (p) => p.command.toLowerCase() === name.toLowerCase(),\n );\n }\n}\n","import {\n ClassProvider,\n FactoryProvider,\n Injectable,\n Injector,\n Provider,\n StaticProvider,\n ValueProvider,\n} from '@angular/core';\nimport { CliProvider, ICliServiceProvider } from '@qodalis/cli-core';\n\n@Injectable()\nexport class CliServiceProvider implements ICliServiceProvider {\n private providers: StaticProvider[] = [];\n private currentInjector: Injector;\n\n constructor(injector: Injector) {\n this.currentInjector = injector;\n }\n\n get<T>(service: any): T {\n try {\n return this.currentInjector.get<T>(service);\n } catch (e) {\n throw new Error(`Service ${service} not found`);\n }\n }\n\n set(definition: CliProvider | CliProvider[]): void {\n const definitions = Array.isArray(definition)\n ? definition\n : [definition];\n\n const newProviders: Provider = [];\n\n for (const def of definitions) {\n let newProvider: Provider = {\n provide: def.provide,\n };\n\n if (def.hasOwnProperty('useClass')) {\n const classProvider: ClassProvider = {\n provide: def.provide,\n useClass: def.useClass,\n multi: def.multi,\n };\n newProvider = classProvider;\n } else if (def.hasOwnProperty('useValue')) {\n const valueProvider: ValueProvider = {\n provide: def.provide,\n useValue: def.useValue,\n multi: def.multi,\n };\n\n newProvider = valueProvider;\n } else if (def.hasOwnProperty('useFactory')) {\n const valueProvider: FactoryProvider = {\n provide: def.provide,\n useFactory: def.useFactory,\n multi: def.multi,\n };\n\n newProvider = valueProvider;\n }\n\n newProviders.push(newProvider);\n }\n\n this.providers.push(...newProviders);\n\n this.currentInjector = Injector.create({\n providers: newProviders,\n parent: this.currentInjector,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n ICliCommandAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nimport { DefaultLibraryAuthor } from '@qodalis/cli-core';\nimport { ITheme } from '@xterm/xterm';\nimport { themes, ThemeState } from './types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CliThemeCommandProcessor implements ICliCommandProcessor {\n command = 'theme';\n\n description = 'Interact with the theme';\n\n author?: ICliCommandAuthor | undefined = DefaultLibraryAuthor;\n\n version?: string | undefined = '1.0.1';\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n metadata?: CliProcessorMetadata | undefined = {\n sealed: true,\n icon: '🎨',\n module: 'system',\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {\n selectedTheme: 'default',\n customOptions: null,\n },\n };\n\n private themeOptions: string[] = Object.keys(themeOptions);\n\n private defaultTheme!: ITheme;\n\n constructor() {\n this.processors = [\n {\n command: 'list',\n description: 'List available themes',\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n context.writer.writeln('Available themes:');\n Object.keys(themes).forEach((theme) => {\n context.writer.writeln(\n context.writer.wrapInColor(\n theme,\n CliForegroundColor.Cyan,\n ),\n );\n });\n },\n },\n {\n command: 'current',\n description: 'Show the current theme',\n processCommand: async (\n _: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const state = context.state.getState<ThemeState>();\n const theme = state.selectedTheme || 'custom';\n\n context.writer.writeln(`Current theme: ${theme}`);\n context.writer.writeln('Theme options:');\n Object.keys(context.terminal.options.theme!).forEach(\n (key) => {\n context.writer.writeln(\n `${key}: ${(context.terminal.options.theme as any)[key]}`,\n );\n },\n );\n },\n },\n {\n command: 'apply',\n description: 'Apply a theme',\n valueRequired: true,\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const theme = command.value!;\n\n if (!themes[theme]) {\n context.writer.writeError(`Theme ${theme} not found`);\n return;\n }\n\n context.terminal.options.theme = themes[theme];\n\n context.state.updateState({\n selectedTheme: theme,\n customOptions: null,\n });\n\n await context.state.persist();\n\n this.applyStyles(context);\n\n context.writer.writeSuccess(`Theme ${theme} applied`);\n },\n },\n {\n command: 'set',\n allowUnlistedCommands: true,\n description: 'Set a theme variable',\n parameters: [\n {\n name: 'save',\n description: 'Save the theme settings',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const [key, value] = command.command.split(' ').slice(2);\n\n if (!this.themeOptions.includes(key)) {\n context.writer.writeError(\n `Unsupported key: ${key}, supported keys: ${this.themeOptions.join(', ')}`,\n );\n return;\n }\n\n context.terminal.options.theme = {\n ...context.terminal.options.theme,\n [key]: value,\n };\n\n context.state.updateState({\n selectedTheme: null,\n customOptions: context.terminal.options.theme,\n });\n\n context.writer.writeSuccess(`Set ${key} to ${value}`);\n\n this.applyStyles(context);\n\n if (command.args['save']) {\n await this.saveTheme(context);\n }\n },\n },\n {\n command: 'save',\n description: 'Save the current theme settings',\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n context.terminal.options.theme = {};\n context.state.updateState({\n selectedTheme: null,\n customOptions: context.terminal.options.theme,\n });\n\n await this.saveTheme(context);\n },\n },\n {\n command: 'reset',\n description: 'Reset the theme to the default',\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n context.terminal.options.theme = { ...this.defaultTheme };\n context.state.reset();\n await context.state.persist();\n context.writer.writeSuccess('Theme reset to default');\n },\n },\n ];\n }\n\n async initialize(context: ICliExecutionContext): Promise<void> {\n this.defaultTheme = context.terminal.options.theme!;\n const state = context.state.getState<ThemeState>();\n\n if (state.selectedTheme && state.selectedTheme !== 'default') {\n context.terminal.options.theme = themes[state.selectedTheme];\n } else if (state.customOptions) {\n context.terminal.options.theme = state.customOptions;\n }\n\n this.applyStyles(context);\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.executor.showHelp(command, context);\n }\n\n private applyStyles(context: ICliExecutionContext) {\n const parents = document.getElementsByClassName('terminal-container');\n\n for (const parent of Array.from(parents)) {\n (parent as HTMLElement).style.background =\n context.terminal.options.theme?.background ||\n this.defaultTheme.background!;\n }\n }\n\n private async saveTheme(context: ICliExecutionContext): Promise<void> {\n await context.state.persist();\n\n context.writer.writeSuccess('Theme saved');\n }\n\n writeDescription?(context: ICliExecutionContext): void {\n context.writer.writeln('Interact with the theme');\n\n context.writer.writeln('Examples:');\n context.writer.writeln(\n context.writer.wrapInColor(\n 'theme apply dracula',\n CliForegroundColor.Magenta,\n ),\n );\n context.writer.writeln(\n context.writer.wrapInColor(\n 'theme reset',\n CliForegroundColor.Magenta,\n ),\n );\n context.writer.writeln(\n context.writer.wrapInColor(\n 'theme set background red',\n CliForegroundColor.Magenta,\n ),\n );\n context.writer.writeln(\n context.writer.wrapInColor(\n 'theme set foreground red',\n CliForegroundColor.Magenta,\n ),\n );\n\n context.writer.write('Available theme options: ');\n context.writer.writeln(\n context.writer.wrapInColor(\n this.themeOptions.join(', ') ?? '',\n CliForegroundColor.Blue,\n ),\n );\n }\n}\n\nconst themeOptions: ITheme = {\n background: '',\n foreground: '',\n black: '',\n blue: '',\n brightBlack: '',\n brightBlue: '',\n brightCyan: '',\n brightGreen: '',\n brightMagenta: '',\n brightRed: '',\n brightWhite: '',\n brightYellow: '',\n cyan: '',\n green: '',\n magenta: '',\n red: '',\n white: '',\n yellow: '',\n cursor: '',\n cursorAccent: '',\n selectionBackground: '',\n selectionForeground: '',\n selectionInactiveBackground: '',\n};\n","import { Provider } from '@angular/core';\nimport {\n CliLogger_TOKEN,\n CliProcessorsRegistry_TOKEN,\n CliServiceProvider_TOKEN,\n ICliPingServerService_TOKEN,\n ICliUserSessionService_TOKEN,\n ICliUsersStoreService_TOKEN,\n} from './cli/tokens';\nimport { CliUserSessionService } from './cli/services/cli-user-session.service';\nimport { CliUsersStoreService } from './cli/services/cli-users-store.service';\nimport { resolveCommandProcessorProvider } from './utils';\nimport { CliPingCommandProcessor } from './cli/processors';\nimport {\n CliDefaultPingServerService,\n ScriptLoaderService,\n} from './cli/services';\nimport { CliCanViewService } from './services';\nimport { systemProviders } from './cli/processors/system';\nimport { usersProviders } from './cli/processors/users';\nimport { CliLogger } from './services/cli-logger.service';\nimport { CliCommandProcessorRegistry } from './cli/services/cli-command-processor-registry';\nimport { CliStateStoreManager } from './cli/state/cli-state-store-manager';\nimport { CliServiceProvider } from './cli/services/system/cli-service-provider';\nimport { CliThemeCommandProcessor } from './cli/processors/theme/cli-theme-command-processor';\n\nexport const resolveCliProviders = (): Provider[] => {\n return [\n ScriptLoaderService,\n CliCanViewService,\n CliStateStoreManager,\n {\n useClass: CliUserSessionService,\n provide: ICliUserSessionService_TOKEN,\n },\n {\n useClass: CliUsersStoreService,\n provide: ICliUsersStoreService_TOKEN,\n },\n {\n useClass: CliDefaultPingServerService,\n provide: ICliPingServerService_TOKEN,\n },\n {\n useClass: CliLogger,\n provide: CliLogger_TOKEN,\n },\n {\n useClass: CliCommandProcessorRegistry,\n provide: CliProcessorsRegistry_TOKEN,\n },\n {\n useClass: CliServiceProvider,\n provide: CliServiceProvider_TOKEN,\n },\n ...systemProviders,\n ...usersProviders,\n resolveCommandProcessorProvider(CliThemeCommandProcessor),\n resolveCommandProcessorProvider(CliPingCommandProcessor),\n ];\n};\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { TabMenuModule } from 'primeng/tabmenu';\nimport { MenuModule } from 'primeng/menu';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { CliComponent } from './cli/cli.component';\nimport { CollapsableContentComponent } from './collapsable-content/collapsable-content.component';\nimport { CliPanelComponent } from './cli-panel/cli-panel.component';\nimport { CliTerminalComponent } from './cli-terminal/cli-terminal.component';\nimport { resolveCliProviders } from '.';\n\n@NgModule({\n declarations: [\n CliComponent,\n CollapsableContentComponent,\n CliPanelComponent,\n CliTerminalComponent,\n ],\n imports: [\n CommonModule,\n //PrimeNG\n ButtonModule,\n TabMenuModule,\n MenuModule,\n SplitButtonModule,\n TooltipModule,\n ],\n providers: [\n resolveCliProviders(),\n { provide: ActivatedRoute, useValue: {} },\n ],\n exports: [CliPanelComponent, CliComponent],\n})\nexport class CliModule {}\n","/*\n * Public API Surface of cli\n */\n\nexport * from './lib/cli.module';\n\nexport * from './lib/cli/services';\n\nexport * from './lib/cli/context';\n\nexport * from './lib/utils';\n\nexport * from './lib/cli/tokens';\n\nexport * from './lib/services';\n\nexport {\n CliPanelComponent,\n CliPanelOptions,\n} from './lib/cli-panel/cli-panel.component';\n\nexport { CliComponent } from './lib/cli/cli.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CliKeyValueStore","map","i1.CliCommandExecutorService","i1.CliCommandHistoryService","i2.CliKeyValueStore","i3.CliTerminalComponent","i1.CliCanViewService","i2","i3.CliComponent","i4.CollapsableContentComponent","Core_Version","CLI_Version"],"mappings":";;;;;;;;;;;;;;;;;;;;AAWA;;AAEG;MACU,yBAAyB,GAAG,IAAI,cAAc,CAEzD,gBAAgB,EAAE;AAEpB;;AAEG;MACU,4BAA4B,GACrC,IAAI,cAAc,CAAyB,0BAA0B,EAAE;AAE3E;;AAEG;MACU,2BAA2B,GAAG,IAAI,cAAc,CAE3D,yBAAyB,EAAE;AAE7B;;AAEG;MACU,2BAA2B,GAAG,IAAI,cAAc,CAE3D,yBAAyB,EAAE;AAE7B;;AAEG;MACU,eAAe,GAAG,IAAI,cAAc,CAAa,YAAY,EAAE;AAE5E;;AAEG;MACU,2BAA2B,GACpC,IAAI,cAAc,CAA+B,yBAAyB,EAAE;MAEnE,wBAAwB,GAAG,IAAI,cAAc,CACtD,sBAAsB;;MCzCb,aAAa,CAAA;AAKtB,IAAA,WAAA,CACqB,QAA6B,EAC9B,IAAY,EACX,YAAsB,EAAA;QAFtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;QAC9B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACX,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;QAEvC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAW,YAAY,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,UAAU,GAAG,CAAe,YAAA,EAAA,IAAI,EAAE,CAAC;KAC3C;IAED,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAO,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,QAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;KACzD;AAED,IAAA,MAAM,CAAI,QAAgC,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAClC,GAAG,CAAC,QAAQ,CAAC,EACb,oBAAoB,EAAE,CACzB,CAAC;KACL;AAED,IAAA,SAAS,CAAC,QAAmC,EAAA;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KACzD;IAED,KAAK,GAAA;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;AAED,IAAA,MAAM,OAAO,GAAA;QACT,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CACnC,qBAAqB,CACxB,CAAC;AAEF,QAAA,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC7D;AAED,IAAA,MAAM,UAAU,GAAA;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CACnC,qBAAqB,CACxB,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAW,IAAI,CAAC,UAAU,CAAC,CAAC;AAEjE,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACJ;AACJ;;MCpDY,oBAAoB,CAAA;AAG7B,IAAA,WAAA,CAEqB,QAA6B,EAAA;QAA7B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AAJ1C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;KAK/C;IAEG,aAAa,CAChB,IAAY,EACZ,YAAkC,EAAA;QAElC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,IAAI,EACJ,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC,CAC7D,CAAC;AACL,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;KACjC;AAEM,IAAA,sBAAsB,CACzB,SAA+B,EAAA;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAC9B,2BAA2B,CAC9B,CAAC;QAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACrB,aAAa,CAAC,kBAAkB,EAAE,SAAS;YACvC,aAAa,CAAC,OAAO,EACzB,aAAa,CAAC,kBAAkB,EAAE,YAAY,CACjD,CAAC;KACL;AApCQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAIjB,wBAAwB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAJ3B,oBAAoB,EAAA,CAAA,CAAA,EAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAKF,MAAM;2BAAC,wBAAwB,CAAA;;;MCG3B,0BAA0B,CAAA;IAqBnC,WACoB,CAAA,OAA4B,EAC5C,SAA+B,EAAA;QADf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;AAG5C,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;AACvD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAEjC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ;aACxB,GAAG,CAAuB,oBAAoB,CAAC;aAC/C,sBAAsB,CAAC,SAAS,CAAC,CAAC;KAC1C;AACJ;;MCzDY,iBAAiB,CAAA;AAC1B,IAAA,WAAA,CAA4B,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;AAElD,IAAA,KAAK,CAAC,IAAY,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC7B;AACD,IAAA,OAAO,CAAC,IAAa,EAAA;QACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KACrC;AAEM,IAAA,YAAY,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;KACvE;AAEM,IAAA,SAAS,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;KACrE;AAEM,IAAA,YAAY,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;KAC1E;AAEM,IAAA,UAAU,CAAC,OAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;KACrE;AAEO,IAAA,QAAQ,CACZ,OAAe,EACf,KAAyB,EACzB,IAAc,EAAA;QAEd,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,EAAE,KAAK,CAAC,CACjE,CAAC;KACL;AAEM,IAAA,YAAY,CAAC,OAInB,EAAA;AACG,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAE9D,QAAA,IAAI,MAAM,GAAG,OAAO,IAAI,EAAE,CAAC;AAC3B,QAAA,IAAI,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,EAAE;AAC7B,YAAA,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,SAAA;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAE/B,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACtB;IAEM,WAAW,CAAC,IAAY,EAAE,KAAyB,EAAA;AACtD,QAAA,OAAO,KAAK,GAAG,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC;KAClD;IAEM,qBAAqB,CAAC,IAAY,EAAE,KAAyB,EAAA;AAChE,QAAA,OAAO,KAAK,GAAG,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC;KAClD;AAEM,IAAA,SAAS,CAAC,IAAS,EAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3C;IAEM,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAA;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACnC;AAEM,IAAA,mBAAmB,CAAC,OAAc,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YACxC,OAAO;AACV,SAAA;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAC1C,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAClC;IAEM,UAAU,CAAC,OAAiB,EAAE,IAAgB,EAAA;;AAEjD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,KAC3C,IAAI,CAAC,GAAG,CACJ,MAAM,CAAC,MAAM,EACb,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CACnD,CACJ,CAAC;;QAGF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,KACxC,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;QAGzC,IAAI,CAAC,KAAK,CACN,OAAO;aACF,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KACX,IAAI,CAAC,WAAW,CACZ,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAC7B,kBAAkB,CAAC,MAAM,CAC5B,CACJ;AACA,aAAA,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAC5B,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CACN,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CACrE,CAAC;;AAGF,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,KAAK,CACN,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,gBAAA,MAAM,CACb,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AACJ;;MC1IY,kBAAkB,CAAA;AAK3B,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAJtC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE3B,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAKV,IAAa,CAAA,aAAA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;KAJiB;AAMnC,IAAA,IAAI,CAAC,IAAa,EAAA;AACrB,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,MAAK;;AAEpC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;AAEjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;iBAChC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,EAAE,CAAC,CACpD,CAAC;;AAEF,YAAA,IAAI,CAAC,YAAY;AACb,gBAAA,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SAC3D,EAAE,GAAG,CAAC,CAAC;KACX;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC/B,SAAA;;AAGD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;KAClB;AAEM,IAAA,OAAO,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AACJ;;MC5CY,sBAAsB,CAAA;AAS/B,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QARtC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAEnB,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAElB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QACb,IAAK,CAAA,KAAA,GAAG,GAAG,CAAC;QACZ,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;KAEgB;AAEnC,IAAA,IAAI,CAAC,IAAa,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;;AAGvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,MAAK;YACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;;AAGzB,YAAA,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,aAAA;SACJ,EAAE,GAAG,CAAC,CAAC;KACX;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACnC,SAAA;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KAC1B;IAEM,MAAM,CACT,QAAgB,EAChB,OAAoD,EAAA;AAEpD,QAAA,IAAI,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAC7B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,SAAA;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;AAEM,IAAA,OAAO,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAEO,iBAAiB,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;AACxE,QAAA,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzC,QAAA,MAAM,WAAW,GAAG,CAAA,CAAA,EAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA,EAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1E,QAAA,MAAM,UAAU,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,CAAA,CAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAEzD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,CAAG,EAAA,WAAW,IAAI,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC;QAE3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC1C;IAEO,gBAAgB,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChD,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjC,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,aAAA;AACJ,SAAA;KACJ;AACJ;;MCzGY,YAAY,CAAA;AACrB,IAAA,WAAA,CAA6B,OAA6B,EAAA;QAA7B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;KAAI;IAE9D,MAAM,KAAK,CAAC,IAAY,EAAA;QACpB,IAAI;YACA,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;AAClE,SAAA;KACJ;AAED,IAAA,MAAM,IAAI,GAAA;QACN,IAAI;AACA,YAAA,OAAO,MAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC/C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;AAChE,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;AACJ;;ACrBK,MAAO,kBAAmB,SAAQ,KAAK,CAAA;AAGzC,IAAA,WAAA,CAAY,IAAY,EAAA;AACpB,QAAA,KAAK,CAAC,CAAA,yBAAA,EAA4B,IAAI,CAAA,CAAE,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACrD;AACJ;;MCNY,mBAAmB,CAAA;AAM5B,IAAA,WAAA,CAA6B,OAA6B,EAAA;QAA7B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsB;QAH1D,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAGqC;IAE9D,IAAI,CACA,IAAa,EACb,OAEC,EAAA;AAED,QAAA,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAEjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAErB,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,SAAA;KACJ;AAED,IAAA,MAAM,CAAC,IAAS,EAAA;AACZ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;IAED,GAAG,GAAA;AACC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACrB;AACJ;;MCnCY,uBAAuB,CAAA;AAMhC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QALtC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAGnB,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;KAEgB;AAEnC,IAAA,IAAI,CAAC,IAAa,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KAC7B;IAED,QAAQ,CAAC,IAAY,EAAE,OAAgC,EAAA;QACnD,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QAE9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC;AAEpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,MAAK;AACtC,YAAA,IAAI,QAAQ,EAAE;;AAEV,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,gBAAA,KAAK,EAAE,CAAC;;AAGR,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC5B,QAAQ,GAAG,KAAK,CAAC;AACpB,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,iBAAiB,EAAE;AAC1B,gBAAA,aAAa,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAE9B,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;AAClB,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAA;AACL,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,aAAA;AAAM,iBAAA;;gBAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,gBAAA,KAAK,EAAE,CAAC;;gBAGR,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,oBAAA,aAAa,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,iBAAA;AACJ,aAAA;AACL,SAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;KACpB;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;KAClB;AACJ;;MCxDY,mBAAmB,CAAA;IA2B5B,WACI,CAAA,QAAkB,EACX,QAAkB,EAClB,QAAmC,EACnC,UAGG,EACV,UAAuB,EAAA;QANhB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA2B;QACnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAGP;AAnBE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAuB1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;;QAGvD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAE1D,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;;QAG7C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;KACzE;IAED,mBAAmB,CACf,SAA2C,EAC3C,MAAgB,EAAA;QAEhB,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAElC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CACjB,MAAM;AACF,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,6CAA6C,CACpD,CAAC;AACL,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;KACrC;AAED;;;;AAIG;IACI,iBAAiB,GAAA;AACpB,QAAA,QACI,IAAI,CAAC,WAAW,CAAC,SAAS;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAC7B;KACL;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACvB;AAEM,IAAA,UAAU,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;KAC9B;AACJ;;MC9HY,gBAAgB,CAAA;AAKzB,IAAA,WAAA,GAAA;QAJQ,IAAM,CAAA,MAAA,GAAG,eAAe,CAAC;QACzB,IAAS,CAAA,SAAA,GAAG,eAAe,CAAC;KAGpB;AAEhB;;AAEG;IACI,UAAU,GAAA;QACb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE/C,YAAA,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,KAAI;AAChC,gBAAA,MAAM,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;gBACrD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC/C,oBAAA,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,iBAAA;AACL,aAAC,CAAC;AAEF,YAAA,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;gBAC1B,IAAI,CAAC,EAAE,GAAI,KAAK,CAAC,MAA2B,CAAC,MAAM,CAAC;AACpD,gBAAA,OAAO,EAAE,CAAC;AACd,aAAC,CAAC;AAEF,YAAA,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;AACtD,gBAAA,MAAM,EAAE,CAAC;AACb,aAAC,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;IACH,MAAM,GAAG,CAAU,GAAW,EAAA;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,IAAI;AACA,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CACnC,IAAI,CAAC,SAAS,EACd,UAAU,CACb,CAAC;gBACF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/B,gBAAA,OAAO,CAAC,SAAS,GAAG,MAAK;AACrB,oBAAA,OAAO,CAAC,OAAO,CAAC,MAAW,CAAC,CAAC;AACjC,iBAAC,CAAC;AAEF,gBAAA,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACxB,oBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;oBAC7C,MAAM,CAAC,SAAS,CAAC,CAAC;AACtB,iBAAC,CAAC;AACL,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;gBACzC,MAAM,CAAC,SAAS,CAAC,CAAC;AACrB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;;;AAKG;AACH,IAAA,MAAM,GAAG,CAAC,GAAW,EAAE,KAAU,EAAA;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CACnC,IAAI,CAAC,SAAS,EACd,WAAW,CACd,CAAC;YACF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAEtC,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAEpC,YAAA,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC7C,gBAAA,MAAM,EAAE,CAAC;AACb,aAAC,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;IACH,MAAM,MAAM,CAAC,GAAW,EAAA;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CACnC,IAAI,CAAC,SAAS,EACd,WAAW,CACd,CAAC;YACF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAElC,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAEpC,YAAA,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC9C,gBAAA,MAAM,EAAE,CAAC;AACb,aAAC,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACH,IAAA,MAAM,KAAK,GAAA;QACP,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CACnC,IAAI,CAAC,SAAS,EACd,WAAW,CACd,CAAC;YACF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtD,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAE9B,OAAO,CAAC,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;AAEpC,YAAA,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAI;AACxB,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC9C,gBAAA,MAAM,EAAE,CAAC;AACb,aAAC,CAAC;AACN,SAAC,CAAC,CAAC;KACN;+GAlIQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCeY,OAAO,CAAA;IAIhB,WAEqB,CAAA,eAAuC,EAGvC,QAAsC,EAAA;QAHtC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QAGvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA8B;QARnD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KAQzB;IAEG,MAAM,IAAI,CAAC,OAA4B,EAAA;QAC1C,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;AACvC,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE/B,YAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YAExB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,QAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAErC,QAAA,4BAA4B,CAAC;YACzB,OAAO;AACP,YAAA,QAAQ,EAAE;gBACN,OAAO,MAAqB,KAAI;oBAC5B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBACjD;AACJ,aAAA;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;;QAGtC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;AACxC,YAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CACxC,CAAC;AACL,SAAA;AAED,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpE,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE/B,QAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;IAEO,MAAM,UAAU,CAAC,OAA4B,EAAA;AACjD,QAAA,MAAM,IAAI,CAAC,4BAA4B,CACnC,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,UAAU,CAC3B,CAAC;AAEF,QAAA,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;KACpB;AAEO,IAAA,MAAM,4BAA4B,CACtC,OAA4B,EAC5B,UAAkC,EAClC,MAA6B,EAAA;QAE7B,IAAI;AACA,YAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AACvB,gBAAA,CAA+B,CAAC,MAAM,GAAG,MAAM,CAAC;gBAEjD,IAAI,CAAC,CAAC,UAAU,EAAE;oBACd,MAAM,gBAAgB,GAAG,IAAI,0BAA0B,CACnD,OAAO,EACP,CAAC,CACJ,CAAC;AAEF,oBAAA,MAAM,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AAE1C,oBAAA,MAAM,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACxC,iBAAA;gBAED,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,CAAC,4BAA4B,CACnC,OAAO,EACP,CAAC,CAAC,UAAU,EACZ,CAAC,CACJ,CAAC;AACL,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAkC,+BAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACpE,SAAA;KACJ;IAEO,MAAM,gBAAgB,CAC1B,OAA4B,EAAA;AAE5B,QAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACjB,YAAA;AACI,gBAAA,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACnD,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;AAEO,IAAA,MAAM,iBAAiB,CAC3B,MAAqB,EACrB,OAA4B,EAAA;AAE5B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;QAED,IAAI,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,qCAAqC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjE,YAAA,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC9C,aAAA;YAED,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACvE,SAAA;AAAM,aAAA;YACH,MAAM,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,IAAI,CAAoB,kBAAA,CAAA,CAAC,CAAC;AAC1D,SAAA;KACJ;+GA9HQ,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAKJ,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAGzB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAR9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cAFJ,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,OAAO,EAAA,UAAA,EAAA,CAAA;kBAHnB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAMQ,MAAM;2BAAC,yBAAyB,CAAA;;0BAGhC,MAAM;2BAAC,2BAA2B,CAAA;;;AC3B3C;AACO,MAAM,eAAe,GAAG,QAAQ;;ACFhC,MAAM,YAAY,GAAG,CAAA;;;;;;;CAO3B,CAAC;AAEK,MAAM,WAAW,GAAG;AACvB,IAAA;AACI,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,WAAW,EACP,wEAAwE;AAC/E,KAAA;AACD,IAAA;AACI,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,WAAW,EAAE,uBAAuB;AACvC,KAAA;AACD,IAAA;AACI,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,WAAW,EAAE,kBAAkB;AAClC,KAAA;CACJ;;ACbD;;AAEG;MACU,aAAa,CAAA;AACtB;;;;AAIG;AACH,IAAA,KAAK,CAAC,OAAe,EAAA;QACjB,IAAI;;YAEA,MAAM,KAAK,GACP,mEAAmE,CAAC;AAExE,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7C,aAAA;YAED,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GAAgB,EAAE,CAAC;;AAG7B,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,gBAAA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;;AAEV,oBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,oBAAA,IAAI,KAAK,GAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAA,IAAI,KAAK,EAAE;;wBAEP,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC7C,qBAAA;AAAM,yBAAA;;wBAEH,KAAK,GAAG,IAAI,CAAC;AAChB,qBAAA;oBACD,IAAI,CAAC,IAAI,CAAC;AACN,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAChC,qBAAA,CAAC,CAAC;AACN,iBAAA;qBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;oBAEnC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,iBAAA;AACL,aAAC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE3C,OAAO;gBACH,WAAW;gBACX,IAAI;aACP,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAE1D,OAAO;AACH,gBAAA,WAAW,EAAE,EAAE;AACf,gBAAA,IAAI,EAAE,EAAE;aACX,CAAC;AACL,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,UAAU,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO;AAAE,YAAA,OAAO,KAAK,KAAK,MAAM,CAAC;QACnE,OAAO,KAAK,CAAC;KAChB;AACJ;;AC/EY,MAAA,kBAAkB,GAAG,CAC9B,KAAwB,EACxB,QAAmC,MACvB;AACZ,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,KAAK,EAAE,IAAI;AACd,CAAA,EAAE;MAEU,+BAA+B,GAAG,CAC3C,QAAmC,KACxB;IACX,QAAQ;AACR,IAAA,kBAAkB,CAAI,yBAAyB,EAAE,QAAQ,CAAC;;;ACfjD,MAAA,QAAQ,GAAG,CAAC,IAAY,KAAI;IACrC,IAAI;AACA,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,KAAA;AACL,EAAE;AAEW,MAAA,sBAAsB,GAAG,CAAC,IAAW,KAAI;AAClD,IAAA,MAAM,WAAW,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;AAEpD,IAAA,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,EAAE,EAAE;AACtC,QAAA,OAAO,mDAAmD,CAAC;AAC9D,KAAA;AAAM,SAAA,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,GAAG,EAAE,EAAE;AAC9C,QAAA,OAAO,yCAAyC,CAAC;AACpD,KAAA;AAAM,SAAA,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,GAAG,EAAE,EAAE;AAC9C,QAAA,OAAO,6CAA6C,CAAC;AACxD,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,6CAA6C,CAAC;AACxD,KAAA;AACL;;AChBA;;AAEG;MAIU,wBAAwB,CAAA;AACjC;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,OAA6B,EAAA;AACtD,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;;QAGtD,IAAI,aAAa,EAAE,IAAI,EAAE;AACrB,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;;AAGtC,YAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,EAAE;gBAC/C,OAAO,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO;AACV,aAAA;AACJ,SAAA;QAED,IAAI,aAAa,EAAE,OAAO,EAAE;YACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,cAAc,GAAG;AACnB,gBAAA,CAAA,4BAAA,EAA+B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAG,CAAA,CAAA;gBACvG,kDAAkD;gBAClD,YAAY;gBACZ,EAAE;AACF,gBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,iBAAiB,EACjB,kBAAkB,CAAC,KAAK,CAC3B,GAAG,+BAA+B;gBACnC,EAAE;gBACF,6BAA6B;gBAC7B,EAAE;aACL,CAAC;YAEF,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;gBACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;AACN,SAAA;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,OAAO,CAAC,UAAU,EAAE,CAAC;AACrB,QAAA,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,sBAAsB,EAAE,EAAE;AACrD,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,iBAAiB,EAAE,IAAI;AAC1B,SAAA,CAAC,CAAC;KACN;AAED;;;;AAIG;AACK,IAAA,2BAA2B,CAC/B,UAAiD,EAAA;AAEjD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAE9D,QAAA,QAAQ,UAAU;AACd,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,IAAI,CAAC;AAChB,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,CAAC,aAAa,CAAC;AAC1B,YAAA,KAAK,OAAO;AACR,gBAAA,IAAI,CAAC,aAAa;oBAAE,OAAO,IAAI,CAAC;AAChC,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,gBAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC,YAAY,EAAE,KAAK,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC1D,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,KAAK,CAAC;AACjB,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AAED;;AAEG;IACK,2BAA2B,GAAA;AAC/B,QAAA,YAAY,CAAC,OAAO,CAChB,gCAAgC,EAChC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAC3B,CAAC;KACL;AAED;;;AAGG;IACK,gCAAgC,GAAA;AACpC,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;KACjE;+GA7FQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACHM,MAAM,MAAM,GAAG;AAClB,IAAA,GAAG,aAAa;CACnB;;MCJY,wBAAwB,CAAA;AAIjC,IAAA,WAAA,CAA6B,KAAuB,EAAA;QAAvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkB;QAHnC,IAAU,CAAA,UAAA,GAAG,qBAAqB,CAAC;QAC5C,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;KAEkB;IAEjD,MAAM,UAAU,CAAC,OAAe,EAAA;AACnC,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AACzC,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAA,MAAM,WAAW,GACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxD,IAAI,WAAW,KAAK,iBAAiB,EAAE;oBACnC,OAAO;AACV,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,YAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,SAAA;KACJ;IAEM,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;KACrC;IAEM,UAAU,GAAA;AACb,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;KACnC;AAEM,IAAA,MAAM,YAAY,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;KAC5B;AAEM,IAAA,UAAU,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACrC;AAEO,IAAA,MAAM,WAAW,GAAA;;QAErB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACvD,QAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;KAChE;AAEO,IAAA,MAAM,WAAW,GAAA;QACrB,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAClE,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC7C,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,IAAI,CAAC,UAAU,CAAC,CAAC;AAErE,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;AACtC,SAAA;KACJ;AAEM,IAAA,MAAM,UAAU,GAAA;AACnB,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;KAC5B;+GA5DQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCOY,qBAAqB,CAAA;AAW9B,IAAA,WAAA,CAEqB,YAAmC,EAAA;QAAnC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QAZhD,IAAkB,CAAA,kBAAA,GAAG,IAAI,eAAe,CAE9C;AACE,YAAA,IAAI,EAAE;AACF,gBAAA,EAAE,EAAE,WAAW;AACf,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,KAAK,EAAE,WAAW;AACrB,aAAA;AACJ,SAAA,CAAC,CAAC;QAMC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7C,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;AAChD,YAAA,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,cAAc,CAAC;oBAChB,IAAI;AACP,iBAAA,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,MAAM,cAAc,CAAC,OAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACzC;IAED,cAAc,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACjD;AA/BQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAYlB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAZ9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAaQ,MAAM;2BAAC,2BAA2B,CAAA;;;MCjB9B,oBAAoB,CAAA;AAc7B,IAAA,WAAA,GAAA;QAbQ,IAAe,CAAA,eAAA,GAAG,OAAO,CAAC;AAExB,QAAA,IAAA,CAAA,YAAY,GAAe;AACjC,YAAA;AACI,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,iBAAiB;gBACxB,MAAM,EAAE,CAAC,OAAO,CAAC;AACpB,aAAA;SACJ,CAAC;AAEQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC,CAAC;AAGzD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;AAES,IAAA,UAAU,CAAC,YAAwB,EAAA;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvC;IAED,MAAM,UAAU,CAAC,IAA0B,EAAA;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAE3C,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;AACnE,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,MAAM,OAAO,GAAa;AACtB,YAAA,GAAG,IAAI;YACP,EAAE,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;AAEF,QAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE9B,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,QAAQ,CAAC,OAIR,EAAA;QACG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAE5C,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CACxCC,KAAG,CAAC,CAAC,KAAK,KAAI;AACV,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvC,KAAK,GAAG,KAAK,CAAC,MAAM,CAChB,CAAC,CAAC,KACE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACzC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjD,CAAC;AACL,aAAA;AAED,YAAA,IAAI,IAAI,EAAE;AACN,gBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,aAAA;AAED,YAAA,IAAI,IAAI,EAAE;gBACN,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAChC,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;SAChB,CAAC,CACL,CAAC;KACL;AAED,IAAA,OAAO,CAAC,EAAU,EAAA;QACd,OAAO,IAAI,CAAC,YAAY;AACnB,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CACDA,KAAG,CAAC,CAAC,KAAK,KACN,KAAK,CAAC,IAAI,CACN,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,CACxD,CACJ,CACJ,CAAC;KACT;AAEO,IAAA,SAAS,CAAC,KAAiB,EAAA;AAC/B,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACrE;AAEO,IAAA,SAAS,CAAC,aAAyB,EAAA;QACvC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,aAAa,CAAC;AACxB,SAAA;QAED,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;AACzC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;AACpE,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;+GArGQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCAY,aAAa,CAAA;AACf,IAAA,OAAO,eAAe,CACzB,IAAiB,EACjB,SAA+B,EAAA;QAE/B,MAAM,MAAM,GAAwB,EAAE,CAAC;AAEvC,QAAA,MAAM,gBAAgB,GAAG,CACrB,SAAyC,EACzC,KAAU,KACV;AACA,YAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;AACjC,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC1B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CACxC,CAAC,CAAC,KACE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;AACnB,gBAAA,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAC7C,CAAC;AAEF,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;gBAEtB,QAAQ,SAAS,CAAC,IAAI;AAClB,oBAAA,KAAK,OAAO;AACR,wBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjD,8BAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;8BAChB,EAAE,CAAC;wBACT,KAAK,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBACtC,MAAM;AACV,oBAAA,KAAK,SAAS;wBACV,KAAK;AACD,4BAAA,KAAK,KAAK,MAAM;AAChB,gCAAA,KAAK,KAAK,GAAG;AACb,gCAAA,KAAK,KAAK,KAAK;AACf,gCAAA,KAAK,KAAK,GAAG;gCACb,KAAK,KAAK,CAAC,CAAC;wBAChB,MAAM;AACV,oBAAA;AACI,wBAAA,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;wBAClB,MAAM;AACb,iBAAA;AACD,gBAAA,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACtC,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AAChC,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;MCpCY,yBAAyB,CAAA;AAGlC,IAAA,WAAA,CAEqB,QAAsC,EAAA;QAAtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA8B;AAJnD,QAAA,IAAA,CAAA,aAAa,GAAkB,IAAI,aAAa,EAAE,CAAC;KAKvD;AAEG,IAAA,MAAM,cAAc,CACvB,OAAe,EACf,OAA6B,EAAA;;QAG7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,QAAA,IAAI,oBAAoB,GAAG,IAAI,CAAC;AAEhC,QAAA,IAAI,WAAgC,CAAC;QACrC,IAAI,OAAO,YAAY,0BAA0B,EAAE;AAC/C,YAAA,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;AACjC,SAAA;AAAM,aAAA;YACH,WAAW,GAAG,OAA8B,CAAC;AAChD,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;YAGzB,IAAI,OAAO,KAAK,IAAI,EAAE;AAClB,gBAAA,oBAAoB,GAAG,oBAAoB,IAAI,IAAI,CAAC;gBACpD,SAAS;AACZ,aAAA;iBAAM,IAAI,OAAO,KAAK,IAAI,EAAE;gBACzB,oBAAoB,GAAG,CAAC,oBAAoB,CAAC;gBAC7C,SAAS;AACZ,aAAA;;YAGD,IAAI,CAAC,oBAAoB,EAAE;AACvB,gBAAA,oBAAoB,GAAG,IAAI,CAAC;gBAC5B,SAAS;AACZ,aAAA;;YAGD,IAAI,cAAc,GAAG,IAAI,CAAC;YAC1B,IAAI;AACA,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClC,MAAM,OAAO,GAAG,OAAO,CAAC;gBAExB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBAE5D,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC;AACnD,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,cAAc,GAAG,KAAK,CAAC;gBAEvB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAW,QAAA,EAAA,OAAO,CAAY,SAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AAChE,aAAA;YAED,oBAAoB,GAAG,cAAc,CAAC;AACzC,SAAA;KACJ;AAEO,IAAA,MAAM,oBAAoB,CAC9B,OAAe,EACf,IAAqB,EACrB,OAA4B,EAAA;AAE5B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAA8B,CAAC;QAEvD,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,QAAA,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,GACnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEtC,QAAA,MAAM,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEvD,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAExD,QAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,gBAAgB;eAC9C,OAAO,CAAC,gBAAgB,CAAC,UAAU,IAAI,EAAE;AAC5C,cAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AAE/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CACrD,WAAW,EACX,aAAa,EACb,oBAAoB,CACvB,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,OAAO,GAEL,IAAI,CAAC,QAAQ,CAAC,aAAa,CACvB,OAAO,EACP,EAAE,CAET,CAAC,OAAO,IAAI,EAAE,CAAC;AAEpB,YAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChE,aAAA;YAED,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,CAAY,SAAA,EAAA,WAAW,CAA6B,2BAAA,CAAA,CACvD,CAAC;AAEF,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAEzB,YAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CACpB,+CAA+C,CAClD,CAAC;AACF,YAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CACpB,8CAA8C,CACjD,CAAC;AAEF,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACrB,gBAAA,MAAM,EAAE,IAAI;AACf,aAAA,CAAC,CAAC;YAEH,OAAO;AACV,SAAA;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAElE,QAAA,MAAM,gBAAgB,GAAsB;AACxC,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;SACb,CAAC;QAEF,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;YACjD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;AACV,SAAA;QAED,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;YACrD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;AACV,SAAA;QAED,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;YAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;AACV,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;YACzD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO;AACV,SAAA;QAED,MAAM,KAAK,GACP,SAAS,CAAC,qBAAqB,IAAI,SAAS,CAAC,aAAa;cACpD,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC;cAC9C,SAAS,CAAC;AAEpB,QAAA,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;QAE/B,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC;AAEvD,QAAA,IAAI,YAAY,EAAE;YACd,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,CAA+B,4BAAA,EAAA,WAAW,CAAU,QAAA,CAAA,CACvD,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzB,OAAO;AACV,SAAA;QAED,IAAI,SAAS,CAAC,uBAAuB,EAAE;YACnC,MAAM,gBAAgB,GAAG,SAAS,CAAC,uBAAuB,CACtD,gBAAgB,EAChB,OAAO,CACV,CAAC;AAEF,YAAA,IAAI,gBAAgB,CAAC,KAAK,KAAK,KAAK,EAAE;AAClC,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,gBAAgB,EAAE,OAAO;AACrB,oBAAA,iDAAiD,CACxD,CAAC;gBAEF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzB,OAAO;AACV,aAAA;AACJ,SAAA;QAED,IAAI,WAAW,GAA6B,IAAK,CAAC;QAElD,MAAM,cAAc,GAAG,IAAI,0BAA0B,CACjD,OAAO,EACP,SAAS,CACZ,CAAC;QAEF,IAAI;AACA,YAAA,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;AAEpC,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE;AACzD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACtC,aAAA;YAED,WAAW,GAAG,IAAI,kBAAkB,CAChC,OAAO,OAAO,EAAE,MAAM,KAAI;gBACtB,SAAS;AACJ,qBAAA,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;qBAChD,IAAI,CAAC,MAAK;AACP,oBAAA,OAAO,EAAE,CAAC;AACd,iBAAC,CAAC;AACD,qBAAA,KAAK,CAAC,CAAC,CAAC,KAAI;oBACT,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,iBAAC,CAAC,CAAC;AACX,aAAC,CACJ,CAAC;AAEF,YAAA,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;AAE5B,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;AACxD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACtC,aAAA;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;AACjB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YAExB,IAAI,CAAC,YAAY,kBAAkB,EAAE;gBACjC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAErB,OAA+B,EAAE,KAAK,EAAE,CAAC;AAE1C,gBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;oBACd,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,CAA4B,yBAAA,EAAA,CAAC,CAAC,IAAI,CAAE,CAAA,CACvC,CAAC;AACL,iBAAA;AAAM,qBAAA;AACH,oBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CACpB,yCAAyC,CAC5C,CAAC;AACL,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAA4B,yBAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;gBAC3D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,MAAM,QAAQ,CACjB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpE,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAA4B,yBAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AAC9D,SAAA;KACJ;AAEO,IAAA,gBAAgB,CACpB,OAA6B,EAC7B,SAA+B,EAC/B,IAAyB,EAAA;QAEzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAE,CAAA,CACzF,CAAC;AACF,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,4BAA4B,CAChC,OAA6B,EAC7B,SAA+B,EAC/B,IAAyB,EAAA;AAEzB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;AACjB,YAAA,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,MAAM,aAAa,CACvB,gBAAmC,EACnC,OAA6B,EAAA;QAE7B,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC7D,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAE/C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;;;AAMG;AACK,IAAA,uBAAuB,CAC3B,OAA6B,EAC7B,SAA+B,EAC/B,IAAyB,EAAA;;AAGzB,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAC9C,CAAC,CAAC,KACE,CAAC,CAAC,QAAQ;AACV,gBAAA,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,gBAAA,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;YAEF,IAAI,aAAa,EAAE,MAAM,EAAE;AACvB,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,gCAAgC,aAAa;qBACxC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAClB,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CACpB,CAAC;AAEF,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;;AAGD,QAAA,MAAM,oBAAoB,GACtB,SAAS,CAAC,UAAU;cACd,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC5B,cAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACV,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,SAAA,CAAC,CAAC;AACH,cAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAEvC,QAAA,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,aAAa,GAAG,oBAAoB;AACrC,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,SAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACrD,iBAAA,GAAG,CAAC,CAAC,CAAC,MAAM;AACT,gBAAA,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI;AACtB,gBAAA,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,SAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBAClD,OAAO;AACf,aAAA,CAAC,CAAC,CAAC;YAER,IAAI,aAAa,EAAE,MAAM,EAAE;AACvB,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAEjD,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;oBAC/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,CAAG,EAAA,KAAK,GAAG,CAAC,CAAuB,oBAAA,EAAA,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CACtD,IAAA,EAAA,CAAC,CAAC,OACN,CAAE,CAAA,CACL,CAAC;AACN,iBAAC,CAAC,CAAC;AAEH,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAhXQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAItB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAJ9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFtB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAKQ,MAAM;2BAAC,2BAA2B,CAAA;;;MC1B9B,2BAA2B,CAAA;IACpC,IAAI,GAAA;;AAEA,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;KAC9D;AACJ;;MCFY,mBAAmB,CAAA;AAC5B,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,YAAY,CAAC,GAAW,EAAA;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,YAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;AAChC,YAAA,MAAM,CAAC,OAAO,GAAG,MACb,MAAM,CAAC,IAAI,KAAK,CAAC,CAA0B,uBAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;AACvD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;IAED,SAAS,CACL,GAAW,EACX,OAEC,EAAA;AAMD,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAErC,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAE3B,YAAA,GAAG,CAAC,UAAU,GAAG,CAAC,KAAK,KAAI;gBACvB,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACxB,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACvB,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CACrC,CAAC;oBACF,aAAa,GAAG,QAAQ,CAAC;AAEzB,oBAAA,UAAU,GAAG,QAAQ,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA;oBACH,aAAa,IAAI,EAAE,CAAC;AACpB,oBAAA,UAAU,GAAG,aAAa,CAAC,CAAC;AAC/B,iBAAA;AACL,aAAC,CAAC;AAEF,YAAA,GAAG,CAAC,MAAM,GAAG,MAAK;AACd,gBAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;AACpB,oBAAA,UAAU,GAAG,GAAG,CAAC,CAAC;oBAClB,aAAa,GAAG,GAAG,CAAC;AACpB,oBAAA,OAAO,CAAC;wBACJ,GAAG;wBACH,OAAO,EAAE,GAAG,CAAC,YAAY;AAC5B,qBAAA,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,CACF,IAAI,KAAK,CACL,CAAA,wBAAA,EAA2B,GAAG,CAAa,UAAA,EAAA,GAAG,CAAC,MAAM,cAAc,GAAG,CAAC,YAAY,CAAE,CAAA,CACxF,CACJ,CAAC;AACL,iBAAA;AACL,aAAC,CAAC;AAEF,YAAA,GAAG,CAAC,OAAO,GAAG,MAAK;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAA,CAAE,CAAC,CAAC,CAAC;AACxD,aAAC,CAAC;YAEF,GAAG,CAAC,IAAI,EAAE,CAAC;AACf,SAAC,CAAC,CAAC;KACN;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACrC;+GA5EQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCFY,YAAY,CAAA;AAKrB,IAAA,WAAA,GAAA;QACI,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,CAAA;;;;;;;;wCAQD,CAAC;QAEjC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC7B,WAAW,EACX,CAAC,CAAC,KAAI;YACF,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;SACvB,EACD,IAAI,CACP,CAAC;KACL;AAED,IAAA,QAAQ,CAAC,QAAkB,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC5B;AAED,IAAA,OAAO,MAAW;IAElB,WAAW,CAAC,GAAW,EAAE,OAAgB,EAAA;AACrC,QAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO;AAE9B,QAAA,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AACpC,QAAA,WAAW,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;AAC9C,QAAA,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC;AAC9B,QAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AACzB,YAAA,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAA;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACzD,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;QAExD,WAAW,CAAC,KAAK,CAAC,GAAG;AACjB,YAAA,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;AACrD,QAAA,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;QAExE,IAAI,IAAI,CAAC,cAAc;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;AACzC,YAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;gBACzC,IAAI,WAAW,CAAC,UAAU,EAAE;AACxB,oBAAA,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACnD,iBAAA;AACD,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAChC,gBAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;aACtC,EAAE,GAAG,CAAC,CAAC;AACZ,SAAC,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;KACvB;AACJ;;MCpCY,oBAAoB,CAAA;AAc7B,IAAA,WAAA,GAAA;AARU,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAY,CAAC;KAQzC;IAEhB,QAAQ,GAAA;QACJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAED,eAAe,GAAA;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,OAAO,GAAG;AACX,gBAAA,gBAAgB,EAAE,IAAI;aACzB,CAAC;AACL,SAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE3C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEvC,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAEvC,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;;;;;;AAQtC,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5C;IAEO,YAAY,GAAA;AAChB,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAK;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KAC/D;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;KAC5B;+GAjFQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,8QCjCjC,gFACA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDgCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,cAAc,EAAA,QAAA,EAAA,gFAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,CAAA;0EAKf,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAGI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAGkC,WAAW,EAAA,CAAA;sBAAnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEH9B,YAAY,CAAA;IAerB,WACY,CAAA,QAAkB,EAET,qBAA6C,EACtD,eAA0C,EACjC,qBAA+C,EAC/C,KAAuB,EAAA;QALhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAET,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAwB;QACtD,IAAe,CAAA,eAAA,GAAf,eAAe,CAA2B;QACjC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAA0B;QAC/C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkB;QAbpC,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAIf,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAyF5D,IAAc,CAAA,cAAA,GAAoC,IAAI,CAAC;QACvD,IAAY,CAAA,YAAA,GAAoC,IAAI,CAAC;QAiJrD,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QACzB,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;QAlO/B,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC9D,YAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;AAClC,YAAA,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,OAAQ,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC;AACb,oBAAA,KAAK,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;QACJ,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7D,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAChC,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,eAAe,GAAG;AACnB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,MAAM,CAAC,OAAO;AACrB,YAAA,UAAU,EAAE,IAAI;YAChB,IAAI,IAAI,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,CAAC;SAC3C,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAK;AAC9B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;AAES,IAAA,eAAe,CAAC,QAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;IAEO,UAAU,GAAA;QACd,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAK;YAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;AAClE,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,mBAAmB,CAC3C,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAC1B;AACI,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;AACxC,SAAA,CACJ,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAmB,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,QAAQ;aACR,GAAG,CAAC,OAAO,CAAC;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;aAC3B,IAAI,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ;iBACR,GAAG,CAAC,wBAAwB,CAAC;AAC7B,iBAAA,qBAAqB,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACV;IAEO,yBAAyB,GAAA;QAC7B,MAAM,CAAC,GAAY,IAAI,CAAC,QAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,GAAY,IAAI,CAAC,QAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAExD,OAAO;YACH,CAAC;YACD,CAAC;SACJ,CAAC;KACL;IAKO,yBAAyB,GAAA;;AAE7B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,KAAM,GAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,KAAK,KAAI;AAChD,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;;AAExC,oBAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAC/B,oBAAA,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACtD,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;AAED,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;;AAEzB,oBAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;oBAC/B,IAAI,CAAC,WAAW,CAAC;AACb,wBAAA,OAAO,EAAE,IAAI;AAChB,qBAAA,CAAC,CAAC;AAEH,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;;AAExC,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;;oBAExC,KAAK,CAAC,cAAc,EAAE,CAAC;oBAEvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAEtB,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;gBAED,IACI,KAAK,CAAC,QAAQ;AACd,qBAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,EAC7D;AACE,oBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAC1D,qBAAA;oBAED,QAAQ,KAAK,CAAC,IAAI;AACd,wBAAA,KAAK,WAAW;4BACZ,IAAI,CAAC,cAAc,EAAE,CAAC;4BACtB,MAAM;AACV,wBAAA,KAAK,YAAY;4BACb,IAAI,CAAC,eAAe,EAAE,CAAC;4BACvB,MAAM;AACb,qBAAA;AAED,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBAErD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC,CAAC;KACN;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,cAAc,CAAC,CAAC,EACrB,IAAI,CAAC,YAAY,CAAC,CAAC,CACtB,CAAC;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpE,IAAI,QAAQ,KAAK,MAAM,EAAE;AACrB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,cAAc,CAAC,CAAC,EACrB,IAAI,CAAC,YAAY,CAAC,CAAC,CACtB,CAAC;AACF,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,IAAI,CAAC,cAAc,CAAC,CAAC,EACrB,IAAI,CAAC,YAAY,CAAC,CAAC,CACtB,CAAC;;AAGF,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAChB,QAAQ,EACR,QAAQ,EACR,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAC9B,CAAC;AACL,aAAA;AAAM,iBAAA;;gBAEH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/C,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,WAAW,CAAC,OAInB,EAAA;QACG,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAE1D,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,eAAe,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,iBAAiB,GACjB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY;AACvC,YAAA,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO;AAC/B,cAAE,EAAE;cACF,CAAW,QAAA,EAAA,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAA,QAAA,CAAU,CAAC;AAEnE,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;YACzC,iBAAiB,GAAG,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAA,CAAE,CAAC;AAC3E,SAAA;QAED,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,iBAAiB,CAAG,EAAA,eAAe,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAC/B;IAKO,MAAM,WAAW,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,EAAE;YAC5C,OAAO;AACV,SAAA;QAED,IAAI,IAAI,KAAK,IAAI,EAAE;;YAEf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE5B,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE9D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;;AAG9D,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AAExB,gBAAA,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CACrC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,gBAAiB,CACzB,CAAC;;AAGF,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,EAAE;oBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CACjB,UAAU,GAAG,wBAAwB,GAAG,SAAS,CACpD,CAAC;AACL,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;;YAE5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;;YAE5B,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;;AAE5B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;;AAE5B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;;YAE1B,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;KACJ;AAEO,IAAA,aAAa,CAAC,IAAY,EAAA;;QAE9B,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnB,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;KACvC;AAEO,IAAA,eAAe,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,WAAW;YACZ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;gBAC9C,IAAI;gBACJ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEhD,QAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC;QAEnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,kBAAkB,GAAA;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,WAAW,CAAC;AACb,YAAA,eAAe,EAAE,IAAI;AACxB,SAAA,CAAC,CAAC;;QAGH,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAGxB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;QACnE,IAAI,YAAY,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAQ,KAAA,EAAA,YAAY,CAAG,CAAA,CAAA,CAAC,CAAC;AAChD,SAAA;KACJ;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CACf,cAAc,CACV,IAAI,CAAC,WAAW,EAChB,CAAC,IAAI,KACD,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CACrC,IAAI,EACJ,kBAAkB,CAAC,MAAM,CAC5B,IAAI,IAAI,CAAC,WAAW,CAC5B,CACJ,CAAC;KACL;IAEO,mBAAmB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACpC,SAAA;KACJ;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;YACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACpC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;YAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,SAAA;KACJ;IAEO,yBAAyB,GAAA;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW;YACZ,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KACjD;IAEO,gBAAgB,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC/C,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjC,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;KAC3B;IAEO,cAAc,CAAC,MAAc,QAAQ,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;KACJ;IAEO,eAAe,CAAC,MAAc,QAAQ,EAAA;QAC1C,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;KACJ;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW;AACZ,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChD,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;KACJ;AA1aQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,0CAiBT,4BAA4B,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAjB/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,6FCvCzB,8HAKA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FDkCa,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACI,KAAK,EAAA,aAAA,EAGA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8HAAA,EAAA,CAAA;;0BAmBhC,MAAM;2BAAC,4BAA4B,CAAA;iJAhB/B,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;ME1BG,2BAA2B,CAAA;AAsBpC,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QArBlC,IAAmB,CAAA,mBAAA,GAAG,GAAG,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAG,GAAG,CAAC;QAElB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;QACX,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAEP,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QACxB,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAG/B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAW,CAAC;AAGvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;KAMlB;IAEtC,QAAQ,GAAA;QACJ,IAAI,CAAC,KAAK,GAAG;AACT,YAAA;AACI,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,IAAI,EAAE,YAAY;AACrB,aAAA;SACJ,CAAC;KACL;AAED,IAAA,kBAAkB,CAAC,KAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxC;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IAED,0BAA0B,GAAA;;AAEtB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AACxC,YAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;AACnC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AAED,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3C,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AAE1D,YAAA,IAAI,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE;AACjC,gBAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACnC,aAAA;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;KACJ;IAGD,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;KAC5D;+GA9FQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2UChBxC,qmDAmDA,EAAA,MAAA,EAAA,CAAA,o+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDnCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EAAA,qmDAAA,EAAA,MAAA,EAAA,CAAA,o+BAAA,CAAA,EAAA,CAAA;iGAYtB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGC,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAIA,mBAAmB,EAAA,CAAA;sBADzB,MAAM;gBA0DP,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAgB9C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB,CAAA;;;MEjGvB,iBAAiB,CAAA;AAC1B,IAAA,WAAA,GAAA,GAAgB;IAEhB,OAAO,GAAA;AACH,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACnB;+GALQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACQD;;AAEG;MAMU,iBAAiB,CAAA;AAc1B,IAAA,WAAA,CAA6B,OAA0B,EAAA;QAA1B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QARvD,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEN,QAAA,IAAA,CAAA,cAAc,GAAkB,CAAG,EAAA,GAAG,GAAG,CAAC,IAAI,CAAC;QAE/C,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAE/B,QAAA,IAAA,CAAA,aAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;AAGrD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACzC,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SAC1B,CAAC,CACL,CAAC;KACL;AAED,IAAA,QAAQ,CAAC,MAAe,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,SAAA;KACJ;AAED,IAAA,mBAAmB,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,CAAG,EAAA,MAAM,IAAI,CAAC;KACvC;+GA9BQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,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,iFCrB9B,gVAUA,EAAA,MAAA,EAAA,CAAA,i6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDWa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,gVAAA,EAAA,MAAA,EAAA,CAAA,i6BAAA,CAAA,EAAA,CAAA;qGAQZ,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEbG,uBAAuB,CAAA;AAWhC,IAAA,WAAA,CAEY,iBAAwC,EAAA;QAAxC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAuB;QAZpD,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC;QAEjB,IAAW,CAAA,WAAA,GAAwB,kBAAkB,CAAC;QAEtD,IAAM,CAAA,MAAA,GAAmC,oBAAoB,CAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,IAAI,EAAE,IAAI;SACb,CAAC;KAKE;AAEJ,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,OAA6B,EAAA;AAE7B,QAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACxB,QAAA,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,iBAAiB;AACjB,aAAA,IAAI,EAAE;aACN,IAAI,CAAC,MAAK;AACP,YAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACxB,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,CAAC,UAAU,EAAE,CAAC;AACzB,SAAC,CAAC;aACD,KAAK,CAAC,MAAK;AACR,YAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACxB,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;YACvD,OAAO,CAAC,UAAU,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;KACV;AAlCQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAYpB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAZ9B,uBAAuB,EAAA,CAAA,CAAA,EAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;0BAaF,MAAM;2BAAC,2BAA2B,CAAA;;;MCjB9B,uBAAuB,CAAA;AAApC,IAAA,WAAA,GAAA;QACI,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC;QACjB,IAAW,CAAA,WAAA,GAAG,kCAAkC,CAAC;QACjD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;QAC9B,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;SACjB,CAAC;KAiCL;AA/BG,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,IAAI;YACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAEzC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACvB,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO;AACV,aAAA;AAED,YAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5B,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO;AACV,aAAA;AAED,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3D,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;QAC1C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;KACzD;AACJ;;AClCD,MAAM,SAAS,GAAG,sDAAsD,CAAC;MAK5D,2BAA2B,CAAA;AAgBpC,IAAA,WAAA,GAAA;QAfA,IAAO,CAAA,OAAA,GAAG,UAAU,CAAC;QAErB,IAAW,CAAA,WAAA,GACP,iDAAiD,CAAC;QAEtD,IAAU,CAAA,UAAA,GAA6C,EAAE,CAAC;QAE1D,IAAM,CAAA,MAAA,GAAmC,oBAAoB,CAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,OAAO,CAAC,GAAG;AACjB,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;AAGE,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CACjB;AACI,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,MAAM,cAAc,CAChB,EAAE,KAAK,EAAqB,EAC5B,OAA6B,EAAA;AAE7B,gBAAA,QAAQ,CACJ,CAAG,EAAA,SAAS,4EAA4E,KAAK,CAAA,CAAE,CAClG,CAAC;aACL;YACD,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,gBAAA,MAAM,CAAC,OAAO,CACV,mEAAmE,CACtE,CAAC;aACL;SACJ,EACD;AACI,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,kCAAkC;AAC/C,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,MAAM,cAAc,CAChB,EAAE,KAAK,EAAqB,EAC5B,OAA6B,EAAA;AAE7B,gBAAA,QAAQ,CACJ,CAAG,EAAA,SAAS,6FAA6F,KAAK,CAAA,CAAE,CACnH,CAAC;aACL;YACD,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,gBAAA,MAAM,CAAC,OAAO,CACV,iFAAiF,CACpF,CAAC;aACL;SACJ,EACD;AACI,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,kCAAkC;AAC/C,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,MAAM,cAAc,CAChB,EAAE,KAAK,EAAqB,EAC5B,OAA6B,EAAA;AAE7B,gBAAA,QAAQ,CACJ,CAAG,EAAA,SAAS,6FAA6F,KAAK,CAAA,CAAE,CACnH,CAAC;aACL;YACD,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,gBAAA,MAAM,CAAC,OAAO,CACV,iFAAiF,CACpF,CAAC;aACL;AACJ,SAAA,CACJ,CAAC;KACL;AAED,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,EAAE,MAAM,EAAwB,EAAA;AAEhC,QAAA,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;YACnC,MAAM,CAAC,OAAO,CACV,CAAK,EAAA,EAAA,MAAM,CAAC,WAAW,CAAC,CAAY,SAAA,EAAA,SAAS,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAA,EAAA,EAAK,SAAS,CAAC,WAAW,CAAE,CAAA,CAChH,CAAC;AACN,SAAC,CAAC,CAAC;KACN;IAED,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,QAAA,MAAM,CAAC,OAAO,CACV,4DAA4D,CAC/D,CAAC;KACL;+GA3FQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACnBM,MAAM,OAAO,GAAG,CACnB,IAAS,EACT,WAA2B,KACd;IACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC7B,QAAA,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACf,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpB,SAAA;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,OAAO,GAAG,CAAC;AACf,KAAC,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;AAC1B,CAAC;;MCMY,uBAAuB,CAAA;AAiBhC,IAAA,WAAA,CAA6B,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAhB/C,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC;QAEjB,IAAW,CAAA,WAAA,GAAG,6BAA6B,CAAC;QAE5C,IAAqB,CAAA,qBAAA,GAAyB,IAAI,CAAC;QAEnD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;QAKE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAC7B,2BAA2B,CAC9B,CAAC;KACL;AAED,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAE3B,QAAA,MAAM,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE1D,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,MAAM,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE1D,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7B,YAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CACd,qBAAqB,EACrB,kBAAkB,CAAC,MAAM,CAC5B,CACJ,CAAC;YAEF,MAAM,eAAe,GAAG,OAAO,CAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,eAAe,CAC/C,CAAC;YAEF,eAAe,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,KAAI;AAC3C,gBAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CACxD,CAAC;AAEF,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;oBAC7B,MAAM,CAAC,OAAO,CACV,CAAA,EAAA,EAAK,SAAS,EAAE,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAK,EAAA,EAAA,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAA,GAAA,EAC3I,SAAS,EAAE,WAAW,IAAI,qBAC9B,CAAA,CAAE,CACL,CAAC;AACN,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAEzB,MAAM,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAE1D,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7B,YAAA,MAAM,CAAC,OAAO,CACV,0EAA0E,CAC7E,CAAC;AACL,SAAA;AAAM,aAAA;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzC,cAAc,CAAC,CAAC,CAAC,EACjB,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1B,CAAC;AAEF,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACtD,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,OAAO,CAAC,CAA4B,yBAAA,EAAA,cAAc,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC;AACnE,aAAA;AACJ,SAAA;KACJ;IAED,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,QAAA,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAE9C,QAAA,MAAM,CAAC,OAAO,CACV,0EAA0E,CAC7E,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CACV,2EAA2E,CAC9E,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CACV,gGAAgG,CACnG,CAAC;KACL;IAEO,yBAAyB,CAC7B,SAA+B,EAC/B,OAA6B,EAAA;AAE7B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAE3B,QAAA,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAEzC,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAG,EAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAI,EAAA,CAAA,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,MAAM,CAAC,OAAO,CACV,CAAA,EAAG,MAAM,CAAC,WAAW,CACjB,SAAS,CAAC,OAAO,EACjB,kBAAkB,CAAC,IAAI,CAC1B,CAAK,EAAA,EAAA,SAAS,CAAC,OAAO,IAAI,OAAO,CAAM,GAAA,EAAA,SAAS,CAAC,WAAW,CAAE,CAAA,CAClE,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7B,IAAI,SAAS,CAAC,MAAM,EAAE;AAClB,YAAA,MAAM,CAAC,OAAO,CACV,CAA0B,uBAAA,EAAA,SAAS,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAA,CAAA,CAAG,CAC/E,CAAC;AAEF,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;AAED,QAAA,MAAM,CAAC,KAAK,CACR,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,CACjE,CAAC;QAEF,IAAI,SAAS,CAAC,gBAAgB,EAAE;AAC5B,YAAA,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvC,SAAA;aAAM,IAAI,SAAS,CAAC,WAAW,EAAE;YAC9B,MAAM,CAAC,OAAO,CACV,CAAA,EAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,SAAS,CAAC,WAAW,CAAA,CAAE,CAC9F,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CACd,0BAA0B,EAC1B,kBAAkB,CAAC,MAAM,CAC5B,CACJ,CAAC;AACL,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7B,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE;AAC9B,YAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAChE,CAAC;YAEF,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;gBAC1C,MAAM,CAAC,OAAO,CACV,CAAA,EAAA,EAAK,MAAM,CAAC,WAAW,CACnB,YAAY,CAAC,OAAO,EACpB,kBAAkB,CAAC,IAAI,CAC1B,CAAA,GAAA,EAAM,YAAY,CAAC,WAAW,CAAE,CAAA,CACpC,CAAC;AACN,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;AAED,QAAA,MAAM,UAAU,GAAG;AACf,YAAA,IAAI,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;AAC/B,YAAA,GAAG,iBAAiB;SACvB,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAC/D,CAAC;AAEF,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAC7B,MAAM,CAAC,OAAO,CACV,CAAK,EAAA,EAAA,MAAM,CAAC,WAAW,CACnB,SAAS,CAAC,IAAI,EACd,kBAAkB,CAAC,IAAI,CAC1B,CAAA,EAAA,EAAK,SAAS,CAAC,IAAI,CAAA,EAAA,EAChB,SAAS,CAAC,OAAO,GAAG,CAAI,CAAA,EAAA,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,GAAG,EAC9D,CAAM,GAAA,EAAA,SAAS,CAAC,WAAW,CACvB,EAAA,SAAS,CAAC,QAAQ,GAAG,aAAa,GAAG,EACzC,CAAE,CAAA,CACL,CAAC;AACN,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAE7B,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE;AACnC,YAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CACd,+BAA+B,EAC/B,kBAAkB,CAAC,GAAG,CACzB,CACJ,CAAC;AACL,SAAA;KACJ;IAEO,cAAc,CAAC,EAAE,MAAM,EAAwB,EAAA;QACnD,MAAM,CAAC,YAAY,CAAC;AAChB,YAAA,IAAI,EAAE,GAAG;AACZ,SAAA,CAAC,CAAC;KACN;+GAhNQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;AAoND,MAAM,iBAAiB,GAAqC;AACxD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC,GAAG,CAAC;AACd,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,QAAQ,EAAE,KAAK;AAClB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,QAAQ,EAAE,KAAK;AAClB,KAAA;CACJ;;MCnOY,0BAA0B,CAAA;AAgBnC,IAAA,WAAA,CACqB,qBAA+C,EAAA;QAA/C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAA0B;QAhBpE,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC;QAEpB,IAAW,CAAA,WAAA,GACP,mDAAmD,CAAC;QAExD,IAAU,CAAA,UAAA,GAAwC,EAAE,CAAC;QAErD,IAAM,CAAA,MAAA,GAAmC,oBAAoB,CAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;AAKE,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAClB,YAAA,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AAClB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,cAAc,EAAE,OACZ,CAAoB,EACpB,OAA6B,KAC7B;AACA,gBAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;AAChD,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;aACvD;AACD,YAAA,gBAAgB,EAAE,CAAC,OAA6B,KAAI;AAChD,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;aACxD;AACJ,SAAA,CAAC,CAAC;KACN;AAED,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,EAAE,MAAM,EAAwB,EAAA;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;AAExD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACvC,OAAO;AACV,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;gBAC/B,MAAM,CAAC,OAAO,CAAC,CAAG,EAAA,KAAK,GAAG,CAAC,CAAK,EAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;AAC/C,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAED,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,QAAA,MAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;KACvE;+GA7DQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCDY,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;QAII,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC;QAEpB,IAAW,CAAA,WAAA,GAAG,kCAAkC,CAAC;QAEjD,IAAU,CAAA,UAAA,GAAwC,EAAE,CAAC;QAErD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;AA4BL,KAAA;AA1BG,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,OAA6B,EAAA;AAE7B,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,oBAAoB,EACpB,kBAAkB,CAAC,MAAM,CAC5B,CACJ,CAAC;AAEF,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC3B,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,CAAK,EAAA,EAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAC3B,MAAM,CAAC,GAAG,EACV,kBAAkB,CAAC,MAAM,CAC5B,CAAM,GAAA,EAAA,MAAM,CAAC,WAAW,CAAE,CAAA,CAC9B,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;QAC1C,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,IAAI,CAAC,WAAW,IAAI,kCAAkC,CACzD,CAAC;KACL;+GAxCQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCNY,wBAAwB,CAAA;AAKjC,IAAA,WAAA,CAA6B,KAAuB,EAAA;QAAvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkB;QAJnC,IAAU,CAAA,UAAA,GAAG,cAAc,CAAC;QAEtC,IAAsB,CAAA,sBAAA,GAAG,eAAe,CAAC;KAEQ;AAExD;;;AAGG;AACH,IAAA,MAAM,WAAW,GAAA;QACb,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACxD,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACvC,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,IAAI,CAAC,UAAU,CAAC,CAAC;QAElE,OAAO,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;KACnC;AAED;;;;AAIG;IACH,MAAM,UAAU,CAAC,WAAmB,EAAA;AAChC,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAClC,CAAC,CAAC,KACE,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAC3D,CAAC;KACL;AAED;;;;AAIG;IACH,MAAM,UAAU,CAAC,WAAmB,EAAA;QAChC,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,SAAS,CAAC;KAC7D;AAED;;;AAGG;IACH,MAAM,UAAU,CAAC,GAAY,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,CAAA,mBAAA,EAAsB,GAAG,CAAC,IAAI,CAAmB,iBAAA,CAAA,CAAC,CAAC;AACtE,SAAA;AACD,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACrC;AAED;;;AAGG;IACH,MAAM,aAAa,CAAC,WAAmB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CACjC,CAAC,CAAC,KACE,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAC3D,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,CAAA,YAAA,CAAc,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CACzC,CAAC;AAEF,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE;AAC5C,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,CAAA,YAAA,CAAc,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAEnC,QAAA,OAAO,eAAgB,CAAC;KAC3B;AAED;;;;;;;AAOG;IACH,MAAM,aAAa,CAAC,GAAY,EAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,CAAA,mBAAA,EAAsB,GAAG,CAAC,IAAI,CAAc,YAAA,CAAA,CAAC,CAAC;AACjE,SAAA;AACD,QAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACtB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;KACrC;AAED;;;AAGG;IACK,MAAM,YAAY,CAAC,QAAmB,EAAA;AAC1C,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACnD;+GA/GQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCaY,2BAA2B,CAAA;AAmBpC,IAAA,WAAA,CACqB,aAAkC,EAClC,eAAyC,EAEzC,QAAsC,EAAA;QAHtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;QAClC,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;QAEzC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA8B;QAtBlD,IAAO,CAAA,OAAA,GAAG,UAAU,CAAC;QAE9B,IAAW,CAAA,WAAA,GAAG,4BAA4B,CAAC;QAE3C,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;QAErB,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAElB,IAAU,CAAA,UAAA,GAAwC,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAsC;AACnD,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;QAEM,IAAsB,CAAA,sBAAA,GAAa,EAAE,CAAC;QAQ1C,MAAM,KAAK,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,UAAU,GAAG;AACd,YAAA;AACI,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,MAAM,EAAE,oBAAoB;AAC5B,gBAAA,MAAM,cAAc,CAAC,CAAC,EAAE,OAAO,EAAA;AAC3B,oBAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC;AAErD,oBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAEpC,oBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,wBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAClD,wBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CACpB,+CAA+C,CAClD,CAAC;wBACF,OAAO;AACV,qBAAA;AAED,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,wBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CACpB,CAAK,EAAA,EAAA,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAA,CAAE,CACjC,CAAC;AACN,qBAAC,CAAC,CAAC;iBACN;AACD,gBAAA,gBAAgB,CAAC,OAAO,EAAA;AACpB,oBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;iBAC3C;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,WAAW,EACP,mDAAmD;AACvD,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAA;oBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,oBAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;wBACxB,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxC,qBAAA;iBACJ;gBACD,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAA;AACvB,oBAAA,MAAM,CAAC,SAAS,CACZ,kEAAkE,CACrE,CAAC;oBACF,MAAM,CAAC,OAAO,CACV,2BAA2B;wBACvB,MAAM,CAAC,WAAW,CACd,iBAAiB,EACjB,kBAAkB,CAAC,KAAK,CAC3B,CACR,CAAC;AACF,oBAAA,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACtC,oBAAA,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;AACnD,oBAAA,MAAM,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;iBAC7D;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,WAAW,EAAE,+BAA+B;AAC5C,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAA;oBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3C,oBAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;wBACxB,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,qBAAA;iBACJ;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,WAAW,EACP,0EAA0E;AAC9E,gBAAA,qBAAqB,EAAE,IAAI;AAC3B,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,EAAA;oBACjC,IAAI,OAAO,CAAC,KAAK,EAAE;wBACf,MAAM,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAM,EAAE,OAAO,CAAC,CAAC;AACtD,qBAAA;AAAM,yBAAA;AACH,wBAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC;AACrD,wBAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;4BACxB,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,yBAAA;AAED,wBAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;AACvD,qBAAA;iBACJ;AACD,gBAAA,gBAAgB,CAAC,OAAO,EAAA;AACpB,oBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,8BAA8B;AAC1B,wBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,6BAA6B,EAC7B,kBAAkB,CAAC,KAAK,CAC3B,CACR,CAAC;AACF,oBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,oBAAoB;AAChB,wBAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,uBAAuB,EACvB,kBAAkB,CAAC,KAAK,CAC3B,CACR,CAAC;iBACL;AACJ,aAAA;SACJ,CAAC;KACL;AAED,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACrD;IAED,gBAAgB,CAAE,EAAE,MAAM,EAAwB,EAAA;AAC9C,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEjC,QAAA,MAAM,CAAC,SAAS,CACZ,sEAAsE,CACzE,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAChC,QAAA,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;KAC9C;IAED,MAAM,UAAU,CAAC,OAA6B,EAAA;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AAE1D,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;YACxB,MAAM,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAErD,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClD,SAAA;KACJ;AAEO,IAAA,MAAM,aAAa,CAAC,IAAY,EAAE,OAA6B,EAAA;AACnE,QAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE3B,IAAI;YACA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE3D,YAAA,IAAI,GAAG,EAAE;gBACL,MAAM,MAAM,GAAI,MAAc,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAC;AAC1D,gBAAA,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;AACrC,wBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACjD,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CACvB,CAAW,QAAA,EAAA,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAA,qBAAA,CAAuB,CAC5D,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC,CAAC;AAC/D,SAAA;KACJ;AAEO,IAAA,MAAM,UAAU,CAAC,IAAY,EAAE,OAA6B,EAAA;AAChE,QAAA,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAExC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,MAAM,CAAC,SAAS,CAAC,WAAW,IAAI,CAAA,kBAAA,CAAoB,CAAC,CAAC;YAEtD,OAAO;AACV,SAAA;QAED,WAAW,CAAC,IAAI,EAAE,CAAC;AACnB,QAAA,WAAW,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAA,CAAE,CAAC,CAAC;QAEhD,IAAI;AACA,YAAA,MAAM,QAAQ,GAAG;AACb,gBAAA,IAAI,CAAC,aAAa;AACb,qBAAA,SAAS,CAAC,CAAqB,kBAAA,EAAA,IAAI,CAAE,CAAA,GAAG,eAAe,CAAC;AACxD,qBAAA,KAAK,CAAC,CAAC,KAAK,MAAM;oBACf,KAAK;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,GAAG,EAAE,IAAI;AACZ,iBAAA,CAAC,CAAC;qBACF,OAAO,CAAC,MAAK;AACV,oBAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,wBAAA,IAAI,EAAE,WAAW;AACpB,qBAAA,CAAC,CAAC;AACP,iBAAC,CAAC;aACT,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,EAAE;AAC/D,gBAAA,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,aAAa;qBACb,SAAS,CACN,qBAAqB,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAG,EAAA,IAAI,CAAE,CAAA;AACrE,oBAAA,eAAe,CACtB;AACA,qBAAA,KAAK,CAAC,CAAC,KAAK,MAAM;oBACf,KAAK;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,GAAG,EAAE,IAAI;AACZ,iBAAA,CAAC,CAAC;qBACF,OAAO,CAAC,MAAK;AACV,oBAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,wBAAA,IAAI,EAAE,WAAW;AACpB,qBAAA,CAAC,CAAC;iBACN,CAAC,CACT,CAAC;AACL,aAAA;AAED,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAEvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE7C,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACzC,gBAAA,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,aAAA;YAED,MAAM,cAAc,GAAG,QAAQ;iBAC1B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AACxB,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;AAE/C,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA,CAAC,CAAC;AACH,YAAA,WAAW,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KACrC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,CACjE;kBACK,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAClB,CAAC,CAAC,IAAI,CAAC,UAAU,CACb,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAC9C,CACJ;AACH,kBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AAExB,YAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAC/C,CAAqB,kBAAA,EAAA,UAAU,CAAC,IAAI,EAAE,EACtC;AACI,gBAAA,UAAU,EAAE,CAAC,QAAQ,KAAI;AACrB,oBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACxC;AACJ,aAAA,CACJ,CAAC;AAEF,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA,CAAC,CAAC;AACH,YAAA,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAEzC,YAAA,MAAM,GAAG,GAAY;gBACjB,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,gBAAA,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,QAAQ;AACvC,gBAAA,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW;AAC7B,gBAAA,YAAY,EAAE,UAAU,CAAC,eAAe,IAAI,EAAE;aACjD,CAAC;AAEF,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,YAAA,WAAW,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAEhD,MAAM,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAErD,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,YAAA,WAAW,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;YAE/C,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAClB,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/D,aAAA;AAED,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvB,YAAA,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEtC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAE3C,YAAA,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAE/B,YAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CACvB,CAAW,QAAA,EAAA,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,CAAA,mBAAA,CAAqB,CACxE,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC,CAAC;AAC/D,SAAA;KACJ;AAEO,IAAA,MAAM,aAAa,CACvB,IAAY,EACZ,OAA6B,EAAA;AAE7B,QAAA,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAExC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEnB,IAAI;AACA,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA,CAAC,CAAC;AACH,YAAA,WAAW,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAA,CAAE,CAAC,CAAC;YAChD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnE,IAAI,CAAC,cAAc,EAAE;gBACjB,WAAW,CAAC,QAAQ,EAAE,CAAC;AACvB,gBAAA,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,CAAA,UAAA,CAAY,CAAC,CAAC;gBAC/C,OAAO;AACV,aAAA;AAED,YAAA,MAAM,UAAU,GAAG,CAAA,kBAAA,EAAqB,cAAc,CAAC,IAAI,EAAE,CAAC;AAE9D,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa;AACtC,iBAAA,SAAS,CAAC,UAAU,GAAG,eAAe,CAAC;AACvC,iBAAA,IAAI,CAAC,CAAC,QAAQ,KAAI;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;AAChD,aAAC,CAAC,CAAC;AAEP,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,CACf,CAAA,iCAAA,EAAoC,cAAc,CAAC,IAAI,CAAE,CAAA,CAC5D,CAAC;AAEF,YAAA,IAAI,UAAU,CAAC,OAAO,KAAK,cAAc,CAAC,OAAO,EAAE;AAC/C,gBAAA,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CACpB,CAAW,QAAA,EAAA,cAAc,CAAC,IAAI,uCAAuC,cAAc,CAAC,OAAO,CAAA,CAAE,CAChG,CAAC;gBACF,OAAO;AACV,aAAA;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE;AAC5D,gBAAA,UAAU,EAAE,CAAC,QAAQ,KAAI;AACrB,oBAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACxC;AACJ,aAAA,CAAC,CAAC;AAEH,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE;AACnB,gBAAA,IAAI,EAAE,WAAW;AACpB,aAAA,CAAC,CAAC;YACH,WAAW,CAAC,OAAO,CAAC,CAAA,iBAAA,EAAoB,cAAc,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;AAE/D,YAAA,MAAM,UAAU,GAAY;gBACxB,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,gBAAA,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,QAAQ;AACvC,gBAAA,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW;AAC7B,gBAAA,YAAY,EAAE,UAAU,CAAC,eAAe,IAAI,EAAE;aACjD,CAAC;YAEF,MAAM,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAE5D,YAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvB,WAAW,CAAC,OAAO,CAAC,CAAA,kBAAA,EAAqB,cAAc,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;YAEhE,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAClB,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/D,aAAA;YAED,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAErD,WAAW,CAAC,OAAO,CACf,CAAA,QAAA,EAAW,cAAc,CAAC,IAAI,CAAuB,qBAAA,CAAA,CACxD,CAAC;YACF,WAAW,CAAC,QAAQ,EAAE,CAAC;AAEvB,YAAA,MAAM,CAAC,YAAY,CACf,CAAW,QAAA,EAAA,cAAc,CAAC,IAAI,CAAA,iCAAA,EAAoC,UAAU,CAAC,OAAO,CAAS,MAAA,EAAA,cAAc,CAAC,OAAO,CAAA,CAAE,CACxH,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,WAAW,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC,CAAC;AACvD,SAAA;KACJ;AAEO,IAAA,MAAM,2BAA2B,CACrC,GAAY,EACZ,EAAE,MAAM,EAAwB,EAAA;QAEhC,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,MAAM,CAAC,IAAI,CAAC,CAAA,kBAAA,EAAqB,GAAG,CAAC,IAAI,CAAe,aAAA,CAAA,CAAC,CAAC;AAE1D,YAAA,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,YAAY,EAAE;gBACvC,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAK,CAAC,EAAE;oBACxD,MAAM,CAAC,IAAI,CACP,CAAA,WAAA,EAAc,UAAU,CAAC,UAAU,CAAqB,mBAAA,CAAA,CAC3D,CAAC;oBACF,SAAS;AACZ,iBAAA;gBAED,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAEtD,IAAI,UAAU,CAAC,UAAU,EAAE;AACvB,oBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CACxC,UAAU,CAAC,UAAU,EACrB,IAAI,CACP,CAAC;oBAEF,IAAI,CAAC,WAAW,EAAE;wBACd,MAAM,CAAC,KAAK,CACR,CAAA,WAAA,EAAc,UAAU,CAAC,UAAU,CAA2C,yCAAA,CAAA,CACjF,CAAC;wBAEF,OAAO;AACV,qBAAA;AAAM,yBAAA;wBACH,MAAM,CAAC,IAAI,CACP,CAAA,WAAA,EAAc,UAAU,CAAC,UAAU,CAA+B,6BAAA,CAAA,CACrE,CAAC;AACL,qBAAA;AACJ,iBAAA;gBAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrD,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,MAAM,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,IAAI,CAAsB,oBAAA,CAAA,CAAC,CAAC;AAC1D,SAAA;KACJ;AAED;;;;;AAKG;IACK,aAAa,CACjB,UAAkB,EAClB,OAAe,EAAA;AAEf,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3B,YAAA,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,MAAM,KAAK,GAAG,MAAK;AACf,gBAAA,IAAK,MAAc,CAAC,UAAU,CAAC,EAAE;oBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,iBAAA;qBAAM,IAAI,OAAO,IAAI,OAAO,EAAE;oBAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;AAClB,iBAAA;AAAM,qBAAA;oBACH,OAAO,IAAI,QAAQ,CAAC;AACpB,oBAAA,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/B,iBAAA;AACL,aAAC,CAAC;AAEF,YAAA,KAAK,EAAE,CAAC;AACZ,SAAC,CAAC,CAAC;KACN;AArdQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,uFAsBxB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAtB9B,2BAA2B,EAAA,CAAA,CAAA,EAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;;0BAuBF,MAAM;2BAAC,2BAA2B,CAAA;;;MCvB9B,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;QAII,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC;QAEpB,IAAW,CAAA,WAAA,GAAwB,gCAAgC,CAAC;QAEpE,IAAU,CAAA,UAAA,GAAwC,EAAE,CAAC;QAErD,IAAM,CAAA,MAAA,GAAmC,oBAAoB,CAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,OAAO,CAAC,QAAQ;AACtB,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;AAuBL,KAAA;AArBG,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,EAAE,MAAM,EAAwB,EAAA;AAEhC,QAAA,MAAM,CAAC,OAAO,CACV,CAAe,YAAA,EAAA,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA,CAAE,CACjF,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAE7B,QAAA,MAAM,CAAC,OAAO,CACV,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,KAAK,CAAC;AAC3D,YAAA,+BAA+B,CACtC,CAAC;QAEF,MAAM,CAAC,OAAO,EAAE,CAAC;KACpB;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;KACnE;+GAnCQ,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACGM,MAAM,eAAe,GAAG;IAC3B,+BAA+B,CAAC,uBAAuB,CAAC;IACxD,+BAA+B,CAAC,0BAA0B,CAAC;IAC3D,+BAA+B,CAAC,2BAA2B,CAAC;IAC5D,+BAA+B,CAAC,0BAA0B,CAAC;IAC3D,+BAA+B,CAAC,2BAA2B,CAAC;IAC5D,+BAA+B,CAAC,0BAA0B,CAAC;CAC9D;;MCnBY,wBAAwB,CAAA;AAArC,IAAA,WAAA,GAAA;QACI,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAElB,IAAW,CAAA,WAAA,GAAwB,qBAAqB,CAAC;QAEzD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;SACjB,CAAC;KAQL;AANG,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,OAA6B,EAAA;AAE7B,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KAC5B;AACJ;;MCdY,wBAAwB,CAAA;AAArC,IAAA,WAAA,GAAA;QACI,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAElB,IAAW,CAAA,WAAA,GACP,gDAAgD,CAAC;QAErD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,OAAO,CAAC,KAAK;AACnB,YAAA,MAAM,EAAE,MAAM;SACjB,CAAC;KAoFL;AAlFG,IAAA,MAAM,cAAc,CAChB,CAAoB,EACpB,OAA6B,EAAA;AAE7B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAE3B,QAAA,SAAS,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AACzC,YAAA,MAAM,CAAC,OAAO,CACV,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAA,CAAE,CACpE,CAAC;SACL;AAED,QAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzB,QAAA,SAAS,CAAC,cAAc,EAAEU,iBAAY,CAAC,CAAC;AACxC,QAAA,SAAS,CAAC,aAAa,EAAEC,eAAW,CAAC,CAAC;QAEtC,MAAM,CAAC,OAAO,EAAE,CAAC;AAEjB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AAClC,YAAA,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAEzC,YAAA,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC7C,YAAA,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,YAAA,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;;YAG1C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAChE,YAAA,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;AACjD,YAAA,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AAC7C,YAAA,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,UAAU,CACb,2DAA2D,CAC9D,CAAC;AACL,SAAA;KACJ;AAED,IAAA,cAAc,CAAC,SAAiB,EAAA;QAK5B,IAAI,WAAW,GAAG,SAAS,CAAC;QAC5B,IAAI,OAAO,GAAG,SAAS,CAAC;QACxB,IAAI,EAAE,GAAG,SAAS,CAAC;;AAGnB,QAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC9B,WAAW,GAAG,QAAQ,CAAC;AACvB,YAAA,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;AACnE,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACtC,WAAW,GAAG,SAAS,CAAC;AACxB,YAAA,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;AACpE,SAAA;AAAM,aAAA,IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5B,YAAA,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC/B;YACE,WAAW,GAAG,QAAQ,CAAC;AACvB,YAAA,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;AACpE,SAAA;AAAM,aAAA,IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,YAAA,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC/B;YACE,WAAW,GAAG,mBAAmB,CAAC;YAClC,OAAO;gBACH,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;AAClE,SAAA;AAED,QAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC/B,EAAE,GAAG,SAAS,CAAC;AAClB,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACrC,EAAE,GAAG,QAAQ,CAAC;AACjB,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACpC,EAAE,GAAG,OAAO,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACtC,EAAE,GAAG,SAAS,CAAC;AAClB,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACnE,EAAE,GAAG,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;KACvC;AACJ;;MCpGY,uBAAuB,CAAA;AAApC,IAAA,WAAA,GAAA;QACI,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC;QAEjB,IAAW,CAAA,WAAA,GAAG,2BAA2B,CAAC;QAE1C,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAE7B,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;SACjB,CAAC;KAqBL;AAnBG,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;AAEjD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,SAAA;AAED,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAChC;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;KACvD;AACJ;;MC9BY,wBAAwB,CAAA;AAwBjC,IAAA,WAAA,GAAA;QAvBA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAElB,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;QAE9B,IAAW,CAAA,WAAA,GAAG,6BAA6B,CAAC;AAI5C,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,IAAI;SACf,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE;AACV,gBAAA,OAAO,EAAE,EAAE;AACd,aAAA;AACD,YAAA,SAAS,EAAE,SAAS;SACvB,CAAC;QAEK,IAAO,CAAA,OAAA,GAA2B,EAAE,CAAC;QAGxC,IAAI,CAAC,UAAU,GAAG;AACd,YAAA;AACI,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,KAAI;AACjC,oBAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAE3B,oBAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3B,oBAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAI;wBACtD,MAAM,CAAC,SAAS,CAAC,CAAA,EAAA,EAAK,KAAK,CAAO,IAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;AACjD,qBAAC,CAAC,CAAC;AAEH,oBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,wBAAA,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAC5C,qBAAA;iBACJ;AACJ,aAAA;SACJ,CAAC;KACL;AAEM,IAAA,MAAM,cAAc,CACvB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CACjC,2BAA2B,CAC9B,CAAC;AAEF,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;YACzC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO;AACV,SAAA;AAED,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE;AACtD,gBAAA,MAAM,CAAC,UAAU,CACb,CAAA,EAAG,KAAK,CAAyB,sBAAA,EAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE,CACzD,CAAC;gBACF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO;AACV,aAAA;AAED,YAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAA,IAAA,EAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACtB,YAAA,OAAO,EAAE;gBACL,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,OAAO,CAAC,IAAI;AAClB,aAAA;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACjC;IAED,MAAM,UAAU,CAAC,OAA6B,EAAA;AAC1C,QAAA,OAAO,CAAC,KAAK;aACR,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;AAC3B,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;KACV;AACJ;;MC7FY,0BAA0B,CAAA;AAAvC,IAAA,WAAA,GAAA;QACI,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC;QAEpB,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;QAE9B,IAAW,CAAA,WAAA,GAAG,6BAA6B,CAAC;QAE5C,IAAa,CAAA,aAAA,GAAyB,IAAI,CAAC;AAE3C,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,SAAS;SACvB,CAAC;AAEF,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,IAAI;SACf,CAAC;KAgCL;AA9BU,IAAA,MAAM,cAAc,CACvB,OAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAE3B,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAM,CAAC;QAErC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAE7C,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACzB,YAAA,MAAM,CAAC,UAAU,CAAC,SAAS,aAAa,CAAA,UAAA,CAAY,CAAC,CAAC;YACtD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO;AACV,SAAA;QAED,MAAM,OAAO,GAAwB,EAAE,CAAC;AAExC,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aACf,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,aAAa,CAAC;AAC1C,aAAA,OAAO,CAAC,CAAC,KAAK,KAAI;YACf,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;AAEP,QAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACtB,YAAA,OAAO,EAAE,OAAO;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACjC;AACJ;;MCjDY,wBAAwB,CAAA;AAejC,IAAA,WAAA,GAAA;QAdA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAElB,IAAW,CAAA,WAAA,GAAwB,sCAAsC,CAAC;QAE1E,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO,CAAC,KAAK;SACtB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAyB,IAAI,CAAC;KAE3B;AAEhB,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,EAAE,MAAM,EAAwB,EAAA;QAEhC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC;AAEtC,QAAA,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;AAElB,QAAA,MAAM,CAAC,SAAS,CAAC,aAAa,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;KAC3C;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;AAC/D,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC9C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;KACrE;AACJ;;AC3BM,MAAM,cAAc,GAAG;AAC1B,IAAA,IAAI,wBAAwB,EAAE;AAC9B,IAAA,IAAI,uBAAuB,EAAE;AAC7B,IAAA,IAAI,uBAAuB,EAAE;AAC7B,IAAA,IAAI,wBAAwB,EAAE;AAC9B,IAAA,IAAI,0BAA0B,EAAE;AAChC,IAAA,IAAI,wBAAwB,EAAE;AAC9B,IAAA,IAAI,wBAAwB,EAAE;CACjC;;MCPY,0BAA0B,CAAA;AAoDnC,IAAA,WAAA,CAEqB,UAAiC,EAAA;QAAjC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;QArDtD,IAAO,CAAA,OAAA,GAAG,SAAS,CAAC;QAEpB,IAAW,CAAA,WAAA,GAAwB,gBAAgB,CAAC;QAEpD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,OAAO;SACrB,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAyB,IAAI,CAAC;QAEnD,IAAa,CAAA,aAAA,GAAyB,IAAI,CAAC;AAE3C,QAAA,IAAA,CAAA,UAAU,GAAkD;AACxD,YAAA;AACI,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,uBAAuB;AACpC,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,SAAS,EAAE,CAAC,KAAa,KAAI;;oBAEzB,MAAM,UAAU,GACZ,kDAAkD,CAAC;AACvD,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBACzB,OAAO;AACH,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,OAAO,EAAE,sBAAsB;yBAClC,CAAC;AACL,qBAAA;oBAED,OAAO;AACH,wBAAA,KAAK,EAAE,IAAI;qBACd,CAAC;iBACL;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,qDAAqD;AAClE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,KAAK;AAClB,aAAA;SACJ,CAAC;KAKE;AAEJ,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,MAAM,IAAI,GAAW,OAAO,CAAC,KAAe,CAAC;QAC7C,MAAM,KAAK,GAAW,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAa,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAElE,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC7B,IAAI;gBACJ,KAAK;gBACL,MAAM;AACT,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;AACzD,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,CAAC,EAAE,QAAQ,EAAE,IAAI,2CAA2C,CAC/D,CAAC;AACL,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACzC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,yDAAyD,CAC5D,CAAC;KACL;AAtFQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAqDvB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AArD9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAsDQ,MAAM;2BAAC,2BAA2B,CAAA;;;MCpD9B,4BAA4B,CAAA;AAuCrC,IAAA,WAAA,CAEqB,UAAiC,EAAA;QAAjC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;QAxCtD,IAAO,CAAA,OAAA,GAAG,WAAW,CAAC;QAEtB,IAAW,CAAA,WAAA,GAAwB,gBAAgB,CAAC;QAEpD,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,OAAO;SACrB,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAkD;AACxD,YAAA;AACI,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,+BAA+B;AAC5C,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,KAAK;AAClB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,6BAA6B;AAC1C,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,KAAK;AAClB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,uCAAuC;AACpD,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,KAAK;AAClB,aAAA;SACJ,CAAC;KAKE;AAEJ,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,EAAE,MAAM,EAAwB,EAAA;QAEhC,MAAM,KAAK,GAAG,MAAM,cAAc,CAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACrB,YAAA,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,SAAA,CAAC,CACL,CAAC;AAEF,QAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzB,QAAA,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACrC;IAED,gBAAgB,CAAC,EAAE,MAAM,EAAwB,EAAA;AAC7C,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;AAClC,QAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;KACtC;AA/DQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,kBAwCzB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAxC9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAFzB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAyCQ,MAAM;2BAAC,2BAA2B,CAAA;;;MClC9B,6BAA6B,CAAA;IAgCtC,WAEqB,CAAA,kBAA0C,EAE1C,UAAiC,EAAA;QAFjC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAwB;QAE1C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;QAnCtD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;QAEf,IAAW,CAAA,WAAA,GAAwB,aAAa,CAAC;QAEjD,IAAqB,CAAA,qBAAA,GAAyB,IAAI,CAAC;AAEnD,QAAA,IAAA,CAAA,UAAU,GAAkD;AACxD,YAAA;AACI,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,WAAW,EAAE,sCAAsC;AACnD,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,CAAC,GAAG,CAAC;AACjB,aAAA;SACJ,CAAC;QAEF,IAAM,CAAA,MAAA,GAAG,oBAAoB,CAAC;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,OAAO;SACrB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;KAOjB;AAEJ,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,IAAI;AACA,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;AAE3C,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAE7B,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,6BAA6B,CAAC,CAAC;gBACzD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO;AACV,aAAA;YAED,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;gBACvD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO;AACV,aAAA;YAED,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAC;AAEvD,YAAA,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAEnE,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAQ,KAAA,EAAA,MAAM,CAAY,UAAA,CAAA,CAAC,CAAC;AAEtD,gBAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,EAAE;AACzB,gBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AACjD,gBAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO;AACV,aAAA;AAED,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC;gBACzC,IAAI;AACP,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YAExB,OAAO,CAAC,MAAM,CAAC,YAAY,CACvB,CAAa,UAAA,EAAA,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAA,iBAAA,CAAmB,CAC9F,CAAC;AAEF,YAAA,MAAM,MAAM,GACR,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAElE,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;gBAC7D,UAAU,CAAC,MAAK;AACZ,oBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBAC5B,EAAE,IAAI,CAAC,CAAC;AACZ,aAAA;AACJ,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,YAAA,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACxB,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;YAEnD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO;AACV,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAC9C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACjD,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;KACzD;+GAlHQ,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiC1B,4BAA4B,EAAA,EAAA,EAAA,KAAA,EAE5B,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAnC9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF1B,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAkCQ,MAAM;2BAAC,4BAA4B,CAAA;;0BAEnC,MAAM;2BAAC,2BAA2B,CAAA;;;MCxC9B,yBAAyB,CAAA;AA4BlC,IAAA,WAAA,CAEqB,kBAA0C,EAAA;QAA1C,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAwB;QA7B/D,IAAO,CAAA,OAAA,GAAG,QAAQ,CAAC;QAEnB,IAAW,CAAA,WAAA,GAAwB,kCAAkC,CAAC;QAEtE,IAAM,CAAA,MAAA,GAAmC,oBAAoB,CAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,OAAO;SACrB,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAkD;AACxD,YAAA;AACI,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,0BAA0B;AACvC,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,CAAC,GAAG,CAAC;AACjB,aAAA;SACJ,CAAC;KAKE;AAEJ,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;AAE7B,QAAA,MAAM,IAAI,GAAG,MAAM,cAAc,CAC7B,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAC3C,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAChD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC3C,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAC5C,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;YACH,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAA;KACJ;AAED,IAAA,gBAAgB,CAAC,OAA6B,EAAA;QAC1C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;KAC7C;AAxDQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBA6BtB,4BAA4B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AA7B/B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFtB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BA8BQ,MAAM;2BAAC,4BAA4B,CAAA;;;ACrCrC,MAAM,cAAc,GAAG;IAC1B,+BAA+B,CAAC,6BAA6B,CAAC;IAC9D,+BAA+B,CAAC,yBAAyB,CAAC;IAC1D,+BAA+B,CAAC,0BAA0B,CAAC;IAC3D,+BAA+B,CAAC,4BAA4B,CAAC;CAChE;;MCdY,SAAS,CAAA;AAGlB,IAAA,WAAA,GAAA;AAFQ,QAAA,IAAA,CAAA,WAAW,GAAgB,WAAW,CAAC,KAAK,CAAC;KAErC;AAEhB,IAAA,cAAc,CAAC,KAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;IAED,GAAG,CAAC,GAAG,IAAW,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE;AACrC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,SAAA;KACJ;IAED,IAAI,CAAC,GAAG,IAAW,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;AACtC,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,SAAA;KACJ;IAED,IAAI,CAAC,GAAG,IAAW,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;AACtC,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACzB,SAAA;KACJ;IAED,KAAK,CAAC,GAAG,IAAW,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1B,SAAA;KACJ;IAED,KAAK,CAAC,GAAG,IAAW,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1B,SAAA;KACJ;AACJ;;MC/BY,2BAA2B,CAAA;AAKpC,IAAA,WAAA,GAAA;AAFgB,QAAA,IAAA,CAAA,UAAU,GAA2B,CAAC,GAAG,cAAc,CAAC,CAAC;KAEzD;AAET,IAAA,iBAAiB,CAAC,SAA+B,EAAA;QACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAErE,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE;gBACpC,OAAO,CAAC,IAAI,CACR,CAAA,wBAAA,EAA2B,SAAS,CAAC,OAAO,CAAoC,kCAAA,CAAA,CACnF,CAAC;gBAEF,OAAO;AACV,aAAA;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CACzC,CAAC;;AAGF,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;AAC9C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,SAAA;KACJ;AAEM,IAAA,mBAAmB,CAAC,SAA+B,EAAA;QACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAErE,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE;gBACpC,OAAO,CAAC,IAAI,CACR,CAAA,wBAAA,EAA2B,SAAS,CAAC,OAAO,CAAmC,iCAAA,CAAA,CAClF,CAAC;gBACF,OAAO;AACV,aAAA;AACJ,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CACnC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CACzC,CAAC;AAEF,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,SAAA;KACJ;IAEM,aAAa,CAChB,WAAmB,EACnB,aAAuB,EAAA;AAEvB,QAAA,OAAO,IAAI,CAAC,yBAAyB,CACjC,WAAW,EACX,aAAa,EACb,IAAI,CAAC,UAAU,CAClB,CAAC;KACL;AAED;;;;;;AAMG;AACI,IAAA,yBAAyB,CAC5B,WAAmB,EACnB,aAAuB,EACvB,UAAkC,EAAA;QAElC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAC/D,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;QAED,IAAI,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,OAAO,IAAI,CAAC,yBAAyB,CACjC,aAAa,CAAC,CAAC,CAAC,EAChB,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EACtB,SAAS,CAAC,UAAU,CACvB,CAAC;AACL,SAAA;AAAM,aAAA,IAAI,SAAS,CAAC,qBAAqB,IAAI,SAAS,CAAC,aAAa,EAAE;AACnE,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AAEM,IAAA,gBAAgB,CACnB,KAAgC,EAAA;AAEhC,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;KACrE;AAEO,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACvB,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACxD,CAAC;KACL;+GA7GQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAA3B,2BAA2B,EAAA,CAAA,CAAA,EAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;;;MCIE,kBAAkB,CAAA;AAI3B,IAAA,WAAA,CAAY,QAAkB,EAAA;QAHtB,IAAS,CAAA,SAAA,GAAqB,EAAE,CAAC;AAIrC,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;KACnC;AAED,IAAA,GAAG,CAAI,OAAY,EAAA;QACf,IAAI;YACA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAI,OAAO,CAAC,CAAC;AAC/C,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACR,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAA,UAAA,CAAY,CAAC,CAAC;AACnD,SAAA;KACJ;AAED,IAAA,GAAG,CAAC,UAAuC,EAAA;AACvC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACzC,cAAE,UAAU;AACZ,cAAE,CAAC,UAAU,CAAC,CAAC;QAEnB,MAAM,YAAY,GAAa,EAAE,CAAC;AAElC,QAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC3B,YAAA,IAAI,WAAW,GAAa;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;aACvB,CAAC;AAEF,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AAChC,gBAAA,MAAM,aAAa,GAAkB;oBACjC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACnB,CAAC;gBACF,WAAW,GAAG,aAAa,CAAC;AAC/B,aAAA;AAAM,iBAAA,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACvC,gBAAA,MAAM,aAAa,GAAkB;oBACjC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACnB,CAAC;gBAEF,WAAW,GAAG,aAAa,CAAC;AAC/B,aAAA;AAAM,iBAAA,IAAI,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACzC,gBAAA,MAAM,aAAa,GAAoB;oBACnC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;iBACnB,CAAC;gBAEF,WAAW,GAAG,aAAa,CAAC;AAC/B,aAAA;AAED,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;AACnC,YAAA,SAAS,EAAE,YAAY;YACvB,MAAM,EAAE,IAAI,CAAC,eAAe;AAC/B,SAAA,CAAC,CAAC;KACN;+GA9DQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCOE,wBAAwB,CAAA;AA4BjC,IAAA,WAAA,GAAA;QA3BA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAElB,IAAW,CAAA,WAAA,GAAG,yBAAyB,CAAC;QAExC,IAAM,CAAA,MAAA,GAAmC,oBAAoB,CAAC;QAE9D,IAAO,CAAA,OAAA,GAAwB,OAAO,CAAC;QAEvC,IAAU,CAAA,UAAA,GAAwC,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,QAAQ,GAAsC;AAC1C,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,QAAQ;SACnB,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAuC;AACrD,YAAA,YAAY,EAAE;AACV,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,aAAa,EAAE,IAAI;AACtB,aAAA;SACJ,CAAC;AAEM,QAAA,IAAA,CAAA,YAAY,GAAa,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAKvD,IAAI,CAAC,UAAU,GAAG;AACd,YAAA;AACI,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,WAAW,EAAE,uBAAuB;AACpC,gBAAA,cAAc,EAAE,OACZ,OAA0B,EAC1B,OAA6B,KAC7B;AACA,oBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAClC,wBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,KAAK,EACL,kBAAkB,CAAC,IAAI,CAC1B,CACJ,CAAC;AACN,qBAAC,CAAC,CAAC;iBACN;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,WAAW,EAAE,wBAAwB;AACrC,gBAAA,cAAc,EAAE,OACZ,CAAoB,EACpB,OAA6B,KAC7B;oBACA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAc,CAAC;AACnD,oBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC;oBAE9C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAkB,eAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAClD,oBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACzC,oBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC,OAAO,CAChD,CAAC,GAAG,KAAI;wBACJ,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,CAAG,EAAA,GAAG,KAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAa,CAAC,GAAG,CAAC,CAAA,CAAE,CAC5D,CAAC;AACN,qBAAC,CACJ,CAAC;iBACL;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,eAAe;AAC5B,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,cAAc,EAAE,OACZ,OAA0B,EAC1B,OAA6B,KAC7B;AACA,oBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAM,CAAC;AAE7B,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;wBAChB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAS,MAAA,EAAA,KAAK,CAAY,UAAA,CAAA,CAAC,CAAC;wBACtD,OAAO;AACV,qBAAA;oBAED,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAE/C,oBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACtB,wBAAA,aAAa,EAAE,KAAK;AACpB,wBAAA,aAAa,EAAE,IAAI;AACtB,qBAAA,CAAC,CAAC;AAEH,oBAAA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAE9B,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAE1B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAS,MAAA,EAAA,KAAK,CAAU,QAAA,CAAA,CAAC,CAAC;iBACzD;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,qBAAqB,EAAE,IAAI;AAC3B,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,UAAU,EAAE;AACR,oBAAA;AACI,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,WAAW,EAAE,yBAAyB;AACtC,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,QAAQ,EAAE,KAAK;AAClB,qBAAA;AACJ,iBAAA;AACD,gBAAA,cAAc,EAAE,OACZ,OAA0B,EAC1B,OAA6B,KAC7B;AACA,oBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAEzD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAClC,wBAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CACrB,CAAA,iBAAA,EAAoB,GAAG,CAAqB,kBAAA,EAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAC7E,CAAC;wBACF,OAAO;AACV,qBAAA;AAED,oBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG;AAC7B,wBAAA,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;wBACjC,CAAC,GAAG,GAAG,KAAK;qBACf,CAAC;AAEF,oBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACtB,wBAAA,aAAa,EAAE,IAAI;AACnB,wBAAA,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;AAChD,qBAAA,CAAC,CAAC;oBAEH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAO,IAAA,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAEtD,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAE1B,oBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACtB,wBAAA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAA;iBACJ;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,WAAW,EAAE,iCAAiC;AAC9C,gBAAA,cAAc,EAAE,OACZ,OAA0B,EAC1B,OAA6B,KAC7B;oBACA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;AACpC,oBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;AACtB,wBAAA,aAAa,EAAE,IAAI;AACnB,wBAAA,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;AAChD,qBAAA,CAAC,CAAC;AAEH,oBAAA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBACjC;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,gCAAgC;AAC7C,gBAAA,cAAc,EAAE,OACZ,OAA0B,EAC1B,OAA6B,KAC7B;AACA,oBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1D,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,oBAAA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9B,oBAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;iBACzD;AACJ,aAAA;SACJ,CAAC;KACL;IAED,MAAM,UAAU,CAAC,OAA6B,EAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAM,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAc,CAAC;QAEnD,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;AAC1D,YAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAChE,SAAA;aAAM,IAAI,KAAK,CAAC,aAAa,EAAE;YAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC7B;AAED,IAAA,MAAM,cAAc,CAChB,OAA0B,EAC1B,OAA6B,EAAA;QAE7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KAC/C;AAEO,IAAA,WAAW,CAAC,OAA6B,EAAA;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QAEtE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACrC,MAAsB,CAAC,KAAK,CAAC,UAAU;AACpC,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU;AAC1C,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAW,CAAC;AACrC,SAAA;KACJ;IAEO,MAAM,SAAS,CAAC,OAA6B,EAAA;AACjD,QAAA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAE9B,QAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;KAC9C;AAED,IAAA,gBAAgB,CAAE,OAA6B,EAAA;AAC3C,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAElD,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,qBAAqB,EACrB,kBAAkB,CAAC,OAAO,CAC7B,CACJ,CAAC;AACF,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,aAAa,EACb,kBAAkB,CAAC,OAAO,CAC7B,CACJ,CAAC;AACF,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,0BAA0B,EAC1B,kBAAkB,CAAC,OAAO,CAC7B,CACJ,CAAC;AACF,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,0BAA0B,EAC1B,kBAAkB,CAAC,OAAO,CAC7B,CACJ,CAAC;AAEF,QAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,OAAO,CAClB,OAAO,CAAC,MAAM,CAAC,WAAW,CACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAClC,kBAAkB,CAAC,IAAI,CAC1B,CACJ,CAAC;KACL;+GAtPQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;AA0PD,MAAM,YAAY,GAAW;AACzB,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,2BAA2B,EAAE,EAAE;CAClC;;ACzQM,MAAM,mBAAmB,GAAG,MAAiB;IAChD,OAAO;QACH,mBAAmB;QACnB,iBAAiB;QACjB,oBAAoB;AACpB,QAAA;AACI,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,OAAO,EAAE,4BAA4B;AACxC,SAAA;AACD,QAAA;AACI,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,OAAO,EAAE,2BAA2B;AACvC,SAAA;AACD,QAAA;AACI,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,OAAO,EAAE,2BAA2B;AACvC,SAAA;AACD,QAAA;AACI,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,OAAO,EAAE,eAAe;AAC3B,SAAA;AACD,QAAA;AACI,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,OAAO,EAAE,2BAA2B;AACvC,SAAA;AACD,QAAA;AACI,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,OAAO,EAAE,wBAAwB;AACpC,SAAA;AACD,QAAA,GAAG,eAAe;AAClB,QAAA,GAAG,cAAc;QACjB,+BAA+B,CAAC,wBAAwB,CAAC;QACzD,+BAA+B,CAAC,uBAAuB,CAAC;KAC3D,CAAC;AACN,CAAC;;MCxBY,SAAS,CAAA;+GAAT,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,iBApBd,YAAY;YACZ,2BAA2B;YAC3B,iBAAiB;AACjB,YAAA,oBAAoB,aAGpB,YAAY;;YAEZ,YAAY;YACZ,aAAa;YACb,UAAU;YACV,iBAAiB;YACjB,aAAa,CAAA,EAAA,OAAA,EAAA,CAMP,iBAAiB,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAEhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,EANP,SAAA,EAAA;AACP,YAAA,mBAAmB,EAAE;AACrB,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC5C,SAAA,EAAA,OAAA,EAAA,CAXG,YAAY;;YAEZ,YAAY;YACZ,aAAa;YACb,UAAU;YACV,iBAAiB;YACjB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAQR,SAAS,EAAA,UAAA,EAAA,CAAA;kBAtBrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,YAAY;wBACZ,2BAA2B;wBAC3B,iBAAiB;wBACjB,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;;wBAEZ,YAAY;wBACZ,aAAa;wBACb,UAAU;wBACV,iBAAiB;wBACjB,aAAa;AAChB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA,mBAAmB,EAAE;AACrB,wBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC5C,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;AAC7C,iBAAA,CAAA;;;ACnCD;;AAEG;;ACFH;;AAEG;;;;"}