diff --git a/packages/core/sdk/src/connections.test.ts b/packages/core/sdk/src/connections.test.ts index eb8a52ba8..fccb2ec89 100644 --- a/packages/core/sdk/src/connections.test.ts +++ b/packages/core/sdk/src/connections.test.ts @@ -11,6 +11,7 @@ import { Predicate, Result, Schema, + Tracer, } from "effect"; import { @@ -3124,3 +3125,120 @@ describe("health probe gate key integrity", () => { }), ); }); + +// --------------------------------------------------------------------------- +// Flip telemetry on the health span. `previous_status` + `changed` record +// which verdict a check REPLACED, so flapping (healthy↔degraded oscillation) +// is a queryable dimension instead of a per-connection diff over consecutive +// spans; `reason` carries the enumerable failure mechanism where the free-text +// `detail` can never go. Asserted through the span because the span IS the +// deliverable: nothing else user-visible changes. +// --------------------------------------------------------------------------- + +/** Records every span the program opens, so stamped attributes can be read + * back (same pattern as the MCP plugin's telemetry tests). */ +const recordingTracer = (spans: Array) => + Tracer.make({ + span: (options) => { + const span = new Tracer.NativeSpan(options); + spans.push(span); + return span; + }, + context: (primitive, fiber) => primitive["~effect/Effect/evaluate"](fiber), + }); + +describe("connections.checkHealth flip telemetry", () => { + const REF = { + owner: "org", + integration: INTEG, + name: ConnectionName.make("main"), + } as const; + + const lastHealthSpan = (spans: ReadonlyArray): Tracer.NativeSpan => { + const matches = spans.filter((span) => span.name === "executor.connection.health.check"); + const last = matches[matches.length - 1]; + expect(last).toBeDefined(); + // SAFETY: the expect above fails the test before this narrows undefined. + return last as Tracer.NativeSpan; + }; + + it.effect("stamps previous_status + changed=true when a probe replaces a verdict", () => + Effect.gen(function* () { + const spans: Array = []; + const { executor, stamp } = yield* makeHealthHarness(); + yield* stamp({ + last_health: { status: "degraded", checkedAt: Date.now() - STALE_MS, detail: "HTTP 502" }, + }); + + const result = yield* executor.connections + .checkHealth(REF) + .pipe(Effect.provideService(Tracer.Tracer, recordingTracer(spans))); + expect(result.status).toBe("healthy"); + + const span = lastHealthSpan(spans); + expect(span.attributes.get("executor.health.status")).toBe("healthy"); + expect(span.attributes.get("executor.health.previous_status")).toBe("degraded"); + expect(span.attributes.get("executor.health.changed")).toBe(true); + }), + ); + + it.effect("stamps changed=false when a probe reconfirms the persisted verdict", () => + Effect.gen(function* () { + const spans: Array = []; + const { executor, stamp } = yield* makeHealthHarness(); + yield* stamp({ + last_health: { status: "healthy", checkedAt: Date.now() - STALE_MS, detail: "probe ok" }, + }); + + yield* executor.connections + .checkHealth(REF) + .pipe(Effect.provideService(Tracer.Tracer, recordingTracer(spans))); + + const span = lastHealthSpan(spans); + expect(span.attributes.get("executor.health.previous_status")).toBe("healthy"); + expect(span.attributes.get("executor.health.changed")).toBe(false); + }), + ); + + it.effect("stamps neither flip key on a first-ever verdict", () => + Effect.gen(function* () { + const spans: Array = []; + const { executor } = yield* makeHealthHarness(); + + yield* executor.connections + .checkHealth(REF) + .pipe(Effect.provideService(Tracer.Tracer, recordingTracer(spans))); + + // Never-checked is not a flip: a fleet-wide first probe must not read + // as a wave of changes. + const span = lastHealthSpan(spans); + expect(span.attributes.has("executor.health.previous_status")).toBe(false); + expect(span.attributes.has("executor.health.changed")).toBe(false); + }), + ); + + it.effect("stamps the probe's reason on the span and persists it on the row", () => + Effect.gen(function* () { + const spans: Array = []; + const { executor, persisted } = yield* makeHealthHarness({ + probe: Effect.sync(() => ({ + status: "degraded" as const, + checkedAt: Date.now(), + detail: "upstream deadline exceeded", + reason: "probe_timeout" as const, + })), + }); + + const result = yield* executor.connections + .checkHealth(REF) + .pipe(Effect.provideService(Tracer.Tracer, recordingTracer(spans))); + expect(result.reason).toBe("probe_timeout"); + + const span = lastHealthSpan(spans); + expect(span.attributes.get("executor.health.reason")).toBe("probe_timeout"); + + const row = yield* persisted(); + expect(row?.lastHealth?.reason).toBe("probe_timeout"); + }), + ); +}); diff --git a/packages/core/sdk/src/errors.ts b/packages/core/sdk/src/errors.ts index 9922287f7..a732dcc14 100644 --- a/packages/core/sdk/src/errors.ts +++ b/packages/core/sdk/src/errors.ts @@ -228,6 +228,13 @@ export class CredentialResolutionError extends Schema.TaggedErrorClass >; +const decodeHealthCheckReasonOption = Schema.decodeUnknownOption(HealthCheckReason); + +/** The recorded dead-grant mechanism, narrowed to a literal this build knows; + * an absent or unrecognized value reads as undefined. */ +const recordedDeadGrantReason = ( + reauthState: OAuthReauthRequiredState, +): HealthCheckReason | undefined => + Option.getOrUndefined(decodeHealthCheckReasonOption(reauthState.oauthReauthRequiredReason)); + // In-flight health probes, shared per connection across every executor holding // the same root db handle. Read-time revalidation makes `connections.list` a // probe trigger, so N concurrent readers past the freshness gate must collapse @@ -986,6 +1002,18 @@ const healthProbeGateFor = (rootDb: object): HealthProbeGate => { const healthProbeGateKey = (tenant: string, row: ConnectionRow): string => JSON.stringify([tenant, row.owner, row.subject, row.integration, row.name]); +/** The enumerable mechanism behind a credential-resolution failure, read + * off the error's structural fields — never the message. Admin policy and + * missing-material failures are NOT refresh rejections: no authorization + * server refused anything, and aggregating them under + * `credential_refresh_rejected` would misattribute the incident. */ +const credentialFailureReason = (failure: CredentialResolutionError): HealthCheckReason => + failure.blockedByAdmin === true + ? "blocked_by_admin" + : failure.credentialMissing === true + ? "credential_missing" + : "credential_refresh_rejected"; + /** The verdict a recorded dead grant answers every health read with. The * persisted `expired` verdict (written together with the dead-grant * state) is served as-is; a row whose verdict a racing writer buried (or @@ -995,14 +1023,24 @@ const deadGrantVerdict = ( reauthState: OAuthReauthRequiredState, row: ConnectionRow, ): HealthCheckResult => { + // The mechanism recorded WITH the dead grant; older records carry none and + // read as a refresh rejection, which is what recording a dead grant meant + // before the mechanism was stored. + const recorded = recordedDeadGrantReason(reauthState) ?? "credential_refresh_rejected"; const cached = Option.getOrNull(decodeLastHealth(row.last_health)); - if (cached !== null && cached.status === "expired") return cached; + // Backfill the mechanism onto verdicts persisted before `reason` existed + // (or by writers that omit it) — otherwise every pre-existing dead grant + // would present reasonless spans indefinitely. + if (cached !== null && cached.status === "expired") { + return cached.reason !== undefined ? cached : { ...cached, reason: recorded }; + } return { status: "expired", checkedAt: reauthState.oauthReauthRequiredAt, detail: reauthState.oauthReauthRequiredDetail ?? "The authorization server rejected this connection's refresh token (invalid_grant). Reconnect to continue.", + reason: recorded, }; }; @@ -2122,6 +2160,10 @@ export const createExecutor = => { const existingState = decodeJsonColumn(row.provider_state); const mergedState = @@ -2132,6 +2174,7 @@ export const createExecutor = CredentialResolutionError; + readonly reauth: ( + message: string, + options?: { readonly credentialMissing?: boolean }, + ) => CredentialResolutionError; }): Effect.Effect => Effect.gen(function* () { const { row, provider, client } = input; const owner = row.owner as Owner; const state = enterpriseManagedStateFrom(decodeJsonColumn(row.provider_state)); + // All four are missing-MATERIAL failures: nothing was sent upstream + // and no server refused anything, so they classify `credential_missing`. if (state === null) { return yield* input.reauth( "This connection is missing its enterprise-managed authorization settings. Reconnect to continue.", + { credentialMissing: true }, ); } const idpRow = yield* loadOAuthClientRow(state.idpClientOwner, state.idpClient); if (!idpRow) { return yield* input.reauth( `The enterprise identity provider OAuth app "${state.idpClient}" is no longer registered.`, + { credentialMissing: true }, ); } if (!row.refresh_item_id) { return yield* input.reauth( "No enterprise identity assertion is stored for this connection.", + { + credentialMissing: true, + }, ); } const subjectToken = yield* provider.get(ProviderItemId.make(row.refresh_item_id)); if (!subjectToken) { return yield* input.reauth( "The stored enterprise identity assertion could not be resolved.", + { + credentialMissing: true, + }, ); } const idpClientSecret = idpRow.client_secret_item_id @@ -2342,7 +2404,7 @@ export const createExecutor = Predicate.isTagged(error, "CredentialResolutionError") && error.reauthRequired === true ? // oxlint-disable-next-line executor/no-unknown-error-message -- boundary: CredentialResolutionError carries a typed `message` field - markRefreshGrantDead(row, error.message) + markRefreshGrantDead(row, error.message, credentialFailureReason(error)) : Effect.void, ), ); @@ -2366,13 +2428,18 @@ export const createExecutor = => Effect.gen(function* () { const owner = row.owner as Owner; - const reauth = (message: string): CredentialResolutionError => + const reauth = ( + message: string, + options?: { readonly credentialMissing?: boolean; readonly blockedByAdmin?: boolean }, + ): CredentialResolutionError => new CredentialResolutionError({ owner, integration: IntegrationSlug.make(row.integration), name: ConnectionName.make(row.name), message, reauthRequired: true, + ...(options?.credentialMissing === true ? { credentialMissing: true } : {}), + ...(options?.blockedByAdmin === true ? { blockedByAdmin: true } : {}), }); // A recorded invalid_grant is the AS's standing verdict on this grant: @@ -2395,7 +2462,13 @@ export const createExecutor = ({ + const toolSyncHealth = (cause: string): HealthCheckResult => ({ status: "degraded", checkedAt: Date.now(), - detail: `${toolSyncHealthDetailPrefix}: ${reason}`, + detail: `${toolSyncHealthDetailPrefix}: ${cause}`, + reason: "tool_sync_failed", }); const syncHealthReason = (result: ResolveToolsResult): string => @@ -4353,12 +4433,14 @@ export const createExecutor = => Effect.annotateCurrentSpan({ "executor.health.status": result.status, @@ -4434,6 +4532,13 @@ export const createExecutor = {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to2, from2, except, desc) => {\n if (from2 && typeof from2 === \"object\" || typeof from2 === \"function\") {\n for (let key of __getOwnPropNames(from2))\n if (!__hasOwnProp.call(to2, key) && key !== except)\n __defProp(to2, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });\n }\n return to2;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n ));\n\n // ../../../node_modules/.bun/react@19.2.5/node_modules/react/cjs/react.production.js\n var require_react_production = __commonJS({\n \"../../../node_modules/.bun/react@19.2.5/node_modules/react/cjs/react.production.js\"(exports) {\n \"use strict\";\n var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.transitional.element\");\n var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for(\"react.profiler\");\n var REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for(\"react.consumer\");\n var REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense\");\n var REACT_MEMO_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for(\"react.lazy\");\n var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for(\"react.activity\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n var ReactNoopUpdateQueue = {\n isMounted: function() {\n return false;\n },\n enqueueForceUpdate: function() {\n },\n enqueueReplaceState: function() {\n },\n enqueueSetState: function() {\n }\n };\n var assign2 = Object.assign;\n var emptyObject = {};\n function Component2(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n Component2.prototype.isReactComponent = {};\n Component2.prototype.setState = function(partialState, callback) {\n if (\"object\" !== typeof partialState && \"function\" !== typeof partialState && null != partialState)\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component2.prototype.forceUpdate = function(callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n function ComponentDummy() {\n }\n ComponentDummy.prototype = Component2.prototype;\n function PureComponent6(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n var pureComponentPrototype = PureComponent6.prototype = new ComponentDummy();\n pureComponentPrototype.constructor = PureComponent6;\n assign2(pureComponentPrototype, Component2.prototype);\n pureComponentPrototype.isPureReactComponent = true;\n var isArrayImpl = Array.isArray;\n function noop7() {\n }\n var ReactSharedInternals = { H: null, A: null, T: null, S: null };\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n function ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type,\n key,\n ref: void 0 !== refProp ? refProp : null,\n props\n };\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n }\n function isValidElement27(object) {\n return \"object\" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return \"$\" + key.replace(/[=:]/g, function(match2) {\n return escaperLookup[match2];\n });\n }\n var userProvidedKeyEscapeRegex = /\\/+/g;\n function getElementKey(element, index2) {\n return \"object\" === typeof element && null !== element && null != element.key ? escape(\"\" + element.key) : index2.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\"string\" === typeof thenable.status ? thenable.then(noop7, noop7) : (thenable.status = \"pending\", thenable.then(\n function(fulfilledValue) {\n \"pending\" === thenable.status && (thenable.status = \"fulfilled\", thenable.value = fulfilledValue);\n },\n function(error) {\n \"pending\" === thenable.status && (thenable.status = \"rejected\", thenable.reason = error);\n }\n )), thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array2, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = false;\n if (null === children) invokeCallback = true;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = true;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n break;\n case REACT_LAZY_TYPE:\n return invokeCallback = children._init, mapIntoArray(\n invokeCallback(children._payload),\n array2,\n escapedPrefix,\n nameSoFar,\n callback\n );\n }\n }\n if (invokeCallback)\n return callback = callback(children), invokeCallback = \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar, isArrayImpl(callback) ? (escapedPrefix = \"\", null != invokeCallback && (escapedPrefix = invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"), mapIntoArray(callback, array2, escapedPrefix, \"\", function(c2) {\n return c2;\n })) : null != callback && (isValidElement27(callback) && (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix + (null == callback.key || children && children.key === callback.key ? \"\" : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") + invokeCallback\n )), array2.push(callback)), 1;\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n nameSoFar = children[i], type = nextNamePrefix + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(\n nameSoFar,\n array2,\n escapedPrefix,\n type,\n callback\n );\n else if (i = getIteratorFn(children), \"function\" === typeof i)\n for (children = i.call(children), i = 0; !(nameSoFar = children.next()).done; )\n nameSoFar = nameSoFar.value, type = nextNamePrefix + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(\n nameSoFar,\n array2,\n escapedPrefix,\n type,\n callback\n );\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array2,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array2 = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" + (\"[object Object]\" === array2 ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\" : array2) + \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [], count3 = 0;\n mapIntoArray(children, result, \"\", \"\", function(child) {\n return func.call(context, child, count3++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function(moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n payload._status = 1, payload._result = moduleObject;\n },\n function(error) {\n if (0 === payload._status || -1 === payload._status)\n payload._status = 2, payload._result = error;\n }\n );\n -1 === payload._status && (payload._status = 0, payload._result = ctor);\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n }\n var reportGlobalError = \"function\" === typeof reportError ? reportError : function(error) {\n if (\"object\" === typeof window && \"function\" === typeof window.ErrorEvent) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: true,\n cancelable: true,\n message: \"object\" === typeof error && null !== error && \"string\" === typeof error.message ? String(error.message) : String(error),\n error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\"object\" === typeof process && \"function\" === typeof process.emit) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\n var Children8 = {\n map: mapChildren,\n forEach: function(children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function() {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function(children) {\n var n = 0;\n mapChildren(children, function() {\n n++;\n });\n return n;\n },\n toArray: function(children) {\n return mapChildren(children, function(child) {\n return child;\n }) || [];\n },\n only: function(children) {\n if (!isValidElement27(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = Children8;\n exports.Component = Component2;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent6;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;\n exports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function(size4) {\n return ReactSharedInternals.H.useMemoCache(size4);\n }\n };\n exports.cache = function(fn) {\n return function() {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function() {\n return null;\n };\n exports.cloneElement = function(element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign2({}, element.props), key = element.key;\n if (null != config)\n for (propName in void 0 !== config.key && (key = \"\" + config.key), config)\n !hasOwnProperty.call(config, propName) || \"key\" === propName || \"__self\" === propName || \"__source\" === propName || \"ref\" === propName && void 0 === config.ref || (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n };\n exports.createContext = function(defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n };\n exports.createElement = function(type, config, children) {\n var propName, props = {}, key = null;\n if (null != config)\n for (propName in void 0 !== config.key && (key = \"\" + config.key), config)\n hasOwnProperty.call(config, propName) && \"key\" !== propName && \"__self\" !== propName && \"__source\" !== propName && (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in childrenLength = type.defaultProps, childrenLength)\n void 0 === props[propName] && (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n };\n exports.createRef = function() {\n return { current: null };\n };\n exports.forwardRef = function(render2) {\n return { $$typeof: REACT_FORWARD_REF_TYPE2, render: render2 };\n };\n exports.isValidElement = isValidElement27;\n exports.lazy = function(ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n };\n exports.memo = function(type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE2,\n type,\n compare: void 0 === compare ? null : compare\n };\n };\n exports.startTransition = function(scope) {\n var prevTransition = ReactSharedInternals.T, currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue && null !== returnValue && \"function\" === typeof returnValue.then && returnValue.then(noop7, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition && null !== currentTransition.types && (prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;\n }\n };\n exports.unstable_useCacheRefresh = function() {\n return ReactSharedInternals.H.useCacheRefresh();\n };\n exports.use = function(usable) {\n return ReactSharedInternals.H.use(usable);\n };\n exports.useActionState = function(action, initialState15, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState15, permalink);\n };\n exports.useCallback = function(callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n };\n exports.useContext = function(Context) {\n return ReactSharedInternals.H.useContext(Context);\n };\n exports.useDebugValue = function() {\n };\n exports.useDeferredValue = function(value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n };\n exports.useEffect = function(create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n };\n exports.useEffectEvent = function(callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n };\n exports.useId = function() {\n return ReactSharedInternals.H.useId();\n };\n exports.useImperativeHandle = function(ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function(create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function(create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n };\n exports.useMemo = function(create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n };\n exports.useOptimistic = function(passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function(reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n };\n exports.useRef = function(initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n };\n exports.useState = function(initialState15) {\n return ReactSharedInternals.H.useState(initialState15);\n };\n exports.useSyncExternalStore = function(subscribe2, getSnapshot, getServerSnapshot) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe2,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function() {\n return ReactSharedInternals.H.useTransition();\n };\n exports.version = \"19.2.5\";\n }\n });\n\n // ../../../node_modules/.bun/react@19.2.5/node_modules/react/index.js\n var require_react = __commonJS({\n \"../../../node_modules/.bun/react@19.2.5/node_modules/react/index.js\"(exports, module) {\n \"use strict\";\n if (true) {\n module.exports = require_react_production();\n } else {\n module.exports = null;\n }\n }\n });\n\n // ../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom.production.js\n var require_react_dom_production = __commonJS({\n \"../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom.production.js\"(exports) {\n \"use strict\";\n var React134 = require_react();\n function formatProdErrorMessage3(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return \"Minified React error #\" + code + \"; visit \" + url + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n }\n function noop7() {\n }\n var Internals = {\n d: {\n f: noop7,\n r: function() {\n throw Error(formatProdErrorMessage3(522));\n },\n D: noop7,\n C: noop7,\n L: noop7,\n m: noop7,\n X: noop7,\n S: noop7,\n M: noop7\n },\n p: 0,\n findDOMNode: null\n };\n var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\n function createPortal$1(children, containerInfo, implementation) {\n var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children,\n containerInfo,\n implementation\n };\n }\n var ReactSharedInternals = React134.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n function getCrossOriginStringAs(as, input2) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input2)\n return \"use-credentials\" === input2 ? input2 : \"\";\n }\n exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;\n exports.createPortal = function(children, container) {\n var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType)\n throw Error(formatProdErrorMessage3(299));\n return createPortal$1(children, container, null, key);\n };\n exports.flushSync = function(fn) {\n var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;\n try {\n if (ReactSharedInternals.T = null, Internals.p = 2, fn) return fn();\n } finally {\n ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f();\n }\n };\n exports.preconnect = function(href, options2) {\n \"string\" === typeof href && (options2 ? (options2 = options2.crossOrigin, options2 = \"string\" === typeof options2 ? \"use-credentials\" === options2 ? options2 : \"\" : void 0) : options2 = null, Internals.d.C(href, options2));\n };\n exports.prefetchDNS = function(href) {\n \"string\" === typeof href && Internals.d.D(href);\n };\n exports.preinit = function(href, options2) {\n if (\"string\" === typeof href && options2 && \"string\" === typeof options2.as) {\n var as = options2.as, crossOrigin = getCrossOriginStringAs(as, options2.crossOrigin), integrity = \"string\" === typeof options2.integrity ? options2.integrity : void 0, fetchPriority = \"string\" === typeof options2.fetchPriority ? options2.fetchPriority : void 0;\n \"style\" === as ? Internals.d.S(\n href,\n \"string\" === typeof options2.precedence ? options2.precedence : void 0,\n {\n crossOrigin,\n integrity,\n fetchPriority\n }\n ) : \"script\" === as && Internals.d.X(href, {\n crossOrigin,\n integrity,\n fetchPriority,\n nonce: \"string\" === typeof options2.nonce ? options2.nonce : void 0\n });\n }\n };\n exports.preinitModule = function(href, options2) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options2 && null !== options2) {\n if (null == options2.as || \"script\" === options2.as) {\n var crossOrigin = getCrossOriginStringAs(\n options2.as,\n options2.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin,\n integrity: \"string\" === typeof options2.integrity ? options2.integrity : void 0,\n nonce: \"string\" === typeof options2.nonce ? options2.nonce : void 0\n });\n }\n } else null == options2 && Internals.d.M(href);\n };\n exports.preload = function(href, options2) {\n if (\"string\" === typeof href && \"object\" === typeof options2 && null !== options2 && \"string\" === typeof options2.as) {\n var as = options2.as, crossOrigin = getCrossOriginStringAs(as, options2.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin,\n integrity: \"string\" === typeof options2.integrity ? options2.integrity : void 0,\n nonce: \"string\" === typeof options2.nonce ? options2.nonce : void 0,\n type: \"string\" === typeof options2.type ? options2.type : void 0,\n fetchPriority: \"string\" === typeof options2.fetchPriority ? options2.fetchPriority : void 0,\n referrerPolicy: \"string\" === typeof options2.referrerPolicy ? options2.referrerPolicy : void 0,\n imageSrcSet: \"string\" === typeof options2.imageSrcSet ? options2.imageSrcSet : void 0,\n imageSizes: \"string\" === typeof options2.imageSizes ? options2.imageSizes : void 0,\n media: \"string\" === typeof options2.media ? options2.media : void 0\n });\n }\n };\n exports.preloadModule = function(href, options2) {\n if (\"string\" === typeof href)\n if (options2) {\n var crossOrigin = getCrossOriginStringAs(options2.as, options2.crossOrigin);\n Internals.d.m(href, {\n as: \"string\" === typeof options2.as && \"script\" !== options2.as ? options2.as : void 0,\n crossOrigin,\n integrity: \"string\" === typeof options2.integrity ? options2.integrity : void 0\n });\n } else Internals.d.m(href);\n };\n exports.requestFormReset = function(form) {\n Internals.d.r(form);\n };\n exports.unstable_batchedUpdates = function(fn, a2) {\n return fn(a2);\n };\n exports.useFormState = function(action, initialState15, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState15, permalink);\n };\n exports.useFormStatus = function() {\n return ReactSharedInternals.H.useHostTransitionStatus();\n };\n exports.version = \"19.2.5\";\n }\n });\n\n // ../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/index.js\n var require_react_dom = __commonJS({\n \"../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/index.js\"(exports, module) {\n \"use strict\";\n function checkDCE() {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === \"undefined\" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== \"function\") {\n return;\n }\n if (false) {\n throw new Error(\"^_^\");\n }\n try {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n console.error(err);\n }\n }\n if (true) {\n checkDCE();\n module.exports = require_react_dom_production();\n } else {\n module.exports = null;\n }\n }\n });\n\n // ../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js\n var require_react_dom_server_legacy_browser_production = __commonJS({\n \"../../../node_modules/.bun/react-dom@19.2.5+3f10a4be4e334a9b/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js\"(exports) {\n \"use strict\";\n var React134 = require_react();\n var ReactDOM5 = require_react_dom();\n function formatProdErrorMessage3(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return \"Minified React error #\" + code + \"; visit \" + url + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n }\n var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.transitional.element\");\n var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for(\"react.profiler\");\n var REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for(\"react.consumer\");\n var REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for(\"react.context\");\n var REACT_FORWARD_REF_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE2 = /* @__PURE__ */ Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for(\"react.lazy\");\n var REACT_SCOPE_TYPE = /* @__PURE__ */ Symbol.for(\"react.scope\");\n var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for(\"react.activity\");\n var REACT_LEGACY_HIDDEN_TYPE = /* @__PURE__ */ Symbol.for(\"react.legacy_hidden\");\n var REACT_MEMO_CACHE_SENTINEL = /* @__PURE__ */ Symbol.for(\"react.memo_cache_sentinel\");\n var REACT_VIEW_TRANSITION_TYPE = /* @__PURE__ */ Symbol.for(\"react.view_transition\");\n var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n var isArrayImpl = Array.isArray;\n function murmurhash3_32_gc(key, seed2) {\n var remainder = key.length & 3;\n var bytes = key.length - remainder;\n var h1 = seed2;\n for (seed2 = 0; seed2 < bytes; ) {\n var k1 = key.charCodeAt(seed2) & 255 | (key.charCodeAt(++seed2) & 255) << 8 | (key.charCodeAt(++seed2) & 255) << 16 | (key.charCodeAt(++seed2) & 255) << 24;\n ++seed2;\n k1 = 3432918353 * (k1 & 65535) + ((3432918353 * (k1 >>> 16) & 65535) << 16) & 4294967295;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = 461845907 * (k1 & 65535) + ((461845907 * (k1 >>> 16) & 65535) << 16) & 4294967295;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = 5 * (h1 & 65535) + ((5 * (h1 >>> 16) & 65535) << 16) & 4294967295;\n h1 = (h1 & 65535) + 27492 + (((h1 >>> 16) + 58964 & 65535) << 16);\n }\n k1 = 0;\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(seed2 + 2) & 255) << 16;\n case 2:\n k1 ^= (key.charCodeAt(seed2 + 1) & 255) << 8;\n case 1:\n k1 ^= key.charCodeAt(seed2) & 255, k1 = 3432918353 * (k1 & 65535) + ((3432918353 * (k1 >>> 16) & 65535) << 16) & 4294967295, k1 = k1 << 15 | k1 >>> 17, h1 ^= 461845907 * (k1 & 65535) + ((461845907 * (k1 >>> 16) & 65535) << 16) & 4294967295;\n }\n h1 ^= key.length;\n h1 ^= h1 >>> 16;\n h1 = 2246822507 * (h1 & 65535) + ((2246822507 * (h1 >>> 16) & 65535) << 16) & 4294967295;\n h1 ^= h1 >>> 13;\n h1 = 3266489909 * (h1 & 65535) + ((3266489909 * (h1 >>> 16) & 65535) << 16) & 4294967295;\n return (h1 ^ h1 >>> 16) >>> 0;\n }\n var assign2 = Object.assign;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n );\n var illegalAttributeNameCache = {};\n var validatedAttributeNameCache = {};\n function isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return true;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return false;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return validatedAttributeNameCache[attributeName] = true;\n illegalAttributeNameCache[attributeName] = true;\n return false;\n }\n var unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n );\n var aliases = /* @__PURE__ */ new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]);\n var matchHtmlRegExp = /[\"'&<>]/;\n function escapeTextForBrowser(text) {\n if (\"boolean\" === typeof text || \"number\" === typeof text || \"bigint\" === typeof text)\n return \"\" + text;\n text = \"\" + text;\n var match2 = matchHtmlRegExp.exec(text);\n if (match2) {\n var html = \"\", index2, lastIndex = 0;\n for (index2 = match2.index; index2 < text.length; index2++) {\n switch (text.charCodeAt(index2)) {\n case 34:\n match2 = \""\";\n break;\n case 38:\n match2 = \"&\";\n break;\n case 39:\n match2 = \"'\";\n break;\n case 60:\n match2 = \"<\";\n break;\n case 62:\n match2 = \">\";\n break;\n default:\n continue;\n }\n lastIndex !== index2 && (html += text.slice(lastIndex, index2));\n lastIndex = index2 + 1;\n html += match2;\n }\n text = lastIndex !== index2 ? html + text.slice(lastIndex, index2) : html;\n }\n return text;\n }\n var uppercasePattern = /([A-Z])/g;\n var msPattern = /^ms-/;\n var isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\n function sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url) ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\" : url;\n }\n var ReactSharedInternals = React134.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n var ReactDOMSharedInternals = ReactDOM5.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n var sharedNotPendingObject = {\n pending: false,\n data: null,\n method: null,\n action: null\n };\n var previousDispatcher = ReactDOMSharedInternals.d;\n ReactDOMSharedInternals.d = {\n f: previousDispatcher.f,\n r: previousDispatcher.r,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n };\n var PRELOAD_NO_CREDS = [];\n var currentlyFlushingRenderState = null;\n var scriptRegex = /(<\\/|<)(s)(cript)/gi;\n function scriptReplacer(match2, prefix3, s2, suffix3) {\n return \"\" + prefix3 + (\"s\" === s2 ? \"\\\\u0073\" : \"\\\\u0053\") + suffix3;\n }\n function createResumableState(identifierPrefix, externalRuntimeConfig, bootstrapScriptContent, bootstrapScripts, bootstrapModules) {\n return {\n idPrefix: void 0 === identifierPrefix ? \"\" : identifierPrefix,\n nextFormID: 0,\n streamingFormat: 0,\n bootstrapScriptContent,\n bootstrapScripts,\n bootstrapModules,\n instructions: 0,\n hasBody: false,\n hasHtml: false,\n unknownResources: {},\n dnsResources: {},\n connectResources: { default: {}, anonymous: {}, credentials: {} },\n imageResources: {},\n styleResources: {},\n scriptResources: {},\n moduleUnknownResources: {},\n moduleScriptResources: {}\n };\n }\n function createFormatContext(insertionMode, selectedValue, tagScope, viewTransition) {\n return {\n insertionMode,\n selectedValue,\n tagScope,\n viewTransition\n };\n }\n function getChildFormatContext(parentContext, type, props) {\n var subtreeScope = parentContext.tagScope & -25;\n switch (type) {\n case \"noscript\":\n return createFormatContext(2, null, subtreeScope | 1, null);\n case \"select\":\n return createFormatContext(\n 2,\n null != props.value ? props.value : props.defaultValue,\n subtreeScope,\n null\n );\n case \"svg\":\n return createFormatContext(4, null, subtreeScope, null);\n case \"picture\":\n return createFormatContext(2, null, subtreeScope | 2, null);\n case \"math\":\n return createFormatContext(5, null, subtreeScope, null);\n case \"foreignObject\":\n return createFormatContext(2, null, subtreeScope, null);\n case \"table\":\n return createFormatContext(6, null, subtreeScope, null);\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n return createFormatContext(7, null, subtreeScope, null);\n case \"colgroup\":\n return createFormatContext(9, null, subtreeScope, null);\n case \"tr\":\n return createFormatContext(8, null, subtreeScope, null);\n case \"head\":\n if (2 > parentContext.insertionMode)\n return createFormatContext(3, null, subtreeScope, null);\n break;\n case \"html\":\n if (0 === parentContext.insertionMode)\n return createFormatContext(1, null, subtreeScope, null);\n }\n return 6 <= parentContext.insertionMode || 2 > parentContext.insertionMode ? createFormatContext(2, null, subtreeScope, null) : parentContext.tagScope !== subtreeScope ? createFormatContext(\n parentContext.insertionMode,\n parentContext.selectedValue,\n subtreeScope,\n null\n ) : parentContext;\n }\n function getSuspenseViewTransition(parentViewTransition) {\n return null === parentViewTransition ? null : {\n update: parentViewTransition.update,\n enter: \"none\",\n exit: \"none\",\n share: parentViewTransition.update,\n name: parentViewTransition.autoName,\n autoName: parentViewTransition.autoName,\n nameIdx: 0\n };\n }\n function getSuspenseFallbackFormatContext(resumableState, parentContext) {\n parentContext.tagScope & 32 && (resumableState.instructions |= 128);\n return createFormatContext(\n parentContext.insertionMode,\n parentContext.selectedValue,\n parentContext.tagScope | 12,\n getSuspenseViewTransition(parentContext.viewTransition)\n );\n }\n function getSuspenseContentFormatContext(resumableState, parentContext) {\n resumableState = getSuspenseViewTransition(parentContext.viewTransition);\n var subtreeScope = parentContext.tagScope | 16;\n null !== resumableState && \"none\" !== resumableState.share && (subtreeScope |= 64);\n return createFormatContext(\n parentContext.insertionMode,\n parentContext.selectedValue,\n subtreeScope,\n resumableState\n );\n }\n var styleNameCache = /* @__PURE__ */ new Map();\n function pushStyleAttribute(target, style) {\n if (\"object\" !== typeof style) throw Error(formatProdErrorMessage3(62));\n var isFirst = true, styleName;\n for (styleName in style)\n if (hasOwnProperty.call(style, styleName)) {\n var styleValue = style[styleName];\n if (null != styleValue && \"boolean\" !== typeof styleValue && \"\" !== styleValue) {\n if (0 === styleName.indexOf(\"--\")) {\n var nameChunk = escapeTextForBrowser(styleName);\n styleValue = escapeTextForBrowser((\"\" + styleValue).trim());\n } else\n nameChunk = styleNameCache.get(styleName), void 0 === nameChunk && (nameChunk = escapeTextForBrowser(\n styleName.replace(uppercasePattern, \"-$1\").toLowerCase().replace(msPattern, \"-ms-\")\n ), styleNameCache.set(styleName, nameChunk)), styleValue = \"number\" === typeof styleValue ? 0 === styleValue || unitlessNumbers.has(styleName) ? \"\" + styleValue : styleValue + \"px\" : escapeTextForBrowser((\"\" + styleValue).trim());\n isFirst ? (isFirst = false, target.push(' style=\"', nameChunk, \":\", styleValue)) : target.push(\";\", nameChunk, \":\", styleValue);\n }\n }\n isFirst || target.push('\"');\n }\n function pushBooleanAttribute(target, name, value) {\n value && \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"\"');\n }\n function pushStringAttribute(target, name, value) {\n \"function\" !== typeof value && \"symbol\" !== typeof value && \"boolean\" !== typeof value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n }\n var actionJavaScriptURL = escapeTextForBrowser(\n \"javascript:throw new Error('React form unexpectedly submitted.')\"\n );\n function pushAdditionalFormField(value, key) {\n this.push('\");\n }\n function validateAdditionalFormField(value) {\n if (\"string\" !== typeof value) throw Error(formatProdErrorMessage3(480));\n }\n function getCustomFormFields(resumableState, formAction) {\n if (\"function\" === typeof formAction.$$FORM_ACTION) {\n var id = resumableState.nextFormID++;\n resumableState = resumableState.idPrefix + id;\n try {\n var customFields = formAction.$$FORM_ACTION(resumableState);\n if (customFields) {\n var formData = customFields.data;\n null != formData && formData.forEach(validateAdditionalFormField);\n }\n return customFields;\n } catch (x2) {\n if (\"object\" === typeof x2 && null !== x2 && \"function\" === typeof x2.then)\n throw x2;\n }\n }\n return null;\n }\n function pushFormActionAttribute(target, resumableState, renderState, formAction, formEncType, formMethod, formTarget, name) {\n var formData = null;\n if (\"function\" === typeof formAction) {\n var customFields = getCustomFormFields(resumableState, formAction);\n null !== customFields ? (name = customFields.name, formAction = customFields.action || \"\", formEncType = customFields.encType, formMethod = customFields.method, formTarget = customFields.target, formData = customFields.data) : (target.push(\" \", \"formAction\", '=\"', actionJavaScriptURL, '\"'), formTarget = formMethod = formEncType = formAction = name = null, injectFormReplayingRuntime(resumableState, renderState));\n }\n null != name && pushAttribute(target, \"name\", name);\n null != formAction && pushAttribute(target, \"formAction\", formAction);\n null != formEncType && pushAttribute(target, \"formEncType\", formEncType);\n null != formMethod && pushAttribute(target, \"formMethod\", formMethod);\n null != formTarget && pushAttribute(target, \"formTarget\", formTarget);\n return formData;\n }\n function pushAttribute(target, name, value) {\n switch (name) {\n case \"className\":\n pushStringAttribute(target, \"class\", value);\n break;\n case \"tabIndex\":\n pushStringAttribute(target, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n pushStringAttribute(target, name, value);\n break;\n case \"style\":\n pushStyleAttribute(target, value);\n break;\n case \"src\":\n case \"href\":\n if (\"\" === value) break;\n case \"action\":\n case \"formAction\":\n if (null == value || \"function\" === typeof value || \"symbol\" === typeof value || \"boolean\" === typeof value)\n break;\n value = sanitizeURL(\"\" + value);\n target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"autoFocus\":\n case \"multiple\":\n case \"muted\":\n pushBooleanAttribute(target, name.toLowerCase(), value);\n break;\n case \"xlinkHref\":\n if (\"function\" === typeof value || \"symbol\" === typeof value || \"boolean\" === typeof value)\n break;\n value = sanitizeURL(\"\" + value);\n target.push(\" \", \"xlink:href\", '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"\"');\n break;\n case \"capture\":\n case \"download\":\n true === value ? target.push(\" \", name, '=\"\"') : false !== value && \"function\" !== typeof value && \"symbol\" !== typeof value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n \"function\" !== typeof value && \"symbol\" !== typeof value && !isNaN(value) && 1 <= value && target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"rowSpan\":\n case \"start\":\n \"function\" === typeof value || \"symbol\" === typeof value || isNaN(value) || target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n break;\n case \"xlinkActuate\":\n pushStringAttribute(target, \"xlink:actuate\", value);\n break;\n case \"xlinkArcrole\":\n pushStringAttribute(target, \"xlink:arcrole\", value);\n break;\n case \"xlinkRole\":\n pushStringAttribute(target, \"xlink:role\", value);\n break;\n case \"xlinkShow\":\n pushStringAttribute(target, \"xlink:show\", value);\n break;\n case \"xlinkTitle\":\n pushStringAttribute(target, \"xlink:title\", value);\n break;\n case \"xlinkType\":\n pushStringAttribute(target, \"xlink:type\", value);\n break;\n case \"xmlBase\":\n pushStringAttribute(target, \"xml:base\", value);\n break;\n case \"xmlLang\":\n pushStringAttribute(target, \"xml:lang\", value);\n break;\n case \"xmlSpace\":\n pushStringAttribute(target, \"xml:space\", value);\n break;\n default:\n if (!(2 < name.length) || \"o\" !== name[0] && \"O\" !== name[0] || \"n\" !== name[1] && \"N\" !== name[1]) {\n if (name = aliases.get(name) || name, isAttributeNameSafe(name)) {\n switch (typeof value) {\n case \"function\":\n case \"symbol\":\n return;\n case \"boolean\":\n var prefix$8 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) return;\n }\n target.push(\" \", name, '=\"', escapeTextForBrowser(value), '\"');\n }\n }\n }\n }\n function pushInnerHTML(target, innerHTML, children) {\n if (null != innerHTML) {\n if (null != children) throw Error(formatProdErrorMessage3(60));\n if (\"object\" !== typeof innerHTML || !(\"__html\" in innerHTML))\n throw Error(formatProdErrorMessage3(61));\n innerHTML = innerHTML.__html;\n null !== innerHTML && void 0 !== innerHTML && target.push(\"\" + innerHTML);\n }\n }\n function flattenOptionChildren(children) {\n var content = \"\";\n React134.Children.forEach(children, function(child) {\n null != child && (content += child);\n });\n return content;\n }\n function injectFormReplayingRuntime(resumableState, renderState) {\n if (0 === (resumableState.instructions & 16)) {\n resumableState.instructions |= 16;\n var preamble = renderState.preamble, bootstrapChunks = renderState.bootstrapChunks;\n (preamble.htmlChunks || preamble.headChunks) && 0 === bootstrapChunks.length ? (bootstrapChunks.push(renderState.startInlineScript), pushCompletedShellIdAttribute(bootstrapChunks, resumableState), bootstrapChunks.push(\n \">\",\n `addEventListener(\"submit\",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute(\"formAction\");null!=f&&(e=f,b=null)}\"javascript:throw new Error('React form unexpectedly submitted.')\"===e&&(a.preventDefault(),b?(a=document.createElement(\"input\"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,\n \"<\\/script>\"\n )) : bootstrapChunks.unshift(\n renderState.startInlineScript,\n \">\",\n `addEventListener(\"submit\",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute(\"formAction\");null!=f&&(e=f,b=null)}\"javascript:throw new Error('React form unexpectedly submitted.')\"===e&&(a.preventDefault(),b?(a=document.createElement(\"input\"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});`,\n \"<\\/script>\"\n );\n }\n }\n function pushLinkImpl(target, props) {\n target.push(startChunkForTag(\"link\"));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(399, \"link\"));\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\"/>\");\n return null;\n }\n var styleRegex = /(<\\/|<)(s)(tyle)/gi;\n function styleReplacer(match2, prefix3, s2, suffix3) {\n return \"\" + prefix3 + (\"s\" === s2 ? \"\\\\73 \" : \"\\\\53 \") + suffix3;\n }\n function pushSelfClosing(target, props, tag) {\n target.push(startChunkForTag(tag));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(399, tag));\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\"/>\");\n return null;\n }\n function pushTitleImpl(target, props) {\n target.push(startChunkForTag(\"title\"));\n var children = null, innerHTML = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n props = Array.isArray(children) ? 2 > children.length ? children[0] : null : children;\n \"function\" !== typeof props && \"symbol\" !== typeof props && null !== props && void 0 !== props && target.push(escapeTextForBrowser(\"\" + props));\n pushInnerHTML(target, innerHTML, children);\n target.push(endChunkForTag(\"title\"));\n return null;\n }\n function pushScriptImpl(target, props) {\n target.push(startChunkForTag(\"script\"));\n var children = null, innerHTML = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n pushInnerHTML(target, innerHTML, children);\n \"string\" === typeof children && target.push((\"\" + children).replace(scriptRegex, scriptReplacer));\n target.push(endChunkForTag(\"script\"));\n return null;\n }\n function pushStartSingletonElement(target, props, tag) {\n target.push(startChunkForTag(tag));\n var innerHTML = tag = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n tag = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n pushInnerHTML(target, innerHTML, tag);\n return tag;\n }\n function pushStartGenericElement(target, props, tag) {\n target.push(startChunkForTag(tag));\n var innerHTML = tag = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n tag = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(\">\");\n pushInnerHTML(target, innerHTML, tag);\n return \"string\" === typeof tag ? (target.push(escapeTextForBrowser(tag)), null) : tag;\n }\n var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/;\n var validatedTagCache = /* @__PURE__ */ new Map();\n function startChunkForTag(tag) {\n var tagStartChunk = validatedTagCache.get(tag);\n if (void 0 === tagStartChunk) {\n if (!VALID_TAG_REGEX.test(tag))\n throw Error(formatProdErrorMessage3(65, tag));\n tagStartChunk = \"<\" + tag;\n validatedTagCache.set(tag, tagStartChunk);\n }\n return tagStartChunk;\n }\n function pushStartInstance(target$jscomp$0, type, props, resumableState, renderState, preambleState, hoistableState, formatContext, textEmbedded) {\n switch (type) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n break;\n case \"a\":\n target$jscomp$0.push(startChunkForTag(\"a\"));\n var children = null, innerHTML = null, propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n case \"href\":\n \"\" === propValue ? pushStringAttribute(target$jscomp$0, \"href\", \"\") : pushAttribute(target$jscomp$0, propKey, propValue);\n break;\n default:\n pushAttribute(target$jscomp$0, propKey, propValue);\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML, children);\n if (\"string\" === typeof children) {\n target$jscomp$0.push(escapeTextForBrowser(children));\n var JSCompiler_inline_result = null;\n } else JSCompiler_inline_result = children;\n return JSCompiler_inline_result;\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"select\":\n target$jscomp$0.push(startChunkForTag(\"select\"));\n var children$jscomp$0 = null, innerHTML$jscomp$0 = null, propKey$jscomp$0;\n for (propKey$jscomp$0 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$0)) {\n var propValue$jscomp$0 = props[propKey$jscomp$0];\n if (null != propValue$jscomp$0)\n switch (propKey$jscomp$0) {\n case \"children\":\n children$jscomp$0 = propValue$jscomp$0;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$0 = propValue$jscomp$0;\n break;\n case \"defaultValue\":\n case \"value\":\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$0,\n propValue$jscomp$0\n );\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$0, children$jscomp$0);\n return children$jscomp$0;\n case \"option\":\n var selectedValue = formatContext.selectedValue;\n target$jscomp$0.push(startChunkForTag(\"option\"));\n var children$jscomp$1 = null, value = null, selected = null, innerHTML$jscomp$1 = null, propKey$jscomp$1;\n for (propKey$jscomp$1 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$1)) {\n var propValue$jscomp$1 = props[propKey$jscomp$1];\n if (null != propValue$jscomp$1)\n switch (propKey$jscomp$1) {\n case \"children\":\n children$jscomp$1 = propValue$jscomp$1;\n break;\n case \"selected\":\n selected = propValue$jscomp$1;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$1 = propValue$jscomp$1;\n break;\n case \"value\":\n value = propValue$jscomp$1;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$1,\n propValue$jscomp$1\n );\n }\n }\n if (null != selectedValue) {\n var stringValue = null !== value ? \"\" + value : flattenOptionChildren(children$jscomp$1);\n if (isArrayImpl(selectedValue))\n for (var i = 0; i < selectedValue.length; i++) {\n if (\"\" + selectedValue[i] === stringValue) {\n target$jscomp$0.push(' selected=\"\"');\n break;\n }\n }\n else\n \"\" + selectedValue === stringValue && target$jscomp$0.push(' selected=\"\"');\n } else selected && target$jscomp$0.push(' selected=\"\"');\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$1, children$jscomp$1);\n return children$jscomp$1;\n case \"textarea\":\n target$jscomp$0.push(startChunkForTag(\"textarea\"));\n var value$jscomp$0 = null, defaultValue = null, children$jscomp$2 = null, propKey$jscomp$2;\n for (propKey$jscomp$2 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$2)) {\n var propValue$jscomp$2 = props[propKey$jscomp$2];\n if (null != propValue$jscomp$2)\n switch (propKey$jscomp$2) {\n case \"children\":\n children$jscomp$2 = propValue$jscomp$2;\n break;\n case \"value\":\n value$jscomp$0 = propValue$jscomp$2;\n break;\n case \"defaultValue\":\n defaultValue = propValue$jscomp$2;\n break;\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(91));\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$2,\n propValue$jscomp$2\n );\n }\n }\n null === value$jscomp$0 && null !== defaultValue && (value$jscomp$0 = defaultValue);\n target$jscomp$0.push(\">\");\n if (null != children$jscomp$2) {\n if (null != value$jscomp$0) throw Error(formatProdErrorMessage3(92));\n if (isArrayImpl(children$jscomp$2)) {\n if (1 < children$jscomp$2.length)\n throw Error(formatProdErrorMessage3(93));\n value$jscomp$0 = \"\" + children$jscomp$2[0];\n }\n value$jscomp$0 = \"\" + children$jscomp$2;\n }\n \"string\" === typeof value$jscomp$0 && \"\\n\" === value$jscomp$0[0] && target$jscomp$0.push(\"\\n\");\n null !== value$jscomp$0 && target$jscomp$0.push(escapeTextForBrowser(\"\" + value$jscomp$0));\n return null;\n case \"input\":\n target$jscomp$0.push(startChunkForTag(\"input\"));\n var name = null, formAction = null, formEncType = null, formMethod = null, formTarget = null, value$jscomp$1 = null, defaultValue$jscomp$0 = null, checked = null, defaultChecked = null, propKey$jscomp$3;\n for (propKey$jscomp$3 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$3)) {\n var propValue$jscomp$3 = props[propKey$jscomp$3];\n if (null != propValue$jscomp$3)\n switch (propKey$jscomp$3) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(399, \"input\"));\n case \"name\":\n name = propValue$jscomp$3;\n break;\n case \"formAction\":\n formAction = propValue$jscomp$3;\n break;\n case \"formEncType\":\n formEncType = propValue$jscomp$3;\n break;\n case \"formMethod\":\n formMethod = propValue$jscomp$3;\n break;\n case \"formTarget\":\n formTarget = propValue$jscomp$3;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$jscomp$3;\n break;\n case \"defaultValue\":\n defaultValue$jscomp$0 = propValue$jscomp$3;\n break;\n case \"checked\":\n checked = propValue$jscomp$3;\n break;\n case \"value\":\n value$jscomp$1 = propValue$jscomp$3;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$3,\n propValue$jscomp$3\n );\n }\n }\n var formData = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction,\n formEncType,\n formMethod,\n formTarget,\n name\n );\n null !== checked ? pushBooleanAttribute(target$jscomp$0, \"checked\", checked) : null !== defaultChecked && pushBooleanAttribute(target$jscomp$0, \"checked\", defaultChecked);\n null !== value$jscomp$1 ? pushAttribute(target$jscomp$0, \"value\", value$jscomp$1) : null !== defaultValue$jscomp$0 && pushAttribute(target$jscomp$0, \"value\", defaultValue$jscomp$0);\n target$jscomp$0.push(\"/>\");\n null != formData && formData.forEach(pushAdditionalFormField, target$jscomp$0);\n return null;\n case \"button\":\n target$jscomp$0.push(startChunkForTag(\"button\"));\n var children$jscomp$3 = null, innerHTML$jscomp$2 = null, name$jscomp$0 = null, formAction$jscomp$0 = null, formEncType$jscomp$0 = null, formMethod$jscomp$0 = null, formTarget$jscomp$0 = null, propKey$jscomp$4;\n for (propKey$jscomp$4 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$4)) {\n var propValue$jscomp$4 = props[propKey$jscomp$4];\n if (null != propValue$jscomp$4)\n switch (propKey$jscomp$4) {\n case \"children\":\n children$jscomp$3 = propValue$jscomp$4;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$2 = propValue$jscomp$4;\n break;\n case \"name\":\n name$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formAction\":\n formAction$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formEncType\":\n formEncType$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formMethod\":\n formMethod$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formTarget\":\n formTarget$jscomp$0 = propValue$jscomp$4;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$4,\n propValue$jscomp$4\n );\n }\n }\n var formData$jscomp$0 = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction$jscomp$0,\n formEncType$jscomp$0,\n formMethod$jscomp$0,\n formTarget$jscomp$0,\n name$jscomp$0\n );\n target$jscomp$0.push(\">\");\n null != formData$jscomp$0 && formData$jscomp$0.forEach(pushAdditionalFormField, target$jscomp$0);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$2, children$jscomp$3);\n if (\"string\" === typeof children$jscomp$3) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$3));\n var JSCompiler_inline_result$jscomp$0 = null;\n } else JSCompiler_inline_result$jscomp$0 = children$jscomp$3;\n return JSCompiler_inline_result$jscomp$0;\n case \"form\":\n target$jscomp$0.push(startChunkForTag(\"form\"));\n var children$jscomp$4 = null, innerHTML$jscomp$3 = null, formAction$jscomp$1 = null, formEncType$jscomp$1 = null, formMethod$jscomp$1 = null, formTarget$jscomp$1 = null, propKey$jscomp$5;\n for (propKey$jscomp$5 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$5)) {\n var propValue$jscomp$5 = props[propKey$jscomp$5];\n if (null != propValue$jscomp$5)\n switch (propKey$jscomp$5) {\n case \"children\":\n children$jscomp$4 = propValue$jscomp$5;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$3 = propValue$jscomp$5;\n break;\n case \"action\":\n formAction$jscomp$1 = propValue$jscomp$5;\n break;\n case \"encType\":\n formEncType$jscomp$1 = propValue$jscomp$5;\n break;\n case \"method\":\n formMethod$jscomp$1 = propValue$jscomp$5;\n break;\n case \"target\":\n formTarget$jscomp$1 = propValue$jscomp$5;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$5,\n propValue$jscomp$5\n );\n }\n }\n var formData$jscomp$1 = null, formActionName = null;\n if (\"function\" === typeof formAction$jscomp$1) {\n var customFields = getCustomFormFields(\n resumableState,\n formAction$jscomp$1\n );\n null !== customFields ? (formAction$jscomp$1 = customFields.action || \"\", formEncType$jscomp$1 = customFields.encType, formMethod$jscomp$1 = customFields.method, formTarget$jscomp$1 = customFields.target, formData$jscomp$1 = customFields.data, formActionName = customFields.name) : (target$jscomp$0.push(\n \" \",\n \"action\",\n '=\"',\n actionJavaScriptURL,\n '\"'\n ), formTarget$jscomp$1 = formMethod$jscomp$1 = formEncType$jscomp$1 = formAction$jscomp$1 = null, injectFormReplayingRuntime(resumableState, renderState));\n }\n null != formAction$jscomp$1 && pushAttribute(target$jscomp$0, \"action\", formAction$jscomp$1);\n null != formEncType$jscomp$1 && pushAttribute(target$jscomp$0, \"encType\", formEncType$jscomp$1);\n null != formMethod$jscomp$1 && pushAttribute(target$jscomp$0, \"method\", formMethod$jscomp$1);\n null != formTarget$jscomp$1 && pushAttribute(target$jscomp$0, \"target\", formTarget$jscomp$1);\n target$jscomp$0.push(\">\");\n null !== formActionName && (target$jscomp$0.push('\"), null != formData$jscomp$1 && formData$jscomp$1.forEach(pushAdditionalFormField, target$jscomp$0));\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$3, children$jscomp$4);\n if (\"string\" === typeof children$jscomp$4) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$4));\n var JSCompiler_inline_result$jscomp$1 = null;\n } else JSCompiler_inline_result$jscomp$1 = children$jscomp$4;\n return JSCompiler_inline_result$jscomp$1;\n case \"menuitem\":\n target$jscomp$0.push(startChunkForTag(\"menuitem\"));\n for (var propKey$jscomp$6 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$6)) {\n var propValue$jscomp$6 = props[propKey$jscomp$6];\n if (null != propValue$jscomp$6)\n switch (propKey$jscomp$6) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage3(400));\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$6,\n propValue$jscomp$6\n );\n }\n }\n target$jscomp$0.push(\">\");\n return null;\n case \"object\":\n target$jscomp$0.push(startChunkForTag(\"object\"));\n var children$jscomp$5 = null, innerHTML$jscomp$4 = null, propKey$jscomp$7;\n for (propKey$jscomp$7 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$7)) {\n var propValue$jscomp$7 = props[propKey$jscomp$7];\n if (null != propValue$jscomp$7)\n switch (propKey$jscomp$7) {\n case \"children\":\n children$jscomp$5 = propValue$jscomp$7;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$4 = propValue$jscomp$7;\n break;\n case \"data\":\n var sanitizedValue = sanitizeURL(\"\" + propValue$jscomp$7);\n if (\"\" === sanitizedValue) break;\n target$jscomp$0.push(\n \" \",\n \"data\",\n '=\"',\n escapeTextForBrowser(sanitizedValue),\n '\"'\n );\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$7,\n propValue$jscomp$7\n );\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$4, children$jscomp$5);\n if (\"string\" === typeof children$jscomp$5) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$5));\n var JSCompiler_inline_result$jscomp$2 = null;\n } else JSCompiler_inline_result$jscomp$2 = children$jscomp$5;\n return JSCompiler_inline_result$jscomp$2;\n case \"title\":\n var noscriptTagInScope = formatContext.tagScope & 1, isFallback = formatContext.tagScope & 4;\n if (4 === formatContext.insertionMode || noscriptTagInScope || null != props.itemProp)\n var JSCompiler_inline_result$jscomp$3 = pushTitleImpl(\n target$jscomp$0,\n props\n );\n else\n isFallback ? JSCompiler_inline_result$jscomp$3 = null : (pushTitleImpl(renderState.hoistableChunks, props), JSCompiler_inline_result$jscomp$3 = void 0);\n return JSCompiler_inline_result$jscomp$3;\n case \"link\":\n var noscriptTagInScope$jscomp$0 = formatContext.tagScope & 1, isFallback$jscomp$0 = formatContext.tagScope & 4, rel = props.rel, href = props.href, precedence = props.precedence;\n if (4 === formatContext.insertionMode || noscriptTagInScope$jscomp$0 || null != props.itemProp || \"string\" !== typeof rel || \"string\" !== typeof href || \"\" === href) {\n pushLinkImpl(target$jscomp$0, props);\n var JSCompiler_inline_result$jscomp$4 = null;\n } else if (\"stylesheet\" === props.rel)\n if (\"string\" !== typeof precedence || null != props.disabled || props.onLoad || props.onError)\n JSCompiler_inline_result$jscomp$4 = pushLinkImpl(\n target$jscomp$0,\n props\n );\n else {\n var styleQueue = renderState.styles.get(precedence), resourceState = resumableState.styleResources.hasOwnProperty(href) ? resumableState.styleResources[href] : void 0;\n if (null !== resourceState) {\n resumableState.styleResources[href] = null;\n styleQueue || (styleQueue = {\n precedence: escapeTextForBrowser(precedence),\n rules: [],\n hrefs: [],\n sheets: /* @__PURE__ */ new Map()\n }, renderState.styles.set(precedence, styleQueue));\n var resource = {\n state: 0,\n props: assign2({}, props, {\n \"data-precedence\": props.precedence,\n precedence: null\n })\n };\n if (resourceState) {\n 2 === resourceState.length && adoptPreloadCredentials(resource.props, resourceState);\n var preloadResource = renderState.preloads.stylesheets.get(href);\n preloadResource && 0 < preloadResource.length ? preloadResource.length = 0 : resource.state = 1;\n }\n styleQueue.sheets.set(href, resource);\n hoistableState && hoistableState.stylesheets.add(resource);\n } else if (styleQueue) {\n var resource$9 = styleQueue.sheets.get(href);\n resource$9 && hoistableState && hoistableState.stylesheets.add(resource$9);\n }\n textEmbedded && target$jscomp$0.push(\"\");\n JSCompiler_inline_result$jscomp$4 = null;\n }\n else\n props.onLoad || props.onError ? JSCompiler_inline_result$jscomp$4 = pushLinkImpl(\n target$jscomp$0,\n props\n ) : (textEmbedded && target$jscomp$0.push(\"\"), JSCompiler_inline_result$jscomp$4 = isFallback$jscomp$0 ? null : pushLinkImpl(renderState.hoistableChunks, props));\n return JSCompiler_inline_result$jscomp$4;\n case \"script\":\n var noscriptTagInScope$jscomp$1 = formatContext.tagScope & 1, asyncProp = props.async;\n if (\"string\" !== typeof props.src || !props.src || !asyncProp || \"function\" === typeof asyncProp || \"symbol\" === typeof asyncProp || props.onLoad || props.onError || 4 === formatContext.insertionMode || noscriptTagInScope$jscomp$1 || null != props.itemProp)\n var JSCompiler_inline_result$jscomp$5 = pushScriptImpl(\n target$jscomp$0,\n props\n );\n else {\n var key = props.src;\n if (\"module\" === props.type) {\n var resources = resumableState.moduleScriptResources;\n var preloads = renderState.preloads.moduleScripts;\n } else\n resources = resumableState.scriptResources, preloads = renderState.preloads.scripts;\n var resourceState$jscomp$0 = resources.hasOwnProperty(key) ? resources[key] : void 0;\n if (null !== resourceState$jscomp$0) {\n resources[key] = null;\n var scriptProps = props;\n if (resourceState$jscomp$0) {\n 2 === resourceState$jscomp$0.length && (scriptProps = assign2({}, props), adoptPreloadCredentials(scriptProps, resourceState$jscomp$0));\n var preloadResource$jscomp$0 = preloads.get(key);\n preloadResource$jscomp$0 && (preloadResource$jscomp$0.length = 0);\n }\n var resource$jscomp$0 = [];\n renderState.scripts.add(resource$jscomp$0);\n pushScriptImpl(resource$jscomp$0, scriptProps);\n }\n textEmbedded && target$jscomp$0.push(\"\");\n JSCompiler_inline_result$jscomp$5 = null;\n }\n return JSCompiler_inline_result$jscomp$5;\n case \"style\":\n var noscriptTagInScope$jscomp$2 = formatContext.tagScope & 1, precedence$jscomp$0 = props.precedence, href$jscomp$0 = props.href, nonce = props.nonce;\n if (4 === formatContext.insertionMode || noscriptTagInScope$jscomp$2 || null != props.itemProp || \"string\" !== typeof precedence$jscomp$0 || \"string\" !== typeof href$jscomp$0 || \"\" === href$jscomp$0) {\n target$jscomp$0.push(startChunkForTag(\"style\"));\n var children$jscomp$6 = null, innerHTML$jscomp$5 = null, propKey$jscomp$8;\n for (propKey$jscomp$8 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$8)) {\n var propValue$jscomp$8 = props[propKey$jscomp$8];\n if (null != propValue$jscomp$8)\n switch (propKey$jscomp$8) {\n case \"children\":\n children$jscomp$6 = propValue$jscomp$8;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$5 = propValue$jscomp$8;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$8,\n propValue$jscomp$8\n );\n }\n }\n target$jscomp$0.push(\">\");\n var child = Array.isArray(children$jscomp$6) ? 2 > children$jscomp$6.length ? children$jscomp$6[0] : null : children$jscomp$6;\n \"function\" !== typeof child && \"symbol\" !== typeof child && null !== child && void 0 !== child && target$jscomp$0.push((\"\" + child).replace(styleRegex, styleReplacer));\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$5, children$jscomp$6);\n target$jscomp$0.push(endChunkForTag(\"style\"));\n var JSCompiler_inline_result$jscomp$6 = null;\n } else {\n var styleQueue$jscomp$0 = renderState.styles.get(precedence$jscomp$0);\n if (null !== (resumableState.styleResources.hasOwnProperty(href$jscomp$0) ? resumableState.styleResources[href$jscomp$0] : void 0)) {\n resumableState.styleResources[href$jscomp$0] = null;\n styleQueue$jscomp$0 || (styleQueue$jscomp$0 = {\n precedence: escapeTextForBrowser(precedence$jscomp$0),\n rules: [],\n hrefs: [],\n sheets: /* @__PURE__ */ new Map()\n }, renderState.styles.set(precedence$jscomp$0, styleQueue$jscomp$0));\n var nonceStyle = renderState.nonce.style;\n if (!nonceStyle || nonceStyle === nonce) {\n styleQueue$jscomp$0.hrefs.push(escapeTextForBrowser(href$jscomp$0));\n var target = styleQueue$jscomp$0.rules, children$jscomp$7 = null, innerHTML$jscomp$6 = null, propKey$jscomp$9;\n for (propKey$jscomp$9 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$9)) {\n var propValue$jscomp$9 = props[propKey$jscomp$9];\n if (null != propValue$jscomp$9)\n switch (propKey$jscomp$9) {\n case \"children\":\n children$jscomp$7 = propValue$jscomp$9;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$6 = propValue$jscomp$9;\n }\n }\n var child$jscomp$0 = Array.isArray(children$jscomp$7) ? 2 > children$jscomp$7.length ? children$jscomp$7[0] : null : children$jscomp$7;\n \"function\" !== typeof child$jscomp$0 && \"symbol\" !== typeof child$jscomp$0 && null !== child$jscomp$0 && void 0 !== child$jscomp$0 && target.push(\n (\"\" + child$jscomp$0).replace(styleRegex, styleReplacer)\n );\n pushInnerHTML(target, innerHTML$jscomp$6, children$jscomp$7);\n }\n }\n styleQueue$jscomp$0 && hoistableState && hoistableState.styles.add(styleQueue$jscomp$0);\n textEmbedded && target$jscomp$0.push(\"\");\n JSCompiler_inline_result$jscomp$6 = void 0;\n }\n return JSCompiler_inline_result$jscomp$6;\n case \"meta\":\n var noscriptTagInScope$jscomp$3 = formatContext.tagScope & 1, isFallback$jscomp$1 = formatContext.tagScope & 4;\n if (4 === formatContext.insertionMode || noscriptTagInScope$jscomp$3 || null != props.itemProp)\n var JSCompiler_inline_result$jscomp$7 = pushSelfClosing(\n target$jscomp$0,\n props,\n \"meta\"\n );\n else\n textEmbedded && target$jscomp$0.push(\"\"), JSCompiler_inline_result$jscomp$7 = isFallback$jscomp$1 ? null : \"string\" === typeof props.charSet ? pushSelfClosing(renderState.charsetChunks, props, \"meta\") : \"viewport\" === props.name ? pushSelfClosing(renderState.viewportChunks, props, \"meta\") : pushSelfClosing(renderState.hoistableChunks, props, \"meta\");\n return JSCompiler_inline_result$jscomp$7;\n case \"listing\":\n case \"pre\":\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$8 = null, innerHTML$jscomp$7 = null, propKey$jscomp$10;\n for (propKey$jscomp$10 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$10)) {\n var propValue$jscomp$10 = props[propKey$jscomp$10];\n if (null != propValue$jscomp$10)\n switch (propKey$jscomp$10) {\n case \"children\":\n children$jscomp$8 = propValue$jscomp$10;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$7 = propValue$jscomp$10;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$10,\n propValue$jscomp$10\n );\n }\n }\n target$jscomp$0.push(\">\");\n if (null != innerHTML$jscomp$7) {\n if (null != children$jscomp$8) throw Error(formatProdErrorMessage3(60));\n if (\"object\" !== typeof innerHTML$jscomp$7 || !(\"__html\" in innerHTML$jscomp$7))\n throw Error(formatProdErrorMessage3(61));\n var html = innerHTML$jscomp$7.__html;\n null !== html && void 0 !== html && (\"string\" === typeof html && 0 < html.length && \"\\n\" === html[0] ? target$jscomp$0.push(\"\\n\", html) : target$jscomp$0.push(\"\" + html));\n }\n \"string\" === typeof children$jscomp$8 && \"\\n\" === children$jscomp$8[0] && target$jscomp$0.push(\"\\n\");\n return children$jscomp$8;\n case \"img\":\n var pictureOrNoScriptTagInScope = formatContext.tagScope & 3, src = props.src, srcSet = props.srcSet;\n if (!(\"lazy\" === props.loading || !src && !srcSet || \"string\" !== typeof src && null != src || \"string\" !== typeof srcSet && null != srcSet || \"low\" === props.fetchPriority || pictureOrNoScriptTagInScope) && (\"string\" !== typeof src || \":\" !== src[4] || \"d\" !== src[0] && \"D\" !== src[0] || \"a\" !== src[1] && \"A\" !== src[1] || \"t\" !== src[2] && \"T\" !== src[2] || \"a\" !== src[3] && \"A\" !== src[3]) && (\"string\" !== typeof srcSet || \":\" !== srcSet[4] || \"d\" !== srcSet[0] && \"D\" !== srcSet[0] || \"a\" !== srcSet[1] && \"A\" !== srcSet[1] || \"t\" !== srcSet[2] && \"T\" !== srcSet[2] || \"a\" !== srcSet[3] && \"A\" !== srcSet[3])) {\n null !== hoistableState && formatContext.tagScope & 64 && (hoistableState.suspenseyImages = true);\n var sizes = \"string\" === typeof props.sizes ? props.sizes : void 0, key$jscomp$0 = srcSet ? srcSet + \"\\n\" + (sizes || \"\") : src, promotablePreloads = renderState.preloads.images, resource$jscomp$1 = promotablePreloads.get(key$jscomp$0);\n if (resource$jscomp$1) {\n if (\"high\" === props.fetchPriority || 10 > renderState.highImagePreloads.size)\n promotablePreloads.delete(key$jscomp$0), renderState.highImagePreloads.add(resource$jscomp$1);\n } else if (!resumableState.imageResources.hasOwnProperty(key$jscomp$0)) {\n resumableState.imageResources[key$jscomp$0] = PRELOAD_NO_CREDS;\n var input2 = props.crossOrigin;\n var JSCompiler_inline_result$jscomp$8 = \"string\" === typeof input2 ? \"use-credentials\" === input2 ? input2 : \"\" : void 0;\n var headers = renderState.headers, header;\n headers && 0 < headers.remainingCapacity && \"string\" !== typeof props.srcSet && (\"high\" === props.fetchPriority || 500 > headers.highImagePreloads.length) && (header = getPreloadAsHeader(src, \"image\", {\n imageSrcSet: props.srcSet,\n imageSizes: props.sizes,\n crossOrigin: JSCompiler_inline_result$jscomp$8,\n integrity: props.integrity,\n nonce: props.nonce,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.refererPolicy\n }), 0 <= (headers.remainingCapacity -= header.length + 2)) ? (renderState.resets.image[key$jscomp$0] = PRELOAD_NO_CREDS, headers.highImagePreloads && (headers.highImagePreloads += \", \"), headers.highImagePreloads += header) : (resource$jscomp$1 = [], pushLinkImpl(resource$jscomp$1, {\n rel: \"preload\",\n as: \"image\",\n href: srcSet ? void 0 : src,\n imageSrcSet: srcSet,\n imageSizes: sizes,\n crossOrigin: JSCompiler_inline_result$jscomp$8,\n integrity: props.integrity,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.referrerPolicy\n }), \"high\" === props.fetchPriority || 10 > renderState.highImagePreloads.size ? renderState.highImagePreloads.add(resource$jscomp$1) : (renderState.bulkPreloads.add(resource$jscomp$1), promotablePreloads.set(key$jscomp$0, resource$jscomp$1)));\n }\n }\n return pushSelfClosing(target$jscomp$0, props, \"img\");\n case \"base\":\n case \"area\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n return pushSelfClosing(target$jscomp$0, props, type);\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n break;\n case \"head\":\n if (2 > formatContext.insertionMode) {\n var preamble = preambleState || renderState.preamble;\n if (preamble.headChunks)\n throw Error(formatProdErrorMessage3(545, \"``\"));\n null !== preambleState && target$jscomp$0.push(\"\");\n preamble.headChunks = [];\n var JSCompiler_inline_result$jscomp$9 = pushStartSingletonElement(\n preamble.headChunks,\n props,\n \"head\"\n );\n } else\n JSCompiler_inline_result$jscomp$9 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"head\"\n );\n return JSCompiler_inline_result$jscomp$9;\n case \"body\":\n if (2 > formatContext.insertionMode) {\n var preamble$jscomp$0 = preambleState || renderState.preamble;\n if (preamble$jscomp$0.bodyChunks)\n throw Error(formatProdErrorMessage3(545, \"``\"));\n null !== preambleState && target$jscomp$0.push(\"\");\n preamble$jscomp$0.bodyChunks = [];\n var JSCompiler_inline_result$jscomp$10 = pushStartSingletonElement(\n preamble$jscomp$0.bodyChunks,\n props,\n \"body\"\n );\n } else\n JSCompiler_inline_result$jscomp$10 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"body\"\n );\n return JSCompiler_inline_result$jscomp$10;\n case \"html\":\n if (0 === formatContext.insertionMode) {\n var preamble$jscomp$1 = preambleState || renderState.preamble;\n if (preamble$jscomp$1.htmlChunks)\n throw Error(formatProdErrorMessage3(545, \"``\"));\n null !== preambleState && target$jscomp$0.push(\"\");\n preamble$jscomp$1.htmlChunks = [\"\"];\n var JSCompiler_inline_result$jscomp$11 = pushStartSingletonElement(\n preamble$jscomp$1.htmlChunks,\n props,\n \"html\"\n );\n } else\n JSCompiler_inline_result$jscomp$11 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"html\"\n );\n return JSCompiler_inline_result$jscomp$11;\n default:\n if (-1 !== type.indexOf(\"-\")) {\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$9 = null, innerHTML$jscomp$8 = null, propKey$jscomp$11;\n for (propKey$jscomp$11 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$11)) {\n var propValue$jscomp$11 = props[propKey$jscomp$11];\n if (null != propValue$jscomp$11) {\n var attributeName = propKey$jscomp$11;\n switch (propKey$jscomp$11) {\n case \"children\":\n children$jscomp$9 = propValue$jscomp$11;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$8 = propValue$jscomp$11;\n break;\n case \"style\":\n pushStyleAttribute(target$jscomp$0, propValue$jscomp$11);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"className\":\n attributeName = \"class\";\n default:\n if (isAttributeNameSafe(propKey$jscomp$11) && \"function\" !== typeof propValue$jscomp$11 && \"symbol\" !== typeof propValue$jscomp$11 && false !== propValue$jscomp$11) {\n if (true === propValue$jscomp$11) propValue$jscomp$11 = \"\";\n else if (\"object\" === typeof propValue$jscomp$11) continue;\n target$jscomp$0.push(\n \" \",\n attributeName,\n '=\"',\n escapeTextForBrowser(propValue$jscomp$11),\n '\"'\n );\n }\n }\n }\n }\n target$jscomp$0.push(\">\");\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$8, children$jscomp$9);\n return children$jscomp$9;\n }\n }\n return pushStartGenericElement(target$jscomp$0, props, type);\n }\n var endTagCache = /* @__PURE__ */ new Map();\n function endChunkForTag(tag) {\n var chunk = endTagCache.get(tag);\n void 0 === chunk && (chunk = \"\", endTagCache.set(tag, chunk));\n return chunk;\n }\n function hoistPreambleState(renderState, preambleState) {\n renderState = renderState.preamble;\n null === renderState.htmlChunks && preambleState.htmlChunks && (renderState.htmlChunks = preambleState.htmlChunks);\n null === renderState.headChunks && preambleState.headChunks && (renderState.headChunks = preambleState.headChunks);\n null === renderState.bodyChunks && preambleState.bodyChunks && (renderState.bodyChunks = preambleState.bodyChunks);\n }\n function writeBootstrap(destination, renderState) {\n renderState = renderState.bootstrapChunks;\n for (var i = 0; i < renderState.length - 1; i++)\n destination.push(renderState[i]);\n return i < renderState.length ? (i = renderState[i], renderState.length = 0, destination.push(i)) : true;\n }\n function writeStartPendingSuspenseBoundary(destination, renderState, id) {\n destination.push('');\n }\n function writeStartSegment(destination, renderState, formatContext, id) {\n switch (formatContext.insertionMode) {\n case 0:\n case 1:\n case 3:\n case 2:\n return destination.push('