{"version":3,"file":"signals-compat.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/compat_field_node.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/compat_node_state.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/compat_structure.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/compat_validation_state.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/compat_field_adapter.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/api/compat_form.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/api/extract.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/api/di.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/forms/signals/compat/src/signal_form_control/signal_form_control.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, linkedSignal, runInInjectionContext, Signal, untracked} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {AbstractControl} from '@angular/forms';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {map, takeUntil} from 'rxjs/operators';\nimport {FieldNode} from '../../src/field/node';\nimport {getInjectorFromOptions} from '../../src/field/util';\nimport type {CompatFieldNodeOptions} from './compat_structure';\n\n/**\n * Field node with additional  control property.\n *\n * Compat node has no children.\n */\nexport class CompatFieldNode extends FieldNode {\n  readonly control: Signal<AbstractControl>;\n\n  constructor(public readonly options: CompatFieldNodeOptions) {\n    super(options);\n    this.control = this.options.control;\n  }\n}\n\n/**\n * Makes a function which creates a new subject (and unsubscribes/destroys the previous one).\n *\n * This allows us to automatically unsubscribe from status changes of the previous FormControl when we go to subscribe to a new one\n */\nfunction makeCreateDestroySubject() {\n  let destroy$ = new ReplaySubject<void>(1);\n  return () => {\n    destroy$.next();\n    destroy$.complete();\n\n    return (destroy$ = new ReplaySubject<void>(1));\n  };\n}\n\n/**\n * Helper function taking options, and a callback which takes options, and a function\n * converting reactive control to appropriate property using toSignal from rxjs compat.\n *\n * This helper keeps all complexity in one place by doing the following things:\n * - Running the callback in injection context\n * - Not tracking the callback, as it creates a new signal.\n * - Reacting to control changes, allowing to swap control dynamically.\n *\n * @param options\n * @param makeSignal\n */\nexport function extractControlPropToSignal<T, R = T>(\n  options: CompatFieldNodeOptions,\n  makeSignal: (c: AbstractControl<unknown, T>, destroy$: Observable<void>) => Signal<R>,\n): Signal<R> {\n  const injector = getInjectorFromOptions(options);\n\n  // Creates a subject that could be used in takeUntil.\n  const createDestroySubject = makeCreateDestroySubject();\n\n  const signalOfControlSignal = linkedSignal({\n    source: options.control,\n    computation: (control) => {\n      return untracked(() => {\n        return runInInjectionContext(injector, () => makeSignal(control, createDestroySubject()));\n      });\n    },\n  });\n\n  // We have to have computed, because we need to react to both:\n  // linked signal changes as well as the inner signal changes.\n  return computed(() => signalOfControlSignal()());\n}\n\n/**\n * A helper function, simplifying getting reactive control properties after status changes.\n *\n * Used to extract errors and statuses such as valid, pending.\n *\n * @param options\n * @param getValue\n */\nexport const getControlStatusSignal = <T>(\n  options: CompatFieldNodeOptions,\n  getValue: (c: AbstractControl<unknown>) => T,\n) => {\n  return extractControlPropToSignal<unknown, T>(options, (c, destroy$) =>\n    toSignal(\n      c.statusChanges.pipe(\n        map(() => getValue(c)),\n        takeUntil(destroy$),\n      ),\n      {\n        initialValue: getValue(c),\n      },\n    ),\n  );\n};\n\n/**\n * A helper function, simplifying converting convert events to signals.\n *\n * Used to get dirty and touched signals from control.\n *\n *  @param options\n * @param getValue A function which takes control and returns required value.\n */\nexport const getControlEventsSignal = <T>(\n  options: CompatFieldNodeOptions,\n  getValue: (c: AbstractControl) => T,\n) => {\n  return extractControlPropToSignal<unknown, T>(options, (c, destroy$) =>\n    toSignal(\n      c.events.pipe(\n        map(() => {\n          return getValue(c);\n        }),\n        takeUntil(destroy$),\n      ),\n      {\n        initialValue: getValue(c),\n      },\n    ),\n  );\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, Signal} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\nimport {FieldNodeState} from '../../src/field/state';\nimport {CompatFieldNode, getControlEventsSignal, getControlStatusSignal} from './compat_field_node';\nimport {CompatFieldNodeOptions} from './compat_structure';\n\n/**\n * A FieldNodeState class wrapping a FormControl and proxying it's state.\n */\nexport class CompatNodeState extends FieldNodeState {\n  override readonly touched: Signal<boolean>;\n  override readonly dirty: Signal<boolean>;\n  override readonly disabled: Signal<boolean>;\n  private readonly control: Signal<AbstractControl>;\n\n  constructor(\n    readonly compatNode: CompatFieldNode,\n    options: CompatFieldNodeOptions,\n  ) {\n    super(compatNode);\n    this.control = options.control;\n    this.touched = getControlEventsSignal(options, (c) => c.touched);\n    this.dirty = getControlEventsSignal(options, (c) => c.dirty);\n    const controlDisabled = getControlStatusSignal(options, (c) => c.disabled);\n\n    this.disabled = computed(() => {\n      return controlDisabled() || this.disabledReasons().length > 0;\n    });\n  }\n\n  override markAsDirty() {\n    this.control().markAsDirty();\n  }\n\n  override markAsTouched() {\n    this.control().markAsTouched();\n  }\n\n  override markAsPristine() {\n    this.control().markAsPristine();\n  }\n\n  override markAsUntouched() {\n    this.control().markAsUntouched();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  computed,\n  Signal,\n  signal,\n  WritableSignal,\n  ɵRuntimeError as RuntimeError,\n} from '@angular/core';\nimport {RuntimeErrorCode} from '../../src/errors';\nimport {FormFieldManager} from '../../src/field/manager';\nimport {FieldNode, ParentFieldNode} from '../../src/field/node';\nimport {\n  ChildFieldNodeOptions,\n  FieldNodeOptions,\n  FieldNodeStructure,\n  RootFieldNodeOptions,\n} from '../../src/field/structure';\n\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {AbstractControl} from '@angular/forms';\nimport {map, takeUntil} from 'rxjs/operators';\nimport {extractControlPropToSignal} from './compat_field_node';\n\n/**\n * Child Field Node options also exposing control property.\n */\nexport interface CompatChildFieldNodeOptions extends ChildFieldNodeOptions {\n  control: Signal<AbstractControl>;\n}\n\n/**\n * Root Field Node options also exposing control property.\n */\nexport interface CompatRootFieldNodeOptions extends RootFieldNodeOptions {\n  control: Signal<AbstractControl>;\n}\n\n/**\n * Field Node options also exposing control property.\n */\nexport type CompatFieldNodeOptions = CompatRootFieldNodeOptions | CompatChildFieldNodeOptions;\n\n/**\n * A helper function allowing to get parent if it exists.\n */\nfunction getParentFromOptions(options: FieldNodeOptions) {\n  if (options.kind === 'root') {\n    return undefined;\n  }\n\n  return options.parent;\n}\n\n/**\n * A helper function allowing to get fieldManager regardless of the option type.\n */\nfunction getFieldManagerFromOptions(options: FieldNodeOptions) {\n  if (options.kind === 'root') {\n    return options.fieldManager;\n  }\n\n  return options.parent.structure.root.structure.fieldManager;\n}\n\n/**\n * A helper function that takes CompatFieldNodeOptions, and produce a writable signal synced to the\n * value of contained AbstractControl.\n *\n * This uses toSignal, which requires an injector.\n *\n * @param options\n */\nfunction getControlValueSignal<T>(options: CompatFieldNodeOptions) {\n  const value = extractControlPropToSignal<T>(options, (control, destroy$) => {\n    return toSignal(\n      control.valueChanges.pipe(\n        map(() => control.getRawValue()),\n        takeUntil(destroy$),\n      ),\n      {\n        initialValue: control.getRawValue(),\n      },\n    );\n  }) as WritableSignal<T>;\n\n  value.set = (value: T) => {\n    options.control().setValue(value);\n  };\n\n  value.update = (fn: (current: T) => T) => {\n    value.set(fn(value()));\n  };\n\n  return value;\n}\n\n/**\n * Compat version of FieldNodeStructure,\n * - It has no children\n * - It wraps FormControl and proxies its value.\n */\nexport class CompatStructure extends FieldNodeStructure {\n  override value: WritableSignal<unknown>;\n  override keyInParent: Signal<string>;\n  override root: FieldNode;\n  override pathKeys: Signal<readonly string[]>;\n  override readonly children = signal([]);\n  override readonly childrenMap = computed(() => undefined);\n  override readonly parent: ParentFieldNode | undefined;\n  override readonly fieldManager: FormFieldManager;\n  override readonly isOrphaned: Signal<boolean>;\n\n  constructor(node: FieldNode, options: CompatFieldNodeOptions) {\n    super(options.logic, node, () => {\n      throw new RuntimeError(\n        RuntimeErrorCode.COMPAT_NO_CHILDREN,\n        ngDevMode && `Compat nodes don't have children.`,\n      );\n    });\n    this.value = getControlValueSignal(options);\n    this.parent = getParentFromOptions(options);\n    this.root = this.parent?.structure.root ?? node;\n    this.fieldManager = getFieldManagerFromOptions(options);\n\n    const identityInParent = options.kind === 'child' ? options.identityInParent : undefined;\n    const initialKeyInParent = options.kind === 'child' ? options.initialKeyInParent : undefined;\n\n    const signals = this.createKeyOrOrphanSignals(\n      options.kind,\n      identityInParent,\n      initialKeyInParent,\n    );\n    this.keyInParent = signals.keyInParent;\n    this.isOrphaned = signals.isOrphaned;\n\n    this.pathKeys = computed(() =>\n      this.parent ? [...this.parent.structure.pathKeys(), this.keyInParent()] : [],\n    );\n  }\n\n  override getChild(): FieldNode | undefined {\n    return undefined;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, Signal} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\nimport {ValidationError} from '../../src/api/rules';\nimport {calculateValidationSelfStatus, ValidationState} from '../../src/field/validation';\nimport {\n  extractNestedReactiveErrors,\n  type CompatValidationError,\n} from '../../src/compat/validation_errors';\nimport {CompatFieldNode, getControlStatusSignal} from './compat_field_node';\nimport {CompatFieldNodeOptions} from './compat_structure';\n\n// Readonly signal containing an empty array, used for optimization.\nconst EMPTY_ARRAY_SIGNAL = computed(() => []);\n\n/**\n * Compat version of a validation state that wraps a FormControl, and proxies it's validation state.\n */\nexport class CompatValidationState implements ValidationState {\n  readonly syncValid: Signal<boolean>;\n  /**\n   * All validation errors for this field.\n   */\n  readonly errors: Signal<CompatValidationError[]>;\n  readonly pending: Signal<boolean>;\n  readonly invalid: Signal<boolean>;\n  readonly valid: Signal<boolean>;\n\n  readonly parseErrors: Signal<ValidationError.WithFormField[]> = computed(() => []);\n\n  constructor(\n    private readonly node: CompatFieldNode,\n    options: CompatFieldNodeOptions,\n  ) {\n    this.syncValid = getControlStatusSignal(options, (c: AbstractControl) => c.status === 'VALID');\n    this.errors = getControlStatusSignal(options, extractNestedReactiveErrors);\n    this.pending = getControlStatusSignal(options, (c) => c.pending);\n\n    this.valid = getControlStatusSignal(options, (c) => {\n      return c.valid;\n    });\n\n    this.invalid = getControlStatusSignal(options, (c) => {\n      return c.invalid;\n    });\n  }\n\n  asyncErrors: Signal<(ValidationError.WithFieldTree | 'pending')[]> = EMPTY_ARRAY_SIGNAL;\n  errorSummary: Signal<ValidationError.WithFieldTree[]> = EMPTY_ARRAY_SIGNAL;\n\n  // Those are irrelevant for compat mode, as it has no children\n  rawSyncTreeErrors = EMPTY_ARRAY_SIGNAL;\n  syncErrors = EMPTY_ARRAY_SIGNAL;\n  rawAsyncErrors = EMPTY_ARRAY_SIGNAL;\n\n  // Compat fields can't have validation rules applied to them; however, there are other\n  // features that depend on this property, such as `markAsTouched()`.\n  readonly shouldSkipValidation = computed(\n    () => this.node.hidden() || this.node.disabled() || this.node.readonly(),\n  );\n\n  /**\n   * Computes status based on whether the field is valid/invalid/pending.\n   */\n  readonly status: Signal<'valid' | 'invalid' | 'unknown'> = computed(() => {\n    return calculateValidationSelfStatus(this);\n  });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, Signal, WritableSignal} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\nimport {BasicFieldAdapter, FieldAdapter} from '../../src/field/field_adapter';\nimport {FormFieldManager} from '../../src/field/manager';\nimport {FieldNode} from '../../src/field/node';\nimport {FieldNodeState} from '../../src/field/state';\nimport {\n  ChildFieldNodeOptions,\n  FieldNodeOptions,\n  FieldNodeStructure,\n} from '../../src/field/structure';\nimport {ValidationState} from '../../src/field/validation';\nimport {FieldPathNode} from '../../src/schema/path_node';\nimport {CompatFieldNode} from './compat_field_node';\nimport {CompatNodeState} from './compat_node_state';\nimport {CompatChildFieldNodeOptions, CompatStructure} from './compat_structure';\nimport {CompatValidationState} from './compat_validation_state';\n\n/**\n * This is a tree-shakable Field adapter that can create a compat node\n * that proxies FormControl state and value to a field.\n */\nexport class CompatFieldAdapter implements FieldAdapter {\n  readonly basicAdapter = new BasicFieldAdapter();\n\n  /**\n   * Creates a regular or compat root node state based on whether the control is present.\n   * @param fieldManager\n   * @param value\n   * @param pathNode\n   * @param adapter\n   */\n  newRoot<TModel>(\n    fieldManager: FormFieldManager,\n    value: WritableSignal<TModel>,\n    pathNode: FieldPathNode,\n    adapter: FieldAdapter,\n  ): FieldNode {\n    if (value() instanceof AbstractControl) {\n      return createCompatNode({\n        kind: 'root',\n        fieldManager,\n        value,\n        pathNode,\n        logic: pathNode.builder.build(),\n        fieldAdapter: adapter,\n      });\n    }\n\n    return this.basicAdapter.newRoot<TModel>(fieldManager, value, pathNode, adapter);\n  }\n\n  /**\n   * Creates a regular or compat node state based on whether the control is present.\n   * @param node\n   * @param options\n   */\n  createNodeState(node: CompatFieldNode, options: CompatChildFieldNodeOptions): FieldNodeState {\n    if (!options.control) {\n      return this.basicAdapter.createNodeState(node);\n    }\n    return new CompatNodeState(node, options);\n  }\n\n  /**\n   * Creates a regular or compat structure based on whether the control is present.\n   * @param node\n   * @param options\n   */\n  createStructure(node: CompatFieldNode, options: CompatChildFieldNodeOptions): FieldNodeStructure {\n    if (!options.control) {\n      return this.basicAdapter.createStructure(node, options);\n    }\n    return new CompatStructure(node, options);\n  }\n\n  /**\n   * Creates a regular or compat validation state based on whether the control is present.\n   * @param node\n   * @param options\n   */\n  createValidationState(\n    node: CompatFieldNode,\n    options: CompatChildFieldNodeOptions,\n  ): ValidationState {\n    if (!options.control) {\n      return this.basicAdapter.createValidationState(node);\n    }\n    return new CompatValidationState(node, options);\n  }\n\n  /**\n   * Creates a regular or compat node based on whether the control is present.\n   * @param options\n   */\n  newChild(options: ChildFieldNodeOptions): FieldNode {\n    const value = options.parent.value()[options.initialKeyInParent];\n\n    if (value instanceof AbstractControl) {\n      return createCompatNode(options);\n    }\n\n    return new FieldNode(options);\n  }\n}\n\n/**\n * Creates a CompatFieldNode from options.\n * @param options\n */\nexport function createCompatNode(options: FieldNodeOptions) {\n  const control = (\n    options.kind === 'root'\n      ? options.value\n      : computed(() => {\n          return options.parent.value()[options.initialKeyInParent];\n        })\n  ) as Signal<AbstractControl>;\n\n  return new CompatFieldNode({\n    ...options,\n    control,\n  });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {WritableSignal} from '@angular/core';\nimport {form, FormOptions} from '../../../public_api';\nimport {FieldTree, PathKind, SchemaOrSchemaFn} from '../../../src/api/types';\nimport {normalizeFormArgs} from '../../../src/util/normalize_form_args';\nimport {CompatFieldAdapter} from '../compat_field_adapter';\n\n/**\n * Options that may be specified when creating a compat form.\n *\n * @category interop\n * @publicApi 22.0\n */\nexport type CompatFormOptions<TModel> = Omit<FormOptions<TModel>, 'adapter'>;\n\n/**\n * Creates a compatibility form wrapped around the given model data.\n *\n * `compatForm` is a version of the `form` function that is designed for backwards\n * compatibility with Reactive forms by accepting Reactive controls as a part of the data.\n *\n * @example\n * ```ts\n * const lastName = new FormControl('lastName');\n *\n * const nameModel = signal({\n *    first: '',\n *    last: lastName\n * });\n *\n * const nameForm = compatForm(nameModel, (name) => {\n *   required(name.first);\n * });\n *\n * nameForm.last().value(); // lastName, not FormControl\n * ```\n *\n * @param model A writable signal that contains the model data for the form. The resulting field\n * structure will match the shape of the model and any changes to the form data will be written to\n * the model.\n *\n * @category interop\n * @publicApi 22.0\n */\nexport function compatForm<TModel>(model: WritableSignal<TModel>): FieldTree<TModel>;\n\n/**\n * Creates a compatibility form wrapped around the given model data.\n *\n * `compatForm` is a version of the `form` function that is designed for backwards\n * compatibility with Reactive forms by accepting Reactive controls as a part of the data.\n *\n * @example\n * ```ts\n * const lastName = new FormControl('lastName');\n *\n * const nameModel = signal({\n *    first: '',\n *    last: lastName\n * });\n *\n * const nameForm = compatForm(nameModel, (name) => {\n *   required(name.first);\n * });\n *\n * nameForm.last().value(); // lastName, not FormControl\n *\n * @param model A writable signal that contains the model data for the form. The resulting field\n * structure will match the shape of the model and any changes to the form data will be written to\n * the model.\n * @param schemaOrOptions The second argument can be either\n *   1. A schema or a function used to specify logic for the form (e.g. validation, disabled fields, etc.).\n *      When passing a schema, the form options can be passed as a third argument if needed.\n *   2. The form options (excluding adapter, since it's provided).\n *\n * @category interop\n * @publicApi 22.0\n */\nexport function compatForm<TModel>(\n  model: WritableSignal<TModel>,\n  schemaOrOptions: SchemaOrSchemaFn<TModel> | CompatFormOptions<TModel>,\n): FieldTree<TModel>;\n\n/**\n * Creates a compatibility form wrapped around the given model data.\n *\n * `compatForm` is a version of the `form` function that is designed for backwards\n * compatibility with Reactive forms by accepting Reactive controls as a part of the data.\n *\n * @example\n * ```ts\n * const lastName = new FormControl('lastName');\n *\n * const nameModel = signal({\n *    first: '',\n *    last: lastName\n * });\n *\n * const nameForm = compatForm(nameModel, (name) => {\n *   required(name.first);\n * });\n *\n * nameForm.last().value(); // lastName, not FormControl\n *\n * @param model A writable signal that contains the model data for the form. The resulting field\n * structure will match the shape of the model and any changes to the form data will be written to\n * the model.\n * @param schemaOrOptions A schema or a function used to specify logic for the form (e.g. validation, disabled fields, etc.).\n *      When passing a schema, the form options can be passed as a third argument if needed.\n * @param options The form options (excluding adapter, since it's provided).\n *\n * @category interop\n * @publicApi 22.0\n */\nexport function compatForm<TModel>(\n  model: WritableSignal<TModel>,\n  schema: SchemaOrSchemaFn<TModel>,\n  options: CompatFormOptions<TModel>,\n): FieldTree<TModel>;\n\nexport function compatForm<TModel>(...args: any[]): FieldTree<TModel> {\n  const [model, maybeSchema, maybeOptions] = normalizeFormArgs<TModel>(args);\n\n  const options = {...maybeOptions, adapter: new CompatFieldAdapter()};\n  const schema = maybeSchema || ((() => {}) as SchemaOrSchemaFn<TModel, PathKind>);\n  return form(model, schema, options);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {untracked} from '@angular/core';\nimport {AbstractControl} from '@angular/forms';\nimport {FieldState, FieldTree} from '../../../src/api/types';\nimport {isArray, isObject} from '../../../src/util/type_guards';\n\n/**\n * Type utility that recursively unwraps the value type of a `FieldTree`.\n *\n * If the value type contains `AbstractControl` instances (common in compat mode),\n * they are replaced with their underlying value types.\n */\nexport type RawValue<T> =\n  T extends AbstractControl<infer TValue, any>\n    ? TValue\n    : T extends (infer U)[]\n      ? RawValue<U>[]\n      : T extends object\n        ? {[K in keyof T]: RawValue<T[K]>}\n        : T;\n\n/**\n * A type that recursively makes all properties of T optional.\n * Used for the result of `extractValue` when filtering is applied.\n * @publicApi 22.0\n */\nexport type DeepPartial<T> =\n  | (T extends (infer U)[]\n      ? DeepPartial<U>[]\n      : T extends object\n        ? {[K in keyof T]?: DeepPartial<T[K]>}\n        : T)\n  | undefined;\n\n/**\n * Criteria that determine whether a field should be included in the extraction.\n *\n * Each property is optional; when provided, the field must match the specified state.\n *\n * @category interop\n * @publicApi 22.0\n */\nexport interface ExtractFilter {\n  readonly dirty?: boolean;\n  readonly touched?: boolean;\n  readonly enabled?: boolean;\n}\n\n/**\n * Utility to unwrap a {@link FieldTree} into its underlying raw value.\n *\n * This function is recursive, so if the field tree represents an object or an array,\n * the result will be an object or an array of the raw values of its children.\n *\n * @param field The field tree to extract the value from.\n * @returns The raw value of the field tree.\n *\n * @category interop\n * @publicApi 22.0\n */\nexport function extractValue<T>(field: FieldTree<T>): RawValue<T>;\n/**\n * Utility to unwrap a {@link FieldTree} into its underlying raw value.\n *\n * This function is recursive, so if the field tree represents an object or an array,\n * the result will be an object or an array of the raw values of its children.\n *\n * @param field The field tree to extract the value from.\n * @param filter Criteria to include only fields matching certain state (dirty, touched, enabled).\n * @returns A partial value containing only the fields matching the filter, or `undefined` if none match.\n *\n * @category interop\n * @publicApi 22.0\n */\nexport function extractValue<T>(\n  field: FieldTree<T>,\n  filter: ExtractFilter,\n): DeepPartial<RawValue<T>>;\nexport function extractValue<T>(\n  field: FieldTree<T>,\n  filter?: ExtractFilter,\n): RawValue<T> | DeepPartial<RawValue<T>> {\n  return untracked(() => visitFieldTree(field, filter)) as RawValue<T> | DeepPartial<RawValue<T>>;\n}\n\nfunction visitFieldTree(\n  field: FieldTree<unknown>,\n  filter?: ExtractFilter,\n): RawValue<unknown> | DeepPartial<RawValue<unknown>> {\n  const state = field();\n  const value = state.value();\n\n  const matchingChildren = extractChildren(field, value, filter);\n\n  if (matchingChildren !== undefined || isContainerNode(field, value)) {\n    return matchingChildren;\n  }\n\n  if (matchesFilter(state, filter)) {\n    return value;\n  }\n\n  return undefined;\n}\n\nfunction isContainerNode(field: FieldTree<unknown>, value: unknown): boolean {\n  return (\n    (isArray(value) || isObject(value)) &&\n    Object.keys(value).some((k) => isFieldTreeNode(field[k as keyof FieldTree<unknown>]))\n  );\n}\n\nfunction extractChildren(\n  field: FieldTree<unknown>,\n  value: unknown,\n  filter?: ExtractFilter,\n): unknown {\n  if (isArray(value)) {\n    const record = field as unknown as Record<number, FieldTree<unknown>>;\n    const arrayValue = value as readonly FieldTree<unknown>[];\n    const result: unknown[] = new Array(arrayValue.length);\n    let hasMatch = false;\n\n    for (let i = 0; i < arrayValue.length; i++) {\n      const child = record[i];\n\n      const childResult = visitFieldTree(child, filter);\n      if (childResult !== undefined) {\n        hasMatch = true;\n      }\n      result[i] = childResult;\n    }\n\n    return hasMatch ? result : undefined;\n  }\n\n  if (isObject(value)) {\n    const record = field as unknown as Record<string, unknown>;\n    const objectValue = value as Record<string, unknown>;\n    const entries = Object.keys(objectValue)\n      .map<[string, FieldTree<unknown>] | undefined>((key) => {\n        const child = record[key];\n        return isFieldTreeNode(child) ? [key, child] : undefined;\n      })\n      .filter(isKeyedChild)\n      .map(([key, child]) => {\n        const childResult = visitFieldTree(child, filter);\n        return childResult !== undefined ? ([key, childResult] as [string, unknown]) : undefined;\n      })\n      .filter((v) => v !== undefined);\n\n    return entries.length ? Object.fromEntries(entries) : undefined;\n  }\n\n  return undefined;\n}\n\nfunction isFieldTreeNode(value: unknown): value is FieldTree<unknown> {\n  return typeof value === 'function';\n}\n\nfunction isKeyedChild(\n  value: [string, FieldTree<unknown>] | undefined,\n): value is [string, FieldTree<unknown>] {\n  return value !== undefined;\n}\n\nfunction matchesFilter(state: FieldState<unknown>, filter?: ExtractFilter): boolean {\n  if (!filter) {\n    return true;\n  }\n\n  if (filter.dirty !== undefined && state.dirty() !== filter.dirty) {\n    return false;\n  }\n\n  if (filter.touched !== undefined && state.touched() !== filter.touched) {\n    return false;\n  }\n\n  if (filter.enabled !== undefined) {\n    const enabled = !state.disabled();\n    if (enabled !== filter.enabled) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport type {SignalFormsConfig} from '../../../src/api/di';\n\n/**\n * A value that can be used for `SignalFormsConfig.classes` to automatically add\n * the `ng-*` status classes from reactive forms.\n *\n * @publicApi 22.0\n */\nexport const NG_STATUS_CLASSES: SignalFormsConfig['classes'] = {\n  'ng-touched': ({state}) => state().touched(),\n  'ng-untouched': ({state}) => !state().touched(),\n  'ng-dirty': ({state}) => state().dirty(),\n  'ng-pristine': ({state}) => !state().dirty(),\n  'ng-valid': ({state}) => state().valid(),\n  'ng-invalid': ({state}) => state().invalid(),\n  'ng-pending': ({state}) => state().pending(),\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  effect,\n  EventEmitter,\n  inject,\n  Injector,\n  ɵRuntimeError as RuntimeError,\n  signal,\n  untracked,\n  WritableSignal,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlEvent,\n  FormArray,\n  FormControlState,\n  FormControlStatus,\n  FormGroup,\n  FormResetEvent,\n  PristineChangeEvent,\n  StatusChangeEvent,\n  TouchedChangeEvent,\n  ValueChangeEvent,\n} from '@angular/forms';\n\nimport {FormOptions} from '../../../src/api/structure';\nimport {FieldState, FieldTree, SchemaFn} from '../../../src/api/types';\nimport {signalErrorsToValidationErrors} from '../../../src/compat/validation_errors';\nimport {RuntimeErrorCode} from '../../../src/errors';\nimport {FieldNode} from '../../../src/field/node';\nimport {normalizeFormArgs} from '../../../src/util/normalize_form_args';\nimport {compatForm} from '../api/compat_form';\n\n/** Options used to update the control value. */\nexport type ValueUpdateOptions = {\n  onlySelf?: boolean;\n  emitEvent?: boolean;\n  emitModelToViewChange?: boolean;\n  emitViewToModelChange?: boolean;\n};\n\n/**\n * A `FormControl` that is backed by signal forms rules.\n *\n * This class provides a bridge between Signal Forms and Reactive Forms, allowing\n * signal-based controls to be used within a standard `FormGroup` or `FormArray`.\n *\n * A control could be created using signal forms, and integrated with an existing FormGroup\n * propagating all the statuses and validity.\n *\n * @usageNotes\n *\n * ### Basic usage\n *\n * ```angular-ts\n * const form = new FormGroup({\n *   // You can create SignalFormControl with signal form rules, and add it to a FormGroup.\n *   name: new SignalFormControl('Alice', p => {\n *     required(p);\n *   }),\n *   age: new FormControl(25),\n * });\n * ```\n * In the template you can get the underlying `fieldTree` and bind it:\n *\n * ```angular-html\n *  <form [formGroup]=\"form\">\n *    <input [formField]=\"nameControl.fieldTree\" />\n *    <input formControlName=\"age\" />\n *  </form>\n * ```\n *\n * @publicApi 22.0\n */\nexport class SignalFormControl<T> extends AbstractControl {\n  /** Source FieldTree. */\n  public readonly fieldTree: FieldTree<T>;\n  /** The raw signal driving the control value. */\n  public readonly sourceValue: WritableSignal<T>;\n\n  private readonly fieldState: FieldState<T>;\n  private readonly initialValue: T;\n  private pendingParentNotifications = 0;\n  private readonly onChangeCallbacks: Array<(value?: any, emitModelEvent?: boolean) => void> = [];\n  private readonly onDisabledChangeCallbacks: Array<(isDisabled: boolean) => void> = [];\n  override readonly valueChanges = new EventEmitter<T>();\n  override readonly statusChanges = new EventEmitter<FormControlStatus>();\n\n  constructor(value: T, schemaOrOptions?: SchemaFn<T> | FormOptions<T>, options?: FormOptions<T>) {\n    super(null, null);\n\n    const [model, schema, opts] = normalizeFormArgs<T>([signal(value), schemaOrOptions, options]);\n    this.sourceValue = model;\n    this.initialValue = value;\n    const injector = opts?.injector ?? inject(Injector);\n\n    const rawTree = schema\n      ? compatForm(this.sourceValue, schema, {injector})\n      : compatForm(this.sourceValue, {injector});\n\n    this.fieldTree = wrapFieldTreeForSyncUpdates(rawTree, () =>\n      this.parent?.updateValueAndValidity({sourceControl: this} as any),\n    );\n    this.fieldState = this.fieldTree();\n\n    this.defineCompatProperties();\n\n    // Value changes effect\n    effect(\n      () => {\n        const value = this.sourceValue();\n        untracked(() => {\n          this.notifyParentUnlessPending();\n          this.valueChanges.emit(value);\n          this.emitControlEvent(new ValueChangeEvent(value, this));\n        });\n      },\n      {injector},\n    );\n\n    // Status changes effect\n    effect(\n      () => {\n        const status = this.status;\n        untracked(() => {\n          this.statusChanges.emit(status);\n        });\n        this.emitControlEvent(new StatusChangeEvent(status, this));\n      },\n      {injector},\n    );\n\n    // Disabled changes effect\n    effect(\n      () => {\n        const isDisabled = this.disabled;\n        untracked(() => {\n          for (const fn of this.onDisabledChangeCallbacks) {\n            fn(isDisabled);\n          }\n        });\n      },\n      {injector},\n    );\n\n    // Touched changes effect\n    effect(\n      () => {\n        const isTouched = this.fieldState.touched();\n        this.emitControlEvent(new TouchedChangeEvent(isTouched, this));\n        const parent = this.parent;\n        if (!parent) {\n          return;\n        }\n        if (!isTouched) {\n          parent.markAsUntouched();\n        } else {\n          parent.markAsTouched();\n        }\n      },\n      {injector},\n    );\n\n    // Dirty changes effect\n    effect(\n      () => {\n        const isDirty = this.fieldState.dirty();\n        this.emitControlEvent(new PristineChangeEvent(!isDirty, this));\n        const parent = this.parent;\n        if (!parent) {\n          return;\n        }\n        if (isDirty) {\n          parent.markAsDirty();\n        } else {\n          parent.markAsPristine();\n        }\n      },\n      {injector},\n    );\n  }\n\n  /**\n   * Defines properties using closure-safe names to prevent issues with property renaming optimizations.\n   *\n   * AbstractControl have `value` and `errors` as readonly prop, which doesn't allow getters.\n   **/\n  private defineCompatProperties(): void {\n    const valueProp = getClosureSafeProperty({value: getClosureSafeProperty});\n    Object.defineProperty(this, valueProp, {\n      get: () => this.sourceValue(),\n    });\n    const errorsProp = getClosureSafeProperty({errors: getClosureSafeProperty});\n    Object.defineProperty(this, errorsProp, {\n      get: () => signalErrorsToValidationErrors(this.fieldState.errors()),\n    });\n  }\n\n  private emitControlEvent(event: ControlEvent): void {\n    untracked(() => {\n      (this as any)._events.next(event);\n    });\n  }\n\n  override setValue(value: any, options?: ValueUpdateOptions): void {\n    this.updateValue(value, options);\n  }\n\n  override patchValue(value: any, options?: ValueUpdateOptions): void {\n    this.updateValue(value, options);\n  }\n\n  private updateValue(value: any, options?: ValueUpdateOptions): void {\n    const parent = this.scheduleParentUpdate(options);\n    this.sourceValue.set(value);\n    if (parent) {\n      this.updateParentValueAndValidity(parent, options?.emitEvent);\n    }\n    if (options?.emitModelToViewChange !== false) {\n      for (const fn of this.onChangeCallbacks) {\n        fn(value, true);\n      }\n    }\n  }\n\n  registerOnChange(fn: (value?: any, emitModelEvent?: boolean) => void): void {\n    this.onChangeCallbacks.push(fn);\n  }\n\n  /** @internal */\n  _unregisterOnChange(fn: (value?: any, emitModelEvent?: boolean) => void): void {\n    removeListItem(this.onChangeCallbacks, fn);\n  }\n\n  registerOnDisabledChange(fn: (isDisabled: boolean) => void): void {\n    this.onDisabledChangeCallbacks.push(fn);\n  }\n\n  /** @internal */\n  _unregisterOnDisabledChange(fn: (isDisabled: boolean) => void): void {\n    removeListItem(this.onDisabledChangeCallbacks, fn);\n  }\n\n  override getRawValue(): T {\n    return this.value;\n  }\n\n  override reset(value?: T | FormControlState<T>, options?: ValueUpdateOptions): void {\n    if (isFormControlState(value)) {\n      throw unsupportedDisableEnableError();\n    }\n\n    const resetValue = value ?? this.initialValue;\n    this.fieldState.reset(resetValue);\n\n    if (value !== undefined) {\n      this.updateValue(value, options);\n    } else if (!options?.onlySelf) {\n      const parent = this.parent;\n      if (parent) {\n        this.updateParentValueAndValidity(parent, options?.emitEvent);\n      }\n    }\n\n    if (options?.emitEvent !== false) {\n      this.emitControlEvent(new FormResetEvent(this));\n    }\n  }\n\n  private scheduleParentUpdate(options?: ValueUpdateOptions): FormGroup | FormArray | null {\n    const parent = options?.onlySelf ? null : this.parent;\n    if (options?.onlySelf || parent) {\n      this.pendingParentNotifications++;\n    }\n    return parent;\n  }\n\n  private notifyParentUnlessPending(): void {\n    if (this.pendingParentNotifications > 0) {\n      this.pendingParentNotifications--;\n      return;\n    }\n    const parent = this.parent;\n    if (parent) {\n      this.updateParentValueAndValidity(parent);\n    }\n  }\n\n  private updateParentValueAndValidity(parent: AbstractControl, emitEvent?: boolean): void {\n    parent.updateValueAndValidity({emitEvent, sourceControl: this} as any);\n  }\n\n  private propagateToParent(\n    opts: {onlySelf?: boolean} | undefined,\n    fn: (parent: AbstractControl) => void,\n  ) {\n    const parent = this.parent;\n    if (parent && !opts?.onlySelf) {\n      fn(parent);\n    }\n  }\n\n  override get status(): FormControlStatus {\n    if (this.fieldState.disabled()) {\n      return 'DISABLED';\n    }\n    if (this.fieldState.valid()) {\n      return 'VALID';\n    }\n    if (this.fieldState.invalid()) {\n      return 'INVALID';\n    }\n    return 'PENDING';\n  }\n\n  override get valid(): boolean {\n    return this.fieldState.valid();\n  }\n\n  override get invalid(): boolean {\n    return this.fieldState.invalid();\n  }\n\n  override get pending(): boolean {\n    return this.fieldState.pending();\n  }\n\n  override get disabled(): boolean {\n    return this.fieldState.disabled();\n  }\n\n  override get enabled(): boolean {\n    return !this.disabled;\n  }\n\n  override get dirty(): boolean {\n    return this.fieldState.dirty();\n  }\n\n  override set dirty(_: boolean) {\n    throw unsupportedFeatureError(\n      ngDevMode && 'Setting dirty directly is not supported. Instead use markAsDirty().',\n    );\n  }\n\n  override get pristine(): boolean {\n    return !this.dirty;\n  }\n\n  override set pristine(_: boolean) {\n    throw unsupportedFeatureError(\n      ngDevMode && 'Setting pristine directly is not supported. Instead use reset().',\n    );\n  }\n\n  override get touched(): boolean {\n    return this.fieldState.touched();\n  }\n\n  override set touched(_: boolean) {\n    throw unsupportedFeatureError(\n      ngDevMode &&\n        'Setting touched directly is not supported. Instead use markAsTouched() or reset().',\n    );\n  }\n\n  override get untouched(): boolean {\n    return !this.touched;\n  }\n\n  override set untouched(_: boolean) {\n    throw unsupportedFeatureError(\n      ngDevMode && 'Setting untouched directly is not supported. Instead use reset().',\n    );\n  }\n\n  override markAsTouched(opts?: {onlySelf?: boolean}): void {\n    this.fieldState.markAsTouched();\n    this.propagateToParent(opts, (parent) => parent.markAsTouched(opts));\n  }\n\n  override markAsDirty(opts?: {onlySelf?: boolean}): void {\n    this.fieldState.markAsDirty();\n    this.propagateToParent(opts, (parent) => parent.markAsDirty(opts));\n  }\n\n  override markAsPristine(opts?: {onlySelf?: boolean}): void {\n    (this.fieldState as FieldNode).markAsPristine();\n    this.propagateToParent(opts, (parent) => parent.markAsPristine(opts));\n  }\n\n  override markAsUntouched(opts?: {onlySelf?: boolean}): void {\n    (this.fieldState as FieldNode).markAsUntouched();\n    this.propagateToParent(opts, (parent) => parent.markAsUntouched(opts));\n  }\n\n  override updateValueAndValidity(_opts?: Object): void {}\n\n  /** @internal */\n  // @ts-ignore\n  override _updateValue(): void {}\n\n  /** @internal */\n  // @ts-ignore\n  override _forEachChild(_cb: (c: AbstractControl) => void): void {}\n\n  /** @internal */\n  // @ts-ignore\n  override _anyControls(_condition: (c: AbstractControl) => boolean): boolean {\n    return false;\n  }\n\n  /** @internal */\n  // @ts-ignore\n  override _allControlsDisabled(): boolean {\n    return this.disabled;\n  }\n\n  /** @internal */\n  // @ts-ignore\n  override _syncPendingControls(): boolean {\n    return false;\n  }\n\n  override disable(_opts?: {onlySelf?: boolean; emitEvent?: boolean}): void {\n    throw unsupportedDisableEnableError();\n  }\n\n  override enable(_opts?: {onlySelf?: boolean; emitEvent?: boolean}): void {\n    throw unsupportedDisableEnableError();\n  }\n\n  override setValidators(_validators: any): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override setAsyncValidators(_validators: any): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override addValidators(_validators: any): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override addAsyncValidators(_validators: any): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override removeValidators(_validators: any): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override removeAsyncValidators(_validators: any): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override clearValidators(): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override clearAsyncValidators(): void {\n    throw unsupportedValidatorsError();\n  }\n\n  override setErrors(_errors: any, _opts?: {emitEvent?: boolean}): void {\n    throw unsupportedFeatureError(\n      ngDevMode &&\n        'Imperatively setting errors is not supported in signal forms. Errors are derived from validation rules.',\n    );\n  }\n\n  override markAsPending(_opts?: {onlySelf?: boolean; emitEvent?: boolean}): void {\n    throw unsupportedFeatureError(\n      ngDevMode &&\n        'Imperatively marking as pending is not supported in signal forms. Pending state is derived from async validation status.',\n    );\n  }\n}\n\nclass CachingWeakMap<K extends object, V> {\n  private readonly map = new WeakMap<K, V>();\n\n  getOrCreate(key: K, create: () => V): V {\n    const cached = this.map.get(key);\n    if (cached) {\n      return cached;\n    }\n    const value = create();\n    this.map.set(key, value);\n    return value;\n  }\n}\n\n/**\n * A FieldTree proxy that patches setters to immediately react on value changes.\n * @param tree\n * @param onUpdate\n */\nfunction wrapFieldTreeForSyncUpdates<T>(tree: FieldTree<T>, onUpdate: () => void): FieldTree<T> {\n  const treeCache = new CachingWeakMap<FieldTree<unknown>, FieldTree<unknown>>();\n  const stateCache = new CachingWeakMap<FieldState<unknown>, FieldState<unknown>>();\n\n  // Takes a FieldState and wraps a value to instantly call onUpdate.\n  const wrapState = (state: FieldState<unknown>): FieldState<unknown> => {\n    const {value} = state;\n    const wrappedValue = Object.assign((...a: unknown[]) => (value as Function)(...a), {\n      set: (v: unknown) => {\n        value.set(v);\n        onUpdate();\n      },\n      update: (fn: (v: unknown) => unknown) => {\n        value.update(fn);\n        onUpdate();\n      },\n    }) as WritableSignal<unknown>;\n    return Object.create(state, {value: {get: () => wrappedValue}});\n  };\n  // Takes a FieldTree and wraps it's state's value to instantly call onUpdate.\n  const wrapTree = (t: FieldTree<unknown>): FieldTree<unknown> => {\n    return treeCache.getOrCreate(t, () => {\n      return new Proxy(t, {\n        // When getting a prop, wrap FieldTree if it's a function\n        get(target, prop, receiver) {\n          const val = Reflect.get(target, prop, receiver);\n          // Some of FieldTree children are not function, e.g. length.\n          if (typeof val === 'function' && typeof prop === 'string') {\n            return wrapTree(val);\n          }\n          return val;\n        },\n        // When calling the tree, wrap the returned state\n        apply(target, _, args) {\n          const state: FieldState<unknown> = (target as Function)(...args);\n          return stateCache.getOrCreate(state, () => wrapState(state));\n        },\n      }) as FieldTree<unknown>;\n    });\n  };\n\n  return wrapTree(tree) as FieldTree<T>;\n}\n\nfunction isFormControlState(formState: unknown): formState is FormControlState<unknown> {\n  return (\n    typeof formState === 'object' &&\n    formState !== null &&\n    Object.keys(formState).length === 2 &&\n    'value' in formState &&\n    'disabled' in formState\n  );\n}\n\nfunction unsupportedFeatureError(message: string | null): Error {\n  return new RuntimeError(RuntimeErrorCode.UNSUPPORTED_FEATURE, message ?? false);\n}\n\nfunction unsupportedDisableEnableError(): Error {\n  return unsupportedFeatureError(\n    ngDevMode &&\n      'Imperatively changing enabled/disabled status in form control is not supported in signal forms. Instead use a \"disabled\" rule to derive the disabled status from a signal.',\n  );\n}\n\nfunction unsupportedValidatorsError(): Error {\n  return unsupportedFeatureError(\n    ngDevMode &&\n      'Dynamically adding and removing validators is not supported in signal forms. Instead use the \"applyWhen\" rule to conditionally apply validators based on a signal.',\n  );\n}\n\nfunction removeListItem<T>(list: T[], el: T): void {\n  const index = list.indexOf(el);\n  if (index > -1) list.splice(index, 1);\n}\n\nfunction getClosureSafeProperty<T>(objWithPropertyToExtract: T): string {\n  for (let key in objWithPropertyToExtract) {\n    if (objWithPropertyToExtract[key] === (getClosureSafeProperty as any)) {\n      return key;\n    }\n  }\n  throw Error(\n    typeof ngDevMode === 'undefined' || ngDevMode\n      ? 'Could not find renamed property on target object.'\n      : '',\n  );\n}\n"],"names":["CompatFieldNode","FieldNode","options","control","constructor","makeCreateDestroySubject","destroy$","ReplaySubject","next","complete","extractControlPropToSignal","makeSignal","injector","getInjectorFromOptions","createDestroySubject","signalOfControlSignal","linkedSignal","ngDevMode","debugName","source","computation","untracked","runInInjectionContext","computed","getControlStatusSignal","getValue","c","toSignal","statusChanges","pipe","map","takeUntil","initialValue","getControlEventsSignal","events","CompatNodeState","FieldNodeState","compatNode","touched","dirty","disabled","controlDisabled","disabledReasons","length","markAsDirty","markAsTouched","markAsPristine","markAsUntouched","getParentFromOptions","kind","undefined","parent","getFieldManagerFromOptions","fieldManager","structure","root","getControlValueSignal","value","valueChanges","getRawValue","set","setValue","update","fn","CompatStructure","FieldNodeStructure","keyInParent","pathKeys","children","signal","childrenMap","isOrphaned","node","logic","RuntimeError","identityInParent","initialKeyInParent","signals","createKeyOrOrphanSignals","getChild","EMPTY_ARRAY_SIGNAL","CompatValidationState","syncValid","errors","pending","invalid","valid","parseErrors","status","extractNestedReactiveErrors","asyncErrors","errorSummary","rawSyncTreeErrors","syncErrors","rawAsyncErrors","shouldSkipValidation","hidden","readonly","calculateValidationSelfStatus","CompatFieldAdapter","basicAdapter","BasicFieldAdapter","newRoot","pathNode","adapter","AbstractControl","createCompatNode","builder","build","fieldAdapter","createNodeState","createStructure","createValidationState","newChild","compatForm","args","model","maybeSchema","maybeOptions","normalizeFormArgs","schema","form","extractValue","field","filter","visitFieldTree","state","matchingChildren","extractChildren","isContainerNode","matchesFilter","isArray","isObject","Object","keys","some","k","isFieldTreeNode","record","arrayValue","result","Array","hasMatch","i","child","childResult","objectValue","entries","key","isKeyedChild","v","fromEntries","enabled","NG_STATUS_CLASSES","ng-touched","ng-untouched","ng-dirty","ng-pristine","ng-valid","ng-invalid","ng-pending","SignalFormControl","fieldTree","sourceValue","fieldState","pendingParentNotifications","onChangeCallbacks","onDisabledChangeCallbacks","EventEmitter","schemaOrOptions","opts","inject","Injector","rawTree","wrapFieldTreeForSyncUpdates","updateValueAndValidity","sourceControl","defineCompatProperties","effect","notifyParentUnlessPending","emit","emitControlEvent","ValueChangeEvent","StatusChangeEvent","isDisabled","isTouched","TouchedChangeEvent","isDirty","PristineChangeEvent","valueProp","getClosureSafeProperty","defineProperty","get","errorsProp","signalErrorsToValidationErrors","event","_events","updateValue","patchValue","scheduleParentUpdate","updateParentValueAndValidity","emitEvent","emitModelToViewChange","registerOnChange","push","_unregisterOnChange","removeListItem","registerOnDisabledChange","_unregisterOnDisabledChange","reset","isFormControlState","unsupportedDisableEnableError","resetValue","onlySelf","FormResetEvent","propagateToParent","_","unsupportedFeatureError","pristine","untouched","_opts","_updateValue","_forEachChild","_cb","_anyControls","_condition","_allControlsDisabled","_syncPendingControls","disable","enable","setValidators","_validators","unsupportedValidatorsError","setAsyncValidators","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","clearValidators","clearAsyncValidators","setErrors","_errors","markAsPending","CachingWeakMap","WeakMap","getOrCreate","create","cached","tree","onUpdate","treeCache","stateCache","wrapState","wrappedValue","assign","a","wrapTree","t","Proxy","target","prop","receiver","val","Reflect","apply","formState","message","list","el","index","indexOf","splice","objWithPropertyToExtract","Error"],"mappings":";;;;;;;;;;;;;;;AAsBM,MAAOA,eAAgB,SAAQC,SAAS,CAAA;EAGhBC,OAAA;EAFnBC,OAAO;EAEhBC,WAAAA,CAA4BF,OAA+B,EAAA;IACzD,KAAK,CAACA,OAAO,CAAC;IADY,IAAA,CAAAA,OAAO,GAAPA,OAAO;AAEjC,IAAA,IAAI,CAACC,OAAO,GAAG,IAAI,CAACD,OAAO,CAACC,OAAO;AACrC,EAAA;AACD;AAOD,SAASE,wBAAwBA,GAAA;AAC/B,EAAA,IAAIC,QAAQ,GAAG,IAAIC,aAAa,CAAO,CAAC,CAAC;AACzC,EAAA,OAAO,MAAK;IACVD,QAAQ,CAACE,IAAI,EAAE;IACfF,QAAQ,CAACG,QAAQ,EAAE;AAEnB,IAAA,OAAQH,QAAQ,GAAG,IAAIC,aAAa,CAAO,CAAC,CAAC;EAC/C,CAAC;AACH;AAcM,SAAUG,0BAA0BA,CACxCR,OAA+B,EAC/BS,UAAqF,EAAA;AAErF,EAAA,MAAMC,QAAQ,GAAGC,sBAAsB,CAACX,OAAO,CAAC;AAGhD,EAAA,MAAMY,oBAAoB,GAAGT,wBAAwB,EAAE;EAEvD,MAAMU,qBAAqB,GAAGC,YAAY,CAAA;AAAA,IAAA,IAAAC,SAAA,GAAA;AAAAC,MAAAA,SAAA,EAAA;KAAA,GAAA,EAAA,CAAA;IACxCC,MAAM,EAAEjB,OAAO,CAACC,OAAO;IACvBiB,WAAW,EAAGjB,OAAO,IAAI;MACvB,OAAOkB,SAAS,CAAC,MAAK;AACpB,QAAA,OAAOC,qBAAqB,CAACV,QAAQ,EAAE,MAAMD,UAAU,CAACR,OAAO,EAAEW,oBAAoB,EAAE,CAAC,CAAC;AAC3F,MAAA,CAAC,CAAC;AACJ,IAAA;IACA;EAIF,OAAOS,QAAQ,CAAC,MAAMR,qBAAqB,EAAE,EAAE,CAAC;AAClD;AAUO,MAAMS,sBAAsB,GAAGA,CACpCtB,OAA+B,EAC/BuB,QAA4C,KAC1C;AACF,EAAA,OAAOf,0BAA0B,CAAaR,OAAO,EAAE,CAACwB,CAAC,EAAEpB,QAAQ,KACjEqB,QAAQ,CACND,CAAC,CAACE,aAAa,CAACC,IAAI,CAClBC,GAAG,CAAC,MAAML,QAAQ,CAACC,CAAC,CAAC,CAAC,EACtBK,SAAS,CAACzB,QAAQ,CAAC,CACpB,EACD;IACE0B,YAAY,EAAEP,QAAQ,CAACC,CAAC;AACzB,GAAA,CACF,CACF;AACH,CAAC;AAUM,MAAMO,sBAAsB,GAAGA,CACpC/B,OAA+B,EAC/BuB,QAAmC,KACjC;AACF,EAAA,OAAOf,0BAA0B,CAAaR,OAAO,EAAE,CAACwB,CAAC,EAAEpB,QAAQ,KACjEqB,QAAQ,CACND,CAAC,CAACQ,MAAM,CAACL,IAAI,CACXC,GAAG,CAAC,MAAK;IACP,OAAOL,QAAQ,CAACC,CAAC,CAAC;AACpB,EAAA,CAAC,CAAC,EACFK,SAAS,CAACzB,QAAQ,CAAC,CACpB,EACD;IACE0B,YAAY,EAAEP,QAAQ,CAACC,CAAC;AACzB,GAAA,CACF,CACF;AACH,CAAC;;AClHK,MAAOS,eAAgB,SAAQC,cAAc,CAAA;EAOtCC,UAAA;EANOC,OAAO;EACPC,KAAK;EACLC,QAAQ;EACTrC,OAAO;AAExBC,EAAAA,WAAAA,CACWiC,UAA2B,EACpCnC,OAA+B,EAAA;IAE/B,KAAK,CAACmC,UAAU,CAAC;IAHR,IAAA,CAAAA,UAAU,GAAVA,UAAU;AAInB,IAAA,IAAI,CAAClC,OAAO,GAAGD,OAAO,CAACC,OAAO;AAC9B,IAAA,IAAI,CAACmC,OAAO,GAAGL,sBAAsB,CAAC/B,OAAO,EAAGwB,CAAC,IAAKA,CAAC,CAACY,OAAO,CAAC;AAChE,IAAA,IAAI,CAACC,KAAK,GAAGN,sBAAsB,CAAC/B,OAAO,EAAGwB,CAAC,IAAKA,CAAC,CAACa,KAAK,CAAC;IAC5D,MAAME,eAAe,GAAGjB,sBAAsB,CAACtB,OAAO,EAAGwB,CAAC,IAAKA,CAAC,CAACc,QAAQ,CAAC;AAE1E,IAAA,IAAI,CAACA,QAAQ,GAAGjB,QAAQ,CAAC,MAAK;AAC5B,MAAA,OAAOkB,eAAe,EAAE,IAAI,IAAI,CAACC,eAAe,EAAE,CAACC,MAAM,GAAG,CAAC;AAC/D,IAAA,CAAC;;aAAC;AACJ,EAAA;AAESC,EAAAA,WAAWA,GAAA;AAClB,IAAA,IAAI,CAACzC,OAAO,EAAE,CAACyC,WAAW,EAAE;AAC9B,EAAA;AAESC,EAAAA,aAAaA,GAAA;AACpB,IAAA,IAAI,CAAC1C,OAAO,EAAE,CAAC0C,aAAa,EAAE;AAChC,EAAA;AAESC,EAAAA,cAAcA,GAAA;AACrB,IAAA,IAAI,CAAC3C,OAAO,EAAE,CAAC2C,cAAc,EAAE;AACjC,EAAA;AAESC,EAAAA,eAAeA,GAAA;AACtB,IAAA,IAAI,CAAC5C,OAAO,EAAE,CAAC4C,eAAe,EAAE;AAClC,EAAA;AACD;;ACDD,SAASC,oBAAoBA,CAAC9C,OAAyB,EAAA;AACrD,EAAA,IAAIA,OAAO,CAAC+C,IAAI,KAAK,MAAM,EAAE;AAC3B,IAAA,OAAOC,SAAS;AAClB,EAAA;EAEA,OAAOhD,OAAO,CAACiD,MAAM;AACvB;AAKA,SAASC,0BAA0BA,CAAClD,OAAyB,EAAA;AAC3D,EAAA,IAAIA,OAAO,CAAC+C,IAAI,KAAK,MAAM,EAAE;IAC3B,OAAO/C,OAAO,CAACmD,YAAY;AAC7B,EAAA;EAEA,OAAOnD,OAAO,CAACiD,MAAM,CAACG,SAAS,CAACC,IAAI,CAACD,SAAS,CAACD,YAAY;AAC7D;AAUA,SAASG,qBAAqBA,CAAItD,OAA+B,EAAA;EAC/D,MAAMuD,KAAK,GAAG/C,0BAA0B,CAAIR,OAAO,EAAE,CAACC,OAAO,EAAEG,QAAQ,KAAI;IACzE,OAAOqB,QAAQ,CACbxB,OAAO,CAACuD,YAAY,CAAC7B,IAAI,CACvBC,GAAG,CAAC,MAAM3B,OAAO,CAACwD,WAAW,EAAE,CAAC,EAChC5B,SAAS,CAACzB,QAAQ,CAAC,CACpB,EACD;AACE0B,MAAAA,YAAY,EAAE7B,OAAO,CAACwD,WAAW;AAClC,KAAA,CACF;AACH,EAAA,CAAC,CAAsB;AAEvBF,EAAAA,KAAK,CAACG,GAAG,GAAIH,KAAQ,IAAI;IACvBvD,OAAO,CAACC,OAAO,EAAE,CAAC0D,QAAQ,CAACJ,KAAK,CAAC;EACnC,CAAC;AAEDA,EAAAA,KAAK,CAACK,MAAM,GAAIC,EAAqB,IAAI;IACvCN,KAAK,CAACG,GAAG,CAACG,EAAE,CAACN,KAAK,EAAE,CAAC,CAAC;EACxB,CAAC;AAED,EAAA,OAAOA,KAAK;AACd;AAOM,MAAOO,eAAgB,SAAQC,kBAAkB,CAAA;EAC5CR,KAAK;EACLS,WAAW;EACXX,IAAI;EACJY,QAAQ;EACCC,QAAQ,GAAGC,MAAM,CAAC,EAAE;;WAAC;EACrBC,WAAW,GAAG/C,QAAQ,CAAC,MAAM2B,SAAS;;WAAC;EACvCC,MAAM;EACNE,YAAY;EACZkB,UAAU;AAE5BnE,EAAAA,WAAAA,CAAYoE,IAAe,EAAEtE,OAA+B,EAAA;AAC1D,IAAA,KAAK,CAACA,OAAO,CAACuE,KAAK,EAAED,IAAI,EAAE,MAAK;MAC9B,MAAM,IAAIE,aAAY,CAAA,IAAA,EAEpBzD,SAAS,IAAI,mCAAmC,CACjD;AACH,IAAA,CAAC,CAAC;AACF,IAAA,IAAI,CAACwC,KAAK,GAAGD,qBAAqB,CAACtD,OAAO,CAAC;AAC3C,IAAA,IAAI,CAACiD,MAAM,GAAGH,oBAAoB,CAAC9C,OAAO,CAAC;IAC3C,IAAI,CAACqD,IAAI,GAAG,IAAI,CAACJ,MAAM,EAAEG,SAAS,CAACC,IAAI,IAAIiB,IAAI;AAC/C,IAAA,IAAI,CAACnB,YAAY,GAAGD,0BAA0B,CAAClD,OAAO,CAAC;AAEvD,IAAA,MAAMyE,gBAAgB,GAAGzE,OAAO,CAAC+C,IAAI,KAAK,OAAO,GAAG/C,OAAO,CAACyE,gBAAgB,GAAGzB,SAAS;AACxF,IAAA,MAAM0B,kBAAkB,GAAG1E,OAAO,CAAC+C,IAAI,KAAK,OAAO,GAAG/C,OAAO,CAAC0E,kBAAkB,GAAG1B,SAAS;AAE5F,IAAA,MAAM2B,OAAO,GAAG,IAAI,CAACC,wBAAwB,CAC3C5E,OAAO,CAAC+C,IAAI,EACZ0B,gBAAgB,EAChBC,kBAAkB,CACnB;AACD,IAAA,IAAI,CAACV,WAAW,GAAGW,OAAO,CAACX,WAAW;AACtC,IAAA,IAAI,CAACK,UAAU,GAAGM,OAAO,CAACN,UAAU;AAEpC,IAAA,IAAI,CAACJ,QAAQ,GAAG5C,QAAQ,CAAC,MACvB,IAAI,CAAC4B,MAAM,GAAG,CAAC,GAAG,IAAI,CAACA,MAAM,CAACG,SAAS,CAACa,QAAQ,EAAE,EAAE,IAAI,CAACD,WAAW,EAAE,CAAC,GAAG,EAAE;;aAC7E;AACH,EAAA;AAESa,EAAAA,QAAQA,GAAA;AACf,IAAA,OAAO7B,SAAS;AAClB,EAAA;AACD;;AClID,MAAM8B,kBAAkB,GAAGzD,QAAQ,CAAC,MAAM,EAAE;;SAAC;MAKhC0D,qBAAqB,CAAA;EAabT,IAAA;EAZVU,SAAS;EAITC,MAAM;EACNC,OAAO;EACPC,OAAO;EACPC,KAAK;EAELC,WAAW,GAA4ChE,QAAQ,CAAC,MAAM,EAAE;;WAAC;AAElFnB,EAAAA,WAAAA,CACmBoE,IAAqB,EACtCtE,OAA+B,EAAA;IADd,IAAA,CAAAsE,IAAI,GAAJA,IAAI;AAGrB,IAAA,IAAI,CAACU,SAAS,GAAG1D,sBAAsB,CAACtB,OAAO,EAAGwB,CAAkB,IAAKA,CAAC,CAAC8D,MAAM,KAAK,OAAO,CAAC;IAC9F,IAAI,CAACL,MAAM,GAAG3D,sBAAsB,CAACtB,OAAO,EAAEuF,2BAA2B,CAAC;AAC1E,IAAA,IAAI,CAACL,OAAO,GAAG5D,sBAAsB,CAACtB,OAAO,EAAGwB,CAAC,IAAKA,CAAC,CAAC0D,OAAO,CAAC;IAEhE,IAAI,CAACE,KAAK,GAAG9D,sBAAsB,CAACtB,OAAO,EAAGwB,CAAC,IAAI;MACjD,OAAOA,CAAC,CAAC4D,KAAK;AAChB,IAAA,CAAC,CAAC;IAEF,IAAI,CAACD,OAAO,GAAG7D,sBAAsB,CAACtB,OAAO,EAAGwB,CAAC,IAAI;MACnD,OAAOA,CAAC,CAAC2D,OAAO;AAClB,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAK,EAAAA,WAAW,GAA0DV,kBAAkB;AACvFW,EAAAA,YAAY,GAA4CX,kBAAkB;AAG1EY,EAAAA,iBAAiB,GAAGZ,kBAAkB;AACtCa,EAAAA,UAAU,GAAGb,kBAAkB;AAC/Bc,EAAAA,cAAc,GAAGd,kBAAkB;AAI1Be,EAAAA,oBAAoB,GAAGxE,QAAQ,CACtC,MAAM,IAAI,CAACiD,IAAI,CAACwB,MAAM,EAAE,IAAI,IAAI,CAACxB,IAAI,CAAChC,QAAQ,EAAE,IAAI,IAAI,CAACgC,IAAI,CAACyB,QAAQ,EAAE;;WACzE;EAKQT,MAAM,GAA4CjE,QAAQ,CAAC,MAAK;IACvE,OAAO2E,6BAA6B,CAAC,IAAI,CAAC;AAC5C,EAAA,CAAC;;WAAC;AACH;;MC5CYC,kBAAkB,CAAA;AACpBC,EAAAA,YAAY,GAAG,IAAIC,iBAAiB,EAAE;EAS/CC,OAAOA,CACLjD,YAA8B,EAC9BI,KAA6B,EAC7B8C,QAAuB,EACvBC,OAAqB,EAAA;AAErB,IAAA,IAAI/C,KAAK,EAAE,YAAYgD,eAAe,EAAE;AACtC,MAAA,OAAOC,gBAAgB,CAAC;AACtBzD,QAAAA,IAAI,EAAE,MAAM;QACZI,YAAY;QACZI,KAAK;QACL8C,QAAQ;AACR9B,QAAAA,KAAK,EAAE8B,QAAQ,CAACI,OAAO,CAACC,KAAK,EAAE;AAC/BC,QAAAA,YAAY,EAAEL;AACf,OAAA,CAAC;AACJ,IAAA;AAEA,IAAA,OAAO,IAAI,CAACJ,YAAY,CAACE,OAAO,CAASjD,YAAY,EAAEI,KAAK,EAAE8C,QAAQ,EAAEC,OAAO,CAAC;AAClF,EAAA;AAOAM,EAAAA,eAAeA,CAACtC,IAAqB,EAAEtE,OAAoC,EAAA;AACzE,IAAA,IAAI,CAACA,OAAO,CAACC,OAAO,EAAE;AACpB,MAAA,OAAO,IAAI,CAACiG,YAAY,CAACU,eAAe,CAACtC,IAAI,CAAC;AAChD,IAAA;AACA,IAAA,OAAO,IAAIrC,eAAe,CAACqC,IAAI,EAAEtE,OAAO,CAAC;AAC3C,EAAA;AAOA6G,EAAAA,eAAeA,CAACvC,IAAqB,EAAEtE,OAAoC,EAAA;AACzE,IAAA,IAAI,CAACA,OAAO,CAACC,OAAO,EAAE;MACpB,OAAO,IAAI,CAACiG,YAAY,CAACW,eAAe,CAACvC,IAAI,EAAEtE,OAAO,CAAC;AACzD,IAAA;AACA,IAAA,OAAO,IAAI8D,eAAe,CAACQ,IAAI,EAAEtE,OAAO,CAAC;AAC3C,EAAA;AAOA8G,EAAAA,qBAAqBA,CACnBxC,IAAqB,EACrBtE,OAAoC,EAAA;AAEpC,IAAA,IAAI,CAACA,OAAO,CAACC,OAAO,EAAE;AACpB,MAAA,OAAO,IAAI,CAACiG,YAAY,CAACY,qBAAqB,CAACxC,IAAI,CAAC;AACtD,IAAA;AACA,IAAA,OAAO,IAAIS,qBAAqB,CAACT,IAAI,EAAEtE,OAAO,CAAC;AACjD,EAAA;EAMA+G,QAAQA,CAAC/G,OAA8B,EAAA;AACrC,IAAA,MAAMuD,KAAK,GAAGvD,OAAO,CAACiD,MAAM,CAACM,KAAK,EAAE,CAACvD,OAAO,CAAC0E,kBAAkB,CAAC;IAEhE,IAAInB,KAAK,YAAYgD,eAAe,EAAE;MACpC,OAAOC,gBAAgB,CAACxG,OAAO,CAAC;AAClC,IAAA;AAEA,IAAA,OAAO,IAAID,SAAS,CAACC,OAAO,CAAC;AAC/B,EAAA;AACD;AAMK,SAAUwG,gBAAgBA,CAACxG,OAAyB,EAAA;AACxD,EAAA,MAAMC,OAAO,GACXD,OAAO,CAAC+C,IAAI,KAAK,MAAA,GACb/C,OAAO,CAACuD,KAAA,GACRlC,QAAQ,CAAC,MAAK;IACZ,OAAOrB,OAAO,CAACiD,MAAM,CAACM,KAAK,EAAE,CAACvD,OAAO,CAAC0E,kBAAkB,CAAC;AAC3D,EAAA,CAAC,CACqB;EAE5B,OAAO,IAAI5E,eAAe,CAAC;AACzB,IAAA,GAAGE,OAAO;AACVC,IAAAA;AACD,GAAA,CAAC;AACJ;;ACJM,SAAU+G,UAAUA,CAAS,GAAGC,IAAW,EAAA;EAC/C,MAAM,CAACC,KAAK,EAAEC,WAAW,EAAEC,YAAY,CAAC,GAAGC,iBAAiB,CAASJ,IAAI,CAAC;AAE1E,EAAA,MAAMjH,OAAO,GAAG;AAAC,IAAA,GAAGoH,YAAY;IAAEd,OAAO,EAAE,IAAIL,kBAAkB;GAAG;AACpE,EAAA,MAAMqB,MAAM,GAAGH,WAAW,KAAM,MAAK,CAAE,CAAC,CAAwC;AAChF,EAAA,OAAOI,IAAI,CAACL,KAAK,EAAEI,MAAM,EAAEtH,OAAO,CAAC;AACrC;;AChDM,SAAUwH,YAAYA,CAC1BC,KAAmB,EACnBC,MAAsB,EAAA;EAEtB,OAAOvG,SAAS,CAAC,MAAMwG,cAAc,CAACF,KAAK,EAAEC,MAAM,CAAC,CAA2C;AACjG;AAEA,SAASC,cAAcA,CACrBF,KAAyB,EACzBC,MAAsB,EAAA;AAEtB,EAAA,MAAME,KAAK,GAAGH,KAAK,EAAE;AACrB,EAAA,MAAMlE,KAAK,GAAGqE,KAAK,CAACrE,KAAK,EAAE;EAE3B,MAAMsE,gBAAgB,GAAGC,eAAe,CAACL,KAAK,EAAElE,KAAK,EAAEmE,MAAM,CAAC;EAE9D,IAAIG,gBAAgB,KAAK7E,SAAS,IAAI+E,eAAe,CAACN,KAAK,EAAElE,KAAK,CAAC,EAAE;AACnE,IAAA,OAAOsE,gBAAgB;AACzB,EAAA;AAEA,EAAA,IAAIG,aAAa,CAACJ,KAAK,EAAEF,MAAM,CAAC,EAAE;AAChC,IAAA,OAAOnE,KAAK;AACd,EAAA;AAEA,EAAA,OAAOP,SAAS;AAClB;AAEA,SAAS+E,eAAeA,CAACN,KAAyB,EAAElE,KAAc,EAAA;AAChE,EAAA,OACE,CAAC0E,OAAO,CAAC1E,KAAK,CAAC,IAAI2E,QAAQ,CAAC3E,KAAK,CAAC,KAClC4E,MAAM,CAACC,IAAI,CAAC7E,KAAK,CAAC,CAAC8E,IAAI,CAAEC,CAAC,IAAKC,eAAe,CAACd,KAAK,CAACa,CAA6B,CAAC,CAAC,CAAC;AAEzF;AAEA,SAASR,eAAeA,CACtBL,KAAyB,EACzBlE,KAAc,EACdmE,MAAsB,EAAA;AAEtB,EAAA,IAAIO,OAAO,CAAC1E,KAAK,CAAC,EAAE;IAClB,MAAMiF,MAAM,GAAGf,KAAsD;IACrE,MAAMgB,UAAU,GAAGlF,KAAsC;IACzD,MAAMmF,MAAM,GAAc,IAAIC,KAAK,CAACF,UAAU,CAAChG,MAAM,CAAC;IACtD,IAAImG,QAAQ,GAAG,KAAK;AAEpB,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,UAAU,CAAChG,MAAM,EAAEoG,CAAC,EAAE,EAAE;AAC1C,MAAA,MAAMC,KAAK,GAAGN,MAAM,CAACK,CAAC,CAAC;AAEvB,MAAA,MAAME,WAAW,GAAGpB,cAAc,CAACmB,KAAK,EAAEpB,MAAM,CAAC;MACjD,IAAIqB,WAAW,KAAK/F,SAAS,EAAE;AAC7B4F,QAAAA,QAAQ,GAAG,IAAI;AACjB,MAAA;AACAF,MAAAA,MAAM,CAACG,CAAC,CAAC,GAAGE,WAAW;AACzB,IAAA;AAEA,IAAA,OAAOH,QAAQ,GAAGF,MAAM,GAAG1F,SAAS;AACtC,EAAA;AAEA,EAAA,IAAIkF,QAAQ,CAAC3E,KAAK,CAAC,EAAE;IACnB,MAAMiF,MAAM,GAAGf,KAA2C;IAC1D,MAAMuB,WAAW,GAAGzF,KAAgC;AACpD,IAAA,MAAM0F,OAAO,GAAGd,MAAM,CAACC,IAAI,CAACY,WAAW,CAAA,CACpCpH,GAAG,CAA4CsH,GAAG,IAAI;AACrD,MAAA,MAAMJ,KAAK,GAAGN,MAAM,CAACU,GAAG,CAAC;MACzB,OAAOX,eAAe,CAACO,KAAK,CAAC,GAAG,CAACI,GAAG,EAAEJ,KAAK,CAAC,GAAG9F,SAAS;AAC1D,IAAA,CAAC,CAAA,CACA0E,MAAM,CAACyB,YAAY,CAAA,CACnBvH,GAAG,CAAC,CAAC,CAACsH,GAAG,EAAEJ,KAAK,CAAC,KAAI;AACpB,MAAA,MAAMC,WAAW,GAAGpB,cAAc,CAACmB,KAAK,EAAEpB,MAAM,CAAC;MACjD,OAAOqB,WAAW,KAAK/F,SAAS,GAAI,CAACkG,GAAG,EAAEH,WAAW,CAAuB,GAAG/F,SAAS;IAC1F,CAAC,CAAA,CACA0E,MAAM,CAAE0B,CAAC,IAAKA,CAAC,KAAKpG,SAAS,CAAC;IAEjC,OAAOiG,OAAO,CAACxG,MAAM,GAAG0F,MAAM,CAACkB,WAAW,CAACJ,OAAO,CAAC,GAAGjG,SAAS;AACjE,EAAA;AAEA,EAAA,OAAOA,SAAS;AAClB;AAEA,SAASuF,eAAeA,CAAChF,KAAc,EAAA;EACrC,OAAO,OAAOA,KAAK,KAAK,UAAU;AACpC;AAEA,SAAS4F,YAAYA,CACnB5F,KAA+C,EAAA;EAE/C,OAAOA,KAAK,KAAKP,SAAS;AAC5B;AAEA,SAASgF,aAAaA,CAACJ,KAA0B,EAAEF,MAAsB,EAAA;EACvE,IAAI,CAACA,MAAM,EAAE;AACX,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,IAAIA,MAAM,CAACrF,KAAK,KAAKW,SAAS,IAAI4E,KAAK,CAACvF,KAAK,EAAE,KAAKqF,MAAM,CAACrF,KAAK,EAAE;AAChE,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,IAAIqF,MAAM,CAACtF,OAAO,KAAKY,SAAS,IAAI4E,KAAK,CAACxF,OAAO,EAAE,KAAKsF,MAAM,CAACtF,OAAO,EAAE;AACtE,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,IAAIsF,MAAM,CAAC4B,OAAO,KAAKtG,SAAS,EAAE;AAChC,IAAA,MAAMsG,OAAO,GAAG,CAAC1B,KAAK,CAACtF,QAAQ,EAAE;AACjC,IAAA,IAAIgH,OAAO,KAAK5B,MAAM,CAAC4B,OAAO,EAAE;AAC9B,MAAA,OAAO,KAAK;AACd,IAAA;AACF,EAAA;AAEA,EAAA,OAAO,IAAI;AACb;;ACnLO,MAAMC,iBAAiB,GAAiC;AAC7D,EAAA,YAAY,EAAEC,CAAC;AAAC5B,IAAAA;AAAK,GAAC,KAAKA,KAAK,EAAE,CAACxF,OAAO,EAAE;AAC5C,EAAA,cAAc,EAAEqH,CAAC;AAAC7B,IAAAA;GAAM,KAAK,CAACA,KAAK,EAAE,CAACxF,OAAO,EAAE;AAC/C,EAAA,UAAU,EAAEsH,CAAC;AAAC9B,IAAAA;AAAK,GAAC,KAAKA,KAAK,EAAE,CAACvF,KAAK,EAAE;AACxC,EAAA,aAAa,EAAEsH,CAAC;AAAC/B,IAAAA;GAAM,KAAK,CAACA,KAAK,EAAE,CAACvF,KAAK,EAAE;AAC5C,EAAA,UAAU,EAAEuH,CAAC;AAAChC,IAAAA;AAAK,GAAC,KAAKA,KAAK,EAAE,CAACxC,KAAK,EAAE;AACxC,EAAA,YAAY,EAAEyE,CAAC;AAACjC,IAAAA;AAAK,GAAC,KAAKA,KAAK,EAAE,CAACzC,OAAO,EAAE;AAC5C,EAAA,YAAY,EAAE2E,CAAC;AAAClC,IAAAA;AAAK,GAAC,KAAKA,KAAK,EAAE,CAAC1C,OAAO;;;AC0DtC,MAAO6E,iBAAqB,SAAQxD,eAAe,CAAA;EAEvCyD,SAAS;EAETC,WAAW;EAEVC,UAAU;EACVpI,YAAY;AACrBqI,EAAAA,0BAA0B,GAAG,CAAC;AACrBC,EAAAA,iBAAiB,GAA2D,EAAE;AAC9EC,EAAAA,yBAAyB,GAAyC,EAAE;AACnE7G,EAAAA,YAAY,GAAG,IAAI8G,YAAY,EAAK;AACpC5I,EAAAA,aAAa,GAAG,IAAI4I,YAAY,EAAqB;AAEvEpK,EAAAA,WAAAA,CAAYqD,KAAQ,EAAEgH,eAA8C,EAAEvK,OAAwB,EAAA;AAC5F,IAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;IAEjB,MAAM,CAACkH,KAAK,EAAEI,MAAM,EAAEkD,IAAI,CAAC,GAAGnD,iBAAiB,CAAI,CAAClD,MAAM,CAACZ,KAAK,CAAC,EAAEgH,eAAe,EAAEvK,OAAO,CAAC,CAAC;IAC7F,IAAI,CAACiK,WAAW,GAAG/C,KAAK;IACxB,IAAI,CAACpF,YAAY,GAAGyB,KAAK;IACzB,MAAM7C,QAAQ,GAAG8J,IAAI,EAAE9J,QAAQ,IAAI+J,MAAM,CAACC,QAAQ,CAAC;IAEnD,MAAMC,OAAO,GAAGrD,MAAA,GACZN,UAAU,CAAC,IAAI,CAACiD,WAAW,EAAE3C,MAAM,EAAE;AAAC5G,MAAAA;AAAQ,KAAC,CAAA,GAC/CsG,UAAU,CAAC,IAAI,CAACiD,WAAW,EAAE;AAACvJ,MAAAA;AAAQ,KAAC,CAAC;AAE5C,IAAA,IAAI,CAACsJ,SAAS,GAAGY,2BAA2B,CAACD,OAAO,EAAE,MACpD,IAAI,CAAC1H,MAAM,EAAE4H,sBAAsB,CAAC;AAACC,MAAAA,aAAa,EAAE;AAAI,KAAQ,CAAC,CAClE;AACD,IAAA,IAAI,CAACZ,UAAU,GAAG,IAAI,CAACF,SAAS,EAAE;IAElC,IAAI,CAACe,sBAAsB,EAAE;AAG7BC,IAAAA,MAAM,CACJ,MAAK;AACH,MAAA,MAAMzH,KAAK,GAAG,IAAI,CAAC0G,WAAW,EAAE;AAChC9I,MAAAA,SAAS,CAAC,MAAK;QACb,IAAI,CAAC8J,yBAAyB,EAAE;AAChC,QAAA,IAAI,CAACzH,YAAY,CAAC0H,IAAI,CAAC3H,KAAK,CAAC;QAC7B,IAAI,CAAC4H,gBAAgB,CAAC,IAAIC,gBAAgB,CAAC7H,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1D,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,EACD;AAAC7C,MAAAA;AAAQ,KAAC,CACX;AAGDsK,IAAAA,MAAM,CACJ,MAAK;AACH,MAAA,MAAM1F,MAAM,GAAG,IAAI,CAACA,MAAM;AAC1BnE,MAAAA,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAACO,aAAa,CAACwJ,IAAI,CAAC5F,MAAM,CAAC;AACjC,MAAA,CAAC,CAAC;MACF,IAAI,CAAC6F,gBAAgB,CAAC,IAAIE,iBAAiB,CAAC/F,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAA,CAAC,EACD;AAAC5E,MAAAA;AAAQ,KAAC,CACX;AAGDsK,IAAAA,MAAM,CACJ,MAAK;AACH,MAAA,MAAMM,UAAU,GAAG,IAAI,CAAChJ,QAAQ;AAChCnB,MAAAA,SAAS,CAAC,MAAK;AACb,QAAA,KAAK,MAAM0C,EAAE,IAAI,IAAI,CAACwG,yBAAyB,EAAE;UAC/CxG,EAAE,CAACyH,UAAU,CAAC;AAChB,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,EACD;AAAC5K,MAAAA;AAAQ,KAAC,CACX;AAGDsK,IAAAA,MAAM,CACJ,MAAK;MACH,MAAMO,SAAS,GAAG,IAAI,CAACrB,UAAU,CAAC9H,OAAO,EAAE;MAC3C,IAAI,CAAC+I,gBAAgB,CAAC,IAAIK,kBAAkB,CAACD,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9D,MAAA,MAAMtI,MAAM,GAAG,IAAI,CAACA,MAAM;MAC1B,IAAI,CAACA,MAAM,EAAE;AACX,QAAA;AACF,MAAA;MACA,IAAI,CAACsI,SAAS,EAAE;QACdtI,MAAM,CAACJ,eAAe,EAAE;AAC1B,MAAA,CAAA,MAAO;QACLI,MAAM,CAACN,aAAa,EAAE;AACxB,MAAA;AACF,IAAA,CAAC,EACD;AAACjC,MAAAA;AAAQ,KAAC,CACX;AAGDsK,IAAAA,MAAM,CACJ,MAAK;MACH,MAAMS,OAAO,GAAG,IAAI,CAACvB,UAAU,CAAC7H,KAAK,EAAE;MACvC,IAAI,CAAC8I,gBAAgB,CAAC,IAAIO,mBAAmB,CAAC,CAACD,OAAO,EAAE,IAAI,CAAC,CAAC;AAC9D,MAAA,MAAMxI,MAAM,GAAG,IAAI,CAACA,MAAM;MAC1B,IAAI,CAACA,MAAM,EAAE;AACX,QAAA;AACF,MAAA;AACA,MAAA,IAAIwI,OAAO,EAAE;QACXxI,MAAM,CAACP,WAAW,EAAE;AACtB,MAAA,CAAA,MAAO;QACLO,MAAM,CAACL,cAAc,EAAE;AACzB,MAAA;AACF,IAAA,CAAC,EACD;AAAClC,MAAAA;AAAQ,KAAC,CACX;AACH,EAAA;AAOQqK,EAAAA,sBAAsBA,GAAA;IAC5B,MAAMY,SAAS,GAAGC,sBAAsB,CAAC;AAACrI,MAAAA,KAAK,EAAEqI;AAAsB,KAAC,CAAC;AACzEzD,IAAAA,MAAM,CAAC0D,cAAc,CAAC,IAAI,EAAEF,SAAS,EAAE;AACrCG,MAAAA,GAAG,EAAEA,MAAM,IAAI,CAAC7B,WAAW;AAC5B,KAAA,CAAC;IACF,MAAM8B,UAAU,GAAGH,sBAAsB,CAAC;AAAC3G,MAAAA,MAAM,EAAE2G;AAAsB,KAAC,CAAC;AAC3EzD,IAAAA,MAAM,CAAC0D,cAAc,CAAC,IAAI,EAAEE,UAAU,EAAE;MACtCD,GAAG,EAAEA,MAAME,8BAA8B,CAAC,IAAI,CAAC9B,UAAU,CAACjF,MAAM,EAAE;AACnE,KAAA,CAAC;AACJ,EAAA;EAEQkG,gBAAgBA,CAACc,KAAmB,EAAA;AAC1C9K,IAAAA,SAAS,CAAC,MAAK;AACZ,MAAA,IAAY,CAAC+K,OAAO,CAAC5L,IAAI,CAAC2L,KAAK,CAAC;AACnC,IAAA,CAAC,CAAC;AACJ,EAAA;AAEStI,EAAAA,QAAQA,CAACJ,KAAU,EAAEvD,OAA4B,EAAA;AACxD,IAAA,IAAI,CAACmM,WAAW,CAAC5I,KAAK,EAAEvD,OAAO,CAAC;AAClC,EAAA;AAESoM,EAAAA,UAAUA,CAAC7I,KAAU,EAAEvD,OAA4B,EAAA;AAC1D,IAAA,IAAI,CAACmM,WAAW,CAAC5I,KAAK,EAAEvD,OAAO,CAAC;AAClC,EAAA;AAEQmM,EAAAA,WAAWA,CAAC5I,KAAU,EAAEvD,OAA4B,EAAA;AAC1D,IAAA,MAAMiD,MAAM,GAAG,IAAI,CAACoJ,oBAAoB,CAACrM,OAAO,CAAC;AACjD,IAAA,IAAI,CAACiK,WAAW,CAACvG,GAAG,CAACH,KAAK,CAAC;AAC3B,IAAA,IAAIN,MAAM,EAAE;MACV,IAAI,CAACqJ,4BAA4B,CAACrJ,MAAM,EAAEjD,OAAO,EAAEuM,SAAS,CAAC;AAC/D,IAAA;AACA,IAAA,IAAIvM,OAAO,EAAEwM,qBAAqB,KAAK,KAAK,EAAE;AAC5C,MAAA,KAAK,MAAM3I,EAAE,IAAI,IAAI,CAACuG,iBAAiB,EAAE;AACvCvG,QAAAA,EAAE,CAACN,KAAK,EAAE,IAAI,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EAEAkJ,gBAAgBA,CAAC5I,EAAmD,EAAA;AAClE,IAAA,IAAI,CAACuG,iBAAiB,CAACsC,IAAI,CAAC7I,EAAE,CAAC;AACjC,EAAA;EAGA8I,mBAAmBA,CAAC9I,EAAmD,EAAA;AACrE+I,IAAAA,cAAc,CAAC,IAAI,CAACxC,iBAAiB,EAAEvG,EAAE,CAAC;AAC5C,EAAA;EAEAgJ,wBAAwBA,CAAChJ,EAAiC,EAAA;AACxD,IAAA,IAAI,CAACwG,yBAAyB,CAACqC,IAAI,CAAC7I,EAAE,CAAC;AACzC,EAAA;EAGAiJ,2BAA2BA,CAACjJ,EAAiC,EAAA;AAC3D+I,IAAAA,cAAc,CAAC,IAAI,CAACvC,yBAAyB,EAAExG,EAAE,CAAC;AACpD,EAAA;AAESJ,EAAAA,WAAWA,GAAA;IAClB,OAAO,IAAI,CAACF,KAAK;AACnB,EAAA;AAESwJ,EAAAA,KAAKA,CAACxJ,KAA+B,EAAEvD,OAA4B,EAAA;AAC1E,IAAA,IAAIgN,kBAAkB,CAACzJ,KAAK,CAAC,EAAE;MAC7B,MAAM0J,6BAA6B,EAAE;AACvC,IAAA;AAEA,IAAA,MAAMC,UAAU,GAAG3J,KAAK,IAAI,IAAI,CAACzB,YAAY;AAC7C,IAAA,IAAI,CAACoI,UAAU,CAAC6C,KAAK,CAACG,UAAU,CAAC;IAEjC,IAAI3J,KAAK,KAAKP,SAAS,EAAE;AACvB,MAAA,IAAI,CAACmJ,WAAW,CAAC5I,KAAK,EAAEvD,OAAO,CAAC;AAClC,IAAA,CAAA,MAAO,IAAI,CAACA,OAAO,EAAEmN,QAAQ,EAAE;AAC7B,MAAA,MAAMlK,MAAM,GAAG,IAAI,CAACA,MAAM;AAC1B,MAAA,IAAIA,MAAM,EAAE;QACV,IAAI,CAACqJ,4BAA4B,CAACrJ,MAAM,EAAEjD,OAAO,EAAEuM,SAAS,CAAC;AAC/D,MAAA;AACF,IAAA;AAEA,IAAA,IAAIvM,OAAO,EAAEuM,SAAS,KAAK,KAAK,EAAE;MAChC,IAAI,CAACpB,gBAAgB,CAAC,IAAIiC,cAAc,CAAC,IAAI,CAAC,CAAC;AACjD,IAAA;AACF,EAAA;EAEQf,oBAAoBA,CAACrM,OAA4B,EAAA;IACvD,MAAMiD,MAAM,GAAGjD,OAAO,EAAEmN,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAClK,MAAM;AACrD,IAAA,IAAIjD,OAAO,EAAEmN,QAAQ,IAAIlK,MAAM,EAAE;MAC/B,IAAI,CAACkH,0BAA0B,EAAE;AACnC,IAAA;AACA,IAAA,OAAOlH,MAAM;AACf,EAAA;AAEQgI,EAAAA,yBAAyBA,GAAA;AAC/B,IAAA,IAAI,IAAI,CAACd,0BAA0B,GAAG,CAAC,EAAE;MACvC,IAAI,CAACA,0BAA0B,EAAE;AACjC,MAAA;AACF,IAAA;AACA,IAAA,MAAMlH,MAAM,GAAG,IAAI,CAACA,MAAM;AAC1B,IAAA,IAAIA,MAAM,EAAE;AACV,MAAA,IAAI,CAACqJ,4BAA4B,CAACrJ,MAAM,CAAC;AAC3C,IAAA;AACF,EAAA;AAEQqJ,EAAAA,4BAA4BA,CAACrJ,MAAuB,EAAEsJ,SAAmB,EAAA;IAC/EtJ,MAAM,CAAC4H,sBAAsB,CAAC;MAAC0B,SAAS;AAAEzB,MAAAA,aAAa,EAAE;AAAI,KAAQ,CAAC;AACxE,EAAA;AAEQuC,EAAAA,iBAAiBA,CACvB7C,IAAsC,EACtC3G,EAAqC,EAAA;AAErC,IAAA,MAAMZ,MAAM,GAAG,IAAI,CAACA,MAAM;AAC1B,IAAA,IAAIA,MAAM,IAAI,CAACuH,IAAI,EAAE2C,QAAQ,EAAE;MAC7BtJ,EAAE,CAACZ,MAAM,CAAC;AACZ,IAAA;AACF,EAAA;EAEA,IAAaqC,MAAMA,GAAA;AACjB,IAAA,IAAI,IAAI,CAAC4E,UAAU,CAAC5H,QAAQ,EAAE,EAAE;AAC9B,MAAA,OAAO,UAAU;AACnB,IAAA;AACA,IAAA,IAAI,IAAI,CAAC4H,UAAU,CAAC9E,KAAK,EAAE,EAAE;AAC3B,MAAA,OAAO,OAAO;AAChB,IAAA;AACA,IAAA,IAAI,IAAI,CAAC8E,UAAU,CAAC/E,OAAO,EAAE,EAAE;AAC7B,MAAA,OAAO,SAAS;AAClB,IAAA;AACA,IAAA,OAAO,SAAS;AAClB,EAAA;EAEA,IAAaC,KAAKA,GAAA;AAChB,IAAA,OAAO,IAAI,CAAC8E,UAAU,CAAC9E,KAAK,EAAE;AAChC,EAAA;EAEA,IAAaD,OAAOA,GAAA;AAClB,IAAA,OAAO,IAAI,CAAC+E,UAAU,CAAC/E,OAAO,EAAE;AAClC,EAAA;EAEA,IAAaD,OAAOA,GAAA;AAClB,IAAA,OAAO,IAAI,CAACgF,UAAU,CAAChF,OAAO,EAAE;AAClC,EAAA;EAEA,IAAa5C,QAAQA,GAAA;AACnB,IAAA,OAAO,IAAI,CAAC4H,UAAU,CAAC5H,QAAQ,EAAE;AACnC,EAAA;EAEA,IAAagH,OAAOA,GAAA;IAClB,OAAO,CAAC,IAAI,CAAChH,QAAQ;AACvB,EAAA;EAEA,IAAaD,KAAKA,GAAA;AAChB,IAAA,OAAO,IAAI,CAAC6H,UAAU,CAAC7H,KAAK,EAAE;AAChC,EAAA;EAEA,IAAaA,KAAKA,CAACiL,CAAU,EAAA;AAC3B,IAAA,MAAMC,uBAAuB,CAC3BxM,SAAS,IAAI,qEAAqE,CACnF;AACH,EAAA;EAEA,IAAayM,QAAQA,GAAA;IACnB,OAAO,CAAC,IAAI,CAACnL,KAAK;AACpB,EAAA;EAEA,IAAamL,QAAQA,CAACF,CAAU,EAAA;AAC9B,IAAA,MAAMC,uBAAuB,CAC3BxM,SAAS,IAAI,kEAAkE,CAChF;AACH,EAAA;EAEA,IAAaqB,OAAOA,GAAA;AAClB,IAAA,OAAO,IAAI,CAAC8H,UAAU,CAAC9H,OAAO,EAAE;AAClC,EAAA;EAEA,IAAaA,OAAOA,CAACkL,CAAU,EAAA;AAC7B,IAAA,MAAMC,uBAAuB,CAC3BxM,SAAS,IACP,oFAAoF,CACvF;AACH,EAAA;EAEA,IAAa0M,SAASA,GAAA;IACpB,OAAO,CAAC,IAAI,CAACrL,OAAO;AACtB,EAAA;EAEA,IAAaqL,SAASA,CAACH,CAAU,EAAA;AAC/B,IAAA,MAAMC,uBAAuB,CAC3BxM,SAAS,IAAI,mEAAmE,CACjF;AACH,EAAA;EAES4B,aAAaA,CAAC6H,IAA2B,EAAA;AAChD,IAAA,IAAI,CAACN,UAAU,CAACvH,aAAa,EAAE;AAC/B,IAAA,IAAI,CAAC0K,iBAAiB,CAAC7C,IAAI,EAAGvH,MAAM,IAAKA,MAAM,CAACN,aAAa,CAAC6H,IAAI,CAAC,CAAC;AACtE,EAAA;EAES9H,WAAWA,CAAC8H,IAA2B,EAAA;AAC9C,IAAA,IAAI,CAACN,UAAU,CAACxH,WAAW,EAAE;AAC7B,IAAA,IAAI,CAAC2K,iBAAiB,CAAC7C,IAAI,EAAGvH,MAAM,IAAKA,MAAM,CAACP,WAAW,CAAC8H,IAAI,CAAC,CAAC;AACpE,EAAA;EAES5H,cAAcA,CAAC4H,IAA2B,EAAA;AAChD,IAAA,IAAI,CAACN,UAAwB,CAACtH,cAAc,EAAE;AAC/C,IAAA,IAAI,CAACyK,iBAAiB,CAAC7C,IAAI,EAAGvH,MAAM,IAAKA,MAAM,CAACL,cAAc,CAAC4H,IAAI,CAAC,CAAC;AACvE,EAAA;EAES3H,eAAeA,CAAC2H,IAA2B,EAAA;AACjD,IAAA,IAAI,CAACN,UAAwB,CAACrH,eAAe,EAAE;AAChD,IAAA,IAAI,CAACwK,iBAAiB,CAAC7C,IAAI,EAAGvH,MAAM,IAAKA,MAAM,CAACJ,eAAe,CAAC2H,IAAI,CAAC,CAAC;AACxE,EAAA;EAESK,sBAAsBA,CAAC6C,KAAc,EAAA,CAAS;EAI9CC,YAAYA,IAAU;EAItBC,aAAaA,CAACC,GAAiC,EAAA,CAAS;EAIxDC,YAAYA,CAACC,UAA2C,EAAA;AAC/D,IAAA,OAAO,KAAK;AACd,EAAA;AAISC,EAAAA,oBAAoBA,GAAA;IAC3B,OAAO,IAAI,CAAC1L,QAAQ;AACtB,EAAA;AAIS2L,EAAAA,oBAAoBA,GAAA;AAC3B,IAAA,OAAO,KAAK;AACd,EAAA;EAESC,OAAOA,CAACR,KAAiD,EAAA;IAChE,MAAMT,6BAA6B,EAAE;AACvC,EAAA;EAESkB,MAAMA,CAACT,KAAiD,EAAA;IAC/D,MAAMT,6BAA6B,EAAE;AACvC,EAAA;EAESmB,aAAaA,CAACC,WAAgB,EAAA;IACrC,MAAMC,0BAA0B,EAAE;AACpC,EAAA;EAESC,kBAAkBA,CAACF,WAAgB,EAAA;IAC1C,MAAMC,0BAA0B,EAAE;AACpC,EAAA;EAESE,aAAaA,CAACH,WAAgB,EAAA;IACrC,MAAMC,0BAA0B,EAAE;AACpC,EAAA;EAESG,kBAAkBA,CAACJ,WAAgB,EAAA;IAC1C,MAAMC,0BAA0B,EAAE;AACpC,EAAA;EAESI,gBAAgBA,CAACL,WAAgB,EAAA;IACxC,MAAMC,0BAA0B,EAAE;AACpC,EAAA;EAESK,qBAAqBA,CAACN,WAAgB,EAAA;IAC7C,MAAMC,0BAA0B,EAAE;AACpC,EAAA;AAESM,EAAAA,eAAeA,GAAA;IACtB,MAAMN,0BAA0B,EAAE;AACpC,EAAA;AAESO,EAAAA,oBAAoBA,GAAA;IAC3B,MAAMP,0BAA0B,EAAE;AACpC,EAAA;AAESQ,EAAAA,SAASA,CAACC,OAAY,EAAErB,KAA6B,EAAA;AAC5D,IAAA,MAAMH,uBAAuB,CAC3BxM,SAAS,IACP,yGAAyG,CAC5G;AACH,EAAA;EAESiO,aAAaA,CAACtB,KAAiD,EAAA;AACtE,IAAA,MAAMH,uBAAuB,CAC3BxM,SAAS,IACP,0HAA0H,CAC7H;AACH,EAAA;AACD;AAED,MAAMkO,cAAc,CAAA;AACDrN,EAAAA,GAAG,GAAG,IAAIsN,OAAO,EAAQ;AAE1CC,EAAAA,WAAWA,CAACjG,GAAM,EAAEkG,MAAe,EAAA;IACjC,MAAMC,MAAM,GAAG,IAAI,CAACzN,GAAG,CAACkK,GAAG,CAAC5C,GAAG,CAAC;AAChC,IAAA,IAAImG,MAAM,EAAE;AACV,MAAA,OAAOA,MAAM;AACf,IAAA;AACA,IAAA,MAAM9L,KAAK,GAAG6L,MAAM,EAAE;IACtB,IAAI,CAACxN,GAAG,CAAC8B,GAAG,CAACwF,GAAG,EAAE3F,KAAK,CAAC;AACxB,IAAA,OAAOA,KAAK;AACd,EAAA;AACD;AAOD,SAASqH,2BAA2BA,CAAI0E,IAAkB,EAAEC,QAAoB,EAAA;AAC9E,EAAA,MAAMC,SAAS,GAAG,IAAIP,cAAc,EAA0C;AAC9E,EAAA,MAAMQ,UAAU,GAAG,IAAIR,cAAc,EAA4C;EAGjF,MAAMS,SAAS,GAAI9H,KAA0B,IAAyB;IACpE,MAAM;AAACrE,MAAAA;AAAK,KAAC,GAAGqE,KAAK;AACrB,IAAA,MAAM+H,YAAY,GAAGxH,MAAM,CAACyH,MAAM,CAAC,CAAC,GAAGC,CAAY,KAAMtM,KAAkB,CAAC,GAAGsM,CAAC,CAAC,EAAE;MACjFnM,GAAG,EAAG0F,CAAU,IAAI;AAClB7F,QAAAA,KAAK,CAACG,GAAG,CAAC0F,CAAC,CAAC;AACZmG,QAAAA,QAAQ,EAAE;MACZ,CAAC;MACD3L,MAAM,EAAGC,EAA2B,IAAI;AACtCN,QAAAA,KAAK,CAACK,MAAM,CAACC,EAAE,CAAC;AAChB0L,QAAAA,QAAQ,EAAE;AACZ,MAAA;AACD,KAAA,CAA4B;AAC7B,IAAA,OAAOpH,MAAM,CAACiH,MAAM,CAACxH,KAAK,EAAE;AAACrE,MAAAA,KAAK,EAAE;QAACuI,GAAG,EAAEA,MAAM6D;AAAY;AAAC,KAAC,CAAC;EACjE,CAAC;EAED,MAAMG,QAAQ,GAAIC,CAAqB,IAAwB;AAC7D,IAAA,OAAOP,SAAS,CAACL,WAAW,CAACY,CAAC,EAAE,MAAK;AACnC,MAAA,OAAO,IAAIC,KAAK,CAACD,CAAC,EAAE;AAElBjE,QAAAA,GAAGA,CAACmE,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAA;UACxB,MAAMC,GAAG,GAAGC,OAAO,CAACvE,GAAG,CAACmE,MAAM,EAAEC,IAAI,EAAEC,QAAQ,CAAC;UAE/C,IAAI,OAAOC,GAAG,KAAK,UAAU,IAAI,OAAOF,IAAI,KAAK,QAAQ,EAAE;YACzD,OAAOJ,QAAQ,CAACM,GAAG,CAAC;AACtB,UAAA;AACA,UAAA,OAAOA,GAAG;QACZ,CAAC;AAEDE,QAAAA,KAAKA,CAACL,MAAM,EAAE3C,CAAC,EAAErG,IAAI,EAAA;AACnB,UAAA,MAAMW,KAAK,GAAyBqI,MAAmB,CAAC,GAAGhJ,IAAI,CAAC;UAChE,OAAOwI,UAAU,CAACN,WAAW,CAACvH,KAAK,EAAE,MAAM8H,SAAS,CAAC9H,KAAK,CAAC,CAAC;AAC9D,QAAA;AACD,OAAA,CAAuB;AAC1B,IAAA,CAAC,CAAC;EACJ,CAAC;EAED,OAAOkI,QAAQ,CAACR,IAAI,CAAiB;AACvC;AAEA,SAAStC,kBAAkBA,CAACuD,SAAkB,EAAA;EAC5C,OACE,OAAOA,SAAS,KAAK,QAAQ,IAC7BA,SAAS,KAAK,IAAI,IAClBpI,MAAM,CAACC,IAAI,CAACmI,SAAS,CAAC,CAAC9N,MAAM,KAAK,CAAC,IACnC,OAAO,IAAI8N,SAAS,IACpB,UAAU,IAAIA,SAAS;AAE3B;AAEA,SAAShD,uBAAuBA,CAACiD,OAAsB,EAAA;EACrD,OAAO,IAAIhM,aAAY,CAAA,IAAA,EAAuCgM,OAAO,IAAI,KAAK,CAAC;AACjF;AAEA,SAASvD,6BAA6BA,GAAA;AACpC,EAAA,OAAOM,uBAAuB,CAC5BxM,SAAS,IACP,4KAA4K,CAC/K;AACH;AAEA,SAASuN,0BAA0BA,GAAA;AACjC,EAAA,OAAOf,uBAAuB,CAC5BxM,SAAS,IACP,oKAAoK,CACvK;AACH;AAEA,SAAS6L,cAAcA,CAAI6D,IAAS,EAAEC,EAAK,EAAA;AACzC,EAAA,MAAMC,KAAK,GAAGF,IAAI,CAACG,OAAO,CAACF,EAAE,CAAC;AAC9B,EAAA,IAAIC,KAAK,GAAG,EAAE,EAAEF,IAAI,CAACI,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;AACvC;AAEA,SAAS/E,sBAAsBA,CAAIkF,wBAA2B,EAAA;AAC5D,EAAA,KAAK,IAAI5H,GAAG,IAAI4H,wBAAwB,EAAE;AACxC,IAAA,IAAIA,wBAAwB,CAAC5H,GAAG,CAAC,KAAM0C,sBAA8B,EAAE;AACrE,MAAA,OAAO1C,GAAG;AACZ,IAAA;AACF,EAAA;AACA,EAAA,MAAM6H,KAAK,CACT,OAAOhQ,SAAS,KAAK,WAAW,IAAIA,SAAA,GAChC,mDAAA,GACA,EAAE,CACP;AACH;;;;"}