{"version":3,"names":["dynamic","createSignal","omit","untrack","FormContext","mergeRootProps","resolveClassStyle","createStableCallback","useValueChanged","focusInvalidControl","control","focus","tagName","select","firstInvalidInDomOrder","invalidFields","length","undefined","best","i","candidate","a","controlRef","current","b","position","compareDocumentPosition","Form","props","errors","setErrorsSignal","ownedWrite","errorsAccessor","formRef","fields","Map","submitAttemptedRef","setErrors","next","clearErrors","name","Object","hasOwn","validationMode","contextValue","present","onSubmitCallback","onSubmit","onSubmitValidationFailedCallback","onSubmitValidationFailed","finishSubmit","event","Array","from","values","filter","field","validityData","state","valid","defaultPrevented","preventDefault","handleSubmit","pending","r","validate","push","Promise","all","then","handleReset","userStyling","userHtmlProps","internalProps","noValidate","onReset","styledUserProps","merged","Tag","as","children"],"sources":["form.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createSignal, omit, untrack } from \"solid-js\";\nimport type { FieldValidationMode } from \"../internals/field-constants\";\nimport {\n\tFormContext,\n\ttype FormContextValue,\n\ttype FormErrors,\n\ttype FormFieldEntry,\n} from \"../internals/form-context\";\nimport { mergeRootProps } from \"../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../internals/resolve-class-style\";\nimport { createStableCallback } from \"../internals/stable-callback.ts\";\nimport type { BaseUIComponentProps } from \"../internals/types\";\nimport { useValueChanged } from \"../internals/use-value-changed.ts\";\n\n/**\n * Focus helper mirroring React's `focusControl` in `Form.tsx`: focuses the\n * element and, when it's an `<input>`, selects its contents so the user can\n * immediately re-type.\n */\nfunction focusInvalidControl(control: HTMLElement | null): void {\n\tif (!control) return;\n\tcontrol.focus();\n\tif (control.tagName === \"INPUT\") {\n\t\t(control as HTMLInputElement).select();\n\t}\n}\n\n/**\n * Pick the \"first\" invalid field. Prefers DOM order via\n * `compareDocumentPosition` when the controls are connected to a document;\n * falls back to registration order (the Map's insertion order — which matches\n * mount order and therefore DOM order for most apps) when either control is\n * detached or the positions are identical.\n */\nfunction firstInvalidInDomOrder(\n\tinvalidFields: readonly FormFieldEntry[],\n): FormFieldEntry | undefined {\n\tif (invalidFields.length === 0) return undefined;\n\tif (invalidFields.length === 1) return invalidFields[0];\n\n\tlet best = invalidFields[0];\n\tfor (let i = 1; i < invalidFields.length; i++) {\n\t\tconst candidate = invalidFields[i];\n\t\tconst a = best?.controlRef.current;\n\t\tconst b = candidate?.controlRef.current;\n\t\tif (!a || !b) continue;\n\t\t// Node.DOCUMENT_POSITION_FOLLOWING (0x04) — `b` follows `a`, keep `a`.\n\t\t// Node.DOCUMENT_POSITION_PRECEDING (0x02) — `b` precedes `a`, swap.\n\t\tconst position = a.compareDocumentPosition(b);\n\t\tif (position & 0x02) {\n\t\t\tbest = candidate;\n\t\t}\n\t}\n\treturn best;\n}\n\nexport type { FormContextValue, FormErrors, FormFieldEntry };\n\nexport type FormValidationMode = FieldValidationMode;\n\n// The form has no state exposed to children — state-driven `class`/`style`\n// callbacks will receive an empty object. Using `Record<string, never>`\n// communicates \"intentionally empty shape\" (biome's `noEmptyInterface` /\n// `noEmptyBlockStatements` don't flag it).\nexport type FormState = Record<string, never>;\n\nexport interface FormProps extends BaseUIComponentProps<\"form\", FormState> {\n\t/**\n\t * Tag/component to render. Defaults to `\"form\"`.\n\t */\n\tas?: ValidComponent;\n\t/**\n\t * Determines when the form should be validated. The `validationMode`\n\t * prop on `<Field.Root>` takes precedence over this.\n\t *\n\t * @default \"onSubmit\"\n\t */\n\tvalidationMode?: FormValidationMode | undefined;\n\t/**\n\t * Validation errors returned externally (e.g. from server submission).\n\t * Keys correspond to `<Field.Root>`'s `name` attribute; values are the\n\t * error(s) for that field.\n\t */\n\terrors?: FormErrors | undefined;\n\t/**\n\t * Called when the consumer submits the form AND every registered field\n\t * passed validation. The native submit event is passed through — the\n\t * consumer is free to call `preventDefault()` as needed.\n\t */\n\tonSubmit?: JSX.EventHandler<HTMLFormElement, SubmitEvent> | undefined;\n\t/**\n\t * Called when submission is blocked because one or more registered\n\t * fields failed validation. Base UI already calls `preventDefault()` on\n\t * the submit event before invoking this handler.\n\t */\n\tonSubmitValidationFailed?:\n\t\t| ((event: SubmitEvent, invalidFields: FormFieldEntry[]) => void)\n\t\t| undefined;\n}\n\n/**\n * A native `<form>` element that coordinates cross-field validation with\n * any `<Field.Root>` descendants.\n *\n * On native submit:\n *   1. Flip `submitAttemptedRef.current` to `true`.\n *   2. Iterate `formRef.current.fields` and call each field's `validate`.\n *   3. If any field reports `validityData.state.valid === false`, call\n *      `preventDefault()` on the submit event and invoke\n *      `onSubmitValidationFailed`.\n *   4. Otherwise pass the event through to the consumer's `onSubmit`.\n *\n * On native reset: clear the internal error map and reset\n * `submitAttemptedRef`.\n *\n * Documentation: [Base UI Form](https://base-ui.com/react/components/form)\n */\nexport function Form(props: FormProps): JSX.Element {\n\t// `props.errors` can change across renders. We surface an internal\n\t// accessor so consumers of `FormContext.errors` re-run when the external\n\t// prop changes OR when we clear entries locally (e.g. via\n\t// `clearErrors(name)` on reset).\n\t//\n\t// Starting value comes from the current prop. `useValueChanged` below\n\t// mirrors later changes of the external prop into this signal — the\n\t// clear-errors handler writes into it too, so we own it outright.\n\t//\n\t// `ownedWrite: true` because we write the initial mirrored value from\n\t// `useValueChanged`'s apply callback (unowned — fine) AND from the\n\t// native reset handler (event scope — fine); the opt-in only exists to\n\t// silence the dev guard uniformly.\n\t//\n\t// The option is `ownedWrite` (Solid's runtime name — the migration doc\n\t// calls it `ownedWrite` but the actual API is `ownedWrite`). Used here\n\t// because the clear-errors handler and the reset handler both want to\n\t// write into this from inside owned-like scopes (event scope is\n\t// unowned, but Solid's guard is conservative). Matches the pattern\n\t// from `render-element.tsx` for the host-element signal.\n\t// Initial value is a body-time snapshot — `useValueChanged` below\n\t// mirrors `props.errors` changes into this signal, so the seed read\n\t// is intentionally non-tracking.\n\tconst [errors, setErrorsSignal] = createSignal<FormErrors>(\n\t\tuntrack(() => props.errors ?? {}),\n\t\t{ ownedWrite: true },\n\t);\n\n\tconst errorsAccessor: () => FormErrors = () => errors();\n\n\t// Mirror external `errors` prop changes into the internal signal. The\n\t// apply callback runs in unowned scope per `useValueChanged`'s contract\n\t// so the write is safe.\n\tuseValueChanged(\n\t\t() => props.errors,\n\t\t() => {\n\t\t\tsetErrorsSignal(props.errors ?? {});\n\t\t},\n\t);\n\n\t// Plain mutable refs — identity is stable for the `<Form>`'s lifetime\n\t// and never flows through the reactive graph. Each `<Form>` instance\n\t// gets its own fresh `fields` map; this is what prevents cross-instance\n\t// leaks from the shared `NOOP_FORM_CONTEXT` sentinel.\n\tconst formRef: FormContextValue[\"formRef\"] = {\n\t\tcurrent: { fields: new Map() },\n\t};\n\tconst submitAttemptedRef: FormContextValue[\"submitAttemptedRef\"] = {\n\t\tcurrent: false,\n\t};\n\n\tconst setErrors = (next: FormErrors): void => {\n\t\tsetErrorsSignal(next);\n\t};\n\n\t// `clearErrors` is a stable trampoline so long-lived consumers (fields\n\t// stashing the handler in a registration record) don't get stale\n\t// closures. The inner function sees the current `errors()` snapshot on\n\t// each invocation.\n\tconst clearErrors = createStableCallback<(name: string | undefined) => void>(\n\t\t() => (name: string | undefined) => {\n\t\t\tif (name === undefined) {\n\t\t\t\tsetErrorsSignal({});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst current = errors();\n\t\t\tif (!Object.hasOwn(current, name)) return;\n\t\t\tconst next = { ...current };\n\t\t\tdelete next[name];\n\t\t\tsetErrorsSignal(next);\n\t\t},\n\t);\n\n\tconst validationMode = (): FormValidationMode =>\n\t\tprops.validationMode ?? \"onSubmit\";\n\n\tconst contextValue: FormContextValue = {\n\t\tformRef,\n\t\terrors: errorsAccessor,\n\t\tsetErrors,\n\t\tclearErrors,\n\t\tvalidationMode,\n\t\tsubmitAttemptedRef,\n\t\tpresent: true,\n\t};\n\n\t// Wrap consumer-supplied handlers so fields that capture the trampoline\n\t// at mount time always dispatch to the latest prop closure.\n\tconst onSubmitCallback = createStableCallback<\n\t\tNonNullable<FormProps[\"onSubmit\"]>\n\t>(() => props.onSubmit);\n\tconst onSubmitValidationFailedCallback = createStableCallback<\n\t\tNonNullable<FormProps[\"onSubmitValidationFailed\"]>\n\t>(() => props.onSubmitValidationFailed);\n\n\t// The native submit handler. Runs in event scope (unowned) so all\n\t// writes are safe — this is the single orchestration point between\n\t// native form submit and the field registry.\n\t//\n\t// Sync vs async: each field's `validate()` returns `void` for sync\n\t// validators (writes already landed) or `Promise<void>` for async\n\t// validators (`zod.parseAsync`, async refinements, server-side\n\t// checks). When ALL fields are sync we keep React-parity sync\n\t// behaviour; when ANY field is async we `preventDefault` upfront,\n\t// `Promise.all` the pending validators, then read validity and\n\t// dispatch. The async branch is the path that lets server-side\n\t// validation gate submission cleanly.\n\tconst finishSubmit = (\n\t\tevent: SubmitEvent & {\n\t\t\tcurrentTarget: HTMLFormElement;\n\t\t\ttarget: Element;\n\t\t},\n\t): void => {\n\t\tconst invalidFields = Array.from(formRef.current.fields.values()).filter(\n\t\t\t(field) => field.validityData.state.valid === false,\n\t\t);\n\n\t\tif (invalidFields.length > 0) {\n\t\t\tif (!event.defaultPrevented) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\t// Match React's `SubmitOnInvalid` behavior: focus the first invalid\n\t\t\t// control (in DOM order) so keyboard users land on the field that\n\t\t\t// blocked the submit. Happens BEFORE dispatching to the consumer's\n\t\t\t// `onSubmitValidationFailed` so the handler sees the focused state\n\t\t\t// if it inspects `document.activeElement`.\n\t\t\tfocusInvalidControl(\n\t\t\t\tfirstInvalidInDomOrder(invalidFields)?.controlRef.current ?? null,\n\t\t\t);\n\t\t\tonSubmitValidationFailedCallback(event, invalidFields);\n\t\t\treturn;\n\t\t}\n\n\t\tonSubmitCallback(event);\n\t};\n\n\tconst handleSubmit: JSX.EventHandler<HTMLFormElement, SubmitEvent> = (\n\t\tevent,\n\t) => {\n\t\tsubmitAttemptedRef.current = true;\n\n\t\tconst fields = Array.from(formRef.current.fields.values());\n\t\tconst pending: Promise<void>[] = [];\n\t\tfor (const field of fields) {\n\t\t\tconst r = field.validate(true);\n\t\t\tif (r) pending.push(r);\n\t\t}\n\n\t\tif (pending.length === 0) {\n\t\t\t// All-sync path: identical to the React-parity behavior. Keeps\n\t\t\t// native form auto-submission alive when validation passes and\n\t\t\t// the consumer doesn't `preventDefault` themselves.\n\t\t\tfinishSubmit(event);\n\t\t\treturn;\n\t\t}\n\n\t\t// At least one async validator is in flight. Native auto-submission\n\t\t// must be cancelled NOW (before crossing the microtask boundary)\n\t\t// because the default action runs synchronously after this handler\n\t\t// returns. The Promise.all chain then runs in a microtask, by which\n\t\t// point native submission is no longer reachable for `event`.\n\t\tevent.preventDefault();\n\t\tvoid Promise.all(pending).then(() => finishSubmit(event));\n\t};\n\n\tconst handleReset: JSX.EventHandler<HTMLFormElement, Event> = () => {\n\t\tsetErrorsSignal({});\n\t\tsubmitAttemptedRef.current = false;\n\t};\n\n\t// Strip our own API props (and `as`) before spreading user HTML attrs.\n\t// `children` is stripped because our provider wrapper owns the children\n\t// subtree below. `onSubmit` is stripped because our chained handler is\n\t// the sole submit handler — `createStableCallback` already dispatches to\n\t// the latest consumer closure.\n\tconst userStyling = resolveClassStyle(props, () => ({}));\n\n\tconst userHtmlProps = omit(\n\t\tprops,\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\t\t\"as\",\n\t\t\"children\",\n\t\t\"errors\",\n\t\t\"validationMode\",\n\t\t\"onSubmit\",\n\t\t\"onSubmitValidationFailed\",\n\t) as Record<string, unknown>;\n\n\tconst internalProps = {\n\t\tnoValidate: true,\n\t\tonSubmit: handleSubmit,\n\t\tonReset: handleReset,\n\t};\n\n\tconst styledUserProps = mergeRootProps(userStyling, userHtmlProps);\n\n\tconst merged = mergeRootProps(internalProps, styledUserProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"form\");\n\treturn (\n\t\t<Tag {...merged}>\n\t\t\t<FormContext value={contextValue}>{props.children}</FormContext>\n\t\t</Tag>\n\t);\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,YAAY,EAAEC,IAAI,EAAEC,OAAO,QAAQ,UAAU;AAEtD,SACCC,WAAW,QAIL,2BAA2B;AAClC,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,oBAAoB,QAAQ,iCAAiC;AAEtE,SAASC,eAAe,QAAQ,mCAAmC;;AAEnE;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAACC,OAA2B,EAAQ;EAC/D,IAAI,CAACA,OAAO,EAAE;EACdA,OAAO,CAACC,KAAK,CAAC,CAAC;EACf,IAAID,OAAO,CAACE,OAAO,KAAK,OAAO,EAAE;IAC/BF,OAAO,CAAsBG,MAAM,CAAC,CAAC;EACvC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAC9BC,aAAwC,EACX;EAC7B,IAAIA,aAAa,CAACC,MAAM,KAAK,CAAC,EAAE,OAAOC,SAAS;EAChD,IAAIF,aAAa,CAACC,MAAM,KAAK,CAAC,EAAE,OAAOD,aAAa,CAAC,CAAC,CAAC;EAEvD,IAAIG,IAAI,GAAGH,aAAa,CAAC,CAAC,CAAC;EAC3B,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,aAAa,CAACC,MAAM,EAAEG,CAAC,EAAE,EAAE;IAC9C,MAAMC,SAAS,GAAGL,aAAa,CAACI,CAAC,CAAC;IAClC,MAAME,CAAC,GAAGH,IAAI,EAAEI,UAAU,CAACC,OAAO;IAClC,MAAMC,CAAC,GAAGJ,SAAS,EAAEE,UAAU,CAACC,OAAO;IACvC,IAAI,CAACF,CAAC,IAAI,CAACG,CAAC,EAAE;IACd;IACA;IACA,MAAMC,QAAQ,GAAGJ,CAAC,CAACK,uBAAuB,CAACF,CAAC,CAAC;IAC7C,IAAIC,QAAQ,GAAG,IAAI,EAAE;MACpBP,IAAI,GAAGE,SAAS;IACjB;EACD;EACA,OAAOF,IAAI;AACZ;;AAMA;AACA;AACA;AACA;;AAqCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,IAAIA,CAACC,KAAgB,EAAe;EACnD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,CAACC,MAAM,EAAEC,eAAe,CAAC,GAAG7B,YAAY,CAC7CE,OAAO,CAAC,MAAMyB,KAAK,CAACC,MAAM,IAAI,CAAC,CAAC,CAAC,EACjC;IAAEE,UAAU,EAAE;EAAK,CACpB,CAAC;EAED,MAAMC,cAAgC,GAAGA,CAAA,KAAMH,MAAM,CAAC,CAAC;;EAEvD;EACA;EACA;EACArB,eAAe,CACd,MAAMoB,KAAK,CAACC,MAAM,EAClB,MAAM;IACLC,eAAe,CAACF,KAAK,CAACC,MAAM,IAAI,CAAC,CAAC,CAAC;EACpC,CACD,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAMI,OAAoC,GAAG;IAC5CV,OAAO,EAAE;MAAEW,MAAM,EAAE,IAAIC,GAAG,CAAC;IAAE;EAC9B,CAAC;EACD,MAAMC,kBAA0D,GAAG;IAClEb,OAAO,EAAE;EACV,CAAC;EAED,MAAMc,SAAS,GAAIC,IAAgB,IAAW;IAC7CR,eAAe,CAACQ,IAAI,CAAC;EACtB,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAMC,WAAW,GAAGhC,oBAAoB,CACvC,MAAOiC,IAAwB,IAAK;IACnC,IAAIA,IAAI,KAAKvB,SAAS,EAAE;MACvBa,eAAe,CAAC,CAAC,CAAC,CAAC;MACnB;IACD;IACA,MAAMP,OAAO,GAAGM,MAAM,CAAC,CAAC;IACxB,IAAI,CAACY,MAAM,CAACC,MAAM,CAACnB,OAAO,EAAEiB,IAAI,CAAC,EAAE;IACnC,MAAMF,IAAI,GAAG;MAAE,GAAGf;IAAQ,CAAC;IAC3B,OAAOe,IAAI,CAACE,IAAI,CAAC;IACjBV,eAAe,CAACQ,IAAI,CAAC;EACtB,CACD,CAAC;EAED,MAAMK,cAAc,GAAGA,CAAA,KACtBf,KAAK,CAACe,cAAc,IAAI,UAAU;EAEnC,MAAMC,YAA8B,GAAG;IACtCX,OAAO;IACPJ,MAAM,EAAEG,cAAc;IACtBK,SAAS;IACTE,WAAW;IACXI,cAAc;IACdP,kBAAkB;IAClBS,OAAO,EAAE;EACV,CAAC;;EAED;EACA;EACA,MAAMC,gBAAgB,GAAGvC,oBAAoB,CAE3C,MAAMqB,KAAK,CAACmB,QAAQ,CAAC;EACvB,MAAMC,gCAAgC,GAAGzC,oBAAoB,CAE3D,MAAMqB,KAAK,CAACqB,wBAAwB,CAAC;;EAEvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,YAAY,GACjBC,KAGC,IACS;IACV,MAAMpC,aAAa,GAAGqC,KAAK,CAACC,IAAI,CAACpB,OAAO,CAACV,OAAO,CAACW,MAAM,CAACoB,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,CACtEC,KAAK,IAAKA,KAAK,CAACC,YAAY,CAACC,KAAK,CAACC,KAAK,KAAK,KAC/C,CAAC;IAED,IAAI5C,aAAa,CAACC,MAAM,GAAG,CAAC,EAAE;MAC7B,IAAI,CAACmC,KAAK,CAACS,gBAAgB,EAAE;QAC5BT,KAAK,CAACU,cAAc,CAAC,CAAC;MACvB;MACA;MACA;MACA;MACA;MACA;MACApD,mBAAmB,CAClBK,sBAAsB,CAACC,aAAa,CAAC,EAAEO,UAAU,CAACC,OAAO,IAAI,IAC9D,CAAC;MACDyB,gCAAgC,CAACG,KAAK,EAAEpC,aAAa,CAAC;MACtD;IACD;IAEA+B,gBAAgB,CAACK,KAAK,CAAC;EACxB,CAAC;EAED,MAAMW,YAA4D,GACjEX,KAAK,IACD;IACJf,kBAAkB,CAACb,OAAO,GAAG,IAAI;IAEjC,MAAMW,MAAM,GAAGkB,KAAK,CAACC,IAAI,CAACpB,OAAO,CAACV,OAAO,CAACW,MAAM,CAACoB,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAMS,OAAwB,GAAG,EAAE;IACnC,KAAK,MAAMP,KAAK,IAAItB,MAAM,EAAE;MAC3B,MAAM8B,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAAC,IAAI,CAAC;MAC9B,IAAID,CAAC,EAAED,OAAO,CAACG,IAAI,CAACF,CAAC,CAAC;IACvB;IAEA,IAAID,OAAO,CAAC/C,MAAM,KAAK,CAAC,EAAE;MACzB;MACA;MACA;MACAkC,YAAY,CAACC,KAAK,CAAC;MACnB;IACD;;IAEA;IACA;IACA;IACA;IACA;IACAA,KAAK,CAACU,cAAc,CAAC,CAAC;IACtB,KAAKM,OAAO,CAACC,GAAG,CAACL,OAAO,CAAC,CAACM,IAAI,CAAC,MAAMnB,YAAY,CAACC,KAAK,CAAC,CAAC;EAC1D,CAAC;EAED,MAAMmB,WAAqD,GAAGA,CAAA,KAAM;IACnExC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnBM,kBAAkB,CAACb,OAAO,GAAG,KAAK;EACnC,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA,MAAMgD,WAAW,GAAGjE,iBAAiB,CAACsB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAExD,MAAM4C,aAAa,GAAGtE,IAAI,CACzB0B,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,0BACD,CAA4B;EAE5B,MAAM6C,aAAa,GAAG;IACrBC,UAAU,EAAE,IAAI;IAChB3B,QAAQ,EAAEe,YAAY;IACtBa,OAAO,EAAEL;EACV,CAAC;EAED,MAAMM,eAAe,GAAGvE,cAAc,CAACkE,WAAW,EAAEC,aAAa,CAAC;EAElE,MAAMK,MAAM,GAAGxE,cAAc,CAACoE,aAAa,EAAEG,eAAe,CAAC;EAE7D,MAAME,GAAG,GAAG9E,OAAO,CAAC,MAAM4B,KAAK,CAACmD,EAAE,IAAI,MAAM,CAAC;EAC7C,OACC,CAAC,GAAG,CAAC,IAAIF,MAAM,CAAC;AAClB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAACjC,YAAY,CAAC,CAAC,CAAChB,KAAK,CAACoD,QAAQ,CAAC,EAAE,WAAW;AAClE,EAAE,EAAE,GAAG,CAAC;AAER","ignoreList":[]}