{"version":3,"file":"index-BKOnnQ7V.js","sources":["../../node_modules/react/cjs/react-jsx-runtime.production.js","../../node_modules/react/jsx-runtime.js","../../node_modules/react/cjs/react.production.js","../../node_modules/react/index.js","../../node_modules/scheduler/cjs/scheduler.production.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/cjs/react-dom-client.production.js","../../node_modules/react-dom/client.js","../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../node_modules/@tanstack/query-core/build/modern/utils.js","../../node_modules/@tanstack/query-core/build/modern/environmentManager.js","../../node_modules/@tanstack/query-core/build/modern/subscribable.js","../../node_modules/@tanstack/query-core/build/modern/focusManager.js","../../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../node_modules/@tanstack/query-core/build/modern/retryer.js","../../node_modules/@tanstack/query-core/build/modern/removable.js","../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../node_modules/@tanstack/query-core/build/modern/query.js","../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../node_modules/@tanstack/query-core/build/modern/mutation.js","../../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../node_modules/@tanstack/query-core/build/modern/queryCache.js","../../node_modules/@tanstack/query-core/build/modern/queryClient.js","../../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../node_modules/@tanstack/react-query/build/modern/useQuery.js","../../node_modules/@tanstack/react-query/build/modern/useMutation.js","../../node_modules/react-router/dist/development/chunk-OB3PAWPO.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils/toLucideIconData.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../../node_modules/lucide-react/dist/esm/shared/src/build/defaultAttributes.mjs","../../node_modules/lucide-react/dist/esm/shared/src/build/buildLucideIconNode.mjs","../../node_modules/lucide-react/dist/esm/shared/src/build/buildLucideIconForReact.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../../node_modules/lucide-react/dist/esm/context.mjs","../../node_modules/lucide-react/dist/esm/Icon.mjs","../../node_modules/lucide-react/dist/esm/createLucideIcon.mjs","../../node_modules/lucide-react/dist/esm/icons/check.mjs","../../node_modules/lucide-react/dist/esm/icons/chevron-down.mjs","../../node_modules/lucide-react/dist/esm/icons/chevron-up.mjs","../../node_modules/lucide-react/dist/esm/icons/circle-alert.mjs","../../node_modules/lucide-react/dist/esm/icons/circle-check.mjs","../../node_modules/lucide-react/dist/esm/icons/copy.mjs","../../node_modules/lucide-react/dist/esm/icons/credit-card.mjs","../../node_modules/lucide-react/dist/esm/icons/download.mjs","../../node_modules/lucide-react/dist/esm/icons/info.mjs","../../node_modules/lucide-react/dist/esm/icons/layout-grid.mjs","../../node_modules/lucide-react/dist/esm/icons/life-buoy.mjs","../../node_modules/lucide-react/dist/esm/icons/loader-circle.mjs","../../node_modules/lucide-react/dist/esm/icons/log-out.mjs","../../node_modules/lucide-react/dist/esm/icons/menu.mjs","../../node_modules/lucide-react/dist/esm/icons/monitor.mjs","../../node_modules/lucide-react/dist/esm/icons/octagon-x.mjs","../../node_modules/lucide-react/dist/esm/icons/shield.mjs","../../node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs","../../node_modules/lucide-react/dist/esm/icons/user.mjs","../../node_modules/lucide-react/dist/esm/icons/x.mjs","../../node_modules/i18next/dist/esm/i18next.js","../../node_modules/html-parse-stringify/dist/esm/html-parse-stringify.js","../../node_modules/react-i18next/dist/es/utils.js","../../node_modules/react-i18next/dist/es/unescape.js","../../node_modules/react-i18next/dist/es/defaults.js","../../node_modules/react-i18next/dist/es/i18nInstance.js","../../node_modules/react-i18next/dist/es/TransWithoutContext.js","../../node_modules/react-i18next/dist/es/initReactI18next.js","../../node_modules/react-i18next/dist/es/context.js","../../node_modules/react-i18next/dist/es/Trans.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/react-i18next/dist/es/useTranslation.js","../../node_modules/sonner/dist/index.mjs","../../src/assets/brand/logo-white.png","../../node_modules/cn/dist/tables.js","../../node_modules/cn/dist/engine.js","../../node_modules/cn/dist/index.js","../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../node_modules/@radix-ui/react-primitive/dist/index.mjs","../../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../../node_modules/@radix-ui/react-context/dist/index.mjs","../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../node_modules/@radix-ui/primitive/dist/index.mjs","../../node_modules/@radix-ui/react-use-effect-event/dist/index.mjs","../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../node_modules/@radix-ui/react-presence/dist/index.mjs","../../node_modules/@radix-ui/react-id/dist/index.mjs","../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../node_modules/@radix-ui/react-portal/dist/index.mjs","../../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../node_modules/tslib/tslib.es6.mjs","../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../node_modules/use-callback-ref/dist/es2015/assignRef.js","../../node_modules/use-callback-ref/dist/es2015/useRef.js","../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../node_modules/use-sidecar/dist/es2015/medium.js","../../node_modules/use-sidecar/dist/es2015/exports.js","../../node_modules/react-remove-scroll/dist/es2015/medium.js","../../node_modules/react-remove-scroll/dist/es2015/UI.js","../../node_modules/get-nonce/dist/es2015/index.js","../../node_modules/react-style-singleton/dist/es2015/singleton.js","../../node_modules/react-style-singleton/dist/es2015/hook.js","../../node_modules/react-style-singleton/dist/es2015/component.js","../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../node_modules/react-remove-scroll/dist/es2015/Combination.js","../../node_modules/aria-hidden/dist/es2015/index.js","../../node_modules/@radix-ui/react-dialog/dist/index.mjs","../../node_modules/@radix-ui/react-alert-dialog/dist/index.mjs","../../node_modules/@radix-ui/react-avatar/dist/index.mjs","../../node_modules/@radix-ui/react-use-size/dist/index.mjs","../../node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../node_modules/@radix-ui/react-popper/dist/index.mjs","../../node_modules/@radix-ui/react-use-is-hydrated/dist/index.mjs","../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../node_modules/@radix-ui/react-menu/dist/index.mjs","../../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../../node_modules/@radix-ui/react-label/dist/index.mjs","../../node_modules/@radix-ui/number/dist/index.mjs","../../node_modules/@radix-ui/react-progress/dist/index.mjs","../../node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../node_modules/@radix-ui/react-select/dist/index.mjs","../../node_modules/@radix-ui/react-separator/dist/index.mjs","../../node_modules/@radix-ui/react-tabs/dist/index.mjs","../../src/components/ui/avatar.tsx","../../node_modules/clsx/dist/clsx.mjs","../../node_modules/class-variance-authority/dist/index.mjs","../../src/components/ui/button.tsx","../../src/components/ui/dropdown-menu.tsx","../../node_modules/next-themes/dist/index.mjs","../../src/components/ui/sonner.tsx","../../src/lib/api.ts","../../src/features/auth/api.ts","../../src/components/ui/card.tsx","../../src/i18n.ts","../../src/lib/format.ts","../../src/features/auth/session.ts","../../src/lib/navigation.ts","../../src/features/billing/api.ts","../../src/features/billing/payments.ts","../../src/features/billing/components/PaymentParts.tsx","../../src/lib/forms.ts","../../src/lib/page.ts","../../src/components/layout/AppLayout.tsx","../../src/components/ui/tabs.tsx","../../node_modules/react-hook-form/dist/index.esm.mjs","../../node_modules/@hookform/resolvers/dist/resolvers.mjs","../../node_modules/@hookform/resolvers/zod/dist/zod.mjs","../../node_modules/zod/v4/core/util.js","../../node_modules/zod/v4/core/core.js","../../node_modules/zod/v4/core/errors.js","../../node_modules/zod/v4/core/parse.js","../../node_modules/zod/v4/core/regexes.js","../../node_modules/zod/v4/core/checks.js","../../node_modules/zod/v4/core/doc.js","../../node_modules/zod/v4/core/versions.js","../../node_modules/zod/v4/core/schemas.js","../../node_modules/zod/v4/core/memoizer.js","../../node_modules/zod/v4/locales/en.js","../../node_modules/zod/v4/core/registries.js","../../node_modules/zod/v4/core/api.js","../../node_modules/zod/v4/core/to-json-schema.js","../../node_modules/zod/v4/core/json-schema-processors.js","../../node_modules/zod/v4/classic/errors.js","../../node_modules/zod/v4/classic/parse.js","../../node_modules/zod/v4/classic/schemas.js","../../src/components/ui/badge.tsx","../../src/components/ui/label.tsx","../../src/components/ui/separator.tsx","../../src/components/ui/field.tsx","../../src/components/ui/input.tsx","../../src/components/ui/spinner.tsx","../../src/components/ui/alert.tsx","../../src/features/auth/components/FormAlert.tsx","../../src/features/account/api.ts","../../src/features/account/components/ProfileCards.tsx","../../src/components/ui/alert-dialog.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/skeleton.tsx","../../src/components/ui/checkbox.tsx","../../src/features/auth/components/BackupCodesPanel.tsx","../../node_modules/input-otp/dist/index.mjs","../../src/components/ui/input-otp.tsx","../../src/features/auth/components/CodeInput.tsx","../../src/features/auth/components/QrSetup.tsx","../../src/lib/user-agent.ts","../../src/features/account/components/SecurityCards.tsx","../../src/features/account/AccountPage.tsx","../../src/features/auth/guards.tsx","../../src/assets/landing/map-background.jpg","../../src/features/auth/components/AuthLayout.tsx","../../src/features/auth/pages/InvitationPage.tsx","../../src/lib/runtime-config.ts","../../src/features/auth/pages/LoginPage.tsx","../../src/features/auth/pages/ResetPasswordPages.tsx","../../src/features/auth/pages/SignupPage.tsx","../../src/features/auth/pages/TwoFactorSetupPage.tsx","../../src/features/auth/pages/VerifyEmailPage.tsx","../../src/components/ui/radio-group.tsx","../../src/components/ui/select.tsx","../../src/lib/countries.ts","../../src/features/billing/components/BillingDetailsCard.tsx","../../src/components/ui/textarea.tsx","../../src/features/billing/components/ResellerCard.tsx","../../src/features/billing/BillingPage.tsx","../../src/features/workspaces/api.ts","../../src/features/workspaces/components/selection.ts","../../src/features/workspaces/components/PlanPicker.tsx","../../src/features/workspaces/change/ChangePage.tsx","../../src/features/workspaces/new/BillingStep.tsx","../../src/features/workspaces/new/draft.ts","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/@stripe/react-stripe-js/dist/react-stripe.esm.mjs","../../node_modules/@stripe/stripe-js/dist/index.mjs","../../src/lib/stripe.ts","../../src/features/workspaces/new/PayStep.tsx","../../src/features/workspaces/new/PlanStep.tsx","../../src/features/workspaces/new/ReviewStep.tsx","../../src/features/workspaces/new/WorkspaceStep.tsx","../../src/features/workspaces/new/NewWorkspacePage.tsx","../../src/features/workspaces/components/StatusParts.tsx","../../src/features/workspaces/components/status.ts","../../src/features/workspaces/components/SubscriptionControls.tsx","../../src/components/ui/progress.tsx","../../src/features/workspaces/components/UsageBars.tsx","../../src/features/workspaces/WorkspaceDetailPage.tsx","../../src/features/workspaces/WorkspacesPage.tsx","../../src/pages/app-pages.tsx","../../src/pages/landing.tsx","../../src/pages/not-found.tsx","../../src/App.tsx","../../src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n  REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\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};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n  var refProp = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== refProp ? refProp : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop, noop)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\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]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\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        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result,\n      thenable = ctor();\n    thenable.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1),\n            (payload._result = moduleObject),\n            void 0 === thenable.status &&\n              ((thenable.status = \"fulfilled\"),\n              (thenable.value = moduleObject));\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2),\n            (payload._result = error),\n            void 0 === thenable.status &&\n              ((thenable.status = \"rejected\"), (thenable.reason = error));\n      }\n    );\n    -1 === payload._status &&\n      ((payload._status = 0), (payload._result = thenable));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction startTransition(scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  currentTransition.types =\n    null !== prevTransition ? prevTransition.types : null;\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    null !== prevTransition &&\n      null !== currentTransition.types &&\n      (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction addTransitionType(type) {\n  var transition = ReactSharedInternals.T;\n  if (null !== transition) {\n    var transitionTypes = transition.types;\n    null === transitionTypes\n      ? (transition.types = [type])\n      : -1 === transitionTypes.indexOf(type) && transitionTypes.push(type);\n  } else startTransition(addTransitionType.bind(null, type));\n}\nvar Children = {\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 (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.ViewTransition = REACT_VIEW_TRANSITION_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.addTransitionType = addTransitionType;\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cacheSignal = function () {\n  return null;\n};\nexports.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 = assign({}, element.props),\n    key = element.key;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (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};\nexports.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};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (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] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = startTransition;\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n  return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n  return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  needsPaint = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return needsPaint\n    ? !0\n    : exports.unstable_now() - startTime < frameInterval\n      ? !1\n      : !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_requestPaint = function () {\n  needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(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 (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n  REACT_OPTIMISTIC_KEY = Symbol.for(\"react.optimistic_key\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key:\n      null == key\n        ? null\n        : key === REACT_OPTIMISTIC_KEY\n          ? REACT_OPTIMISTIC_KEY\n          : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.browser = function (reason) {\n  return { $$typeof: REACT_RECOVERABLE_TYPE, _reason: reason };\n};\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n          fetchPriority:\n            \"string\" === typeof options.fetchPriority\n              ? options.fetchPriority\n              : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0,\n        nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n        fetchPriority:\n          \"string\" === typeof options.fetchPriority\n            ? options.fetchPriority\n            : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.3.1\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(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 (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nfunction getNearestMountedFiber(fiber) {\n  for (var node = fiber, nextNode = node; nextNode && !nextNode.alternate; )\n    (node = nextNode),\n      0 !== (node.flags & 4098) && (fiber = node.return),\n      (nextNode = node.return);\n  for (; node.return; ) node = node.return;\n  return 3 === node.tag ? fiber : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n  if (31 === fiber.tag) {\n    var activityState = fiber.memoizedState;\n    null === activityState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (activityState = fiber.memoizedState));\n    if (null !== activityState) return activityState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n        if (child$0 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$0 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$0 = child$0.sibling;\n      }\n      if (!didFindChild) {\n        for (child$0 = parentB.child; child$0; ) {\n          if (child$0 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$0 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$0 = child$0.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nfunction traverseVisibleInstancesAndTextInstances(\n  child,\n  searchWithinHosts,\n  fn,\n  a,\n  b,\n  c\n) {\n  for (; null !== child; ) {\n    if (\n      ((5 === child.tag || 27 === child.tag || 6 === child.tag) &&\n        fn(child, a, b, c)) ||\n      ((22 !== child.tag || null === child.memoizedState) &&\n        (searchWithinHosts || (5 !== child.tag && 27 !== child.tag)) &&\n        traverseVisibleInstancesAndTextInstances(\n          child.child,\n          searchWithinHosts,\n          fn,\n          a,\n          b,\n          c\n        ))\n    )\n      return !0;\n    child = child.sibling;\n  }\n  return !1;\n}\nfunction getFragmentParentInstanceOrContainerFiber(fiber) {\n  for (fiber = fiber.return; null !== fiber; ) {\n    if (3 === fiber.tag || 5 === fiber.tag || 27 === fiber.tag) return fiber;\n    fiber = fiber.return;\n  }\n  return null;\n}\nfunction fiberIsPortaledIntoHost(fiber) {\n  var foundPortalParent = !1;\n  for (fiber = fiber.return; null !== fiber; ) {\n    4 === fiber.tag && (foundPortalParent = !0);\n    if (3 === fiber.tag || 5 === fiber.tag || 27 === fiber.tag) break;\n    fiber = fiber.return;\n  }\n  return foundPortalParent;\n}\nfunction getFragmentInstanceOrTextInstanceSiblings(fiber) {\n  var result = [null, null],\n    parentHostFiber = getFragmentParentInstanceOrContainerFiber(fiber);\n  if (null === parentHostFiber) return result;\n  findFragmentInstanceOrTextInstanceSiblings(\n    result,\n    fiber,\n    parentHostFiber.child,\n    { foundSelf: !1 }\n  );\n  return result;\n}\nfunction findFragmentInstanceOrTextInstanceSiblings(\n  result,\n  self,\n  child,\n  state\n) {\n  for (; null !== child; ) {\n    if (child === self) state.foundSelf = !0;\n    else if (5 === child.tag || 27 === child.tag || 6 === child.tag) {\n      if (state.foundSelf) return (result[1] = child), !0;\n      result[0] = child;\n    } else if (\n      (22 !== child.tag || null === child.memoizedState) &&\n      findFragmentInstanceOrTextInstanceSiblings(\n        result,\n        self,\n        child.child,\n        state\n      )\n    )\n      return !0;\n    child = child.sibling;\n  }\n  return !1;\n}\nfunction getInstanceFromHostFiber(fiber) {\n  switch (fiber.tag) {\n    case 5:\n    case 27:\n    case 6:\n      return fiber.stateNode;\n    case 3:\n      return fiber.stateNode.containerInfo;\n    default:\n      throw Error(formatProdErrorMessage(559));\n  }\n}\nvar searchTarget = null,\n  searchBoundary = null;\nfunction isFiberPrecedingCheck(child, target, boundary) {\n  return child === boundary\n    ? !0\n    : child === target\n      ? ((searchTarget = child), !0)\n      : !1;\n}\nfunction isFiberFollowingCheck(child, target, boundary) {\n  return child === boundary\n    ? ((searchBoundary = child), !1)\n    : child === target\n      ? (null !== searchBoundary && (searchTarget = child), !0)\n      : !1;\n}\nfunction getParentForFragmentAncestors(inst) {\n  if (null === inst) return null;\n  do inst = null === inst ? null : inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag && 3 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction getLowestCommonAncestor(instA, instB, getParent) {\n  for (var depthA = 0, tempA = instA; tempA; tempA = getParent(tempA)) depthA++;\n  tempA = 0;\n  for (var tempB = instB; tempB; tempB = getParent(tempB)) tempA++;\n  for (; 0 < depthA - tempA; ) (instA = getParent(instA)), depthA--;\n  for (; 0 < tempA - depthA; ) (instB = getParent(instB)), tempA--;\n  for (; depthA--; ) {\n    if (instA === instB || (null !== instB && instA === instB.alternate))\n      return instA;\n    instA = getParent(instA);\n    instB = getParent(instB);\n  }\n  return null;\n}\nvar assign = Object.assign,\n  REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n  REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n  REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n  REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n    case REACT_VIEW_TRANSITION_TYPE:\n      return \"ViewTransition\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return type.displayName || \"Context\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  switch (nextRootInstance.nodeType) {\n    case 9:\n    case 11:\n      fiber = (fiber = nextRootInstance.documentElement)\n        ? (fiber = fiber.namespaceURI)\n          ? getOwnHostContext(fiber)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = nextRootInstance.tagName),\n        (nextRootInstance = nextRootInstance.namespaceURI))\n      )\n        (nextRootInstance = getOwnHostContext(nextRootInstance)),\n          (fiber = getChildHostContextProd(nextRootInstance, fiber));\n      else\n        switch (fiber) {\n          case \"svg\":\n            fiber = 1;\n            break;\n          case \"math\":\n            fiber = 2;\n            break;\n          default:\n            fiber = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  var stateHook = fiber.memoizedState;\n  null !== stateHook &&\n    ((HostTransitionContext._currentValue = stateHook.memoizedState),\n    push(hostTransitionProviderCursor, fiber));\n  stateHook = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(stateHook, fiber.type);\n  stateHook !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$1) {\n                control = x$1;\n              }\n              Fake = !1;\n              try {\n                var prevProps = Object.getOwnPropertyDescriptor(\n                  fn.prototype,\n                  \"props\"\n                );\n                Object.defineProperty(fn.prototype, \"props\", {\n                  configurable: !0,\n                  set: function () {\n                    throw Error();\n                  }\n                });\n                Fake = !0;\n                new fn();\n              } finally {\n                Fake &&\n                  (void 0 !== prevProps\n                    ? Object.defineProperty(fn.prototype, \"props\", prevProps)\n                    : delete fn.prototype.props);\n              }\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$2) {\n              control = x$2;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return fiber.child !== childFiber && null !== childFiber\n        ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n        : describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    case 30:\n      return describeBuiltInComponentFrame(\"ViewTransition\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\",\n      previous = null;\n    do\n      (info += describeFiber(workInProgress, previous)),\n        (previous = workInProgress),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n  nextTransitionDeferredLane = 262144,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n      return lanes & -lanes;\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 3932160;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction getEntangledLanes(root, renderLanes) {\n  0 !== (renderLanes & 8) && (renderLanes |= renderLanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= renderLanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$4 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$4;\n      renderLanes |= root[index$4];\n      allEntangledLanes &= ~lane;\n    }\n  return renderLanes;\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$7 = 31 - clz32(remainingLanes),\n      lane = 1 << index$7;\n    entanglements[index$7] = 0;\n    expirationTimes[index$7] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$7];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$7] = null, index$7 = 0;\n        index$7 < hiddenUpdatesForLane.length;\n        index$7++\n      ) {\n        var update = hiddenUpdatesForLane[index$7];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$8 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$8;\n    (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n      (root[index$8] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n  var renderLane = renderLanes & -renderLanes;\n  renderLane =\n    0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n  return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n    ? 0\n    : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n  switch (lane) {\n    case 2:\n      lane = 1;\n      break;\n    case 8:\n      lane = 4;\n      break;\n    case 32:\n      lane = 16;\n      break;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      lane = 128;\n      break;\n    case 268435456:\n      lane = 134217728;\n      break;\n    default:\n      lane = 0;\n  }\n  return lane;\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey,\n  internalLoadPendingKey = \"__reactLoad$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst;\n  if ((targetInst = targetNode[internalInstanceKey])) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentHydrationBoundary(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentHydrationBoundary(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      31 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nfunction clearPendingLoadOnNode(node) {\n  node[internalLoadPendingKey] = void 0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar 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  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nvar viewTransitionMutationContext = !1;\nfunction pushMutationContext() {\n  var prev = viewTransitionMutationContext;\n  viewTransitionMutationContext = !1;\n  return prev;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$10 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, value);\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n  var descriptor = Object.getOwnPropertyDescriptor(\n    node.constructor.prototype,\n    valueField\n  );\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  if (!node._valueTracker) {\n    var valueField = isCheckable(node) ? \"checked\" : \"value\";\n    node._valueTracker = trackValueOnNode(\n      node,\n      valueField,\n      \"\" + node[valueField]\n    );\n  }\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? \"number\" === type && element.value == value\n      ? setDefaultValue(element, getToStringValue(element.value))\n      : setDefaultValue(element, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    ) {\n      track(element);\n      return;\n    }\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n  track(element);\n}\nfunction setDefaultValue(node, value) {\n  node.defaultValue !== \"\" + value && (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n  track(element);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar 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);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"),\n        (viewTransitionMutationContext = !0));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          (setValueForStyle(node, styleName$16, styleName),\n          (viewTransitionMutationContext = !0));\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\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      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = 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    [\"maskType\", \"mask-type\"],\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  isJavaScriptProtocol =\n    /^[\\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;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  SubmitEventInterface = assign({}, EventInterface, { submitter: 0 }),\n  SyntheticSubmitEvent = createSyntheticEvent(SubmitEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0,\n    source: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$318;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_474 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_474) {\n      var element$jscomp$inline_475 = document.createElement(\"div\");\n      element$jscomp$inline_475.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_474 =\n        \"function\" === typeof element$jscomp$inline_475.oninput;\n    }\n    JSCompiler_inline_result$jscomp$318 = isSupported$jscomp$inline_474;\n  } else JSCompiler_inline_result$jscomp$318 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$318 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e$20) {\n    return doc.body;\n  }\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar globalClientIdCounter$1 = 0;\nfunction getViewTransitionName(props, instance) {\n  if (null != props.name && \"auto\" !== props.name) return props.name;\n  if (null !== instance.autoName) return instance.autoName;\n  props = pendingEffectsRoot.identifierPrefix;\n  var globalClientId = globalClientIdCounter$1++;\n  props = \"_\" + props + \"t_\" + globalClientId.toString(32) + \"_\";\n  return (instance.autoName = props);\n}\nfunction getClassNameByType(classByType) {\n  if (null == classByType || \"string\" === typeof classByType)\n    return classByType;\n  var className = null,\n    activeTypes = pendingTransitionTypes;\n  if (null !== activeTypes)\n    for (var i = 0; i < activeTypes.length; i++) {\n      var match = classByType[activeTypes[i]];\n      if (null != match) {\n        if (\"none\" === match) return \"none\";\n        className = null == className ? match : className + (\" \" + match);\n      }\n    }\n  return null == className ? classByType.default : className;\n}\nfunction getViewTransitionClassName(defaultClass, eventClass) {\n  defaultClass = getClassNameByType(defaultClass);\n  eventClass = getClassNameByType(eventClass);\n  return null == eventClass\n    ? \"auto\" === defaultClass\n      ? null\n      : defaultClass\n    : \"auto\" === eventClass\n      ? null\n      : eventClass;\n}\nvar reportGlobalError =\n    \"function\" === typeof reportError\n      ? reportError\n      : function (error) {\n          if (\n            \"object\" === typeof window &&\n            \"function\" === typeof window.ErrorEvent\n          ) {\n            var event = new window.ErrorEvent(\"error\", {\n              bubbles: !0,\n              cancelable: !0,\n              message:\n                \"object\" === typeof error &&\n                null !== error &&\n                \"string\" === typeof error.message\n                  ? String(error.message)\n                  : String(error),\n              error: error\n            });\n            if (!window.dispatchEvent(event)) return;\n          } else if (\n            \"object\" === typeof process &&\n            \"function\" === typeof process.emit\n          ) {\n            process.emit(\"uncaughtException\", error);\n            return;\n          }\n          console.error(error);\n        },\n  concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 1206910976;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 1206910978;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof owner) shouldConstruct(owner) && (fiberTag = 1);\n  else if (\"string\" === typeof owner)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (owner) {\n      case REACT_ACTIVITY_TYPE:\n        return (\n          (type = createFiberImplClass(31, pendingProps, key, mode)),\n          (type.elementType = REACT_ACTIVITY_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_LEGACY_HIDDEN_TYPE:\n      case REACT_VIEW_TRANSITION_TYPE:\n        return (\n          (type = mode | 32),\n          (type = createFiberImplClass(30, pendingProps, key, type)),\n          (type.elementType = REACT_VIEW_TRANSITION_TYPE),\n          (type.lanes = lanes),\n          (type.stateNode = {\n            autoName: null,\n            paired: null,\n            clones: null,\n            ref: null\n          }),\n          type\n        );\n      default:\n        if (\"object\" === typeof owner && null !== owner)\n          switch (owner.$$typeof) {\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n  var fiber = createFiberImplClass(18, null, null, 0);\n  fiber.stateNode = dehydratedNode;\n  return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextId = suspendedContext.id;\n  treeContextOverflow = suspendedContext.overflow;\n  treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(\n    formatProdErrorMessage(\n      418,\n      1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n        ? \"text\"\n        : \"HTML\",\n      \"\"\n    )\n  );\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 5:\n      case 31:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      case 27:\n      case 3:\n        rootOrSingletonContext = !0;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var tag = fiber.tag,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n    if ((JSCompiler_temp = 5 === tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    nextHydratableInstance =\n      getNextHydratableInstanceAfterHydrationBoundary(fiber);\n  } else if (31 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    nextHydratableInstance =\n      getNextHydratableInstanceAfterHydrationBoundary(fiber);\n  } else\n    27 === tag\n      ? ((tag = nextHydratableInstance),\n        isSingletonScope(fiber.type)\n          ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n            (previousHydratableOnEnteringScopedSingleton = null),\n            (nextHydratableInstance = fiber))\n          : (nextHydratableInstance = tag))\n      : (nextHydratableInstance = hydrationParentFiber\n          ? getNextHydratable(fiber.stateNode.nextSibling)\n          : null);\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n  var queuedErrors = hydrationErrors;\n  null !== queuedErrors &&\n    (null === workInProgressRootRecoverableErrors\n      ? (workInProgressRootRecoverableErrors = queuedErrors)\n      : workInProgressRootRecoverableErrors.push.apply(\n          workInProgressRootRecoverableErrors,\n          queuedErrors\n        ),\n    (hydrationErrors = null));\n  return queuedErrors;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber$1 = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else\n      13 === fiber.tag &&\n      null !== fiber.memoizedState &&\n      null === fiber.memoizedState.dehydrated\n        ? ((fiber.lanes |= renderLanes),\n          (nextFiber = fiber.alternate),\n          null !== nextFiber && (nextFiber.lanes |= renderLanes),\n          scheduleContextWorkOnParentPath(\n            fiber.return,\n            renderLanes,\n            workInProgress\n          ),\n          (nextFiber = fiber.child),\n          (nextFiber = null !== nextFiber ? nextFiber.sibling : null))\n        : (nextFiber = fiber.child);\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n  return null !== current;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber$1 = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nfunction queueTransitionTypes(root, transitionTypes) {\n  if (0 !== (root.pendingLanes & 4194048)) {\n    var queued = root.transitionTypes;\n    null === queued && (queued = root.transitionTypes = []);\n    for (root = 0; root < transitionTypes.length; root++) {\n      var transitionType = transitionTypes[root];\n      -1 === queued.indexOf(transitionType) && queued.push(transitionType);\n    }\n  }\n}\nvar entangledTransitionTypes = null;\nfunction claimQueuedTransitionTypes(root) {\n  var claimed = root.transitionTypes;\n  root.transitionTypes = null;\n  return claimed;\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    ((entangledTransitionTypes = null), null !== currentEntangledListeners)\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  globalMostRecentTransitionTime = now();\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  if (null !== entangledTransitionTypes)\n    for (var root$28 = firstScheduledRoot; null !== root$28; )\n      queueTransitionTypes(root$28, entangledTransitionTypes),\n        (root$28 = root$28.next);\n  root$28 = transition.types;\n  if (null !== root$28) {\n    for (var root$29 = firstScheduledRoot; null !== root$29; )\n      queueTransitionTypes(root$29, root$28), (root$29 = root$29.next);\n    if (0 !== currentEntangledLane) {\n      root$29 = entangledTransitionTypes;\n      null === root$29 && (root$29 = entangledTransitionTypes = []);\n      for (var i = 0; i < root$28.length; i++) {\n        var transitionType = root$28[i];\n        -1 === root$29.indexOf(transitionType) && root$29.push(transitionType);\n      }\n    }\n  }\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  SuspenseActionException = Error(formatProdErrorMessage(542)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      thenableState = thenable.reason;\n      checkIfUseWrappedInAsyncCatch(thenableState);\n      if (void 0 === thenableState && !(\"reason\" in thenable))\n        throw Error(formatProdErrorMessage(600));\n      throw thenableState;\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nfunction resolveLazy(lazyType) {\n  try {\n    var init = lazyType._init;\n    return init(lazyType._payload);\n  } catch (x) {\n    if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n      throw ((suspendedThenable = x), SuspenseException);\n    throw x;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n  if (\n    rejectedReason === SuspenseException ||\n    rejectedReason === SuspenseActionException\n  )\n    throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n  thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null === currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.index, currentFirstChild)\n        : existingChildren.set(currentFirstChild.key, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 2), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 134217730;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 134217730);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return (\n        (returnFiber = updateFragment(\n          returnFiber,\n          current,\n          element.props.children,\n          lanes,\n          element.key\n        )),\n        coerceRef(returnFiber, element),\n        returnFiber\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            createChild(returnFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            updateFromMap(\n              existingChildren,\n              returnFiber,\n              newIdx,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            ((newFiber = nextOldFiber.alternate),\n            null !== newFiber &&\n              oldFiber.delete(null === newFiber.key ? newIdx : newFiber.key)),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            ((nextOldFiber = step.alternate),\n            null !== nextOldFiber &&\n              oldFiber.delete(\n                null === nextOldFiber.key ? newIdx : nextOldFiber.key\n              )),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      void 0 === newChild.props.ref &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    coerceRef(lanes, newChild);\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (newChild = resolveLazy(newChild)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter$1 = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState$1 = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException || x === SuspenseActionException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, fiber);\n  null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  22 === fiber.tag\n    ? (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary && (shellBoundary = fiber))\n    : reuseSuspenseHandlerOnStack();\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction pushSuspenseListContext(fiber, newContext) {\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n  push(suspenseStackCursor, newContext);\n}\nfunction popSuspenseListContext(fiber) {\n  pop(suspenseStackCursor);\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n}\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state ||\n          isSuspenseInstancePending(state) ||\n          isSuspenseInstanceFallback(state))\n      )\n        return node;\n    } else if (\n      19 === node.tag &&\n      \"independent\" !== node.memoizedProps.revealOrder\n    ) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter = 0,\n  thenableState = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter = 0;\n  thenableState = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n    thenableIndexCounter = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter = localIdCounter = 0;\n  thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  thenable = trackUsedThenable(thenableState, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_RECOVERABLE_TYPE) return;\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$64 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                gesture: null,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$64 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$64 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            gesture: null,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          gesture: update.gesture,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$64 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n    subscribe\n  ]);\n  subscribe =\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook &&\n      0 !== (workInProgressHook.memoizedState.tag & 1));\n  pushSimpleEffect(\n    subscribe ? 9 : 8,\n    { destroy: void 0 },\n    updateStoreInstance.bind(null, fiber, hook, getServerSnapshot, getSnapshot),\n    null\n  );\n  if (subscribe) {\n    fiber.flags |= 2048;\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 127) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    currentTransition.types =\n      null !== prevTransition ? prevTransition.types : null;\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      null !== prevTransition &&\n        null !== currentTransition.types &&\n        (prevTransition.types = currentTransition.types),\n        (ReactSharedInternals.T = prevTransition);\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$70) {\n      onActionError(actionQueue, node, error$70);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      { destroy: void 0 },\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n  tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((deps = create.next),\n      (create.next = tag),\n      (tag.next = deps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    { destroy: void 0 },\n    create,\n    void 0 === deps ? null : deps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, deps) {\n  mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n  updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n  currentlyRenderingFiber.flags |= 4;\n  var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n  if (null === componentUpdateQueue)\n    (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n      (componentUpdateQueue.events = [payload]);\n  else {\n    var events = componentUpdateQueue.events;\n    null === events\n      ? (componentUpdateQueue.events = [payload])\n      : events.push(payload);\n  }\n}\nfunction updateEvent(callback) {\n  var ref = updateWorkInProgressHook().memoizedState;\n  useEffectEventImpl({ ref: ref, nextImpl: callback });\n  return function () {\n    if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n    return ref.impl.apply(void 0, arguments);\n  };\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (\n    void 0 === initialValue ||\n    (0 !== (renderLanes & 1073741824) &&\n      0 === (workInProgressRootRenderLanes & 261930))\n  )\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (\n    0 === (renderLanes & 106) ||\n    (0 !== (renderLanes & 1073741824) &&\n      0 === (workInProgressRootRenderLanes & 261930))\n  )\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  currentTransition.types =\n    null !== prevTransition ? prevTransition.types : null;\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      null !== prevTransition &&\n        null !== currentTransition.types &&\n        (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var stateHook = ensureFormComponentIsStateful(formFiber);\n  null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n  dispatchSetStateInternal(\n    formFiber,\n    stateHook.next.queue,\n    {},\n    requestUpdateLane()\n  );\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$73 = enqueueUpdate(provider, fiber, lane);\n        null !== root$73 &&\n          (scheduleUpdateOnFiber(root$73, provider, lane),\n          entangleTransitions(root$73, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    gesture: null,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    gesture: null,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    gesture: null,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    use: use,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useInsertionEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useSyncExternalStore: throwInvalidHookError,\n    useId: throwInvalidHookError,\n    useHostTransitionStatus: throwInvalidHookError,\n    useFormState: throwInvalidHookError,\n    useActionState: throwInvalidHookError,\n    useOptimistic: throwInvalidHookError,\n    useMemoCache: throwInvalidHookError,\n    useCacheRefresh: throwInvalidHookError,\n    useEffectEvent: throwInvalidHookError\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      if (isHydrating) {\n        if (void 0 === getServerSnapshot)\n          throw Error(formatProdErrorMessage(407));\n        getServerSnapshot = getServerSnapshot();\n      } else {\n        getServerSnapshot = getSnapshot();\n        if (null === workInProgressRoot)\n          throw Error(formatProdErrorMessage(349));\n        0 !== (workInProgressRootRenderLanes & 127) ||\n          pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n      }\n      hook.memoizedState = getServerSnapshot;\n      var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        { destroy: void 0 },\n        updateStoreInstance.bind(\n          null,\n          fiber,\n          inst,\n          getServerSnapshot,\n          getSnapshot\n        ),\n        null\n      );\n      return getServerSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix;\n      if (isHydrating) {\n        var JSCompiler_inline_result = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        JSCompiler_inline_result =\n          (\n            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n          ).toString(32) + JSCompiler_inline_result;\n        identifierPrefix =\n          \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n        JSCompiler_inline_result = localIdCounter++;\n        0 < JSCompiler_inline_result &&\n          (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n        identifierPrefix += \"_\";\n      } else\n        (JSCompiler_inline_result = globalClientIdCounter++),\n          (identifierPrefix =\n            \"_\" +\n            identifierPrefix +\n            \"r_\" +\n            JSCompiler_inline_result.toString(32) +\n            \"_\");\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    },\n    useEffectEvent: function (callback) {\n      var hook = mountWorkInProgressHook(),\n        ref = { impl: callback };\n      hook.memoizedState = ref;\n      return function () {\n        if (0 !== (executionContext & 2))\n          throw Error(formatProdErrorMessage(440));\n        return ref.impl.apply(void 0, arguments);\n      };\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh,\n    useEffectEvent: updateEvent\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function () {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return null === currentHook\n        ? mountDeferredValueImpl(hook, value, initialValue)\n        : updateDeferredValueImpl(\n            hook,\n            currentHook.memoizedState,\n            value,\n            initialValue\n          );\n    },\n    useTransition: function () {\n      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: rerenderActionState,\n    useActionState: rerenderActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      if (null !== currentHook)\n        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n      hook.baseState = passthrough;\n      return [passthrough, hook.queue.dispatch];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh,\n    useEffectEvent: updateEvent\n  };\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$77 in Component)\n      void 0 === newProps[propName$77] &&\n        (newProps[propName$77] = Component[propName$77]);\n  }\n  return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$78) {\n    setTimeout(function () {\n      throw e$78;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$79) {\n    setTimeout(function () {\n      throw e$79;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 31:\n        case 13:\n        case 19:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        returnFiber = sourceFiber.type;\n        wrapperError = sourceFiber.stateNode;\n        if (\n          0 === (sourceFiber.flags & 128) &&\n          (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n            (null !== wrapperError &&\n              \"function\" === typeof wrapperError.componentDidCatch &&\n              (null === legacyErrorBoundariesThatAlreadyFailed ||\n                !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n        break;\n      case 22:\n        if (null !== sourceFiber.memoizedState)\n          return (sourceFiber.flags |= 65536), !1;\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(\n  current,\n  workInProgress,\n  renderLanes,\n  nextProps\n) {\n  var nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  null === current &&\n    null === workInProgress.stateNode &&\n    (workInProgress.stateNode = {\n      _visibility: 1,\n      _pendingMarkers: null,\n      _retryCache: null,\n      _transitions: null\n    });\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      prevState =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextProps = workInProgress.child = current.child;\n        for (nextChildren = 0; null !== nextProps; )\n          (nextChildren =\n            nextChildren | nextProps.lanes | nextProps.childLanes),\n            (nextProps = nextProps.sibling);\n        nextProps = nextChildren & ~prevState;\n      } else (nextProps = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        prevState,\n        renderLanes,\n        nextProps\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (nextProps = workInProgress.lanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes,\n          nextProps\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack());\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n  (null !== current && 22 === current.tag) ||\n    null !== workInProgress.stateNode ||\n    (workInProgress.stateNode = {\n      _visibility: 1,\n      _pendingMarkers: null,\n      _retryCache: null,\n      _transitions: null\n    });\n  return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes,\n  remainingChildLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  workInProgress.childLanes = remainingChildLanes;\n  return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n  nextProps = mountWorkInProgressOffscreenFiber(\n    { mode: nextProps.mode, children: nextProps.children },\n    workInProgress.mode\n  );\n  nextProps.ref = workInProgress.ref;\n  workInProgress.child = nextProps;\n  nextProps.return = workInProgress;\n  return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n  current.flags |= 2;\n  popSuspenseHandler(workInProgress);\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    didSuspend = 0 !== (workInProgress.flags & 128);\n  workInProgress.flags &= -129;\n  if (null === current) {\n    if (isHydrating) {\n      if (\"hidden\" === nextProps.mode)\n        return (\n          (current = mountActivityChildren(workInProgress, nextProps)),\n          (workInProgress.lanes = 536870912),\n          (current.memoizedState = { baseLanes: 0, cachePool: null }),\n          bailoutOffscreenComponent(null, current)\n        );\n      pushDehydratedActivitySuspenseHandler(workInProgress);\n      (current = nextHydratableInstance)\n        ? ((current = canHydrateHydrationBoundary(\n            current,\n            rootOrSingletonContext\n          )),\n          (current = null !== current && \"&\" === current.data ? current : null),\n          null !== current &&\n            ((workInProgress.memoizedState = {\n              dehydrated: current,\n              treeContext:\n                null !== treeContextProvider\n                  ? { id: treeContextId, overflow: treeContextOverflow }\n                  : null,\n              retryLane: 536870912,\n              hydrationErrors: null\n            }),\n            (renderLanes = createFiberFromDehydratedFragment(current)),\n            (renderLanes.return = workInProgress),\n            (workInProgress.child = renderLanes),\n            (hydrationParentFiber = workInProgress),\n            (nextHydratableInstance = null)))\n        : (current = null);\n      if (null === current) throw throwOnHydrationMismatch(workInProgress);\n      workInProgress.lanes = 536870912;\n      return null;\n    }\n    return mountActivityChildren(workInProgress, nextProps);\n  }\n  var prevState = current.memoizedState;\n  if (null !== prevState) {\n    var dehydrated = prevState.dehydrated;\n    pushDehydratedActivitySuspenseHandler(workInProgress);\n    if (didSuspend)\n      if (workInProgress.flags & 256)\n        (workInProgress.flags &= -257),\n          (workInProgress = retryActivityComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          ));\n      else if (null !== workInProgress.memoizedState)\n        (workInProgress.child = current.child),\n          (workInProgress.flags |= 128),\n          (workInProgress = null);\n      else throw Error(formatProdErrorMessage(558));\n    else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (didSuspend = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || didSuspend)\n    ) {\n      if (null === currentTreeHiddenStackCursor.current) {\n        nextProps = workInProgressRoot;\n        if (\n          null !== nextProps &&\n          ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n          0 !== dehydrated && dehydrated !== prevState.retryLane)\n        )\n          throw (\n            ((prevState.retryLane = dehydrated),\n            enqueueConcurrentRenderForLane(current, dehydrated),\n            scheduleUpdateOnFiber(nextProps, current, dehydrated),\n            SelectiveHydrationException)\n          );\n        renderDidSuspendDelayIfPossible();\n      }\n      workInProgress = retryActivityComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      (current = prevState.treeContext),\n        (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n        (hydrationParentFiber = workInProgress),\n        (isHydrating = !0),\n        (hydrationErrors = null),\n        (rootOrSingletonContext = !1),\n        null !== current &&\n          restoreSuspendedTreeContext(workInProgress, current),\n        (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n        (workInProgress.flags |= 134221824);\n    return workInProgress;\n  }\n  current = createWorkInProgress(current.child, {\n    mode: nextProps.mode,\n    children: nextProps.children\n  });\n  current.ref = workInProgress.ref;\n  workInProgress.child = current;\n  current.return = workInProgress;\n  return current;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 4194816;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: 0,\n  hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack();\n      (current = nextHydratableInstance)\n        ? ((current = canHydrateHydrationBoundary(\n            current,\n            rootOrSingletonContext\n          )),\n          (current = null !== current && \"&\" !== current.data ? current : null),\n          null !== current &&\n            ((workInProgress.memoizedState = {\n              dehydrated: current,\n              treeContext:\n                null !== treeContextProvider\n                  ? { id: treeContextId, overflow: treeContextOverflow }\n                  : null,\n              retryLane: 536870912,\n              hydrationErrors: null\n            }),\n            (renderLanes = createFiberFromDehydratedFragment(current)),\n            (renderLanes.return = workInProgress),\n            (workInProgress.child = renderLanes),\n            (hydrationParentFiber = workInProgress),\n            (nextHydratableInstance = null)))\n        : (current = null);\n      if (null === current) throw throwOnHydrationMismatch(workInProgress);\n      isSuspenseInstanceFallback(current)\n        ? (workInProgress.lanes = 32)\n        : (workInProgress.lanes = 536870912);\n      return null;\n    }\n    didSuspend = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(),\n        (showFallback = workInProgress.mode),\n        (didSuspend = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: didSuspend },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (didSuspend.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (didSuspend.sibling = nextProps),\n        (workInProgress.child = didSuspend),\n        (nextProps = workInProgress.child),\n        (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        bailoutOffscreenComponent(null, nextProps)\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, didSuspend);\n  }\n  var prevState = current.memoizedState;\n  if (null !== prevState) {\n    var dehydrated$96 = prevState.dehydrated;\n    if (null !== dehydrated$96)\n      return updateDehydratedSuspenseComponent(\n        current,\n        workInProgress,\n        didSuspend,\n        JSCompiler_temp,\n        nextProps,\n        dehydrated$96,\n        prevState,\n        renderLanes\n      );\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(),\n      (showFallback = nextProps.fallback),\n      (didSuspend = workInProgress.mode),\n      (prevState = current.child),\n      (dehydrated$96 = prevState.sibling),\n      (nextProps = createWorkInProgress(prevState, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags = prevState.subtreeFlags & 1206910976),\n      null !== dehydrated$96\n        ? (showFallback = createWorkInProgress(dehydrated$96, showFallback))\n        : ((showFallback = createFiberFromFragment(\n            showFallback,\n            didSuspend,\n            renderLanes,\n            null\n          )),\n          (showFallback.flags |= 2)),\n      (showFallback.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = showFallback),\n      (workInProgress.child = nextProps),\n      bailoutOffscreenComponent(null, nextProps),\n      (nextProps = workInProgress.child),\n      (showFallback = current.child.memoizedState),\n      null === showFallback\n        ? (showFallback = mountSuspenseOffscreenState(renderLanes))\n        : ((didSuspend = showFallback.cachePool),\n          null !== didSuspend\n            ? ((prevState = CacheContext._currentValue),\n              (didSuspend =\n                didSuspend.parent !== prevState\n                  ? { parent: prevState, pool: prevState }\n                  : didSuspend))\n            : (didSuspend = getSuspendedCache()),\n          (showFallback = {\n            baseLanes: showFallback.baseLanes | renderLanes,\n            cachePool: didSuspend\n          })),\n      (nextProps.memoizedState = showFallback),\n      (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      bailoutOffscreenComponent(current.child, nextProps)\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction updateDehydratedSuspenseComponent(\n  current,\n  workInProgress,\n  didSuspend,\n  didPrimaryChildrenDefer,\n  nextProps,\n  suspenseInstance,\n  suspenseState,\n  renderLanes\n) {\n  if (didSuspend) {\n    if (workInProgress.flags & 256)\n      return (\n        pushPrimaryTreeSuspenseHandler(workInProgress),\n        (workInProgress.flags &= -257),\n        retrySuspenseComponentWithoutHydrating(\n          current,\n          workInProgress,\n          renderLanes\n        )\n      );\n    if (null !== workInProgress.memoizedState)\n      return (\n        reuseSuspenseHandlerOnStack(),\n        (workInProgress.child = current.child),\n        (workInProgress.flags |= 128),\n        null\n      );\n    reuseSuspenseHandlerOnStack();\n    suspenseInstance = nextProps.fallback;\n    suspenseState = workInProgress.mode;\n    nextProps = mountWorkInProgressOffscreenFiber(\n      { mode: \"visible\", children: nextProps.children },\n      suspenseState\n    );\n    suspenseInstance = createFiberFromFragment(\n      suspenseInstance,\n      suspenseState,\n      renderLanes,\n      null\n    );\n    suspenseInstance.flags |= 2;\n    nextProps.return = workInProgress;\n    suspenseInstance.return = workInProgress;\n    nextProps.sibling = suspenseInstance;\n    workInProgress.child = nextProps;\n    reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n    nextProps = workInProgress.child;\n    nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes);\n    nextProps.childLanes = getRemainingWorkInPrimaryTree(\n      current,\n      didPrimaryChildrenDefer,\n      renderLanes\n    );\n    workInProgress.memoizedState = SUSPENDED_MARKER;\n    return bailoutOffscreenComponent(null, nextProps);\n  }\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  if (isSuspenseInstanceFallback(suspenseInstance)) {\n    didPrimaryChildrenDefer =\n      suspenseInstance.nextSibling && suspenseInstance.nextSibling.dataset;\n    if (didPrimaryChildrenDefer) var digest = didPrimaryChildrenDefer.dgst;\n    didPrimaryChildrenDefer = digest;\n    \"\" !== didPrimaryChildrenDefer &&\n      ((nextProps = Error(formatProdErrorMessage(419))),\n      (nextProps.stack = \"\"),\n      (nextProps.digest = didPrimaryChildrenDefer),\n      queueHydrationError({ value: nextProps, source: null, stack: null }));\n    return retrySuspenseComponentWithoutHydrating(\n      current,\n      workInProgress,\n      renderLanes\n    );\n  }\n  didReceiveUpdate ||\n    propagateParentContextChanges(current, workInProgress, renderLanes, !1);\n  didPrimaryChildrenDefer = 0 !== (renderLanes & current.childLanes);\n  if (didReceiveUpdate || didPrimaryChildrenDefer) {\n    if (null !== currentTreeHiddenStackCursor.current)\n      return retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    didPrimaryChildrenDefer = workInProgressRoot;\n    if (\n      null !== didPrimaryChildrenDefer &&\n      ((nextProps = getBumpedLaneForHydration(\n        didPrimaryChildrenDefer,\n        renderLanes\n      )),\n      0 !== nextProps && nextProps !== suspenseState.retryLane)\n    )\n      throw (\n        ((suspenseState.retryLane = nextProps),\n        enqueueConcurrentRenderForLane(current, nextProps),\n        scheduleUpdateOnFiber(didPrimaryChildrenDefer, current, nextProps),\n        SelectiveHydrationException)\n      );\n    isSuspenseInstancePending(suspenseInstance) ||\n      renderDidSuspendDelayIfPossible();\n    return retrySuspenseComponentWithoutHydrating(\n      current,\n      workInProgress,\n      renderLanes\n    );\n  }\n  if (isSuspenseInstancePending(suspenseInstance))\n    return (\n      (workInProgress.flags |= 192),\n      (workInProgress.child = current.child),\n      null\n    );\n  current = suspenseState.treeContext;\n  nextHydratableInstance = getNextHydratable(suspenseInstance.nextSibling);\n  hydrationParentFiber = workInProgress;\n  isHydrating = !0;\n  hydrationErrors = null;\n  rootOrSingletonContext = !1;\n  null !== current && restoreSuspendedTreeContext(workInProgress, current);\n  workInProgress = mountSuspensePrimaryChildren(\n    workInProgress,\n    nextProps.children\n  );\n  workInProgress.flags |= 134221824;\n  return workInProgress;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction findLastContentRow(firstChild) {\n  for (var lastContentRow = null; null !== firstChild; ) {\n    var currentRow = firstChild.alternate;\n    null !== currentRow &&\n      null === findFirstSuspended(currentRow) &&\n      (lastContentRow = firstChild);\n    firstChild = firstChild.sibling;\n  }\n  return lastContentRow;\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode,\n  treeForkCount\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode,\n        treeForkCount: treeForkCount\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode),\n      (renderState.treeForkCount = treeForkCount));\n}\nfunction reverseChildren(fiber) {\n  var row = fiber.child;\n  for (fiber.child = null; null !== row; ) {\n    var nextRow = row.sibling;\n    row.sibling = fiber.child;\n    fiber.child = row;\n    row = nextRow;\n  }\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  nextProps = nextProps.children;\n  var suspenseContext = suspenseStackCursor.current;\n  if (workInProgress.flags & 128)\n    return pushSuspenseListContext(workInProgress, suspenseContext), null;\n  var shouldForceFallback = 0 !== (suspenseContext & 2);\n  shouldForceFallback\n    ? ((suspenseContext = (suspenseContext & 1) | 2),\n      (workInProgress.flags |= 128))\n    : (suspenseContext &= 1);\n  pushSuspenseListContext(workInProgress, suspenseContext);\n  \"backwards\" === revealOrder && null !== current\n    ? (reverseChildren(current),\n      reconcileChildren(current, workInProgress, nextProps, renderLanes),\n      reverseChildren(current))\n    : reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  nextProps = isHydrating ? treeForkCount : 0;\n  if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n    a: for (current = workInProgress.child; null !== current; ) {\n      if (13 === current.tag)\n        null !== current.memoizedState &&\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n      else if (19 === current.tag)\n        scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n      else if (null !== current.child) {\n        current.child.return = current;\n        current = current.child;\n        continue;\n      }\n      if (current === workInProgress) break a;\n      for (; null === current.sibling; ) {\n        if (null === current.return || current.return === workInProgress)\n          break a;\n        current = current.return;\n      }\n      current.sibling.return = current.return;\n      current = current.sibling;\n    }\n  switch (revealOrder) {\n    case \"backwards\":\n      renderLanes = findLastContentRow(workInProgress.child);\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling),\n          (renderLanes.sibling = null),\n          reverseChildren(workInProgress));\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        revealOrder,\n        null,\n        tailMode,\n        nextProps\n      );\n      break;\n    case \"unstable_legacy-backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode,\n        nextProps\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        null,\n        null,\n        void 0,\n        nextProps\n      );\n      break;\n    case \"independent\":\n      workInProgress.memoizedState = null;\n      break;\n    default:\n      (renderLanes = findLastContentRow(workInProgress.child)),\n        null === renderLanes\n          ? ((revealOrder = workInProgress.child),\n            (workInProgress.child = null))\n          : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null)),\n        initSuspenseListRenderState(\n          workInProgress,\n          !1,\n          revealOrder,\n          renderLanes,\n          tailMode,\n          nextProps\n        );\n  }\n  return workInProgress.child;\n}\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  pushProvider(workInProgress, workInProgress.type, newProps.value);\n  reconcileChildren(current, workInProgress, newProps.children, renderLanes);\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 31:\n      if (null !== workInProgress.memoizedState)\n        return (\n          (workInProgress.flags |= 128),\n          pushDehydratedActivitySuspenseHandler(workInProgress),\n          null\n        );\n      break;\n    case 13:\n      var state$108 = workInProgress.memoizedState;\n      if (null !== state$108) {\n        if (null !== state$108.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        state$108 = propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        );\n        var primaryChildLanes = workInProgress.child.childLanes;\n        if (state$108 || 0 !== (renderLanes & primaryChildLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      if (workInProgress.flags & 128)\n        return updateSuspenseListComponent(\n          current,\n          workInProgress,\n          renderLanes\n        );\n      primaryChildLanes = 0 !== (current.flags & 128);\n      state$108 = 0 !== (renderLanes & workInProgress.childLanes);\n      state$108 ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state$108 = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (primaryChildLanes) {\n        if (state$108)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      primaryChildLanes = workInProgress.memoizedState;\n      null !== primaryChildLanes &&\n        ((primaryChildLanes.rendering = null),\n        (primaryChildLanes.tail = null),\n        (primaryChildLanes.lastEffect = null));\n      pushSuspenseListContext(workInProgress, suspenseStackCursor.current);\n      if (state$108) break;\n      else return null;\n    case 22:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(\n          current,\n          workInProgress,\n          renderLanes,\n          workInProgress.pendingProps\n        )\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        var props = workInProgress.pendingProps;\n        current = resolveLazy(workInProgress.elementType);\n        workInProgress.type = current;\n        if (\"function\" === typeof current)\n          shouldConstruct(current)\n            ? ((props = resolveClassComponentProps(current, props)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== current && null !== current) {\n            var $$typeof = current.$$typeof;\n            if ($$typeof === REACT_FORWARD_REF_TYPE) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              );\n              break a;\n            } else if ($$typeof === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              );\n              break a;\n            } else if ($$typeof === REACT_CONTEXT_TYPE) {\n              workInProgress.tag = 10;\n              workInProgress.type = current;\n              workInProgress = updateContextProvider(\n                null,\n                workInProgress,\n                renderLanes\n              );\n              break a;\n            }\n          }\n          workInProgress = getComponentNameFromType(current) || current;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (props = workInProgress.type),\n        ($$typeof = resolveClassComponentProps(\n          props,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          props,\n          $$typeof,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        props = workInProgress.pendingProps;\n        var prevState = workInProgress.memoizedState;\n        $$typeof = prevState.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, props, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        props = nextState.cache;\n        pushProvider(workInProgress, CacheContext, props);\n        props !== prevState.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        props = nextState.element;\n        if (prevState.isDehydrated)\n          if (\n            ((prevState = {\n              element: props,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = prevState),\n            (workInProgress.memoizedState = prevState),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              props,\n              renderLanes\n            );\n            break a;\n          } else if (props !== $$typeof) {\n            $$typeof = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError($$typeof);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              props,\n              renderLanes\n            );\n            break a;\n          } else {\n            current = workInProgress.stateNode.containerInfo;\n            switch (current.nodeType) {\n              case 9:\n                current = current.body;\n                break;\n              default:\n                current =\n                  \"HTML\" === current.nodeName\n                    ? current.ownerDocument.body\n                    : current;\n            }\n            nextHydratableInstance = getNextHydratable(current.firstChild);\n            hydrationParentFiber = workInProgress;\n            isHydrating = !0;\n            hydrationErrors = null;\n            rootOrSingletonContext = !0;\n            renderLanes = mountChildFibers(\n              workInProgress,\n              null,\n              props,\n              renderLanes\n            );\n            for (workInProgress.child = renderLanes; renderLanes; )\n              (renderLanes.flags = (renderLanes.flags & -3) | 134221824),\n                (renderLanes = renderLanes.sibling);\n          }\n        else {\n          resetHydrationState();\n          if (props === $$typeof) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(current, workInProgress, props, renderLanes);\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              (workInProgress.stateNode = createHoistableInstance(\n                workInProgress.type,\n                workInProgress.pendingProps,\n                rootInstanceStackCursor.current,\n                workInProgress\n              ))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((props = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          ($$typeof = nextHydratableInstance),\n          isSingletonScope(workInProgress.type)\n            ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n              (nextHydratableInstance = getNextHydratable(props.firstChild)))\n            : (nextHydratableInstance = $$typeof)),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        markRef(current, workInProgress),\n        null === current && (workInProgress.flags |= 4194304),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if (($$typeof = props = nextHydratableInstance))\n          (props = canHydrateInstance(\n            props,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== props\n              ? ((workInProgress.stateNode = props),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(props.firstChild)),\n                (rootOrSingletonContext = !1),\n                ($$typeof = !0))\n              : ($$typeof = !1);\n        $$typeof || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      $$typeof = workInProgress.type;\n      prevState = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      props = prevState.children;\n      shouldSetTextContent($$typeof, prevState)\n        ? (props = null)\n        : null !== nextState &&\n          shouldSetTextContent($$typeof, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        (($$typeof = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = $$typeof));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, props, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (props = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              props,\n              renderLanes\n            ))\n          : reconcileChildren(current, workInProgress, props, renderLanes),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        (props = workInProgress.pendingProps),\n        markRef(current, workInProgress),\n        reconcileChildren(current, workInProgress, props, renderLanes),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return updateContextProvider(current, workInProgress, renderLanes);\n    case 9:\n      return (\n        ($$typeof = workInProgress.type._context),\n        (props = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        ($$typeof = readContext($$typeof)),\n        (props = props($$typeof)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, props, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return updateActivityComponent(current, workInProgress, renderLanes);\n    case 22:\n      return updateOffscreenComponent(\n        current,\n        workInProgress,\n        renderLanes,\n        workInProgress.pendingProps\n      );\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (props = readContext(CacheContext)),\n        null === current\n          ? (($$typeof = peekCacheFromPool()),\n            null === $$typeof &&\n              (($$typeof = workInProgressRoot),\n              (prevState = createCache()),\n              ($$typeof.pooledCache = prevState),\n              prevState.refCount++,\n              null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n              ($$typeof = prevState)),\n            (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, $$typeof))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            ($$typeof = current.memoizedState),\n            (prevState = workInProgress.memoizedState),\n            $$typeof.parent !== props\n              ? (($$typeof = { parent: props, cache: props }),\n                (workInProgress.memoizedState = $$typeof),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      $$typeof),\n                pushProvider(workInProgress, CacheContext, props))\n              : ((props = prevState.cache),\n                pushProvider(workInProgress, CacheContext, props),\n                props !== $$typeof.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 30:\n      return (\n        null === workInProgress.stateNode &&\n          (workInProgress.stateNode = {\n            autoName: null,\n            paired: null,\n            clones: null,\n            ref: null\n          }),\n        (props = workInProgress.pendingProps),\n        null != props.name && \"auto\" !== props.name\n          ? (workInProgress.flags |= null === current ? 18882560 : 18874368)\n          : isHydrating && pushMaterializedTreeId(workInProgress),\n        null !== current && current.memoizedProps.name !== props.name\n          ? (workInProgress.flags |= 4194816)\n          : markRef(current, workInProgress),\n        reconcileChildren(current, workInProgress, props.children, renderLanes),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n  workInProgress,\n  type,\n  oldProps,\n  newProps,\n  renderLanes\n) {\n  var JSCompiler_temp;\n  if ((JSCompiler_temp = 0 !== (workInProgress.mode & 32)))\n    JSCompiler_temp =\n      null === oldProps\n        ? maySuspendCommit(type, newProps)\n        : maySuspendCommit(type, newProps) &&\n          (newProps.src !== oldProps.src ||\n            newProps.srcSet !== oldProps.srcSet);\n  if (JSCompiler_temp) {\n    if (\n      ((workInProgress.flags |= 16777216),\n      (renderLanes & 335544128) === renderLanes)\n    )\n      if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n      else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n      else\n        throw (\n          ((suspendedThenable = noopSuspenseyCommitThenable),\n          SuspenseyCommitException)\n        );\n  } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n    if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n    else\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"visible\":\n        break;\n      case \"collapsed\":\n        for (\n          var tailNode = renderState.tail, lastTailNode = null;\n          null !== tailNode;\n\n        )\n          null !== tailNode.alternate && (lastTailNode = tailNode),\n            (tailNode = tailNode.sibling);\n        null === lastTailNode\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode.sibling = null);\n        break;\n      default:\n        hasRenderedATailFallback = renderState.tail;\n        for (tailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (tailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === tailNode\n          ? (renderState.tail = null)\n          : (tailNode.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$113 = completedWork.child; null !== child$113; )\n      (newChildLanes |= child$113.lanes | child$113.childLanes),\n        (subtreeFlags |= child$113.subtreeFlags & 1206910976),\n        (subtreeFlags |= child$113.flags & 1206910976),\n        (child$113.return = completedWork),\n        (child$113 = child$113.sibling);\n  else\n    for (child$113 = completedWork.child; null !== child$113; )\n      (newChildLanes |= child$113.lanes | child$113.childLanes),\n        (subtreeFlags |= child$113.subtreeFlags),\n        (subtreeFlags |= child$113.flags),\n        (child$113.return = completedWork),\n        (child$113 = child$113.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            upgradeHydrationErrorsToRecoverable());\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      var type = workInProgress.type,\n        nextResource = workInProgress.memoizedState;\n      null === current\n        ? (markUpdate(workInProgress),\n          null !== nextResource\n            ? (bubbleProperties(workInProgress),\n              preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n            : (bubbleProperties(workInProgress),\n              preloadInstanceAndSuspendIfNeeded(\n                workInProgress,\n                type,\n                null,\n                newProps,\n                renderLanes\n              )))\n        : nextResource\n          ? nextResource !== current.memoizedState\n            ? (markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n            : (bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217))\n          : ((current = current.memoizedProps),\n            current !== newProps && markUpdate(workInProgress),\n            bubbleProperties(workInProgress),\n            preloadInstanceAndSuspendIfNeeded(\n              workInProgress,\n              type,\n              current,\n              newProps,\n              renderLanes\n            ));\n      return null;\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          workInProgress.subtreeFlags &= -33554433;\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.subtreeFlags &= -33554433;\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          workInProgress.subtreeFlags &= -33554433;\n          return null;\n        }\n        nextResource = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, nextResource);\n        else {\n          var ownerDocument = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (nextResource) {\n            case 1:\n              nextResource = ownerDocument.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                type\n              );\n              break;\n            case 2:\n              nextResource = ownerDocument.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                type\n              );\n              break;\n            default:\n              switch (type) {\n                case \"svg\":\n                  nextResource = ownerDocument.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    type\n                  );\n                  break;\n                case \"math\":\n                  nextResource = ownerDocument.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    type\n                  );\n                  break;\n                case \"script\":\n                  nextResource = ownerDocument.createElement(\"div\");\n                  nextResource.innerHTML = \"<script>\\x3c/script>\";\n                  nextResource = nextResource.removeChild(\n                    nextResource.firstChild\n                  );\n                  break;\n                case \"select\":\n                  nextResource =\n                    \"string\" === typeof newProps.is\n                      ? ownerDocument.createElement(\"select\", {\n                          is: newProps.is\n                        })\n                      : ownerDocument.createElement(\"select\");\n                  newProps.multiple\n                    ? (nextResource.multiple = !0)\n                    : newProps.size && (nextResource.size = newProps.size);\n                  break;\n                default:\n                  nextResource =\n                    \"string\" === typeof newProps.is\n                      ? ownerDocument.createElement(type, { is: newProps.is })\n                      : ownerDocument.createElement(type);\n              }\n          }\n          nextResource[internalInstanceKey] = workInProgress;\n          nextResource[internalPropsKey] = newProps;\n          a: for (\n            ownerDocument = workInProgress.child;\n            null !== ownerDocument;\n\n          ) {\n            if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n              nextResource.appendChild(ownerDocument.stateNode);\n            else if (\n              4 !== ownerDocument.tag &&\n              27 !== ownerDocument.tag &&\n              null !== ownerDocument.child\n            ) {\n              ownerDocument.child.return = ownerDocument;\n              ownerDocument = ownerDocument.child;\n              continue;\n            }\n            if (ownerDocument === workInProgress) break a;\n            for (; null === ownerDocument.sibling; ) {\n              if (\n                null === ownerDocument.return ||\n                ownerDocument.return === workInProgress\n              )\n                break a;\n              ownerDocument = ownerDocument.return;\n            }\n            ownerDocument.sibling.return = ownerDocument.return;\n            ownerDocument = ownerDocument.sibling;\n          }\n          workInProgress.stateNode = nextResource;\n          a: switch (\n            (setInitialProperties(nextResource, type, newProps), type)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              newProps = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              newProps = !0;\n              break a;\n            default:\n              newProps = !1;\n          }\n          newProps && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.subtreeFlags &= -33554433;\n      preloadInstanceAndSuspendIfNeeded(\n        workInProgress,\n        workInProgress.type,\n        null === current ? null : current.memoizedProps,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress, !0);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 31:\n      renderLanes = workInProgress.memoizedState;\n      if (null === current || null !== current.memoizedState) {\n        newProps = popHydrationState(workInProgress);\n        if (null !== renderLanes) {\n          if (null === current) {\n            if (!newProps) throw Error(formatProdErrorMessage(318));\n            current = workInProgress.memoizedState;\n            current = null !== current ? current.dehydrated : null;\n            if (!current) throw Error(formatProdErrorMessage(557));\n            current[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          current = !1;\n        } else\n          (renderLanes = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = renderLanes),\n            (current = !0);\n        if (!current) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n        if (0 !== (workInProgress.flags & 128))\n          throw Error(formatProdErrorMessage(558));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          (type = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = type),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      renderLanes &&\n        ((newProps = workInProgress.child),\n        (type = null),\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool),\n        (nextResource = null),\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (nextResource = newProps.memoizedState.cachePool.pool),\n        nextResource !== type && (newProps.flags |= 2048));\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        (workInProgress.flags |= 67108864),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      popSuspenseListContext(workInProgress);\n      newProps = workInProgress.memoizedState;\n      if (null === newProps) return bubbleProperties(workInProgress), null;\n      type = 0 !== (workInProgress.flags & 128);\n      nextResource = newProps.rendering;\n      if (null === nextResource)\n        if (type) cutOffTailIfNeeded(newProps, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              nextResource = findFirstSuspended(current);\n              if (null !== nextResource) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(newProps, !1);\n                current = nextResource.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                pushSuspenseListContext(\n                  workInProgress,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                isHydrating &&\n                  pushTreeFork(workInProgress, newProps.treeForkCount);\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== newProps.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (type = !0),\n            cutOffTailIfNeeded(newProps, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!type)\n          if (\n            ((current = findFirstSuspended(nextResource)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 128),\n              (type = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(newProps, !0),\n              null === newProps.tail &&\n                \"collapsed\" !== newProps.tailMode &&\n                \"visible\" !== newProps.tailMode &&\n                !nextResource.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - newProps.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (type = !0),\n              cutOffTailIfNeeded(newProps, !1),\n              (workInProgress.lanes = 4194304));\n        newProps.isBackwards\n          ? ((nextResource.sibling = workInProgress.child),\n            (workInProgress.child = nextResource))\n          : ((current = newProps.last),\n            null !== current\n              ? (current.sibling = nextResource)\n              : (workInProgress.child = nextResource),\n            (newProps.last = nextResource));\n      }\n      if (null !== newProps.tail) {\n        current = newProps.tail;\n        a: {\n          for (renderLanes = current; null !== renderLanes; ) {\n            if (null !== renderLanes.alternate) {\n              renderLanes = !1;\n              break a;\n            }\n            renderLanes = renderLanes.sibling;\n          }\n          renderLanes = !0;\n        }\n        newProps.rendering = current;\n        newProps.tail = current.sibling;\n        newProps.renderingStartTime = now();\n        current.sibling = null;\n        nextResource = suspenseStackCursor.current;\n        nextResource = type ? (nextResource & 1) | 2 : nextResource & 1;\n        \"visible\" === newProps.tailMode ||\n        \"collapsed\" === newProps.tailMode ||\n        !renderLanes ||\n        isHydrating\n          ? pushSuspenseListContext(workInProgress, nextResource)\n          : ((renderLanes = nextResource),\n            push(suspenseHandlerStackCursor, workInProgress),\n            push(suspenseStackCursor, renderLanes),\n            null === shellBoundary && (shellBoundary = workInProgress));\n        isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount);\n        return current;\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n    case 30:\n      return (\n        (workInProgress.flags |= 33554432),\n        bubbleProperties(workInProgress),\n        null\n      );\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 31:\n      if (null !== workInProgress.memoizedState) {\n        popSuspenseHandler(workInProgress);\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return (\n        popSuspenseListContext(workInProgress),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128),\n            (current = workInProgress.memoizedState),\n            null !== current &&\n              ((current.rendering = null), (current.tail = null)),\n            (workInProgress.flags |= 4),\n            workInProgress)\n          : null\n      );\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 31:\n      null !== interruptedWork.memoizedState &&\n        popSuspenseHandler(interruptedWork);\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      popSuspenseListContext(interruptedWork);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n              destroy_ = destroy;\n            try {\n              destroy_();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = current.stateNode;\n          break;\n        case 30:\n          var instance = current.stateNode,\n            name = getViewTransitionName(current.memoizedProps, instance);\n          if (null === instance.ref || instance.ref.name !== name)\n            instance.ref = createViewTransitionInstance(name);\n          instanceToUse = instance.ref;\n          break;\n        case 7:\n          if (null === current.stateNode) {\n            var fragmentInstance = new FragmentInstance(current);\n            traverseVisibleInstancesAndTextInstances(\n              current.child,\n              !1,\n              addFragmentHandleToFiber,\n              fragmentInstance,\n              void 0,\n              void 0\n            );\n            current.stateNode = fragmentInstance;\n          }\n          instanceToUse = current.stateNode;\n          break;\n        default:\n          instanceToUse = current.stateNode;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$148) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$148);\n      }\n    else ref.current = null;\n}\nfunction commitNewChildToFragmentInstances(fiber, parentFragmentInstances) {\n  if (\n    (5 === fiber.tag || 27 === fiber.tag || 6 === fiber.tag) &&\n    null === fiber.alternate &&\n    null !== parentFragmentInstances\n  )\n    for (var i = 0; i < parentFragmentInstances.length; i++)\n      commitNewChildToFragmentInstance(\n        fiber.stateNode,\n        parentFragmentInstances[i]\n      );\n}\nfunction commitFragmentInstanceInsertionEffects(fiber) {\n  for (var parent = fiber.return; null !== parent; ) {\n    isFragmentInstanceParent(parent) &&\n      commitNewChildToFragmentInstance(fiber.stateNode, parent.stateNode);\n    if (isFragmentInstanceHostBoundary(parent)) break;\n    parent = parent.return;\n  }\n}\nfunction commitFragmentInstanceDeletionEffects(fiber) {\n  for (var parent = fiber.return; null !== parent; ) {\n    isFragmentInstanceParent(parent) &&\n      deleteChildFromFragmentInstance(fiber.stateNode, parent.stateNode);\n    if (isFragmentInstanceHostBoundary(parent)) break;\n    parent = parent.return;\n  }\n}\nfunction isFragmentInstanceHostBoundary(fiber) {\n  return 5 === fiber.tag || 3 === fiber.tag || 27 === fiber.tag;\n}\nfunction isFragmentInstanceParent(fiber) {\n  return fiber && 7 === fiber.tag && null !== fiber.stateNode;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n    ) {\n      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(\n  node,\n  before,\n  parent,\n  parentFragmentInstances\n) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (tag = node.stateNode),\n      before\n        ? (9 === parent.nodeType\n            ? parent.body\n            : \"HTML\" === parent.nodeName\n              ? parent.ownerDocument.body\n              : parent\n          ).insertBefore(tag, before)\n        : ((before =\n            9 === parent.nodeType\n              ? parent.body\n              : \"HTML\" === parent.nodeName\n                ? parent.ownerDocument.body\n                : parent),\n          before.appendChild(tag),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1)),\n      commitNewChildToFragmentInstances(node, parentFragmentInstances),\n      (viewTransitionMutationContext = !0);\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      (commitNewChildToFragmentInstances(node, parentFragmentInstances),\n      (parentFragmentInstances = null),\n      isSingletonScope(node.type) &&\n        ((parent = node.stateNode), (before = null))),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNodeIntoContainer(\n        node,\n        before,\n        parent,\n        parentFragmentInstances\n      ),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(\n        node,\n        before,\n        parent,\n        parentFragmentInstances\n      ),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(\n  node,\n  before,\n  parent,\n  parentFragmentInstances\n) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (tag = node.stateNode),\n      before ? parent.insertBefore(tag, before) : parent.appendChild(tag),\n      commitNewChildToFragmentInstances(node, parentFragmentInstances),\n      (viewTransitionMutationContext = !0);\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      (commitNewChildToFragmentInstances(node, parentFragmentInstances),\n      (parentFragmentInstances = null),\n      isSingletonScope(node.type) && (parent = node.stateNode)),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNode(\n        node,\n        before,\n        parent,\n        parentFragmentInstances\n      ),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(\n        node,\n        before,\n        parent,\n        parentFragmentInstances\n      ),\n        (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n  var singleton = finishedWork.stateNode,\n    props = finishedWork.memoizedProps;\n  try {\n    for (\n      var type = finishedWork.type, attributes = singleton.attributes;\n      attributes.length;\n\n    )\n      singleton.removeAttributeNode(attributes[0]);\n    setInitialProperties(singleton, type, props);\n    singleton[internalInstanceKey] = finishedWork;\n    singleton[internalPropsKey] = props;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar shouldStartViewTransition = !1,\n  appearingViewTransitions = null;\nfunction trackEnterViewTransitions(placement) {\n  if (30 === placement.tag || 0 !== (placement.subtreeFlags & 33554432))\n    shouldStartViewTransition = !0;\n}\nvar viewTransitionCancelableChildren = null;\nfunction pushViewTransitionCancelableScope() {\n  var prevChildren = viewTransitionCancelableChildren;\n  viewTransitionCancelableChildren = null;\n  return prevChildren;\n}\nvar viewTransitionHostInstanceIdx = 0;\nfunction applyViewTransitionToHostInstances(\n  fiber,\n  name,\n  className,\n  collectMeasurements,\n  stopAtNestedViewTransitions\n) {\n  viewTransitionHostInstanceIdx = 0;\n  return applyViewTransitionToHostInstancesRecursive(\n    fiber.child,\n    name,\n    className,\n    collectMeasurements,\n    stopAtNestedViewTransitions\n  );\n}\nfunction applyViewTransitionToHostInstancesRecursive(\n  child,\n  name,\n  className,\n  collectMeasurements,\n  stopAtNestedViewTransitions\n) {\n  for (var inViewport = !1; null !== child; ) {\n    if (5 === child.tag) {\n      var instance = child.stateNode;\n      if (null !== collectMeasurements) {\n        var measurement = measureInstance(instance);\n        collectMeasurements.push(measurement);\n        measurement.view && (inViewport = !0);\n      } else\n        inViewport || (measureInstance(instance).view && (inViewport = !0));\n      shouldStartViewTransition = !0;\n      applyViewTransitionName(\n        instance,\n        0 === viewTransitionHostInstanceIdx\n          ? name\n          : name + \"_\" + viewTransitionHostInstanceIdx,\n        className\n      );\n      viewTransitionHostInstanceIdx++;\n    } else if (22 !== child.tag || null === child.memoizedState)\n      (30 === child.tag && stopAtNestedViewTransitions) ||\n        (applyViewTransitionToHostInstancesRecursive(\n          child.child,\n          name,\n          className,\n          collectMeasurements,\n          stopAtNestedViewTransitions\n        ) &&\n          (inViewport = !0));\n    child = child.sibling;\n  }\n  return inViewport;\n}\nfunction restoreViewTransitionOnHostInstances(\n  child,\n  stopAtNestedViewTransitions\n) {\n  for (; null !== child; ) {\n    if (5 === child.tag)\n      restoreViewTransitionName(child.stateNode, child.memoizedProps);\n    else if (22 !== child.tag || null === child.memoizedState)\n      (30 === child.tag && stopAtNestedViewTransitions) ||\n        restoreViewTransitionOnHostInstances(\n          child.child,\n          stopAtNestedViewTransitions\n        );\n    child = child.sibling;\n  }\n}\nfunction commitAppearingPairViewTransitions(placement) {\n  if (0 !== (placement.subtreeFlags & 18874368))\n    for (placement = placement.child; null !== placement; ) {\n      if (22 !== placement.tag || null === placement.memoizedState)\n        if (\n          (commitAppearingPairViewTransitions(placement),\n          30 === placement.tag &&\n            0 !== (placement.flags & 18874368) &&\n            placement.stateNode.paired)\n        ) {\n          var props = placement.memoizedProps;\n          if (null == props.name || \"auto\" === props.name)\n            throw Error(formatProdErrorMessage(544));\n          var name = props.name;\n          props = getViewTransitionClassName(props.default, props.share);\n          \"none\" !== props &&\n            (applyViewTransitionToHostInstances(\n              placement,\n              name,\n              props,\n              null,\n              !1\n            ) ||\n              restoreViewTransitionOnHostInstances(placement.child, !1));\n        }\n      placement = placement.sibling;\n    }\n}\nfunction commitEnterViewTransitions(placement, gesture) {\n  if (30 === placement.tag) {\n    var state = placement.stateNode,\n      props = placement.memoizedProps,\n      name = getViewTransitionName(props, state),\n      className = getViewTransitionClassName(\n        props.default,\n        state.paired ? props.share : props.enter\n      );\n    \"none\" !== className\n      ? applyViewTransitionToHostInstances(placement, name, className, null, !1)\n        ? (commitAppearingPairViewTransitions(placement),\n          state.paired ||\n            gesture ||\n            scheduleViewTransitionEvent(placement, props.onEnter))\n        : restoreViewTransitionOnHostInstances(placement.child, !1)\n      : commitAppearingPairViewTransitions(placement);\n  } else if (0 !== (placement.subtreeFlags & 33554432))\n    for (placement = placement.child; null !== placement; )\n      commitEnterViewTransitions(placement, gesture),\n        (placement = placement.sibling);\n  else commitAppearingPairViewTransitions(placement);\n}\nfunction commitDeletedPairViewTransitions(deletion) {\n  if (\n    null !== appearingViewTransitions &&\n    0 !== appearingViewTransitions.size\n  ) {\n    var pairs = appearingViewTransitions;\n    if (0 !== (deletion.subtreeFlags & 18874368))\n      for (deletion = deletion.child; null !== deletion; ) {\n        if (22 !== deletion.tag || null === deletion.memoizedState) {\n          if (30 === deletion.tag && 0 !== (deletion.flags & 18874368)) {\n            var props = deletion.memoizedProps,\n              name = props.name;\n            if (null != name && \"auto\" !== name) {\n              var pair = pairs.get(name);\n              if (void 0 !== pair) {\n                var className = getViewTransitionClassName(\n                  props.default,\n                  props.share\n                );\n                \"none\" !== className &&\n                  (applyViewTransitionToHostInstances(\n                    deletion,\n                    name,\n                    className,\n                    null,\n                    !1\n                  )\n                    ? ((className = deletion.stateNode),\n                      (pair.paired = className),\n                      (className.paired = pair),\n                      scheduleViewTransitionEvent(deletion, props.onShare))\n                    : restoreViewTransitionOnHostInstances(deletion.child, !1));\n                pairs.delete(name);\n                if (0 === pairs.size) break;\n              }\n            }\n          }\n          commitDeletedPairViewTransitions(deletion);\n        }\n        deletion = deletion.sibling;\n      }\n  }\n}\nfunction commitExitViewTransitions(deletion) {\n  if (30 === deletion.tag) {\n    var props = deletion.memoizedProps,\n      name = getViewTransitionName(props, deletion.stateNode),\n      pair =\n        null !== appearingViewTransitions\n          ? appearingViewTransitions.get(name)\n          : void 0,\n      className = getViewTransitionClassName(\n        props.default,\n        void 0 !== pair ? props.share : props.exit\n      );\n    \"none\" !== className &&\n      (applyViewTransitionToHostInstances(deletion, name, className, null, !1)\n        ? void 0 !== pair\n          ? ((className = deletion.stateNode),\n            (pair.paired = className),\n            (className.paired = pair),\n            appearingViewTransitions.delete(name),\n            scheduleViewTransitionEvent(deletion, props.onShare))\n          : scheduleViewTransitionEvent(deletion, props.onExit)\n        : restoreViewTransitionOnHostInstances(deletion.child, !1));\n    null !== appearingViewTransitions &&\n      commitDeletedPairViewTransitions(deletion);\n  } else if (0 !== (deletion.subtreeFlags & 33554432))\n    for (deletion = deletion.child; null !== deletion; )\n      commitExitViewTransitions(deletion), (deletion = deletion.sibling);\n  else\n    null !== appearingViewTransitions &&\n      commitDeletedPairViewTransitions(deletion);\n}\nfunction commitNestedViewTransitions(changedParent) {\n  for (changedParent = changedParent.child; null !== changedParent; ) {\n    if (30 === changedParent.tag) {\n      var props = changedParent.memoizedProps,\n        name = getViewTransitionName(props, changedParent.stateNode);\n      props = getViewTransitionClassName(props.default, props.update);\n      changedParent.flags &= -5;\n      \"none\" !== props &&\n        applyViewTransitionToHostInstances(\n          changedParent,\n          name,\n          props,\n          (changedParent.memoizedState = []),\n          !1\n        );\n    } else\n      0 !== (changedParent.subtreeFlags & 33554432) &&\n        commitNestedViewTransitions(changedParent);\n    changedParent = changedParent.sibling;\n  }\n}\nfunction restorePairedViewTransitions(parent) {\n  if (0 !== (parent.subtreeFlags & 18874368))\n    for (parent = parent.child; null !== parent; ) {\n      if (22 !== parent.tag || null === parent.memoizedState) {\n        if (30 === parent.tag && 0 !== (parent.flags & 18874368)) {\n          var instance = parent.stateNode;\n          null !== instance.paired &&\n            ((instance.paired = null),\n            restoreViewTransitionOnHostInstances(parent.child, !1));\n        }\n        restorePairedViewTransitions(parent);\n      }\n      parent = parent.sibling;\n    }\n}\nfunction restoreEnterOrExitViewTransitions(fiber) {\n  if (30 === fiber.tag)\n    (fiber.stateNode.paired = null),\n      restoreViewTransitionOnHostInstances(fiber.child, !1),\n      restorePairedViewTransitions(fiber);\n  else if (0 !== (fiber.subtreeFlags & 33554432))\n    for (fiber = fiber.child; null !== fiber; )\n      restoreEnterOrExitViewTransitions(fiber), (fiber = fiber.sibling);\n  else restorePairedViewTransitions(fiber);\n}\nfunction restoreNestedViewTransitions(changedParent) {\n  for (changedParent = changedParent.child; null !== changedParent; )\n    30 === changedParent.tag\n      ? restoreViewTransitionOnHostInstances(changedParent.child, !1)\n      : 0 !== (changedParent.subtreeFlags & 33554432) &&\n        restoreNestedViewTransitions(changedParent),\n      (changedParent = changedParent.sibling);\n}\nfunction measureViewTransitionHostInstancesRecursive(\n  parentViewTransition,\n  child,\n  newName,\n  oldName,\n  className,\n  previousMeasurements,\n  stopAtNestedViewTransitions\n) {\n  for (var inViewport = !1; null !== child; ) {\n    if (5 === child.tag) {\n      var instance = child.stateNode;\n      if (\n        null !== previousMeasurements &&\n        viewTransitionHostInstanceIdx < previousMeasurements.length\n      ) {\n        var previousMeasurement =\n            previousMeasurements[viewTransitionHostInstanceIdx],\n          nextMeasurement = measureInstance(instance);\n        if (previousMeasurement.view || nextMeasurement.view) inViewport = !0;\n        var JSCompiler_temp;\n        if ((JSCompiler_temp = 0 === (parentViewTransition.flags & 4)))\n          if (nextMeasurement.clip) JSCompiler_temp = !0;\n          else {\n            JSCompiler_temp = previousMeasurement.rect;\n            var newRect = nextMeasurement.rect;\n            JSCompiler_temp =\n              JSCompiler_temp.y !== newRect.y ||\n              JSCompiler_temp.x !== newRect.x ||\n              JSCompiler_temp.height !== newRect.height ||\n              JSCompiler_temp.width !== newRect.width;\n          }\n        JSCompiler_temp && (parentViewTransition.flags |= 4);\n        nextMeasurement.abs\n          ? (nextMeasurement = !previousMeasurement.abs)\n          : ((previousMeasurement = previousMeasurement.rect),\n            (nextMeasurement = nextMeasurement.rect),\n            (nextMeasurement =\n              previousMeasurement.height !== nextMeasurement.height ||\n              previousMeasurement.width !== nextMeasurement.width));\n        nextMeasurement && (parentViewTransition.flags |= 32);\n      } else parentViewTransition.flags |= 32;\n      0 !== (parentViewTransition.flags & 4) &&\n        applyViewTransitionName(\n          instance,\n          0 === viewTransitionHostInstanceIdx\n            ? newName\n            : newName + \"_\" + viewTransitionHostInstanceIdx,\n          className\n        );\n      (inViewport && 0 !== (parentViewTransition.flags & 4)) ||\n        (null === viewTransitionCancelableChildren &&\n          (viewTransitionCancelableChildren = []),\n        viewTransitionCancelableChildren.push(\n          instance,\n          0 === viewTransitionHostInstanceIdx\n            ? oldName\n            : oldName + \"_\" + viewTransitionHostInstanceIdx,\n          child.memoizedProps\n        ));\n      viewTransitionHostInstanceIdx++;\n    } else if (22 !== child.tag || null === child.memoizedState)\n      30 === child.tag && stopAtNestedViewTransitions\n        ? (parentViewTransition.flags |= child.flags & 32)\n        : measureViewTransitionHostInstancesRecursive(\n            parentViewTransition,\n            child.child,\n            newName,\n            oldName,\n            className,\n            previousMeasurements,\n            stopAtNestedViewTransitions\n          ) && (inViewport = !0);\n    child = child.sibling;\n  }\n  return inViewport;\n}\nfunction measureNestedViewTransitions(changedParent, gesture) {\n  for (changedParent = changedParent.child; null !== changedParent; ) {\n    if (30 === changedParent.tag) {\n      var props = changedParent.memoizedProps,\n        state = changedParent.stateNode,\n        name = getViewTransitionName(props, state),\n        className = getViewTransitionClassName(props.default, props.update);\n      if (gesture) {\n        state = state.clones;\n        var previousMeasurements =\n          null === state ? null : state.map(measureClonedInstance);\n      } else\n        (previousMeasurements = changedParent.memoizedState),\n          (changedParent.memoizedState = null);\n      state = changedParent;\n      var child = changedParent.child;\n      viewTransitionHostInstanceIdx = 0;\n      name = measureViewTransitionHostInstancesRecursive(\n        state,\n        child,\n        name,\n        name,\n        className,\n        previousMeasurements,\n        !1\n      );\n      0 !== (changedParent.flags & 4) &&\n        name &&\n        (gesture || scheduleViewTransitionEvent(changedParent, props.onUpdate));\n    } else\n      0 !== (changedParent.subtreeFlags & 33554432) &&\n        measureNestedViewTransitions(changedParent, gesture);\n    changedParent = changedParent.sibling;\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  offscreenDirectParentIsHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null,\n  viewTransitionContextChanged = !1,\n  inUpdateViewTransition = !1,\n  rootViewTransitionAffected = !1,\n  rootViewTransitionNameCanceled = !1;\nfunction commitBeforeMutationEffects(root, firstChild, committedLanes) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$21) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  committedLanes = (committedLanes & 335544064) === committedLanes;\n  nextEffect = firstChild;\n  for (firstChild = committedLanes ? 9270 : 1024; null !== nextEffect; ) {\n    root = nextEffect;\n    if (\n      committedLanes &&\n      ((JSCompiler_temp = root.deletions), null !== JSCompiler_temp)\n    )\n      for (\n        anchorOffset = 0;\n        anchorOffset < JSCompiler_temp.length;\n        anchorOffset++\n      )\n        committedLanes &&\n          commitExitViewTransitions(JSCompiler_temp[anchorOffset]);\n    if (null === root.alternate && 0 !== (root.flags & 2))\n      committedLanes && trackEnterViewTransitions(root),\n        commitBeforeMutationEffects_complete(committedLanes);\n    else {\n      if (22 === root.tag)\n        if (((JSCompiler_temp = root.alternate), null !== root.memoizedState)) {\n          null !== JSCompiler_temp &&\n            null === JSCompiler_temp.memoizedState &&\n            committedLanes &&\n            commitExitViewTransitions(JSCompiler_temp);\n          commitBeforeMutationEffects_complete(committedLanes);\n          continue;\n        } else if (\n          null !== JSCompiler_temp &&\n          null !== JSCompiler_temp.memoizedState\n        ) {\n          committedLanes && trackEnterViewTransitions(root);\n          commitBeforeMutationEffects_complete(committedLanes);\n          continue;\n        }\n      JSCompiler_temp = root.child;\n      0 !== (root.subtreeFlags & firstChild) && null !== JSCompiler_temp\n        ? ((JSCompiler_temp.return = root), (nextEffect = JSCompiler_temp))\n        : (committedLanes && commitNestedViewTransitions(root),\n          commitBeforeMutationEffects_complete(committedLanes));\n    }\n  }\n  appearingViewTransitions = null;\n}\nfunction commitBeforeMutationEffects_complete(\n  isViewTransitionEligible$jscomp$0\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect,\n      isViewTransitionEligible = isViewTransitionEligible$jscomp$0,\n      current = fiber.alternate,\n      flags = fiber.flags;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        break;\n      case 1:\n        if (0 !== (flags & 1024) && null !== current) {\n          isViewTransitionEligible = void 0;\n          flags = current.memoizedProps;\n          current = current.memoizedState;\n          var instance = fiber.stateNode;\n          try {\n            var resolvedPrevProps = resolveClassComponentProps(\n              fiber.type,\n              flags\n            );\n            isViewTransitionEligible = instance.getSnapshotBeforeUpdate(\n              resolvedPrevProps,\n              current\n            );\n            instance.__reactInternalSnapshotBeforeUpdate =\n              isViewTransitionEligible;\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n        }\n        break;\n      case 3:\n        if (0 !== (flags & 1024))\n          if (\n            ((current = fiber.stateNode.containerInfo),\n            (isViewTransitionEligible = current.nodeType),\n            9 === isViewTransitionEligible)\n          )\n            clearContainerSparingly(current);\n          else if (1 === isViewTransitionEligible)\n            switch (current.nodeName) {\n              case \"HEAD\":\n              case \"HTML\":\n              case \"BODY\":\n                clearContainerSparingly(current);\n                break;\n              default:\n                current.textContent = \"\";\n            }\n        break;\n      case 5:\n      case 26:\n      case 27:\n      case 6:\n      case 4:\n      case 17:\n        break;\n      case 30:\n        isViewTransitionEligible &&\n          null !== current &&\n          ((isViewTransitionEligible = getViewTransitionName(\n            current.memoizedProps,\n            current.stateNode\n          )),\n          (flags = fiber.memoizedProps),\n          (flags = getViewTransitionClassName(flags.default, flags.update)),\n          \"none\" !== flags &&\n            applyViewTransitionToHostInstances(\n              current,\n              isViewTransitionEligible,\n              flags,\n              (current.memoizedState = []),\n              !0\n            ));\n        break;\n      default:\n        if (0 !== (flags & 1024)) throw Error(formatProdErrorMessage(163));\n    }\n    current = fiber.sibling;\n    if (null !== current) {\n      current.return = fiber.return;\n      nextEffect = current;\n      break;\n    }\n    nextEffect = fiber.return;\n  }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$146) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$146\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (\n        flags & 64 &&\n        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n      ) {\n        current = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              current = finishedWork.child.stateNode;\n              break;\n            case 1:\n              current = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(finishedRoot, current);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 27:\n      null === current &&\n        flags & 4 &&\n        commitHostSingletonAcquisition(finishedWork);\n    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 31:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          ((finishedRoot = finishedRoot.dehydrated),\n          null !== finishedRoot &&\n            ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n              null,\n              finishedWork\n            )),\n            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n      break;\n    case 22:\n      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!flags) {\n        var newOffscreenSubtreeWasHidden =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        current = offscreenSubtreeIsHidden;\n        prevProps = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = flags;\n        (offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden) && !prevProps\n          ? ((flags = 2),\n            0 !== (finishedWork.subtreeFlags & 8772) && (flags |= 1),\n            recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              flags\n            ))\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = current;\n        offscreenSubtreeWasHidden = prevProps;\n      }\n      break;\n    case 30:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 7:\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction hideOrUnhideAllChildren(parentFiber, isHidden) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; )\n    hideOrUnhideAllChildrenOnFiber(parentFiber, isHidden),\n      (parentFiber = parentFiber.sibling);\n}\nfunction hideOrUnhideAllChildrenOnFiber(fiber, isHidden) {\n  switch (fiber.tag) {\n    case 5:\n    case 26:\n      try {\n        var instance = fiber.stateNode;\n        if (isHidden) {\n          var style = instance.style;\n          \"function\" === typeof style.setProperty\n            ? style.setProperty(\"display\", \"none\", \"important\")\n            : (style.display = \"none\");\n        } else {\n          var instance$jscomp$0 = fiber.stateNode,\n            styleProp = fiber.memoizedProps.style,\n            display =\n              void 0 !== styleProp &&\n              null !== styleProp &&\n              styleProp.hasOwnProperty(\"display\")\n                ? styleProp.display\n                : null;\n          instance$jscomp$0.style.display =\n            null == display || \"boolean\" === typeof display\n              ? \"\"\n              : (\"\" + display).trim();\n        }\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n      hideOrUnhideNearestPortals(fiber, isHidden);\n      break;\n    case 6:\n      try {\n        (fiber.stateNode.nodeValue = isHidden ? \"\" : fiber.memoizedProps),\n          (viewTransitionMutationContext = !0);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n      break;\n    case 18:\n      try {\n        var instance$jscomp$1 = fiber.stateNode;\n        isHidden\n          ? hideOrUnhideDehydratedBoundary(instance$jscomp$1, !0)\n          : hideOrUnhideDehydratedBoundary(fiber.stateNode, !1);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n      break;\n    case 22:\n    case 23:\n      null === fiber.memoizedState && hideOrUnhideAllChildren(fiber, isHidden);\n      break;\n    default:\n      hideOrUnhideAllChildren(fiber, isHidden);\n  }\n}\nfunction hideOrUnhideNearestPortals(parentFiber, isHidden$jscomp$0) {\n  if (parentFiber.subtreeFlags & 67108864)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      a: {\n        var fiber = parentFiber,\n          isHidden = isHidden$jscomp$0;\n        switch (fiber.tag) {\n          case 4:\n            hideOrUnhideAllChildrenOnFiber(fiber, isHidden);\n            break a;\n          case 22:\n            null === fiber.memoizedState &&\n              hideOrUnhideNearestPortals(fiber, isHidden);\n            break a;\n          default:\n            hideOrUnhideNearestPortals(fiber, isHidden);\n        }\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          !offscreenSubtreeWasHidden &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      commitFragmentInstanceDeletionEffects(deletedFiber);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      isSingletonScope(deletedFiber.type) &&\n        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      releaseSingletonInstance(\n        deletedFiber.stateNode,\n        deletedFiber.type,\n        deletedFiber.memoizedProps\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        commitFragmentInstanceDeletionEffects(deletedFiber);\n    case 6:\n      6 === deletedFiber.tag &&\n        commitFragmentInstanceDeletionEffects(deletedFiber);\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (9 === hostParent.nodeType\n              ? hostParent.body\n              : \"HTML\" === hostParent.nodeName\n                ? hostParent.ownerDocument.body\n                : hostParent\n            ).removeChild(deletedFiber.stateNode),\n              (viewTransitionMutationContext = !0);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode),\n              (viewTransitionMutationContext = !0);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((finishedRoot = hostParent),\n            clearHydrationBoundary(\n              9 === finishedRoot.nodeType\n                ? finishedRoot.body\n                : \"HTML\" === finishedRoot.nodeName\n                  ? finishedRoot.ownerDocument.body\n                  : finishedRoot,\n              deletedFiber.stateNode\n            ),\n            retryIfBlockedOn(finishedRoot))\n          : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    case 30:\n      safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 7:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n  ) {\n    finishedRoot = finishedRoot.dehydrated;\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 31:\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    if (!retryCache.has(wakeable)) {\n      retryCache.add(wakeable);\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n      wakeable.then(retry, retry);\n    }\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber, lanes) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n            if (isSingletonScope(parent.type)) {\n              hostParent = parent.stateNode;\n              hostParentIsContainer = !1;\n              break a;\n            }\n            break;\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13886)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0, lanes),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      if (\n        flags & 4 &&\n        ((current = finishedWork.updateQueue),\n        (current = null !== current ? current.events : null),\n        null !== current)\n      )\n        for (var ii = 0; ii < current.length; ii++) {\n          var _eventPayloads$ii2 = current[ii];\n          _eventPayloads$ii2.ref.impl = _eventPayloads$ii2.nextImpl;\n        }\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((root = finishedWork.callbacks),\n          null !== root &&\n            ((lanes = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === lanes ? root : lanes.concat(root)))));\n      break;\n    case 26:\n      ii = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4)\n        if (\n          ((flags = null !== current ? current.memoizedState : null),\n          (lanes = finishedWork.memoizedState),\n          null === current)\n        )\n          if (null === lanes)\n            if (null === finishedWork.stateNode)\n              if (offscreenSubtreeIsHidden)\n                finishedWork.stateNode = createHoistableInstance(\n                  finishedWork.type,\n                  finishedWork.memoizedProps,\n                  root.containerInfo,\n                  finishedWork\n                );\n              else {\n                a: {\n                  root = finishedWork.type;\n                  lanes = finishedWork.memoizedProps;\n                  flags = ii.ownerDocument || ii;\n                  b: switch (root) {\n                    case \"title\":\n                      current = flags.getElementsByTagName(\"title\")[0];\n                      if (\n                        !current ||\n                        current[internalHoistableMarker] ||\n                        current[internalInstanceKey] ||\n                        \"http://www.w3.org/2000/svg\" === current.namespaceURI ||\n                        current.hasAttribute(\"itemprop\")\n                      )\n                        (current = flags.createElement(root)),\n                          flags.head.insertBefore(\n                            current,\n                            flags.querySelector(\"head > title\")\n                          );\n                      setInitialProperties(current, root, lanes);\n                      current[internalInstanceKey] = finishedWork;\n                      markNodeAsHoistable(current);\n                      root = current;\n                      break a;\n                    case \"link\":\n                      if (\n                        (ii = getHydratableHoistableCache(\n                          \"link\",\n                          \"href\",\n                          flags\n                        ).get(root + (lanes.href || \"\")))\n                      )\n                        for (\n                          _eventPayloads$ii2 = 0;\n                          _eventPayloads$ii2 < ii.length;\n                          _eventPayloads$ii2++\n                        )\n                          if (\n                            ((current = ii[_eventPayloads$ii2]),\n                            current.getAttribute(\"href\") ===\n                              (null == lanes.href || \"\" === lanes.href\n                                ? null\n                                : lanes.href) &&\n                              current.getAttribute(\"rel\") ===\n                                (null == lanes.rel ? null : lanes.rel) &&\n                              current.getAttribute(\"title\") ===\n                                (null == lanes.title ? null : lanes.title) &&\n                              current.getAttribute(\"crossorigin\") ===\n                                (null == lanes.crossOrigin\n                                  ? null\n                                  : lanes.crossOrigin))\n                          ) {\n                            ii.splice(_eventPayloads$ii2, 1);\n                            break b;\n                          }\n                      current = flags.createElement(root);\n                      setInitialProperties(current, root, lanes);\n                      flags.head.appendChild(current);\n                      break;\n                    case \"meta\":\n                      if (\n                        (ii = getHydratableHoistableCache(\n                          \"meta\",\n                          \"content\",\n                          flags\n                        ).get(root + (lanes.content || \"\")))\n                      )\n                        for (\n                          _eventPayloads$ii2 = 0;\n                          _eventPayloads$ii2 < ii.length;\n                          _eventPayloads$ii2++\n                        )\n                          if (\n                            ((current = ii[_eventPayloads$ii2]),\n                            current.getAttribute(\"content\") ===\n                              (null == lanes.content\n                                ? null\n                                : \"\" + lanes.content) &&\n                              current.getAttribute(\"name\") ===\n                                (null == lanes.name ? null : lanes.name) &&\n                              current.getAttribute(\"property\") ===\n                                (null == lanes.property\n                                  ? null\n                                  : lanes.property) &&\n                              current.getAttribute(\"http-equiv\") ===\n                                (null == lanes.httpEquiv\n                                  ? null\n                                  : lanes.httpEquiv) &&\n                              current.getAttribute(\"charset\") ===\n                                (null == lanes.charSet ? null : lanes.charSet))\n                          ) {\n                            ii.splice(_eventPayloads$ii2, 1);\n                            break b;\n                          }\n                      current = flags.createElement(root);\n                      setInitialProperties(current, root, lanes);\n                      flags.head.appendChild(current);\n                      break;\n                    default:\n                      throw Error(formatProdErrorMessage(468, root));\n                  }\n                  current[internalInstanceKey] = finishedWork;\n                  markNodeAsHoistable(current);\n                  root = current;\n                }\n                finishedWork.stateNode = root;\n              }\n            else\n              offscreenSubtreeIsHidden ||\n                mountHoistable(ii, finishedWork.type, finishedWork.stateNode);\n          else\n            finishedWork.stateNode = acquireResource(\n              ii,\n              lanes,\n              finishedWork.memoizedProps\n            );\n        else\n          flags !== lanes\n            ? (null === flags\n                ? ((root = current.stateNode),\n                  null === root ||\n                    offscreenSubtreeWasHidden ||\n                    root.parentNode.removeChild(root))\n                : flags.count--,\n              null === lanes\n                ? offscreenSubtreeIsHidden ||\n                  mountHoistable(ii, finishedWork.type, finishedWork.stateNode)\n                : acquireResource(ii, lanes, finishedWork.memoizedProps))\n            : null === lanes &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      break;\n    case 27:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== current &&\n        flags & 4 &&\n        commitHostUpdate(\n          finishedWork,\n          finishedWork.memoizedProps,\n          current.memoizedProps\n        );\n      break;\n    case 5:\n      ii = offscreenDirectParentIsHidden;\n      offscreenDirectParentIsHidden = !1;\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      offscreenDirectParentIsHidden = ii;\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        root = finishedWork.stateNode;\n        try {\n          setTextContent(root, \"\"), (viewTransitionMutationContext = !0);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((root = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          root,\n          null !== current ? current.memoizedProps : root\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        root = finishedWork.memoizedProps;\n        lanes = finishedWork.stateNode;\n        try {\n          (lanes.nodeValue = root), (viewTransitionMutationContext = !0);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      viewTransitionMutationContext = !1;\n      tagCaches = null;\n      ii = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      currentHoistableRoot = ii;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      viewTransitionMutationContext = !1;\n      break;\n    case 4:\n      flags = offscreenDirectParentIsHidden;\n      offscreenDirectParentIsHidden = offscreenSubtreeIsHidden;\n      current = pushMutationContext();\n      ii = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = ii;\n      viewTransitionMutationContext &&\n        inUpdateViewTransition &&\n        (rootViewTransitionAffected = !0);\n      viewTransitionMutationContext = current;\n      offscreenDirectParentIsHidden = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 31:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((root = finishedWork.updateQueue),\n        null !== root &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, root)));\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((root = finishedWork.updateQueue),\n        null !== root &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, root)));\n      break;\n    case 22:\n      ii = null !== finishedWork.memoizedState;\n      _eventPayloads$ii2 = null !== current && null !== current.memoizedState;\n      var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden,\n        prevOffscreenDirectParentIsHidden$166 = offscreenDirectParentIsHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || ii;\n      offscreenDirectParentIsHidden =\n        prevOffscreenDirectParentIsHidden$166 || ii;\n      offscreenSubtreeWasHidden =\n        prevOffscreenSubtreeWasHidden || _eventPayloads$ii2;\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      offscreenDirectParentIsHidden = prevOffscreenDirectParentIsHidden$166;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      commitReconciliationEffects(finishedWork);\n      flags & 8192 &&\n        ((root = finishedWork.stateNode),\n        (root._visibility = ii ? root._visibility & -2 : root._visibility | 1),\n        !ii ||\n          null === current ||\n          _eventPayloads$ii2 ||\n          offscreenSubtreeIsHidden ||\n          offscreenSubtreeWasHidden ||\n          ((root = _eventPayloads$ii2 || offscreenSubtreeWasHidden),\n          (lanes = offscreenSubtreeIsHidden),\n          (current = offscreenSubtreeWasHidden),\n          (offscreenSubtreeIsHidden = ii || offscreenSubtreeIsHidden),\n          (offscreenSubtreeWasHidden = root),\n          recursivelyTraverseDisappearLayoutEffects(finishedWork, 2),\n          (offscreenSubtreeIsHidden = lanes),\n          (offscreenSubtreeWasHidden = current)),\n        (!ii && offscreenDirectParentIsHidden) ||\n          hideOrUnhideAllChildren(finishedWork, ii));\n      flags & 4 &&\n        ((root = finishedWork.updateQueue),\n        null !== root &&\n          ((lanes = root.retryQueue),\n          null !== lanes &&\n            ((root.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, lanes))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((root = finishedWork.updateQueue),\n        null !== root &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, root)));\n      break;\n    case 30:\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags = pushMutationContext();\n      ii = inUpdateViewTransition;\n      _eventPayloads$ii2 = (lanes & 335544064) === lanes;\n      prevOffscreenSubtreeIsHidden = finishedWork.memoizedProps;\n      inUpdateViewTransition =\n        _eventPayloads$ii2 &&\n        \"none\" !==\n          getViewTransitionClassName(\n            prevOffscreenSubtreeIsHidden.default,\n            prevOffscreenSubtreeIsHidden.update\n          );\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n      commitReconciliationEffects(finishedWork);\n      _eventPayloads$ii2 &&\n        null !== current &&\n        viewTransitionMutationContext &&\n        (finishedWork.flags |= 4);\n      inUpdateViewTransition = ii;\n      viewTransitionMutationContext = flags;\n      break;\n    case 21:\n      break;\n    case 7:\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return)),\n        current &&\n          null !== current.stateNode &&\n          (current.stateNode._fragmentFiber = finishedWork);\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork, lanes),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      for (\n        var hostParentFiber, parentFiber = finishedWork.return;\n        null !== parentFiber;\n\n      ) {\n        if (isHostParent(parentFiber)) {\n          hostParentFiber = parentFiber;\n          break;\n        }\n        parentFiber = parentFiber.return;\n      }\n      parentFiber = null;\n      for (var parent = finishedWork.return; null !== parent; ) {\n        if (isFragmentInstanceParent(parent)) {\n          var fragmentInstance = parent.stateNode;\n          null === parentFiber\n            ? (parentFiber = [fragmentInstance])\n            : parentFiber.push(fragmentInstance);\n        }\n        if (isFragmentInstanceHostBoundary(parent)) break;\n        parent = parent.return;\n      }\n      var JSCompiler_inline_result = parentFiber;\n      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n      switch (hostParentFiber.tag) {\n        case 27:\n          var parent$jscomp$0 = hostParentFiber.stateNode,\n            before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(\n            finishedWork,\n            before,\n            parent$jscomp$0,\n            JSCompiler_inline_result\n          );\n          break;\n        case 5:\n          var parent$149 = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 &&\n            (setTextContent(parent$149, \"\"), (hostParentFiber.flags &= -33));\n          var before$150 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(\n            finishedWork,\n            before$150,\n            parent$149,\n            JSCompiler_inline_result\n          );\n          break;\n        case 3:\n        case 4:\n          var parent$151 = hostParentFiber.stateNode.containerInfo,\n            before$152 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$152,\n            parent$151,\n            JSCompiler_inline_result\n          );\n          break;\n        default:\n          throw Error(formatProdErrorMessage(161));\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag &&\n        fiber.flags & 1024 &&\n        ((fiber = fiber.stateNode),\n        (_enabled = !0),\n        fiber.reset(),\n        (_enabled = !1));\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseAfterMutationEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 9270)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitAfterMutationEffectsOnFiber(parentFiber, root),\n        (parentFiber = parentFiber.sibling);\n  else measureNestedViewTransitions(parentFiber, !1);\n}\nfunction commitAfterMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate;\n  if (null === current) commitEnterViewTransitions(finishedWork, !1);\n  else\n    switch (finishedWork.tag) {\n      case 3:\n        rootViewTransitionNameCanceled = viewTransitionContextChanged = !1;\n        pushViewTransitionCancelableScope();\n        recursivelyTraverseAfterMutationEffects(root, finishedWork);\n        if (!viewTransitionContextChanged && !rootViewTransitionAffected) {\n          finishedWork = viewTransitionCancelableChildren;\n          if (null !== finishedWork)\n            for (var i = 0; i < finishedWork.length; i += 3) {\n              current = finishedWork[i];\n              var oldName = finishedWork[i + 1];\n              restoreViewTransitionName(current, finishedWork[i + 2]);\n              current = current.ownerDocument.documentElement;\n              null !== current &&\n                current.animate(\n                  { opacity: [0, 0], pointerEvents: [\"none\", \"none\"] },\n                  {\n                    duration: 0,\n                    fill: \"forwards\",\n                    pseudoElement: \"::view-transition-group(\" + oldName + \")\"\n                  }\n                );\n            }\n          finishedWork = root.containerInfo;\n          finishedWork =\n            9 === finishedWork.nodeType\n              ? finishedWork.documentElement\n              : finishedWork.ownerDocument.documentElement;\n          null !== finishedWork &&\n            \"\" === finishedWork.style.viewTransitionName &&\n            ((finishedWork.style.viewTransitionName = \"none\"),\n            finishedWork.animate(\n              { opacity: [0, 0], pointerEvents: [\"none\", \"none\"] },\n              {\n                duration: 0,\n                fill: \"forwards\",\n                pseudoElement: \"::view-transition-group(root)\"\n              }\n            ),\n            finishedWork.animate(\n              { width: [0, 0], height: [0, 0] },\n              {\n                duration: 0,\n                fill: \"forwards\",\n                pseudoElement: \"::view-transition\"\n              }\n            ));\n          rootViewTransitionNameCanceled = !0;\n        }\n        viewTransitionCancelableChildren = null;\n        break;\n      case 5:\n        recursivelyTraverseAfterMutationEffects(root, finishedWork);\n        break;\n      case 4:\n        i = viewTransitionContextChanged;\n        viewTransitionContextChanged = !1;\n        recursivelyTraverseAfterMutationEffects(root, finishedWork);\n        viewTransitionContextChanged && (rootViewTransitionAffected = !0);\n        viewTransitionContextChanged = i;\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          (null !== current.memoizedState\n            ? commitEnterViewTransitions(finishedWork, !1)\n            : recursivelyTraverseAfterMutationEffects(root, finishedWork));\n        break;\n      case 30:\n        i = viewTransitionContextChanged;\n        oldName = pushViewTransitionCancelableScope();\n        viewTransitionContextChanged = !1;\n        recursivelyTraverseAfterMutationEffects(root, finishedWork);\n        viewTransitionContextChanged && (finishedWork.flags |= 4);\n        var props = finishedWork.memoizedProps,\n          state = finishedWork.stateNode;\n        root = getViewTransitionName(props, state);\n        state = getViewTransitionName(current.memoizedProps, state);\n        var className = getViewTransitionClassName(props.default, props.update);\n        \"none\" === className\n          ? (root = !1)\n          : ((props = current.memoizedState),\n            (current.memoizedState = null),\n            (current = finishedWork.child),\n            (viewTransitionHostInstanceIdx = 0),\n            (root = measureViewTransitionHostInstancesRecursive(\n              finishedWork,\n              current,\n              root,\n              state,\n              className,\n              props,\n              !0\n            )),\n            viewTransitionHostInstanceIdx !==\n              (null === props ? 0 : props.length) &&\n              (finishedWork.flags |= 32));\n        0 !== (finishedWork.flags & 4) && root\n          ? (scheduleViewTransitionEvent(\n              finishedWork,\n              finishedWork.memoizedProps.onUpdate\n            ),\n            (viewTransitionCancelableChildren = oldName))\n          : null !== oldName &&\n            (oldName.push.apply(oldName, viewTransitionCancelableChildren),\n            (viewTransitionCancelableChildren = oldName));\n        viewTransitionContextChanged = 0 !== (finishedWork.flags & 32) ? !0 : i;\n        break;\n      default:\n        recursivelyTraverseAfterMutationEffects(root, finishedWork);\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(\n  parentFiber,\n  layoutEffectTraversalFlags$jscomp$0\n) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber,\n      layoutEffectTraversalFlags = layoutEffectTraversalFlags$jscomp$0;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        break;\n      case 27:\n        0 !== (layoutEffectTraversalFlags & 2) &&\n          releaseSingletonInstance(\n            finishedWork.stateNode,\n            finishedWork.type,\n            finishedWork.memoizedProps\n          );\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        (5 !== finishedWork.tag && 27 !== finishedWork.tag) ||\n          commitFragmentInstanceDeletionEffects(finishedWork);\n        recursivelyTraverseDisappearLayoutEffects(\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        break;\n      case 6:\n        commitFragmentInstanceDeletionEffects(finishedWork);\n        break;\n      case 26:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState ||\n          null === instance ||\n          offscreenSubtreeWasHidden ||\n          instance.parentNode.removeChild(instance);\n        recursivelyTraverseDisappearLayoutEffects(\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(\n            finishedWork,\n            layoutEffectTraversalFlags\n          );\n        break;\n      case 30:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        break;\n      case 7:\n        safelyDetachRef(finishedWork, finishedWork.return);\n      default:\n        recursivelyTraverseDisappearLayoutEffects(\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  layoutEffectTraversalFlags\n) {\n  layoutEffectTraversalFlags =\n    0 !== (parentFiber.subtreeFlags & 8772)\n      ? layoutEffectTraversalFlags\n      : layoutEffectTraversalFlags & -2;\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags,\n      includeWorkInProgressEffects = 0 !== (layoutEffectTraversalFlags & 1);\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 27:\n        0 !== (layoutEffectTraversalFlags & 2) &&\n          commitHostSingletonAcquisition(finishedWork);\n      case 5:\n        (5 !== finishedWork.tag && 27 !== finishedWork.tag) ||\n          commitFragmentInstanceInsertionEffects(finishedWork);\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 6:\n        commitFragmentInstanceInsertionEffects(finishedWork);\n        break;\n      case 26:\n        instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState ||\n          null === instance ||\n          offscreenSubtreeIsHidden ||\n          mountHoistable(\n            getHoistableRoot(instance.ownerDocument),\n            finishedWork.type,\n            instance\n          );\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        break;\n      case 31:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            layoutEffectTraversalFlags\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 7:\n        safelyAttachRef(finishedWork, finishedWork.return);\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          layoutEffectTraversalFlags\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  var isViewTransitionEligible =\n    (committedLanes & 335544064) === committedLanes;\n  if (parentFiber.subtreeFlags & (isViewTransitionEligible ? 10262 : 10256))\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n  else isViewTransitionEligible && restoreNestedViewTransitions(parentFiber);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var isViewTransitionEligible =\n    (committedLanes & 335544064) === committedLanes;\n  isViewTransitionEligible &&\n    null === finishedWork.alternate &&\n    null !== finishedWork.return &&\n    null !== finishedWork.return.alternate &&\n    restoreEnterOrExitViewTransitions(finishedWork);\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      isViewTransitionEligible &&\n        rootViewTransitionNameCanceled &&\n        ((finishedRoot = finishedRoot.containerInfo),\n        (finishedRoot =\n          9 === finishedRoot.nodeType\n            ? finishedRoot.body\n            : \"HTML\" === finishedRoot.nodeName\n              ? finishedRoot.ownerDocument.body\n              : finishedRoot),\n        \"root\" === finishedRoot.style.viewTransitionName &&\n          (finishedRoot.style.viewTransitionName = \"\"),\n        (finishedRoot = finishedRoot.ownerDocument.documentElement),\n        null !== finishedRoot &&\n          \"none\" === finishedRoot.style.viewTransitionName &&\n          (finishedRoot.style.viewTransitionName = \"\"));\n      flags & 2048 &&\n        ((flags = null),\n        null !== finishedWork.alternate &&\n          (flags = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== flags &&\n          (finishedWork.refCount++, null != flags && releaseCache(flags)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        flags = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              flags.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 31:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? (isViewTransitionEligible &&\n            null !== id &&\n            null === id.memoizedState &&\n            restoreEnterOrExitViewTransitions(id),\n          _finishedWork$memoize2._visibility & 2\n            ? recursivelyTraversePassiveMountEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              ))\n        : (isViewTransitionEligible &&\n            null !== id &&\n            null !== id.memoizedState &&\n            restoreEnterOrExitViewTransitions(finishedWork),\n          _finishedWork$memoize2._visibility & 2\n            ? recursivelyTraversePassiveMountEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions\n              )\n            : ((_finishedWork$memoize2._visibility |= 2),\n              recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                0 !== (finishedWork.subtreeFlags & 10256) || !1\n              )));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    case 30:\n      isViewTransitionEligible &&\n        ((flags = finishedWork.alternate),\n        null !== flags &&\n          (restoreViewTransitionOnHostInstances(flags.child, !0),\n          restoreViewTransitionOnHostInstances(finishedWork.child, !0)));\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects &&\n    (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n  parentFiber,\n  committedLanes,\n  suspendedState\n) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(\n        parentFiber,\n        committedLanes,\n        suspendedState\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n  fiber,\n  committedLanes,\n  suspendedState\n) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      fiber.flags & suspenseyCommitFlag &&\n        (null !== fiber.memoizedState\n          ? suspendResource(\n              suspendedState,\n              currentHoistableRoot,\n              fiber.memoizedState,\n              fiber.memoizedProps\n            )\n          : ((fiber = fiber.stateNode),\n            (committedLanes & 335544128) === committedLanes &&\n              suspendInstance(suspendedState, fiber)));\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      fiber.flags & suspenseyCommitFlag &&\n        ((fiber = fiber.stateNode),\n        (committedLanes & 335544128) === committedLanes &&\n          suspendInstance(suspendedState, fiber));\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(\n              fiber,\n              committedLanes,\n              suspendedState\n            ),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(\n              fiber,\n              committedLanes,\n              suspendedState\n            ));\n      break;\n    case 30:\n      if (\n        0 !== (fiber.flags & suspenseyCommitFlag) &&\n        ((previousHoistableRoot = fiber.memoizedProps.name),\n        null != previousHoistableRoot && \"auto\" !== previousHoistableRoot)\n      ) {\n        var state = fiber.stateNode;\n        state.paired = null;\n        null === appearingViewTransitions &&\n          (appearingViewTransitions = new Map());\n        appearingViewTransitions.set(previousHoistableRoot, state);\n      }\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    },\n    cacheSignal: function () {\n      return readContext(CacheContext).controller.signal;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  globalMostRecentTransitionTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  pendingViewTransition = null,\n  pendingViewTransitionEvents = null,\n  pendingTransitionTypes = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n    ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n    : null !== ReactSharedInternals.T\n      ? requestTransitionLane()\n      : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  if (0 === workInProgressDeferredLane)\n    if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n      var lane = nextTransitionDeferredLane;\n      nextTransitionDeferredLane <<= 1;\n      0 === (nextTransitionDeferredLane & 3932160) &&\n        (nextTransitionDeferredLane = 262144);\n      workInProgressDeferredLane = lane;\n    } else workInProgressDeferredLane = 536870912;\n  lane = suspenseHandlerStackCursor.current;\n  null !== lane && (lane.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleViewTransitionEvent(fiber, callback) {\n  if (null != callback) {\n    var state = fiber.stateNode,\n      instance = state.ref;\n    null === instance &&\n      (instance = state.ref =\n        createViewTransitionInstance(\n          getViewTransitionName(fiber.memoizedProps, state)\n        ));\n    null === pendingViewTransitionEvents && (pendingViewTransitionEvents = []);\n    pendingViewTransitionEvents.push(callback.bind(null, instance));\n  }\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 127) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (\n              2 !== JSCompiler_inline_result &&\n              6 !== JSCompiler_inline_result\n            ) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                (null === workInProgressRootRecoverableErrors\n                  ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n                  : workInProgressRootRecoverableErrors.push.apply(\n                      workInProgressRootRecoverableErrors,\n                      renderWasConcurrent\n                    ));\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        renderWasConcurrent = exitStatus;\n        switch (renderWasConcurrent) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194048) !== lanes && (lanes & 62914560) !== lanes)\n              break;\n          case 6:\n            markRootSuspended(\n              shouldTimeSlice,\n              lanes,\n              workInProgressDeferredLane,\n              !workInProgressRootDidSkipSuspendedSiblings\n            );\n            break a;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          pendingEffectsLanes = lanes;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            completeRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              \"Throttled\",\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        completeRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          renderWasConcurrent,\n          null,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction completeRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  exitStatus,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  root.timeoutHandle = -1;\n  var subtreeFlags = finishedWork.subtreeFlags,\n    isViewTransitionEligible = (lanes & 335544064) === lanes;\n  suspendedCommitReason = null;\n  if (\n    isViewTransitionEligible ||\n    subtreeFlags & 8192 ||\n    16785408 === (subtreeFlags & 16785408)\n  )\n    if (\n      ((suspendedCommitReason = {\n        stylesheets: null,\n        count: 0,\n        imgCount: 0,\n        imgBytes: 0,\n        suspenseyImages: [],\n        waitingForImages: !0,\n        waitingForViewTransition: !1,\n        unsuspend: noop$1\n      }),\n      (appearingViewTransitions = null),\n      accumulateSuspenseyCommitOnFiber(\n        finishedWork,\n        lanes,\n        suspendedCommitReason\n      ),\n      isViewTransitionEligible &&\n        ((subtreeFlags = suspendedCommitReason),\n        (isViewTransitionEligible = root.containerInfo),\n        (isViewTransitionEligible = (\n          9 === isViewTransitionEligible.nodeType\n            ? isViewTransitionEligible\n            : isViewTransitionEligible.ownerDocument\n        ).__reactViewTransition),\n        null != isViewTransitionEligible &&\n          (subtreeFlags.count++,\n          (subtreeFlags.waitingForViewTransition = !0),\n          (subtreeFlags = onUnsuspend.bind(subtreeFlags)),\n          isViewTransitionEligible.finished.then(subtreeFlags, subtreeFlags))),\n      (subtreeFlags =\n        (lanes & 62914560) === lanes\n          ? globalMostRecentFallbackTime - now()\n          : (lanes & 4194048) === lanes\n            ? globalMostRecentTransitionTime - now()\n            : 0),\n      (subtreeFlags = waitForCommitToBeReady(\n        suspendedCommitReason,\n        subtreeFlags\n      )),\n      null !== subtreeFlags)\n    ) {\n      pendingEffectsLanes = lanes;\n      root.cancelPendingCommit = subtreeFlags(\n        completeRoot.bind(\n          null,\n          root,\n          finishedWork,\n          lanes,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          didSkipSuspendedSiblings,\n          exitStatus,\n          suspendedCommitReason,\n          null,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  completeRoot(\n    root,\n    finishedWork,\n    lanes,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes,\n    didSkipSuspendedSiblings,\n    exitStatus,\n    suspendedCommitReason\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes = getEntangledLanes(root, suspendedLanes);\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$6 = 31 - clz32(lanes),\n      lane = 1 << index$6;\n    didAttemptEntireTree[index$6] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState$1 = null),\n        (thenableIndexCounter$1 = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  pendingEffectsLanes = 0;\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  entangledRenderLanes = getEntangledLanes(root, lanes);\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction shouldRemainOnPreviousScreen() {\n  var handler = suspenseHandlerStackCursor.current;\n  return null === handler\n    ? !0\n    : (workInProgressRootRenderLanes & 4194048) ===\n        workInProgressRootRenderLanes\n      ? null === shellBoundary\n        ? !0\n        : !1\n      : (workInProgressRootRenderLanes & 62914560) ===\n            workInProgressRootRenderLanes ||\n          0 !== (workInProgressRootRenderLanes & 536870912)\n        ? handler === shellBoundary\n        : !1;\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$184) {\n      handleThrow(root, thrownValue$184);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (\n                  resource\n                    ? preloadResource(resource)\n                    : hostFiber.stateNode.complete\n                ) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$186) {\n      handleThrow(root, thrownValue$186);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n      var fiber = next;\n      fiber === hydrationParentFiber &&\n        (isHydrating\n          ? (popToNextHostParent(fiber),\n            5 === fiber.tag &&\n              null != fiber.stateNode &&\n              (nextHydratableInstance = fiber.stateNode))\n          : (popToNextHostParent(fiber), (isHydrating = !0)));\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState$1 = null;\n  thenableIndexCounter$1 = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason ||\n        9 === suspendedReason ||\n        3 === suspendedReason ||\n        6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction completeRoot(\n  root,\n  finishedWork,\n  lanes,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  exitStatus,\n  suspendedState\n) {\n  root.cancelPendingCommit = null;\n  do flushPendingEffects();\n  while (0 !== pendingEffectsStatus);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  if (null !== finishedWork) {\n    if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n    root === workInProgressRoot &&\n      ((workInProgress = workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0));\n    pendingFinishedWork = finishedWork;\n    pendingEffectsRoot = root;\n    pendingEffectsLanes = lanes;\n    pendingPassiveTransitions = transitions;\n    pendingRecoverableErrors = recoverableErrors;\n    commitRoot(\n      root,\n      finishedWork,\n      lanes,\n      spawnedLane,\n      updatedLanes,\n      suspendedRetryLanes,\n      suspendedState\n    );\n  }\n}\nfunction commitRoot(\n  root,\n  finishedWork,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  suspendedState\n) {\n  var remainingLanes = finishedWork.lanes | finishedWork.childLanes;\n  pendingEffectsRemainingLanes = remainingLanes;\n  remainingLanes |= concurrentlyUpdatedLanes;\n  markRootFinished(\n    root,\n    lanes,\n    remainingLanes,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n  pendingViewTransitionEvents = null;\n  (lanes & 335544064) === lanes\n    ? ((pendingTransitionTypes = claimQueuedTransitionTypes(root)),\n      (spawnedLane = 10262))\n    : ((pendingTransitionTypes = null), (spawnedLane = 10256));\n  0 !== (finishedWork.subtreeFlags & spawnedLane) ||\n  0 !== (finishedWork.flags & spawnedLane)\n    ? ((root.callbackNode = null),\n      (root.callbackPriority = 0),\n      scheduleCallback$1(NormalPriority$1, function () {\n        flushPassiveEffects();\n        return null;\n      }))\n    : ((root.callbackNode = null), (root.callbackPriority = 0));\n  shouldStartViewTransition = !1;\n  spawnedLane = 0 !== (finishedWork.flags & 13878);\n  if (0 !== (finishedWork.subtreeFlags & 13878) || spawnedLane) {\n    spawnedLane = ReactSharedInternals.T;\n    ReactSharedInternals.T = null;\n    updatedLanes = ReactDOMSharedInternals.p;\n    ReactDOMSharedInternals.p = 2;\n    suspendedRetryLanes = executionContext;\n    executionContext |= 4;\n    try {\n      commitBeforeMutationEffects(root, finishedWork, lanes);\n    } finally {\n      (executionContext = suspendedRetryLanes),\n        (ReactDOMSharedInternals.p = updatedLanes),\n        (ReactSharedInternals.T = spawnedLane);\n    }\n  }\n  pendingEffectsStatus = 1;\n  shouldStartViewTransition\n    ? (pendingViewTransition = startViewTransition(\n        suspendedState,\n        root.containerInfo,\n        pendingTransitionTypes,\n        flushMutationEffects,\n        flushLayoutEffects,\n        flushAfterMutationEffects,\n        flushSpawnedWork,\n        flushPassiveEffects,\n        reportViewTransitionError,\n        null,\n        null\n      ))\n    : (flushMutationEffects(), flushLayoutEffects(), flushSpawnedWork());\n}\nfunction reportViewTransitionError(error) {\n  if (0 !== pendingEffectsStatus) {\n    var onRecoverableError = pendingEffectsRoot.onRecoverableError;\n    onRecoverableError(error, { componentStack: null });\n  }\n}\nfunction flushAfterMutationEffects() {\n  3 === pendingEffectsStatus &&\n    ((pendingEffectsStatus = 0),\n    commitAfterMutationEffectsOnFiber(pendingFinishedWork, pendingEffectsRoot),\n    (pendingEffectsStatus = 4));\n}\nfunction flushMutationEffects() {\n  if (1 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      lanes = pendingEffectsLanes,\n      rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n      rootMutationHasEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        inUpdateViewTransition = rootViewTransitionAffected = !1;\n        commitMutationEffectsOnFiber(finishedWork, root, lanes);\n        lanes = selectionInformation;\n        var curFocusedElem = getActiveElementDeep(root.containerInfo),\n          priorFocusedElem = lanes.focusedElem,\n          priorSelectionRange = lanes.selectionRange;\n        if (\n          curFocusedElem !== priorFocusedElem &&\n          priorFocusedElem &&\n          priorFocusedElem.ownerDocument &&\n          containsNode(\n            priorFocusedElem.ownerDocument.documentElement,\n            priorFocusedElem\n          )\n        ) {\n          if (\n            null !== priorSelectionRange &&\n            hasSelectionCapabilities(priorFocusedElem)\n          ) {\n            var start = priorSelectionRange.start,\n              end = priorSelectionRange.end;\n            void 0 === end && (end = start);\n            if (\"selectionStart\" in priorFocusedElem)\n              (priorFocusedElem.selectionStart = start),\n                (priorFocusedElem.selectionEnd = Math.min(\n                  end,\n                  priorFocusedElem.value.length\n                ));\n            else {\n              var doc = priorFocusedElem.ownerDocument || document,\n                win = (doc && doc.defaultView) || window;\n              if (win.getSelection) {\n                var selection = win.getSelection(),\n                  length = priorFocusedElem.textContent.length,\n                  start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n                  end$jscomp$0 =\n                    void 0 === priorSelectionRange.end\n                      ? start$jscomp$0\n                      : Math.min(priorSelectionRange.end, length);\n                !selection.extend &&\n                  start$jscomp$0 > end$jscomp$0 &&\n                  ((curFocusedElem = end$jscomp$0),\n                  (end$jscomp$0 = start$jscomp$0),\n                  (start$jscomp$0 = curFocusedElem));\n                var startMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    start$jscomp$0\n                  ),\n                  endMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    end$jscomp$0\n                  );\n                if (\n                  startMarker &&\n                  endMarker &&\n                  (1 !== selection.rangeCount ||\n                    selection.anchorNode !== startMarker.node ||\n                    selection.anchorOffset !== startMarker.offset ||\n                    selection.focusNode !== endMarker.node ||\n                    selection.focusOffset !== endMarker.offset)\n                ) {\n                  var range = doc.createRange();\n                  range.setStart(startMarker.node, startMarker.offset);\n                  selection.removeAllRanges();\n                  start$jscomp$0 > end$jscomp$0\n                    ? (selection.addRange(range),\n                      selection.extend(endMarker.node, endMarker.offset))\n                    : (range.setEnd(endMarker.node, endMarker.offset),\n                      selection.addRange(range));\n                }\n              }\n            }\n          }\n          doc = [];\n          for (\n            selection = priorFocusedElem;\n            (selection = selection.parentNode);\n\n          )\n            1 === selection.nodeType &&\n              doc.push({\n                element: selection,\n                left: selection.scrollLeft,\n                top: selection.scrollTop\n              });\n          \"function\" === typeof priorFocusedElem.focus &&\n            priorFocusedElem.focus();\n          for (\n            priorFocusedElem = 0;\n            priorFocusedElem < doc.length;\n            priorFocusedElem++\n          ) {\n            var info = doc[priorFocusedElem];\n            info.element.scrollLeft = info.left;\n            info.element.scrollTop = info.top;\n          }\n        }\n        _enabled = !!eventsEnabled;\n        selectionInformation = eventsEnabled = null;\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootMutationHasEffect);\n      }\n    }\n    root.current = finishedWork;\n    pendingEffectsStatus = 2;\n  }\n}\nfunction flushLayoutEffects() {\n  if (2 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n    if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n      rootHasLayoutEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootHasLayoutEffect);\n      }\n    }\n    pendingEffectsStatus = 3;\n  }\n}\nfunction flushSpawnedWork() {\n  if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var committedViewTransition = pendingViewTransition;\n    pendingViewTransition = null;\n    requestPaint();\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      lanes = pendingEffectsLanes,\n      recoverableErrors = pendingRecoverableErrors,\n      passiveSubtreeMask = (lanes & 335544064) === lanes ? 10262 : 10256;\n    0 !== (finishedWork.subtreeFlags & passiveSubtreeMask) ||\n    0 !== (finishedWork.flags & passiveSubtreeMask)\n      ? (pendingEffectsStatus = 5)\n      : ((pendingEffectsStatus = 0),\n        (pendingFinishedWork = pendingEffectsRoot = null),\n        releaseRootPooledCache(root, root.pendingLanes));\n    passiveSubtreeMask = root.pendingLanes;\n    0 === passiveSubtreeMask && (legacyErrorBoundariesThatAlreadyFailed = null);\n    lanesToEventPriority(lanes);\n    finishedWork = finishedWork.stateNode;\n    if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n      try {\n        injectedHook.onCommitFiberRoot(\n          rendererID,\n          finishedWork,\n          void 0,\n          128 === (finishedWork.current.flags & 128)\n        );\n      } catch (err) {}\n    if (null !== recoverableErrors) {\n      finishedWork = ReactSharedInternals.T;\n      passiveSubtreeMask = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      ReactSharedInternals.T = null;\n      try {\n        for (\n          var onRecoverableError = root.onRecoverableError, i = 0;\n          i < recoverableErrors.length;\n          i++\n        ) {\n          var recoverableError = recoverableErrors[i];\n          onRecoverableError(recoverableError.value, {\n            componentStack: recoverableError.stack\n          });\n        }\n      } finally {\n        (ReactSharedInternals.T = finishedWork),\n          (ReactDOMSharedInternals.p = passiveSubtreeMask);\n      }\n    }\n    recoverableErrors = pendingViewTransitionEvents;\n    onRecoverableError = pendingTransitionTypes;\n    pendingTransitionTypes = null;\n    if (\n      null !== recoverableErrors &&\n      ((pendingViewTransitionEvents = null),\n      null === onRecoverableError && (onRecoverableError = []),\n      null !== committedViewTransition)\n    )\n      for (\n        recoverableError = 0;\n        recoverableError < recoverableErrors.length;\n        recoverableError++\n      )\n        (finishedWork = (0, recoverableErrors[recoverableError])(\n          onRecoverableError\n        )),\n          void 0 !== finishedWork &&\n            committedViewTransition.finished.finally(finishedWork);\n    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    passiveSubtreeMask = root.pendingLanes;\n    0 !== (lanes & 261930) && 0 !== (passiveSubtreeMask & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : ((nestedUpdateCount = 0), (rootWithNestedUpdates = null));\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n  null !== pendingViewTransition &&\n    (pendingViewTransition.skipTransition(), (pendingViewTransition = null));\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = ReactDOMSharedInternals.p;\n  try {\n    ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n    ReactSharedInternals.T = null;\n    renderPriority = pendingPassiveTransitions;\n    pendingPassiveTransitions = null;\n    var root$jscomp$0 = pendingEffectsRoot,\n      lanes = pendingEffectsLanes;\n    pendingEffectsStatus = 0;\n    pendingFinishedWork = pendingEffectsRoot = null;\n    pendingEffectsLanes = 0;\n    if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n    var prevExecutionContext = executionContext;\n    executionContext |= 4;\n    commitPassiveUnmountOnFiber(root$jscomp$0.current);\n    commitPassiveMountOnFiber(\n      root$jscomp$0,\n      root$jscomp$0.current,\n      lanes,\n      renderPriority\n    );\n    executionContext = prevExecutionContext;\n    flushSyncWorkAcrossRoots_impl(0, !1);\n    if (\n      injectedHook &&\n      \"function\" === typeof injectedHook.onPostCommitFiberRoot\n    )\n      try {\n        injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n      } catch (err) {}\n    return !0;\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition),\n      releaseRootPooledCache(root, remainingLanes);\n  }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2)\n        ? prepareFreshStack(root, 0)\n        : (workInProgressRootPingedLanes |= pingedLanes)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 31:\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$190 = firstScheduledRoot; null !== root$190; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$190.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$190.suspendedLanes,\n                pingedLanes = root$190.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326741\n                  ? (JSCompiler_inline_result & 201326741) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$190, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$190,\n                root$190 === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root$190.cancelPendingCommit ||\n                  -1 !== root$190.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$190, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$190, JSCompiler_inline_result));\n        root$190 = root$190.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    shouldAttemptEagerTransition() &&\n    (syncTransitionLanes = currentEventTransitionLane);\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n    flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n  0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$5 = 31 - clz32(lanes),\n      lane = 1 << index$5,\n      expirationTime = expirationTimes[index$5];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(\n          ImmediatePriority,\n          processRootScheduleInImmediateTask\n        )\n      : processRootScheduleInMicrotask();\n  });\n}\nfunction requestTransitionLane() {\n  if (0 === currentEventTransitionLane) {\n    var actionScopeLane = currentEntangledLane;\n    0 === actionScopeLane &&\n      ((actionScopeLane = nextTransitionUpdateLane),\n      (nextTransitionUpdateLane <<= 1),\n      0 === (nextTransitionUpdateLane & 261888) &&\n        (nextTransitionUpdateLane = 256));\n    currentEventTransitionLane = actionScopeLane;\n  }\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(actionProp);\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = new FormData(nativeEventTarget, submitter);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = new FormData(nativeEventTarget, submitter)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1667 = 0;\n  i$jscomp$inline_1667 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1667++\n) {\n  var eventName$jscomp$inline_1668 =\n      simpleEventPluginEvents[i$jscomp$inline_1667],\n    domEventName$jscomp$inline_1669 =\n      eventName$jscomp$inline_1668.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1670 =\n      eventName$jscomp$inline_1668[0].toUpperCase() +\n      eventName$jscomp$inline_1668.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1669,\n    \"on\" + capitalizedEvent$jscomp$inline_1670\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (container === targetContainer) break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (\n              (3 === grandTag || 4 === grandTag) &&\n              nodeTag.stateNode.containerInfo === targetContainer\n            )\n              return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"submit\":\n            SyntheticEventCtor = SyntheticSubmitEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        SyntheticEventCtor =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        reactName =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          SyntheticEventCtor &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (reactName || SyntheticEventCtor) {\n          reactEventType =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (SyntheticEventCtor = nativeEventTarget.ownerDocument)\n                ? SyntheticEventCtor.defaultView ||\n                  SyntheticEventCtor.parentWindow\n                : window;\n          if (reactName) {\n            if (\n              ((SyntheticEventCtor =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (reactName = targetInst),\n              (SyntheticEventCtor = SyntheticEventCtor\n                ? getClosestInstanceFromNode(SyntheticEventCtor)\n                : null),\n              null !== SyntheticEventCtor &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(SyntheticEventCtor)),\n                (inCapturePhase = SyntheticEventCtor.tag),\n                SyntheticEventCtor !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              SyntheticEventCtor = null;\n          } else (reactName = null), (SyntheticEventCtor = targetInst);\n          if (reactName !== SyntheticEventCtor) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == reactName\n                ? reactEventType\n                : getNodeFromInstance(reactName);\n            lastHostComponent =\n              null == SyntheticEventCtor\n                ? reactEventType\n                : getNodeFromInstance(SyntheticEventCtor);\n            reactEventType = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              reactName,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactEventType.target = accumulateTargetOnly;\n            reactEventType.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                SyntheticEventCtor,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            inCapturePhase =\n              reactName && SyntheticEventCtor\n                ? getLowestCommonAncestor(\n                    reactName,\n                    SyntheticEventCtor,\n                    getParent\n                  )\n                : null;\n            null !== reactName &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactEventType,\n                reactName,\n                inCapturePhase,\n                !1\n              );\n            null !== SyntheticEventCtor &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    if (3 === targetFiber.tag) return listeners;\n    targetFiber = targetFiber.return;\n  }\n  return [];\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      if (\"string\" === typeof value)\n        \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value);\n      else if (\"number\" === typeof value || \"bigint\" === typeof value)\n        \"body\" !== tag && setTextContent(domElement, \"\" + value);\n      else return;\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      return;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      return;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      return;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      return;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          (null != prevValue ? prevValue.__html : void 0) !== key &&\n            (domElement.innerHTML = key);\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\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      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"credentialless\":\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\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      return;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n      else return;\n  }\n  viewTransitionMutationContext = !0;\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      return;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          (null != prevValue ? prevValue.__html : void 0) !== key &&\n            (domElement.innerHTML = key);\n        }\n      }\n      break;\n    case \"children\":\n      if (\"string\" === typeof value) setTextContent(domElement, value);\n      else if (\"number\" === typeof value || \"bigint\" === typeof value)\n        setTextContent(domElement, \"\" + value);\n      else return;\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      return;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      return;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      return;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      return;\n    case \"innerText\":\n    case \"textContent\":\n      return;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (prevValue = key.slice(2, props ? key.length - 7 : void 0)),\n            (tag = domElement[internalPropsKey] || null),\n            (tag = null != tag ? tag[key] : null),\n            \"function\" === typeof tag &&\n              domElement.removeEventListener(prevValue, tag, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof tag &&\n              null !== tag &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(prevValue, value, props);\n            break a;\n          }\n          viewTransitionMutationContext = !0;\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n      return;\n  }\n  viewTransitionMutationContext = !0;\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$204 = props[hasSrc];\n          if (null != propValue$204)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$204;\n                break;\n              case \"type\":\n                propValue = propValue$204;\n                break;\n              case \"checked\":\n                checked = propValue$204;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$204;\n                break;\n              case \"value\":\n                propKey = propValue$204;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$204;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$204)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$204, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$204 in props)\n          props.hasOwnProperty(propValue$204) &&\n            ((hasSrc = props[propValue$204]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$204,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nvar emptyProps = {};\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$221 in nextProps) {\n        var propKey = nextProps[propKey$221];\n        lastProp = lastProps[propKey$221];\n        if (\n          nextProps.hasOwnProperty(propKey$221) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$221) {\n            case \"type\":\n              propKey !== lastProp && (viewTransitionMutationContext = !0);\n              type = propKey;\n              break;\n            case \"name\":\n              propKey !== lastProp && (viewTransitionMutationContext = !0);\n              name = propKey;\n              break;\n            case \"checked\":\n              propKey !== lastProp && (viewTransitionMutationContext = !0);\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              propKey !== lastProp && (viewTransitionMutationContext = !0);\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              propKey !== lastProp && (viewTransitionMutationContext = !0);\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              propKey !== lastProp && (viewTransitionMutationContext = !0);\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$221,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$221 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              type !== lastDefaultValue && (viewTransitionMutationContext = !0);\n              propKey$221 = type;\n              break;\n            case \"defaultValue\":\n              type !== lastDefaultValue && (viewTransitionMutationContext = !0);\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              type !== lastDefaultValue && (viewTransitionMutationContext = !0),\n                (value = type);\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$221\n        ? updateOptions(domElement, !!lastProps, propKey$221, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$221 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              name !== type && (viewTransitionMutationContext = !0);\n              propKey$221 = name;\n              break;\n            case \"defaultValue\":\n              name !== type && (viewTransitionMutationContext = !0);\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$221, propKey);\n      return;\n    case \"option\":\n      for (var propKey$237 in lastProps)\n        if (\n          ((propKey$221 = lastProps[propKey$237]),\n          lastProps.hasOwnProperty(propKey$237) &&\n            null != propKey$221 &&\n            !nextProps.hasOwnProperty(propKey$237))\n        )\n          switch (propKey$237) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$237,\n                null,\n                nextProps,\n                propKey$221\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$221 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$221 !== propKey &&\n            (null != propKey$221 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              propKey$221 !== propKey && (viewTransitionMutationContext = !0);\n              domElement.selected =\n                propKey$221 &&\n                \"function\" !== typeof propKey$221 &&\n                \"symbol\" !== typeof propKey$221;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$221,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$242 in lastProps)\n        (propKey$221 = lastProps[propKey$242]),\n          lastProps.hasOwnProperty(propKey$242) &&\n            null != propKey$221 &&\n            !nextProps.hasOwnProperty(propKey$242) &&\n            setProp(domElement, tag, propKey$242, null, nextProps, propKey$221);\n      for (checked in nextProps)\n        if (\n          ((propKey$221 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$221 !== propKey &&\n            (null != propKey$221 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$221)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$221,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$247 in lastProps)\n          (propKey$221 = lastProps[propKey$247]),\n            lastProps.hasOwnProperty(propKey$247) &&\n              void 0 !== propKey$221 &&\n              !nextProps.hasOwnProperty(propKey$247) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$247,\n                void 0,\n                nextProps,\n                propKey$221\n              );\n        for (defaultChecked in nextProps)\n          (propKey$221 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$221 === propKey ||\n              (void 0 === propKey$221 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$221,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$252 in lastProps)\n    (propKey$221 = lastProps[propKey$252]),\n      lastProps.hasOwnProperty(propKey$252) &&\n        null != propKey$221 &&\n        !nextProps.hasOwnProperty(propKey$252) &&\n        setProp(domElement, tag, propKey$252, null, nextProps, propKey$221);\n  for (lastProp in nextProps)\n    (propKey$221 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$221 === propKey ||\n        (null == propKey$221 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$221, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n  switch (initiatorType) {\n    case \"css\":\n    case \"script\":\n    case \"font\":\n    case \"img\":\n    case \"image\":\n    case \"input\":\n    case \"link\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction estimateBandwidth() {\n  if (\"function\" === typeof performance.getEntriesByType) {\n    for (\n      var count = 0,\n        bits = 0,\n        resourceEntries = performance.getEntriesByType(\"resource\"),\n        i = 0;\n      i < resourceEntries.length;\n      i++\n    ) {\n      var entry = resourceEntries[i],\n        transferSize = entry.transferSize,\n        initiatorType = entry.initiatorType,\n        duration = entry.duration;\n      if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n        initiatorType = 0;\n        duration = entry.responseEnd;\n        for (i += 1; i < resourceEntries.length; i++) {\n          var overlapEntry = resourceEntries[i],\n            overlapStartTime = overlapEntry.startTime;\n          if (overlapStartTime > duration) break;\n          var overlapTransferSize = overlapEntry.transferSize,\n            overlapInitiatorType = overlapEntry.initiatorType;\n          overlapTransferSize &&\n            isLikelyStaticResource(overlapInitiatorType) &&\n            ((overlapEntry = overlapEntry.responseEnd),\n            (initiatorType +=\n              overlapTransferSize *\n              (overlapEntry < duration\n                ? 1\n                : (duration - overlapStartTime) /\n                  (overlapEntry - overlapStartTime))));\n        }\n        --i;\n        bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n        count++;\n        if (10 < count) break;\n      }\n    }\n    if (0 < count) return bits / count / 1e6;\n  }\n  return navigator.connection &&\n    ((count = navigator.connection.downlink), \"number\" === typeof count)\n    ? count\n    : 5;\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction createHoistableInstance(\n  type,\n  props,\n  rootContainerInstance,\n  internalInstanceHandle\n) {\n  rootContainerInstance = getOwnerDocumentFromRootContainer(\n    rootContainerInstance\n  ).createElement(type);\n  rootContainerInstance[internalInstanceKey] = internalInstanceHandle;\n  rootContainerInstance[internalPropsKey] = props;\n  setInitialProperties(rootContainerInstance, type, props);\n  markNodeAsHoistable(rootContainerInstance);\n  return rootContainerInstance;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  localRequestAnimationFrame =\n    \"function\" === typeof requestAnimationFrame\n      ? requestAnimationFrame\n      : scheduleTimeout,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction isSingletonScope(type) {\n  return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n  var node = hydrationInstance,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(hydrationInstance);\n          return;\n        }\n        depth--;\n      } else if (\n        \"$\" === node ||\n        \"$?\" === node ||\n        \"$~\" === node ||\n        \"$!\" === node ||\n        \"&\" === node\n      )\n        depth++;\n      else if (\"html\" === node)\n        clearSingletonPreambleContribution(\n          parentInstance.ownerDocument.documentElement\n        );\n      else if (\"head\" === node) {\n        node = parentInstance.ownerDocument.head;\n        clearSingletonPreambleContribution(node);\n        for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n          var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n            nodeName = node$jscomp$0.nodeName;\n          node$jscomp$0[internalHoistableMarker] ||\n            \"SCRIPT\" === nodeName ||\n            \"STYLE\" === nodeName ||\n            (\"LINK\" === nodeName &&\n              \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n            node.removeChild(node$jscomp$0);\n          node$jscomp$0 = nextNode$jscomp$0;\n        }\n      } else\n        \"body\" === node &&\n          clearSingletonPreambleContribution(parentInstance.ownerDocument.body);\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n  var node = suspenseInstance;\n  suspenseInstance = 0;\n  do {\n    var nextNode = node.nextSibling;\n    1 === node.nodeType\n      ? isHidden\n        ? ((node._stashedDisplay = node.style.display),\n          (node.style.display = \"none\"))\n        : ((node.style.display = node._stashedDisplay || \"\"),\n          \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n      : 3 === node.nodeType &&\n        (isHidden\n          ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n          : (node.nodeValue = node._stashedText || \"\"));\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node))\n        if (0 === suspenseInstance) break;\n        else suspenseInstance--;\n      else\n        (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n          suspenseInstance++;\n    node = nextNode;\n  } while (node);\n}\nfunction applyViewTransitionName(instance, name, className) {\n  name = CSS.escape(name) !== name ? \"r-\" + btoa(name).replace(/=/g, \"\") : name;\n  instance.style.viewTransitionName = name;\n  null != className && (instance.style.viewTransitionClass = className);\n  className = getComputedStyle(instance);\n  if (\"inline\" === className.display) {\n    name = instance.getClientRects();\n    if (1 === name.length) var JSCompiler_inline_result = 1;\n    else\n      for (var i = (JSCompiler_inline_result = 0); i < name.length; i++) {\n        var rect = name[i];\n        0 < rect.width && 0 < rect.height && JSCompiler_inline_result++;\n      }\n    1 === JSCompiler_inline_result &&\n      ((instance = instance.style),\n      (instance.display = 1 === name.length ? \"inline-block\" : \"block\"),\n      (instance.marginTop = \"-\" + className.paddingTop),\n      (instance.marginBottom = \"-\" + className.paddingBottom));\n  }\n}\nfunction restoreViewTransitionName(instance, props) {\n  instance = instance.style;\n  props = props.style;\n  var viewTransitionName =\n    null != props\n      ? props.hasOwnProperty(\"viewTransitionName\")\n        ? props.viewTransitionName\n        : props.hasOwnProperty(\"view-transition-name\")\n          ? props[\"view-transition-name\"]\n          : null\n      : null;\n  instance.viewTransitionName =\n    null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n      ? \"\"\n      : (\"\" + viewTransitionName).trim();\n  viewTransitionName =\n    null != props\n      ? props.hasOwnProperty(\"viewTransitionClass\")\n        ? props.viewTransitionClass\n        : props.hasOwnProperty(\"view-transition-class\")\n          ? props[\"view-transition-class\"]\n          : null\n      : null;\n  instance.viewTransitionClass =\n    null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n      ? \"\"\n      : (\"\" + viewTransitionName).trim();\n  \"inline-block\" === instance.display &&\n    (null == props\n      ? (instance.display = instance.margin = \"\")\n      : ((viewTransitionName = props.display),\n        (instance.display =\n          null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n            ? \"\"\n            : viewTransitionName),\n        (viewTransitionName = props.margin),\n        null != viewTransitionName\n          ? (instance.margin = viewTransitionName)\n          : ((viewTransitionName = props.hasOwnProperty(\"marginTop\")\n              ? props.marginTop\n              : props[\"margin-top\"]),\n            (instance.marginTop =\n              null == viewTransitionName ||\n              \"boolean\" === typeof viewTransitionName\n                ? \"\"\n                : viewTransitionName),\n            (props = props.hasOwnProperty(\"marginBottom\")\n              ? props.marginBottom\n              : props[\"margin-bottom\"]),\n            (instance.marginBottom =\n              null == props || \"boolean\" === typeof props ? \"\" : props))));\n}\nfunction createMeasurement(rect, computedStyle, element) {\n  element = element.ownerDocument.defaultView;\n  return {\n    rect: rect,\n    abs:\n      \"absolute\" === computedStyle.position ||\n      \"fixed\" === computedStyle.position,\n    clip:\n      \"none\" !== computedStyle.clipPath ||\n      \"visible\" !== computedStyle.overflow ||\n      \"none\" !== computedStyle.filter ||\n      \"none\" !== computedStyle.mask ||\n      \"none\" !== computedStyle.mask ||\n      \"0px\" !== computedStyle.borderRadius,\n    view:\n      0 <= rect.bottom &&\n      0 <= rect.right &&\n      rect.top <= element.innerHeight &&\n      rect.left <= element.innerWidth\n  };\n}\nfunction measureInstance(instance) {\n  var rect = instance.getBoundingClientRect(),\n    computedStyle = getComputedStyle(instance);\n  return createMeasurement(rect, computedStyle, instance);\n}\nfunction measureClonedInstance(instance) {\n  var measuredRect = instance.getBoundingClientRect();\n  measuredRect = new DOMRect(\n    measuredRect.x + 2e4,\n    measuredRect.y + 2e4,\n    measuredRect.width,\n    measuredRect.height\n  );\n  var computedStyle = getComputedStyle(instance);\n  return createMeasurement(measuredRect, computedStyle, instance);\n}\nfunction forceLayout(ownerDocument) {\n  return ownerDocument.documentElement.clientHeight;\n}\nfunction waitForImageToLoad(resolve) {\n  this.addEventListener(\"load\", resolve);\n  this.addEventListener(\"error\", resolve);\n}\nfunction startViewTransition(\n  suspendedState,\n  rootContainer,\n  transitionTypes,\n  mutationCallback,\n  layoutCallback,\n  afterMutationCallback,\n  spawnedWorkCallback,\n  passiveCallback,\n  errorCallback\n) {\n  var ownerDocument =\n    9 === rootContainer.nodeType ? rootContainer : rootContainer.ownerDocument;\n  try {\n    var transition = ownerDocument.startViewTransition({\n      update: function () {\n        var ownerWindow = ownerDocument.defaultView,\n          pendingNavigation =\n            ownerWindow.navigation && ownerWindow.navigation.transition,\n          previousFontLoadingStatus = ownerDocument.fonts.status;\n        mutationCallback();\n        var blockingPromises = [];\n        \"loaded\" === previousFontLoadingStatus &&\n          (forceLayout(ownerDocument),\n          \"loading\" === ownerDocument.fonts.status &&\n            blockingPromises.push(ownerDocument.fonts.ready));\n        previousFontLoadingStatus = blockingPromises.length;\n        if (null !== suspendedState)\n          for (\n            var suspenseyImages = suspendedState.suspenseyImages,\n              imgBytes = 0,\n              i = 0;\n            i < suspenseyImages.length;\n            i++\n          ) {\n            var suspenseyImage = suspenseyImages[i];\n            if (!suspenseyImage.complete) {\n              var rect = suspenseyImage.getBoundingClientRect();\n              if (\n                0 < rect.bottom &&\n                0 < rect.right &&\n                rect.top < ownerWindow.innerHeight &&\n                rect.left < ownerWindow.innerWidth\n              ) {\n                imgBytes += estimateImageBytes(suspenseyImage);\n                if (imgBytes > estimatedBytesWithinLimit) {\n                  blockingPromises.length = previousFontLoadingStatus;\n                  break;\n                }\n                suspenseyImage = new Promise(\n                  waitForImageToLoad.bind(suspenseyImage)\n                );\n                blockingPromises.push(suspenseyImage);\n              }\n            }\n          }\n        if (0 < blockingPromises.length)\n          return (\n            (ownerWindow = Promise.race([\n              Promise.all(blockingPromises),\n              new Promise(function (resolve) {\n                return setTimeout(resolve, 500);\n              })\n            ]).then(layoutCallback, layoutCallback)),\n            (pendingNavigation\n              ? Promise.allSettled([pendingNavigation.finished, ownerWindow])\n              : ownerWindow\n            ).then(afterMutationCallback, afterMutationCallback)\n          );\n        layoutCallback();\n        if (pendingNavigation)\n          return pendingNavigation.finished.then(\n            afterMutationCallback,\n            afterMutationCallback\n          );\n        afterMutationCallback();\n      },\n      types: transitionTypes\n    });\n    ownerDocument.__reactViewTransition = transition;\n    var viewTransitionAnimations = [];\n    transition.ready.then(\n      function () {\n        for (\n          var animations = ownerDocument.documentElement.getAnimations({\n              subtree: !0\n            }),\n            i = 0;\n          i < animations.length;\n          i++\n        ) {\n          var animation = animations[i],\n            effect = animation.effect,\n            pseudoElement = effect.pseudoElement;\n          if (\n            null != pseudoElement &&\n            pseudoElement.startsWith(\"::view-transition\")\n          ) {\n            viewTransitionAnimations.push(animation);\n            animation = effect.getKeyframes();\n            for (\n              var height = (pseudoElement = void 0),\n                unchangedDimensions = !0,\n                j = 0;\n              j < animation.length;\n              j++\n            ) {\n              var keyframe = animation[j],\n                w = keyframe.width;\n              if (void 0 === pseudoElement) pseudoElement = w;\n              else if (pseudoElement !== w) {\n                unchangedDimensions = !1;\n                break;\n              }\n              w = keyframe.height;\n              if (void 0 === height) height = w;\n              else if (height !== w) {\n                unchangedDimensions = !1;\n                break;\n              }\n              delete keyframe.width;\n              delete keyframe.height;\n              \"none\" === keyframe.transform && delete keyframe.transform;\n            }\n            unchangedDimensions &&\n              void 0 !== pseudoElement &&\n              void 0 !== height &&\n              (effect.setKeyframes(animation),\n              (unchangedDimensions = getComputedStyle(\n                effect.target,\n                effect.pseudoElement\n              )),\n              unchangedDimensions.width !== pseudoElement ||\n                unchangedDimensions.height !== height) &&\n              ((unchangedDimensions = animation[0]),\n              (unchangedDimensions.width = pseudoElement),\n              (unchangedDimensions.height = height),\n              (unchangedDimensions = animation[animation.length - 1]),\n              (unchangedDimensions.width = pseudoElement),\n              (unchangedDimensions.height = height),\n              effect.setKeyframes(animation));\n          }\n        }\n        spawnedWorkCallback();\n      },\n      function (error) {\n        ownerDocument.__reactViewTransition === transition &&\n          (ownerDocument.__reactViewTransition = null);\n        try {\n          if (\"object\" === typeof error && null !== error)\n            switch (error.name) {\n              case \"InvalidStateError\":\n                if (\n                  \"View transition was skipped because document visibility state is hidden.\" ===\n                    error.message ||\n                  \"Skipping view transition because document visibility state has become hidden.\" ===\n                    error.message ||\n                  \"Skipping view transition because viewport size changed.\" ===\n                    error.message ||\n                  \"Transition was aborted because of invalid state\" ===\n                    error.message\n                )\n                  error = null;\n            }\n          null !== error && errorCallback(error);\n        } finally {\n          mutationCallback(), layoutCallback(), spawnedWorkCallback();\n        }\n      }\n    );\n    transition.finished.finally(function () {\n      for (var i = 0; i < viewTransitionAnimations.length; i++)\n        viewTransitionAnimations[i].cancel();\n      ownerDocument.__reactViewTransition === transition &&\n        (ownerDocument.__reactViewTransition = null);\n      passiveCallback();\n    });\n    return transition;\n  } catch (x) {\n    return mutationCallback(), layoutCallback(), spawnedWorkCallback(), null;\n  }\n}\nfunction ViewTransitionPseudoElement(pseudo, name) {\n  this._scope = document.documentElement;\n  this._selector = \"::view-transition-\" + pseudo + \"(\" + name + \")\";\n}\nViewTransitionPseudoElement.prototype.animate = function (keyframes, options) {\n  options =\n    \"number\" === typeof options ? { duration: options } : assign({}, options);\n  options.pseudoElement = this._selector;\n  return this._scope.animate(keyframes, options);\n};\nViewTransitionPseudoElement.prototype.getAnimations = function () {\n  for (\n    var scope = this._scope,\n      selector = this._selector,\n      animations = scope.getAnimations({ subtree: !0 }),\n      result = [],\n      i = 0;\n    i < animations.length;\n    i++\n  ) {\n    var effect = animations[i].effect;\n    null !== effect &&\n      effect.target === scope &&\n      effect.pseudoElement === selector &&\n      result.push(animations[i]);\n  }\n  return result;\n};\nViewTransitionPseudoElement.prototype.getComputedStyle = function () {\n  return getComputedStyle(this._scope, this._selector);\n};\nfunction createViewTransitionInstance(name) {\n  return {\n    name: name,\n    group: new ViewTransitionPseudoElement(\"group\", name),\n    imagePair: new ViewTransitionPseudoElement(\"image-pair\", name),\n    old: new ViewTransitionPseudoElement(\"old\", name),\n    new: new ViewTransitionPseudoElement(\"new\", name)\n  };\n}\nfunction FragmentInstance(fragmentFiber) {\n  this._fragmentFiber = fragmentFiber;\n  this._observers = this._eventListeners = null;\n}\nFragmentInstance.prototype.addEventListener = function (\n  type,\n  listener,\n  optionsOrUseCapture\n) {\n  var signal = null,\n    cleanup = null;\n  if (\n    null != optionsOrUseCapture &&\n    \"boolean\" !== typeof optionsOrUseCapture &&\n    ((signal = optionsOrUseCapture.signal || null),\n    null !== signal && signal.aborted)\n  )\n    return;\n  null === this._eventListeners && (this._eventListeners = []);\n  var listeners = this._eventListeners;\n  if (\n    -1 === indexOfEventListener(listeners, type, listener, optionsOrUseCapture)\n  ) {\n    var fragmentInstance = this,\n      attachedListener = listener;\n    null != optionsOrUseCapture &&\n      \"boolean\" !== typeof optionsOrUseCapture &&\n      !0 === optionsOrUseCapture.once &&\n      (attachedListener = function (event) {\n        fragmentInstance.removeEventListener(\n          type,\n          listener,\n          optionsOrUseCapture\n        );\n        \"function\" === typeof listener\n          ? listener.call(this, event)\n          : listener.handleEvent(event);\n      });\n    null !== signal &&\n      ((cleanup = fragmentInstance.removeEventListener.bind(\n        fragmentInstance,\n        type,\n        listener,\n        optionsOrUseCapture\n      )),\n      signal.addEventListener(\"abort\", cleanup, { once: !0 }),\n      (cleanup = signal.removeEventListener.bind(signal, \"abort\", cleanup)));\n    signal = getAttachOptions(optionsOrUseCapture);\n    listeners.push({\n      type: type,\n      listener: listener,\n      optionsOrUseCapture: optionsOrUseCapture,\n      attachedListener: attachedListener,\n      cleanup: cleanup\n    });\n    traverseVisibleInstancesAndTextInstances(\n      this._fragmentFiber.child,\n      !1,\n      addEventListenerToChild,\n      type,\n      attachedListener,\n      signal\n    );\n  }\n  this._eventListeners = listeners;\n};\nfunction addEventListenerToChild(child, type, listener, optionsOrUseCapture) {\n  getInstanceFromHostFiber(child).addEventListener(\n    type,\n    listener,\n    optionsOrUseCapture\n  );\n  return !1;\n}\nFragmentInstance.prototype.removeEventListener = function (\n  type,\n  listener,\n  optionsOrUseCapture\n) {\n  var listeners = this._eventListeners;\n  if (\n    null !== listeners &&\n    ((listener = indexOfEventListener(\n      listeners,\n      type,\n      listener,\n      optionsOrUseCapture\n    )),\n    -1 !== listener)\n  ) {\n    var _listeners$index = listeners[listener];\n    optionsOrUseCapture = _listeners$index.attachedListener;\n    var cleanup = _listeners$index.cleanup;\n    _listeners$index = getAttachOptions(_listeners$index.optionsOrUseCapture);\n    traverseVisibleInstancesAndTextInstances(\n      this._fragmentFiber.child,\n      !1,\n      removeEventListenerFromChild,\n      type,\n      optionsOrUseCapture,\n      _listeners$index\n    );\n    listeners.splice(listener, 1);\n    null !== cleanup && cleanup();\n  }\n};\nfunction removeEventListenerFromChild(\n  child,\n  type,\n  listener,\n  optionsOrUseCapture\n) {\n  getInstanceFromHostFiber(child).removeEventListener(\n    type,\n    listener,\n    optionsOrUseCapture\n  );\n  return !1;\n}\nfunction getAttachOptions(opts) {\n  return null != opts &&\n    \"boolean\" !== typeof opts &&\n    (!0 === opts.once || opts.signal instanceof AbortSignal)\n    ? { capture: opts.capture, passive: opts.passive }\n    : opts;\n}\nfunction normalizeListenerOptions(opts) {\n  return null == opts\n    ? \"c=0\"\n    : \"boolean\" === typeof opts\n      ? \"c=\" + (opts ? \"1\" : \"0\")\n      : \"c=\" + (opts.capture ? \"1\" : \"0\");\n}\nfunction indexOfEventListener(\n  eventListeners,\n  type,\n  listener,\n  optionsOrUseCapture\n) {\n  if (0 === eventListeners.length) return -1;\n  optionsOrUseCapture = normalizeListenerOptions(optionsOrUseCapture);\n  for (var i = 0; i < eventListeners.length; i++) {\n    var item = eventListeners[i];\n    if (\n      item.type === type &&\n      item.listener === listener &&\n      normalizeListenerOptions(item.optionsOrUseCapture) === optionsOrUseCapture\n    )\n      return i;\n  }\n  return -1;\n}\nFragmentInstance.prototype.dispatchEvent = function (event) {\n  var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n    this._fragmentFiber\n  );\n  if (null === parentHostFiber) return !0;\n  parentHostFiber = getInstanceFromHostFiber(parentHostFiber);\n  var eventListeners = this._eventListeners;\n  if (\n    (null !== eventListeners && 0 < eventListeners.length) ||\n    !event.bubbles\n  ) {\n    var temp =\n      9 === parentHostFiber.nodeType\n        ? parentHostFiber.createComment(\"\")\n        : document.createTextNode(\"\");\n    if (eventListeners)\n      for (var i = 0; i < eventListeners.length; i++) {\n        var _eventListeners$i = eventListeners[i];\n        temp.addEventListener(\n          _eventListeners$i.type,\n          _eventListeners$i.attachedListener,\n          getAttachOptions(_eventListeners$i.optionsOrUseCapture)\n        );\n      }\n    parentHostFiber.appendChild(temp);\n    event = temp.dispatchEvent(event);\n    if (eventListeners)\n      for (i = 0; i < eventListeners.length; i++)\n        (_eventListeners$i = eventListeners[i]),\n          temp.removeEventListener(\n            _eventListeners$i.type,\n            _eventListeners$i.attachedListener,\n            getAttachOptions(_eventListeners$i.optionsOrUseCapture)\n          );\n    parentHostFiber.removeChild(temp);\n    return event;\n  }\n  return parentHostFiber.dispatchEvent(event);\n};\nFragmentInstance.prototype.focus = function (focusOptions) {\n  traverseVisibleInstancesAndTextInstances(\n    this._fragmentFiber.child,\n    !0,\n    setFocusOnFiberIfFocusable,\n    focusOptions,\n    void 0,\n    void 0\n  );\n};\nfunction setFocusOnFiberIfFocusable(fiber, focusOptions) {\n  if (6 === fiber.tag) return !1;\n  fiber = getInstanceFromHostFiber(fiber);\n  return setFocusIfFocusable(fiber, focusOptions);\n}\nFragmentInstance.prototype.focusLast = function (focusOptions) {\n  var children = [];\n  traverseVisibleInstancesAndTextInstances(\n    this._fragmentFiber.child,\n    !0,\n    collectChildren,\n    children,\n    void 0,\n    void 0\n  );\n  for (\n    var i = children.length - 1;\n    0 <= i && !setFocusOnFiberIfFocusable(children[i], focusOptions);\n    i--\n  );\n};\nfunction collectChildren(child, collection) {\n  collection.push(child);\n  return !1;\n}\nFragmentInstance.prototype.blur = function () {\n  var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n    this._fragmentFiber\n  );\n  null !== parentHostFiber &&\n    ((parentHostFiber = getInstanceFromHostFiber(parentHostFiber)),\n    (parentHostFiber =\n      getOwnerDocumentFromRootContainer(parentHostFiber).activeElement),\n    null !== parentHostFiber &&\n      traverseVisibleInstancesAndTextInstances(\n        this._fragmentFiber.child,\n        !1,\n        blurActiveElementWithinFragment,\n        parentHostFiber,\n        void 0,\n        void 0\n      ));\n};\nfunction blurActiveElementWithinFragment(child, activeElement) {\n  if (6 === child.tag) return !1;\n  child = getInstanceFromHostFiber(child);\n  return child === activeElement || child.contains(activeElement)\n    ? (activeElement.blur(), !0)\n    : !1;\n}\nFragmentInstance.prototype.observeUsing = function (observer) {\n  null === this._observers && (this._observers = new Set());\n  this._observers.add(observer);\n  traverseVisibleInstancesAndTextInstances(\n    this._fragmentFiber.child,\n    !1,\n    observeChild,\n    observer,\n    void 0,\n    void 0\n  );\n};\nfunction observeChild(child, observer) {\n  if (6 === child.tag) return !1;\n  child = getInstanceFromHostFiber(child);\n  observer.observe(child);\n  return !1;\n}\nFragmentInstance.prototype.unobserveUsing = function (observer) {\n  var observers = this._observers;\n  if (null !== observers && observers.has(observer)) {\n    observers.delete(observer);\n    traverseVisibleInstancesAndTextInstances(\n      this._fragmentFiber.child,\n      !1,\n      unobserveChild,\n      observer,\n      void 0,\n      void 0\n    );\n    for (\n      var i = (observers = 0);\n      i < pendingIntersectionUnobserves.length;\n      i++\n    ) {\n      var pending = pendingIntersectionUnobserves[i];\n      pending.fragmentInstance === this && pending.observer === observer\n        ? observer.unobserve(pending.instance)\n        : (pendingIntersectionUnobserves[observers++] = pending);\n    }\n    pendingIntersectionUnobserves.length = observers;\n  }\n};\nfunction unobserveChild(child, observer) {\n  if (6 === child.tag) return !1;\n  child = getInstanceFromHostFiber(child);\n  observer.unobserve(child);\n  return !1;\n}\nvar pendingIntersectionUnobserves = [],\n  intersectionUnobserveScheduled = !1;\nfunction schedulePendingIntersectionUnobserve(\n  fragmentInstance,\n  observer,\n  instance\n) {\n  pendingIntersectionUnobserves.push({\n    fragmentInstance: fragmentInstance,\n    observer: observer,\n    instance: instance\n  });\n  intersectionUnobserveScheduled ||\n    ((intersectionUnobserveScheduled = !0),\n    requestPostPaintCallback(function () {\n      intersectionUnobserveScheduled = !1;\n      var pending = pendingIntersectionUnobserves;\n      pendingIntersectionUnobserves = [];\n      for (var i = 0; i < pending.length; i++) {\n        var item = pending[i];\n        item.observer.unobserve(item.instance);\n      }\n    }));\n}\nFragmentInstance.prototype.getClientRects = function () {\n  var rects = [];\n  traverseVisibleInstancesAndTextInstances(\n    this._fragmentFiber.child,\n    !1,\n    collectClientRects,\n    rects,\n    void 0,\n    void 0\n  );\n  return rects;\n};\nfunction collectClientRects(child, rects) {\n  if (6 === child.tag) {\n    child = child.stateNode;\n    var range = child.ownerDocument.createRange();\n    range.selectNodeContents(child);\n    rects.push.apply(rects, range.getClientRects());\n  } else\n    (child = getInstanceFromHostFiber(child)),\n      rects.push.apply(rects, child.getClientRects());\n  return !1;\n}\nFragmentInstance.prototype.getRootNode = function (getRootNodeOptions) {\n  var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n    this._fragmentFiber\n  );\n  return null === parentHostFiber\n    ? this\n    : getInstanceFromHostFiber(parentHostFiber).getRootNode(getRootNodeOptions);\n};\nFragmentInstance.prototype.compareDocumentPosition = function (otherNode) {\n  var parentHostFiber = getFragmentParentInstanceOrContainerFiber(\n    this._fragmentFiber\n  );\n  if (null === parentHostFiber) return Node.DOCUMENT_POSITION_DISCONNECTED;\n  var children = [];\n  traverseVisibleInstancesAndTextInstances(\n    this._fragmentFiber.child,\n    !1,\n    collectChildren,\n    children,\n    void 0,\n    void 0\n  );\n  var parentHostInstance = getInstanceFromHostFiber(parentHostFiber);\n  if (0 === children.length) {\n    children = parentHostInstance;\n    if (fiberIsPortaledIntoHost(this._fragmentFiber)) {\n      a: {\n        for (\n          parentHostFiber = this._fragmentFiber.return;\n          null !== parentHostFiber;\n\n        ) {\n          if (4 === parentHostFiber.tag) {\n            parentHostFiber = parentHostFiber.stateNode.containerInfo;\n            break a;\n          }\n          if (\n            3 === parentHostFiber.tag ||\n            5 === parentHostFiber.tag ||\n            27 === parentHostFiber.tag\n          )\n            break;\n          parentHostFiber = parentHostFiber.return;\n        }\n        parentHostFiber = null;\n      }\n      null != parentHostFiber && (children = parentHostFiber);\n    }\n    parentHostFiber = this._fragmentFiber;\n    var result = (parentHostInstance =\n      children.compareDocumentPosition(otherNode));\n    children === otherNode\n      ? (result = Node.DOCUMENT_POSITION_CONTAINS)\n      : parentHostInstance & Node.DOCUMENT_POSITION_CONTAINED_BY &&\n        ((children =\n          getFragmentInstanceOrTextInstanceSiblings(parentHostFiber)[1]),\n        null === children\n          ? (result = Node.DOCUMENT_POSITION_PRECEDING)\n          : ((otherNode =\n              getInstanceFromHostFiber(children).compareDocumentPosition(\n                otherNode\n              )),\n            (result =\n              0 === otherNode || otherNode & Node.DOCUMENT_POSITION_FOLLOWING\n                ? Node.DOCUMENT_POSITION_FOLLOWING\n                : Node.DOCUMENT_POSITION_PRECEDING)));\n    return (result |= Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\n  }\n  parentHostFiber = getInstanceFromHostFiber(children[0]);\n  result = getInstanceFromHostFiber(children[children.length - 1]);\n  var parentHostInstanceFromDOM = fiberIsPortaledIntoHost(this._fragmentFiber)\n    ? parentHostFiber.parentElement\n    : parentHostInstance;\n  if (null == parentHostInstanceFromDOM)\n    return Node.DOCUMENT_POSITION_DISCONNECTED;\n  parentHostInstance =\n    parentHostInstanceFromDOM.compareDocumentPosition(parentHostFiber) &\n    Node.DOCUMENT_POSITION_CONTAINED_BY;\n  parentHostInstanceFromDOM =\n    parentHostInstanceFromDOM.compareDocumentPosition(result) &\n    Node.DOCUMENT_POSITION_CONTAINED_BY;\n  var firstResult = parentHostFiber.compareDocumentPosition(otherNode),\n    lastResult = result.compareDocumentPosition(otherNode),\n    otherNodeIsWithinFirstOrLastChild =\n      firstResult & Node.DOCUMENT_POSITION_CONTAINED_BY ||\n      lastResult & Node.DOCUMENT_POSITION_CONTAINED_BY;\n  lastResult =\n    parentHostInstance &&\n    parentHostInstanceFromDOM &&\n    firstResult & Node.DOCUMENT_POSITION_FOLLOWING &&\n    lastResult & Node.DOCUMENT_POSITION_PRECEDING;\n  parentHostFiber =\n    (parentHostInstance && parentHostFiber === otherNode) ||\n    (parentHostInstanceFromDOM && result === otherNode) ||\n    otherNodeIsWithinFirstOrLastChild ||\n    lastResult\n      ? Node.DOCUMENT_POSITION_CONTAINED_BY\n      : (!parentHostInstance && parentHostFiber === otherNode) ||\n          (!parentHostInstanceFromDOM && result === otherNode)\n        ? Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n        : firstResult;\n  return parentHostFiber & Node.DOCUMENT_POSITION_DISCONNECTED ||\n    parentHostFiber & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC ||\n    validateDocumentPositionWithFiberTree(\n      parentHostFiber,\n      this._fragmentFiber,\n      children[0],\n      children[children.length - 1],\n      otherNode\n    )\n    ? parentHostFiber\n    : Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n};\nfunction validateDocumentPositionWithFiberTree(\n  documentPosition,\n  fragmentFiber,\n  precedingBoundaryFiber,\n  followingBoundaryFiber,\n  otherNode\n) {\n  var otherFiber = getClosestInstanceFromNode(otherNode);\n  if (documentPosition & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n    if ((precedingBoundaryFiber = !!otherFiber))\n      a: {\n        for (; null !== otherFiber; ) {\n          if (\n            7 === otherFiber.tag &&\n            (otherFiber === fragmentFiber ||\n              otherFiber.alternate === fragmentFiber)\n          ) {\n            precedingBoundaryFiber = !0;\n            break a;\n          }\n          otherFiber = otherFiber.return;\n        }\n        precedingBoundaryFiber = !1;\n      }\n    return precedingBoundaryFiber;\n  }\n  if (documentPosition & Node.DOCUMENT_POSITION_CONTAINS) {\n    if (null === otherFiber)\n      return (\n        (otherFiber = otherNode.ownerDocument),\n        otherNode === otherFiber ||\n          otherNode === otherFiber.documentElement ||\n          otherNode === otherFiber.body\n      );\n    a: {\n      otherFiber = fragmentFiber;\n      for (\n        fragmentFiber =\n          getFragmentParentInstanceOrContainerFiber(fragmentFiber);\n        null !== otherFiber;\n\n      ) {\n        if (\n          !(\n            (5 !== otherFiber.tag &&\n              3 !== otherFiber.tag &&\n              27 !== otherFiber.tag) ||\n            (otherFiber !== fragmentFiber &&\n              otherFiber.alternate !== fragmentFiber)\n          )\n        ) {\n          otherFiber = !0;\n          break a;\n        }\n        otherFiber = otherFiber.return;\n      }\n      otherFiber = !1;\n    }\n    return otherFiber;\n  }\n  return documentPosition & Node.DOCUMENT_POSITION_PRECEDING\n    ? ((fragmentFiber = !!otherFiber) &&\n        !(fragmentFiber = otherFiber === precedingBoundaryFiber) &&\n        ((fragmentFiber = getLowestCommonAncestor(\n          precedingBoundaryFiber,\n          otherFiber,\n          getParentForFragmentAncestors\n        )),\n        null === fragmentFiber\n          ? (fragmentFiber = !1)\n          : (traverseVisibleInstancesAndTextInstances(\n              fragmentFiber,\n              !0,\n              isFiberPrecedingCheck,\n              otherFiber,\n              precedingBoundaryFiber\n            ),\n            (otherFiber = searchTarget),\n            (searchTarget = null),\n            (fragmentFiber = null !== otherFiber))),\n      fragmentFiber)\n    : documentPosition & Node.DOCUMENT_POSITION_FOLLOWING\n      ? ((fragmentFiber = !!otherFiber) &&\n          !(fragmentFiber = otherFiber === followingBoundaryFiber) &&\n          ((fragmentFiber = getLowestCommonAncestor(\n            followingBoundaryFiber,\n            otherFiber,\n            getParentForFragmentAncestors\n          )),\n          null === fragmentFiber\n            ? (fragmentFiber = !1)\n            : (traverseVisibleInstancesAndTextInstances(\n                fragmentFiber,\n                !0,\n                isFiberFollowingCheck,\n                otherFiber,\n                followingBoundaryFiber\n              ),\n              (otherFiber = searchTarget),\n              (searchBoundary = searchTarget = null),\n              (fragmentFiber = null !== otherFiber))),\n        fragmentFiber)\n      : !1;\n}\nfunction scrollTextNodeIntoView(textNode, resolvedAlignToTop) {\n  var range = textNode.ownerDocument.createRange();\n  range.selectNodeContents(textNode);\n  textNode = range.getBoundingClientRect();\n  window.scrollTo(\n    window.scrollX + textNode.left,\n    resolvedAlignToTop\n      ? window.scrollY + textNode.top\n      : window.scrollY + textNode.bottom - window.innerHeight\n  );\n}\nFragmentInstance.prototype.scrollIntoView = function (alignToTop) {\n  if (\"object\" === typeof alignToTop) throw Error(formatProdErrorMessage(566));\n  var children = [];\n  traverseVisibleInstancesAndTextInstances(\n    this._fragmentFiber.child,\n    !1,\n    collectChildren,\n    children,\n    void 0,\n    void 0\n  );\n  var resolvedAlignToTop = !1 !== alignToTop;\n  if (0 === children.length) {\n    var hostSiblings = getFragmentInstanceOrTextInstanceSiblings(\n      this._fragmentFiber\n    );\n    hostSiblings = resolvedAlignToTop\n      ? hostSiblings[1] ||\n        hostSiblings[0] ||\n        getFragmentParentInstanceOrContainerFiber(this._fragmentFiber)\n      : hostSiblings[0] || hostSiblings[1];\n    if (null === hostSiblings) return;\n    if (6 === hostSiblings.tag) {\n      alignToTop = getInstanceFromHostFiber(hostSiblings);\n      scrollTextNodeIntoView(alignToTop, resolvedAlignToTop);\n      return;\n    }\n    hostSiblings = getInstanceFromHostFiber(hostSiblings);\n    if (9 !== hostSiblings.nodeType) {\n      if (11 === hostSiblings.nodeType) {\n        resolvedAlignToTop = \"host\" in hostSiblings ? hostSiblings.host : null;\n        null !== resolvedAlignToTop &&\n          resolvedAlignToTop.scrollIntoView(alignToTop);\n        return;\n      }\n      hostSiblings.scrollIntoView(alignToTop);\n    }\n  }\n  for (\n    hostSiblings = resolvedAlignToTop ? children.length - 1 : 0;\n    hostSiblings !== (resolvedAlignToTop ? -1 : children.length);\n\n  ) {\n    var child = children[hostSiblings];\n    6 === child.tag\n      ? ((child = getInstanceFromHostFiber(child)),\n        scrollTextNodeIntoView(child, resolvedAlignToTop))\n      : getInstanceFromHostFiber(child).scrollIntoView(alignToTop);\n    hostSiblings += resolvedAlignToTop ? -1 : 1;\n  }\n};\nfunction addFragmentHandleToFiber(child, fragmentInstance) {\n  child = getInstanceFromHostFiber(child);\n  addFragmentHandleToInstance(child, fragmentInstance);\n  return !1;\n}\nfunction addFragmentHandleToInstance(instance, fragmentInstance) {\n  null == instance.reactFragments && (instance.reactFragments = new Set());\n  instance.reactFragments.add(fragmentInstance);\n}\nfunction commitNewChildToFragmentInstance(childInstance, fragmentInstance) {\n  var eventListeners = fragmentInstance._eventListeners;\n  if (null !== eventListeners)\n    for (var i$jscomp$0 = 0; i$jscomp$0 < eventListeners.length; i$jscomp$0++) {\n      var _eventListeners$i3 = eventListeners[i$jscomp$0];\n      childInstance.addEventListener(\n        _eventListeners$i3.type,\n        _eventListeners$i3.attachedListener,\n        getAttachOptions(_eventListeners$i3.optionsOrUseCapture)\n      );\n    }\n  3 !== childInstance.nodeType &&\n    ((eventListeners = fragmentInstance._observers),\n    null !== eventListeners &&\n      eventListeners.forEach(function (observer) {\n        for (\n          var writeIdx = 0, i = 0;\n          i < pendingIntersectionUnobserves.length;\n          i++\n        ) {\n          var pending = pendingIntersectionUnobserves[i];\n          if (\n            pending.fragmentInstance !== fragmentInstance ||\n            pending.observer !== observer ||\n            pending.instance !== childInstance\n          )\n            pendingIntersectionUnobserves[writeIdx++] = pending;\n        }\n        pendingIntersectionUnobserves.length = writeIdx;\n        observer.observe(childInstance);\n      }),\n    addFragmentHandleToInstance(childInstance, fragmentInstance));\n}\nfunction deleteChildFromFragmentInstance(childInstance, fragmentInstance) {\n  var eventListeners = fragmentInstance._eventListeners;\n  if (null !== eventListeners)\n    for (var i = 0; i < eventListeners.length; i++) {\n      var _eventListeners$i4 = eventListeners[i];\n      childInstance.removeEventListener(\n        _eventListeners$i4.type,\n        _eventListeners$i4.attachedListener,\n        getAttachOptions(_eventListeners$i4.optionsOrUseCapture)\n      );\n    }\n  3 !== childInstance.nodeType &&\n    ((eventListeners = fragmentInstance._observers),\n    null !== eventListeners &&\n      eventListeners.forEach(function (observer) {\n        \"string\" === typeof observer.rootMargin\n          ? schedulePendingIntersectionUnobserve(\n              fragmentInstance,\n              observer,\n              childInstance\n            )\n          : observer.unobserve(childInstance);\n      }),\n    null != childInstance.reactFragments &&\n      childInstance.reactFragments.delete(fragmentInstance));\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href || \"\" === anyProps.href\n                ? null\n                : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n  for (; 8 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n  return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return (\n    \"$!\" === instance.data ||\n    (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n  );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  var ownerDocument = instance.ownerDocument;\n  if (\"$~\" === instance.data) instance._reactRetry = callback;\n  else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n    callback();\n  else {\n    var listener = function () {\n      callback();\n      ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n    };\n    ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n    instance._reactRetry = listener;\n  }\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"$~\" === nodeType ||\n        \"&\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n  hydrationInstance = hydrationInstance.nextSibling;\n  for (var depth = 0; hydrationInstance; ) {\n    if (8 === hydrationInstance.nodeType) {\n      var data = hydrationInstance.data;\n      if (\"/$\" === data || \"/&\" === data) {\n        if (0 === depth)\n          return getNextHydratable(hydrationInstance.nextSibling);\n        depth--;\n      } else\n        (\"$\" !== data &&\n          \"$!\" !== data &&\n          \"$?\" !== data &&\n          \"$~\" !== data &&\n          \"&\" !== data) ||\n          depth++;\n    }\n    hydrationInstance = hydrationInstance.nextSibling;\n  }\n  return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\n        \"$\" === data ||\n        \"$!\" === data ||\n        \"$?\" === data ||\n        \"$~\" === data ||\n        \"&\" === data\n      ) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction setFocusIfFocusable(node, focusOptions) {\n  function handleFocus() {\n    didFocus = !0;\n  }\n  if (node.ownerDocument.activeElement === node) return !0;\n  var didFocus = !1;\n  try {\n    node.ownerDocument.addEventListener(\"focus\", handleFocus, !0),\n      (node.focus || HTMLElement.prototype.focus).call(node, focusOptions);\n  } finally {\n    node.ownerDocument.removeEventListener(\"focus\", handleFocus, !0);\n  }\n  return didFocus;\n}\nfunction requestPostPaintCallback(callback) {\n  localRequestAnimationFrame(function () {\n    localRequestAnimationFrame(function (time) {\n      return callback(time);\n    });\n  });\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nfunction releaseSingletonInstance(instance, type, props) {\n  for (var propKey in props) {\n    var propValue = props[propKey];\n    props.hasOwnProperty(propKey) &&\n      null != propValue &&\n      setProp(instance, type, propKey, null, emptyProps, propValue);\n  }\n  null != props.dangerouslySetInnerHTML && (instance.textContent = \"\");\n  instance.onclick === noop$1 && (instance.onclick = null);\n  detachDeletedInstance(instance);\n}\nfunction clearSingletonPreambleContribution(instance) {\n  for (var attributes = instance.attributes; attributes.length; )\n    instance.removeAttributeNode(attributes[0]);\n  detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  if (\"function\" === typeof container.getRootNode) {\n    var rootNode = container.getRootNode();\n    if (9 === rootNode.nodeType || 11 === rootNode.nodeType) return rootNode;\n  }\n  return 9 === container.nodeType ? container : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !(\n        preloadPropsMap.has(key) ||\n        ((href = assign(\n          {\n            rel: \"preload\",\n            href:\n              \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n            as: as\n          },\n          options\n        )),\n        preloadPropsMap.set(key, href),\n        null !== ownerDocument.querySelector(preloadSelector) ||\n          (\"style\" === as &&\n            ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n          (\"script\" === as &&\n            ownerDocument.querySelector(getScriptSelectorFromKey(key))))\n      )\n    ) {\n      var instance = ownerDocument.createElement(\"link\");\n      setInitialProperties(instance, \"link\", href);\n      \"style\" === as &&\n        ((instance[internalLoadPendingKey] = !0),\n        (instance.onload = instance.onerror =\n          function () {\n            clearPendingLoadOnNode(instance);\n          }));\n      markNodeAsHoistable(instance);\n      ownerDocument.head.appendChild(instance);\n    }\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((pendingProps = getStyleKey(pendingProps.href)),\n          (currentProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = currentProps.get(pendingProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            currentProps.set(pendingProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$268 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$269 = styles$268.get(type);\n        resource$269 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$269 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$268.set(type, resource$269),\n          (styles$268 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          ))\n            ? styles$268._p ||\n              ((resource$269.instance = styles$268),\n              (resource$269.state.loading = 5))\n            : ((styles$268 = preloadPropsMap.get(type)),\n              styles$268 ||\n                ((styles$268 = {\n                  rel: \"preload\",\n                  as: \"style\",\n                  href: pendingProps.href,\n                  crossOrigin: pendingProps.crossOrigin,\n                  integrity: pendingProps.integrity,\n                  media: pendingProps.media,\n                  hrefLang: pendingProps.hrefLang,\n                  referrerPolicy: pendingProps.referrerPolicy\n                }),\n                preloadPropsMap.set(type, styles$268)),\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                styles$268,\n                resource$269.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$269;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((pendingProps = getScriptKey(pendingProps)),\n            (currentProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = currentProps.get(pendingProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              currentProps.set(pendingProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  if (\n    (key = ownerDocument.querySelector(\n      'link[rel=\"preload\"][as=\"style\"][' + key + \"]\"\n    ))\n  ) {\n    if (!0 !== key[internalLoadPendingKey]) {\n      state.loading = 1;\n      return;\n    }\n  } else\n    (key = ownerDocument.createElement(\"link\")),\n      (key[internalLoadPendingKey] = !0),\n      (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key);\n  state.preload = key;\n  key.addEventListener(\"load\", function () {\n    return (state.loading |= 1);\n  });\n  key.addEventListener(\"error\", function () {\n    return (state.loading |= 2);\n  });\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$274 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$274)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$274),\n            markNodeAsHoistable(instance$274),\n            instance$274\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$274 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$274);\n        var linkInstance = instance$274;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$274, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$274, props.precedence, hoistableRoot);\n        return (resource.instance = instance$274);\n      case \"script\":\n        instance$274 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$274)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$274)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction maySuspendCommit(type, props) {\n  return (\n    \"img\" === type &&\n    null != props.src &&\n    \"\" !== props.src &&\n    null == props.onLoad &&\n    \"lazy\" !== props.loading\n  );\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nfunction estimateImageBytes(instance) {\n  return (\n    (instance.width || 100) *\n    (instance.height || 100) *\n    (\"number\" === typeof devicePixelRatio ? devicePixelRatio : 1) *\n    0.25\n  );\n}\nfunction suspendInstance(state, instance) {\n  \"function\" === typeof instance.decode &&\n    (state.imgCount++,\n    instance.complete ||\n      ((state.imgBytes += estimateImageBytes(instance)),\n      state.suspenseyImages.push(instance)),\n    (state = onUnsuspendImg.bind(state)),\n    instance.decode().then(state, state));\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count || 0 < state.imgCount\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4 + timeoutOffset);\n        0 < state.imgBytes &&\n          0 === estimatedBytesWithinLimit &&\n          (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n        var imgTimer = setTimeout(\n          function () {\n            state.waitingForImages = !1;\n            if (\n              0 === state.count &&\n              (state.stylesheets &&\n                insertSuspendedStylesheets(state, state.stylesheets),\n              state.unsuspend)\n            ) {\n              var unsuspend = state.unsuspend;\n              state.unsuspend = null;\n              unsuspend();\n            }\n          },\n          (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n            timeoutOffset\n        );\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n          clearTimeout(imgTimer);\n        };\n      }\n    : null;\n}\nfunction checkIfFullyUnsuspended(state) {\n  if (0 === state.count && (0 === state.imgCount || !state.waitingForImages))\n    if (state.stylesheets) insertSuspendedStylesheets(state, state.stylesheets);\n    else if (state.unsuspend) {\n      var unsuspend = state.unsuspend;\n      state.unsuspend = null;\n      unsuspend();\n    }\n}\nfunction onUnsuspend() {\n  this.count--;\n  checkIfFullyUnsuspended(this);\n}\nfunction onUnsuspendImg() {\n  this.imgCount--;\n  checkIfFullyUnsuspended(this);\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  onDefaultTransitionIndicator,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.transitionTypes = null;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  formState,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  onDefaultTransitionIndicator\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    onDefaultTransitionIndicator,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag || 31 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n  if (13 === fiber.tag || 31 === fiber.tag) {\n    var lane = requestUpdateLane();\n    lane = getBumpedLaneForHydrationByLane(lane);\n    var root = enqueueConcurrentRenderForLane(fiber, lane);\n    null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n    markRetryLaneIfNotHydrated(fiber, lane);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 31:\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (31 === tag) {\n        targetNode = getActivityInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"fullscreenerror\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"resize\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (31 === targetInst) {\n        if (\n          ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n  function handleNavigate(event) {\n    event.canIntercept &&\n      \"react-transition\" === event.info &&\n      event.intercept({\n        handler: function () {\n          return new Promise(function (resolve) {\n            return (pendingResolve = resolve);\n          });\n        },\n        focusReset: \"manual\",\n        scroll: \"manual\"\n      });\n  }\n  function handleNavigateComplete() {\n    null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n    isCancelled || setTimeout(startFakeNavigation, 20);\n  }\n  function startFakeNavigation() {\n    if (!isCancelled && !navigation.transition) {\n      var currentEntry = navigation.currentEntry;\n      currentEntry &&\n        null != currentEntry.url &&\n        navigation.navigate(currentEntry.url, {\n          state: currentEntry.getState(),\n          info: \"react-transition\",\n          history: \"replace\"\n        });\n    }\n  }\n  if (\"object\" === typeof navigation) {\n    var isCancelled = !1,\n      pendingResolve = null;\n    navigation.addEventListener(\"navigate\", handleNavigate);\n    navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n    navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n    setTimeout(startFakeNavigation, 100);\n    return function () {\n      isCancelled = !0;\n      navigation.removeEventListener(\"navigate\", handleNavigate);\n      navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n      navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n      null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n    };\n  }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_2043 = React.version;\nif (\n  \"19.3.1\" !==\n  isomorphicReactPackageVersion$jscomp$inline_2043\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_2043,\n      \"19.3.1\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2586 = {\n  bundleType: 0,\n  version: \"19.3.1\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  reconcilerVersion: \"19.3.1\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2587 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2587.isDisabled &&\n    hook$jscomp$inline_2587.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2587.inject(\n        internals$jscomp$inline_2586\n      )),\n        (injectedHook = hook$jscomp$inline_2587);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    null,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    defaultOnDefaultTransitionIndicator\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    formState,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    defaultOnDefaultTransitionIndicator\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  options = isStrictMode;\n  initialChildren.current.lanes = options;\n  markRootUpdated$1(initialChildren, options);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.3.1\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n","\"use client\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/QueryClientProvider.tsx\n/**\n* The context that `useQueryClient` reads from. `QueryClientProvider` is the normal way to set it.\n*/\nconst QueryClientContext = React.createContext(void 0);\n/**\n* The `useQueryClient` hook returns the current `QueryClient` instance.\n* @param queryClient - Use this to use a custom `QueryClient`. Otherwise, the one from the nearest context will\n* be used.\n* @returns The current `QueryClient` instance.\n* @throws {Error} If no `queryClient` argument is passed and no `QueryClientProvider` is found in the\n* component tree.\n*/\nconst useQueryClient = (queryClient) => {\n\tconst client = React.useContext(QueryClientContext);\n\tif (queryClient) return queryClient;\n\tif (!client) throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n\treturn client;\n};\n/**\n* Use the `QueryClientProvider` component to connect and provide a `QueryClient` to your application. Also\n* calls `client.mount()`/`client.unmount()` as this component mounts/unmounts, which subscribes the client to\n* focus/online events (resuming any paused mutations and refetching as needed when the app regains focus or\n* comes back online).\n* @param props - The `client` to provide, and the `children` that get access to it.\n* @returns The provided `children`, wrapped so they can read the `QueryClient` via `useQueryClient`.\n* @example\n* ```tsx\n* import { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n*\n* const queryClient = new QueryClient()\n*\n* function App() {\n*   return <QueryClientProvider client={queryClient}>...</QueryClientProvider>\n* }\n* ```\n*/\nconst QueryClientProvider = ({ client, children }) => {\n\tReact.useEffect(() => {\n\t\tclient.mount();\n\t\treturn () => {\n\t\t\tclient.unmount();\n\t\t};\n\t}, [client]);\n\treturn /* @__PURE__ */ jsx(QueryClientContext.Provider, {\n\t\tvalue: client,\n\t\tchildren\n\t});\n};\n//#endregion\nexport { QueryClientContext, QueryClientProvider, useQueryClient };\n\n//# sourceMappingURL=QueryClientProvider.js.map","//#region src/timeoutManager.ts\nconst defaultTimeoutProvider = {\n\tsetTimeout: (callback, delay) => setTimeout(callback, delay),\n\tclearTimeout: (timeoutId) => clearTimeout(timeoutId),\n\tsetInterval: (callback, delay) => setInterval(callback, delay),\n\tclearInterval: (intervalId) => clearInterval(intervalId)\n};\n/**\n* Allows customization of how timeouts are created.\n*\n* `@tanstack/query-core` makes liberal use of timeouts to implement `staleTime`\n* and `gcTime`. The default TimeoutManager provider uses the platform's global\n* `setTimeout` implementation, which is known to have scalability issues with\n* thousands of timeouts on the event loop.\n*\n* If you hit this limitation, consider providing a custom TimeoutProvider that\n* coalesces timeouts.\n*/\nvar TimeoutManager = class {\n\t#provider = defaultTimeoutProvider;\n\t#providerCalled = false;\n\t/**\n\t* `setTimeoutProvider` can be used to set a custom implementation of the\n\t* `setTimeout`, `clearTimeout`, `setInterval`, `clearInterval` functions,\n\t* called a `TimeoutProvider`.\n\t*\n\t* This may be useful if you notice event loop performance issues with\n\t* thousands of queries. A custom TimeoutProvider could also support timer\n\t* delays longer than the global `setTimeout` maximum delay value of about\n\t* 24 days.\n\t*\n\t* It is important to call `setTimeoutProvider` before creating a\n\t* QueryClient or queries, so that the same provider is used consistently\n\t* for all timers in the application, since different TimeoutProviders\n\t* cannot cancel each others' timers.\n\t* @param provider - The `TimeoutProvider` to use for all timers from now on.\n\t* @example\n\t* ```ts\n\t* import { timeoutManager, QueryClient } from '@tanstack/query-core'\n\t* import { CustomTimeoutProvider } from './CustomTimeoutProvider'\n\t*\n\t* timeoutManager.setTimeoutProvider(new CustomTimeoutProvider())\n\t*\n\t* export const queryClient = new QueryClient()\n\t* ```\n\t*/\n\tsetTimeoutProvider(provider) {\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (this.#providerCalled && provider !== this.#provider) console.error(`[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`, {\n\t\t\t\tprevious: this.#provider,\n\t\t\t\tprovider\n\t\t\t});\n\t\t}\n\t\tthis.#provider = provider;\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = false;\n\t}\n\t/**\n\t* `setTimeout` schedules a callback to run after approximately `delay`\n\t* milliseconds, like the global `setTimeout` function. The callback can be\n\t* canceled with `clearTimeout`.\n\t*\n\t* It returns a timer ID, which may be a number or an object that can be\n\t* coerced to a number via `Symbol.toPrimitive`.\n\t* @param callback - The function to call when the timeout elapses.\n\t* @param delay - The time to wait before calling `callback`, in milliseconds.\n\t* @returns The timer ID, to pass to {@link TimeoutManager#clearTimeout}.\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const timeoutId = timeoutManager.setTimeout(\n\t*   () => console.log('ran at:', new Date()),\n\t*   1000,\n\t* )\n\t*\n\t* const timeoutIdNumber: number = Number(timeoutId)\n\t* ```\n\t*/\n\tsetTimeout(callback, delay) {\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = true;\n\t\treturn this.#provider.setTimeout(callback, delay);\n\t}\n\t/**\n\t* `clearTimeout` cancels a timeout callback scheduled with `setTimeout`,\n\t* like the global `clearTimeout` function. It should be called with a\n\t* timer ID returned by `setTimeout`.\n\t* @param timeoutId - The timer ID returned by `setTimeout`, or `undefined`.\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const timeoutId = timeoutManager.setTimeout(\n\t*   () => console.log('ran at:', new Date()),\n\t*   1000,\n\t* )\n\t*\n\t* timeoutManager.clearTimeout(timeoutId)\n\t* ```\n\t*/\n\tclearTimeout(timeoutId) {\n\t\tthis.#provider.clearTimeout(timeoutId);\n\t}\n\t/**\n\t* `setInterval` schedules a callback to be called approximately every\n\t* `delay` milliseconds, like the global `setInterval` function.\n\t*\n\t* Like `setTimeout`, it returns a timer ID, which may be a number or an\n\t* object that can be coerced to a number via `Symbol.toPrimitive`.\n\t* @param callback - The function to call on every interval.\n\t* @param delay - The time between calls, in milliseconds.\n\t* @returns The timer ID, to pass to {@link TimeoutManager#clearInterval}.\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const intervalId = timeoutManager.setInterval(\n\t*   () => console.log('ran at:', new Date()),\n\t*   1000,\n\t* )\n\t* ```\n\t*/\n\tsetInterval(callback, delay) {\n\t\tif (process.env.NODE_ENV !== \"production\") this.#providerCalled = true;\n\t\treturn this.#provider.setInterval(callback, delay);\n\t}\n\t/**\n\t* `clearInterval` can be used to cancel an interval, like the global\n\t* `clearInterval` function. It should be called with an interval ID\n\t* returned by `setInterval`.\n\t* @param intervalId - The timer ID returned by `setInterval`, or `undefined`.\n\t* @example\n\t* ```ts\n\t* import { timeoutManager } from '@tanstack/query-core'\n\t*\n\t* const intervalId = timeoutManager.setInterval(\n\t*   () => console.log('ran at:', new Date()),\n\t*   1000,\n\t* )\n\t*\n\t* timeoutManager.clearInterval(intervalId)\n\t* ```\n\t*/\n\tclearInterval(intervalId) {\n\t\tthis.#provider.clearInterval(intervalId);\n\t}\n};\n/**\n* Singleton instance of {@link TimeoutManager}, used throughout TanStack Query to schedule and cancel timers.\n*/\nconst timeoutManager = new TimeoutManager();\n/**\n* In many cases code wants to delay to the next event loop tick; this is not\n* mediated by {@link timeoutManager}.\n*\n* This function is provided to make auditing the `tanstack/query-core` for\n* incorrect use of system `setTimeout` easier.\n* @param callback - The function to call on the next event loop tick.\n*/\nfunction systemSetTimeoutZero(callback) {\n\tsetTimeout(callback, 0);\n}\n//#endregion\nexport { TimeoutManager, defaultTimeoutProvider, systemSetTimeoutZero, timeoutManager };\n\n//# sourceMappingURL=timeoutManager.js.map","import { timeoutManager } from \"./timeoutManager.js\";\n//#region src/utils.ts\n/**\n* @deprecated use `environmentManager.isServer()` instead.\n*/\nconst isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {}\n/**\n* Resolves an {@link Updater}: calls it with `input` if it is a function, otherwise returns it as\n* is.\n* @param updater - The new value, or a function that receives `input` and returns the new value.\n* @param input - The current value, passed to `updater` if it is a function.\n* @returns The new value.\n*/\nfunction functionalUpdate(updater, input) {\n\treturn typeof updater === \"function\" ? updater(input) : updater;\n}\n/**\n* Checks whether a value can be used as a timeout: a non-negative, finite number.\n* @param value - The value to check.\n* @returns `true` if `value` is a number that is `>= 0` and not `Infinity`.\n*/\nfunction isValidTimeout(value) {\n\treturn typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\n/**\n* Calculates how long until data updated at `updatedAt` becomes stale.\n* @param updatedAt - The timestamp, in milliseconds, at which the data was last updated.\n* @param staleTime - The time, in milliseconds, after which data is considered stale. Defaults to\n* `0`.\n* @returns The remaining time in milliseconds, or `0` if the data is already stale.\n*/\nfunction timeUntilStale(updatedAt, staleTime) {\n\treturn Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\n/**\n* Resolves an option that can be given either as a value or as a function of the query, such as\n* `staleTime`.\n* @param value - The option value, or a function that receives `query` and returns the value.\n* @param query - The query passed to `value` if it is a function.\n* @returns The resolved value, or `undefined` if `value` is `undefined`.\n*/\nfunction resolveQueryValue(value, query) {\n\treturn typeof value === \"function\" ? value(query) : value;\n}\n/**\n* Checks whether a query matches the given {@link QueryFilters}.\n* Every filter that is specified must match; filters that are left unspecified are ignored.\n* @param filters - The filters to check the query against.\n* @param query - The query to check.\n* @returns `true` if the query matches every specified filter.\n* @example\n* ```ts\n* const queryCache = queryClient.getQueryCache()\n*\n* const matchingQueries = queryCache\n*   .getAll()\n*   .filter((query) => matchQuery({ queryKey: ['posts'] }, query))\n* ```\n*/\nfunction matchQuery(filters, query) {\n\tconst { type = \"all\", exact, fetchStatus, predicate, queryKey, stale } = filters;\n\tif (queryKey) {\n\t\tif (exact) {\n\t\t\tif (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) return false;\n\t\t} else if (!partialMatchKey(query.queryKey, queryKey)) return false;\n\t}\n\tif (type !== \"all\") {\n\t\tconst isActive = query.isActive();\n\t\tif (type === \"active\" && !isActive) return false;\n\t\tif (type === \"inactive\" && isActive) return false;\n\t}\n\tif (typeof stale === \"boolean\" && query.isStale() !== stale) return false;\n\tif (fetchStatus && fetchStatus !== query.state.fetchStatus) return false;\n\tif (predicate && !predicate(query)) return false;\n\treturn true;\n}\n/**\n* Checks whether a mutation matches the given {@link MutationFilters}.\n* Every filter that is specified must match; filters that are left unspecified are ignored.\n* If a `mutationKey` filter is provided but the mutation has no `mutationKey` of its own, it does not match.\n* @param filters - The filters to check the mutation against.\n* @param mutation - The mutation to check.\n* @returns `true` if the mutation matches every specified filter.\n* @example\n* ```ts\n* const mutationCache = queryClient.getMutationCache()\n*\n* const matchingMutations = mutationCache\n*   .getAll()\n*   .filter((mutation) => matchMutation({ mutationKey: ['addPost'] }, mutation))\n* ```\n*/\nfunction matchMutation(filters, mutation) {\n\tconst { exact, status, predicate, mutationKey } = filters;\n\tif (mutationKey) {\n\t\tif (!mutation.options.mutationKey) return false;\n\t\tif (exact) {\n\t\t\tif (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) return false;\n\t\t} else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) return false;\n\t}\n\tif (status && mutation.state.status !== status) return false;\n\tif (predicate && !predicate(mutation)) return false;\n\treturn true;\n}\n/**\n* Hashes a query key with the query's `queryKeyHashFn` option, falling back to {@link hashKey}.\n* @param queryKey - The query key to hash.\n* @param options - The query options that may provide a custom `queryKeyHashFn`.\n* @returns The query hash, a string that identifies the query in the cache.\n*/\nfunction hashQueryKeyByOptions(queryKey, options) {\n\treturn (options?.queryKeyHashFn || hashKey)(queryKey);\n}\n/**\n* Default query & mutation keys hash function.\n* Hashes the value into a stable hash.\n* @param queryKey - The query or mutation key to hash.\n* @returns The stable hash of the key, as a JSON string.\n* @example\n* ```ts\n* // Object keys are sorted, so key order doesn't affect the hash:\n* hashKey(['todos', { page: 1, filter: 'done' }]) // === '[\"todos\",{\"filter\":\"done\",\"page\":1}]'\n* ```\n*/\nfunction hashKey(queryKey) {\n\treturn JSON.stringify(queryKey, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n\t\tresult[key] = val[key];\n\t\treturn result;\n\t}, {}) : val);\n}\nfunction partialMatchKey(a, b) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (a && b && typeof a === \"object\" && typeof b === \"object\") {\n\t\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\t\tif (b.length > a.length) return false;\n\t\t\tfor (let i = 0; i < b.length; i++) if (!partialMatchKey(a[i], b[i])) return false;\n\t\t\treturn true;\n\t\t}\n\t\tconst bKeys = Object.keys(b);\n\t\tfor (const key of bKeys) if (!partialMatchKey(a[key], b[key])) return false;\n\t\treturn true;\n\t}\n\treturn false;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n\tif (a === b) return a;\n\tif (depth > 500) return b;\n\tconst array = isPlainArray(a) && isPlainArray(b);\n\tif (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n\tconst aSize = (array ? a : Object.keys(a)).length;\n\tconst bItems = array ? b : Object.keys(b);\n\tconst bSize = bItems.length;\n\tconst copy = array ? new Array(bSize) : {};\n\tlet equalItems = 0;\n\tfor (let i = 0; i < bSize; i++) {\n\t\tconst key = array ? i : bItems[i];\n\t\tconst aItem = a[key];\n\t\tconst bItem = b[key];\n\t\tif (aItem === bItem) {\n\t\t\tcopy[key] = aItem;\n\t\t\tif (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n\t\t\tcopy[key] = bItem;\n\t\t\tcontinue;\n\t\t}\n\t\tconst v = replaceEqualDeep(aItem, bItem, depth + 1);\n\t\tcopy[key] = v;\n\t\tif (v === aItem) equalItems++;\n\t}\n\treturn aSize === bSize && equalItems === aSize ? a : copy;\n}\n/**\n* Shallow compare objects.\n* @param a - The first object.\n* @param b - The second object, or `undefined`.\n* @returns `true` if both objects have the same keys, with strictly equal values for each key.\n*/\nfunction shallowEqualObjects(a, b) {\n\tif (!b || Object.keys(a).length !== Object.keys(b).length) return false;\n\tfor (const key in a) if (a[key] !== b[key]) return false;\n\treturn true;\n}\n/**\n* Checks whether a value is an array with no holes and no extra properties.\n* @param value - The value to check.\n* @returns `true` if `value` is an array whose number of own keys equals its `length`.\n*/\nfunction isPlainArray(value) {\n\treturn Array.isArray(value) && value.length === Object.keys(value).length;\n}\n/**\n* Checks whether a value is a plain object, e.g. created with an object literal or\n* `Object.create(null)`.\n* @param o - The value to check.\n* @returns `true` if `o` is a plain object.\n*/\nfunction isPlainObject(o) {\n\tif (!hasObjectPrototype(o)) return false;\n\tconst objectPrototype = Object.getPrototypeOf(o);\n\tconst ctor = objectPrototype?.constructor;\n\tif (ctor === void 0) return true;\n\tif (typeof ctor !== \"function\") return false;\n\tconst prot = ctor.prototype;\n\tif (!hasObjectPrototype(prot)) return false;\n\tif (!prot.hasOwnProperty(\"isPrototypeOf\")) return false;\n\tif (objectPrototype !== Object.prototype) return false;\n\treturn true;\n}\n/**\n* Checks whether a value's `Object.prototype.toString` tag is `[object Object]`.\n* @param o - The value to check.\n* @returns `true` if the tag is `[object Object]`.\n*/\nfunction hasObjectPrototype(o) {\n\treturn Object.prototype.toString.call(o) === \"[object Object]\";\n}\n/**\n* Waits for the given time, using the configured {@link timeoutManager}.\n* @param timeout - The time to wait, in milliseconds.\n* @returns A promise that resolves after `timeout` milliseconds.\n*/\nfunction sleep(timeout) {\n\treturn new Promise((resolve) => {\n\t\ttimeoutManager.setTimeout(resolve, timeout);\n\t});\n}\n/**\n* Applies a query's `structuralSharing` option when writing new data.\n* @param prevData - The previously cached data.\n* @param data - The new data.\n* @param options - The query options, whose `structuralSharing` decides how the data is merged.\n* @returns The result of a custom `structuralSharing` function, `data` with its unchanged parts\n* replaced by those of `prevData` by default, or `data` as is if `structuralSharing` is `false`.\n* @throws {Error} The error from the default structural sharing, e.g. when the data is not JSON serializable.\n* Outside production, it is also logged to the console.\n*/\nfunction replaceData(prevData, data, options) {\n\tif (typeof options.structuralSharing === \"function\") return options.structuralSharing(prevData, data);\n\telse if (options.structuralSharing !== false) {\n\t\tif (process.env.NODE_ENV !== \"production\") try {\n\t\t\treturn replaceEqualDeep(prevData, data);\n\t\t} catch (error) {\n\t\t\tconsole.error(`Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`);\n\t\t\tthrow error;\n\t\t}\n\t\treturn replaceEqualDeep(prevData, data);\n\t}\n\treturn data;\n}\n/**\n* Intended to be passed as a query's `placeholderData` option, for example\n* `placeholderData: keepPreviousData`. Instead of resetting the query's data to `undefined` while a new\n* query key is fetching, it keeps displaying the previously fetched data until the new data arrives.\n* @param previousData - The data of the previous query key, passed by the observer.\n* @returns The previous data, unchanged.\n* @example\n* ```ts\n* new QueryObserver(queryClient, {\n*   queryKey: ['posts', page],\n*   queryFn: () => fetchPosts(page),\n*   placeholderData: keepPreviousData,\n* })\n* ```\n*/\nfunction keepPreviousData(previousData) {\n\treturn previousData;\n}\n/**\n* Returns a new array with `item` added at the end. If that makes the array longer than `max`,\n* the first item is dropped. Only one item is dropped, so the result can still exceed `max` if\n* `items` already did.\n* @param items - The current items.\n* @param item - The value to append.\n* @param max - The length above which an item is dropped. `0` (the default) means no limit.\n* @returns A new array with `item` added.\n*/\nfunction addToEnd(items, item, max = 0) {\n\tconst newItems = [...items, item];\n\treturn max && newItems.length > max ? newItems.slice(1) : newItems;\n}\n/**\n* Returns a new array with `item` added at the start. If that makes the array longer than `max`,\n* the last item is dropped. Only one item is dropped, so the result can still exceed `max` if\n* `items` already did.\n* @param items - The current items.\n* @param item - The value to prepend.\n* @param max - The length above which an item is dropped. `0` (the default) means no limit.\n* @returns A new array with `item` added.\n*/\nfunction addToStart(items, item, max = 0) {\n\tconst newItems = [item, ...items];\n\treturn max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\n/**\n* Sentinel value that can be passed as a query's `queryFn` to conditionally disable the query (equivalent\n* to `enabled: false`) while preserving full type inference for the query's data. Unlike `enabled: false`,\n* a query disabled via `skipToken` cannot be triggered with `refetch`.\n* @example\n* ```ts\n* new QueryObserver(queryClient, {\n*   queryKey: ['post', postId],\n*   queryFn: postId != null ? () => fetchPost(postId) : skipToken,\n* })\n* ```\n*/\nconst skipToken = Symbol();\n/**\n* Returns the function to call for a fetch. If there is no `queryFn` but the fetch was started from\n* an `initialPromise`, that promise is returned instead. If there is no usable `queryFn` (missing or\n* {@link skipToken}), the returned function rejects with a `Missing queryFn` error.\n* @param options - The query options with the `queryFn`, and the `queryHash` used in error messages.\n* @param fetchOptions - The fetch options, which may carry an `initialPromise`.\n* @returns The function to call for the fetch.\n*/\nfunction ensureQueryFn(options, fetchOptions) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (options.queryFn === skipToken) console.error(`Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`);\n\t}\n\tif (!options.queryFn && fetchOptions?.initialPromise) return () => fetchOptions.initialPromise;\n\tif (!options.queryFn || options.queryFn === skipToken) return () => Promise.reject(/* @__PURE__ */ new Error(`Missing queryFn: '${options.queryHash}'`));\n\treturn options.queryFn;\n}\n/**\n* Resolves a `throwOnError` option to a boolean.\n* If `throwOnError` is a function, it is called with `params` (e.g. the error and, depending on the caller,\n* additional context such as the query or mutation) and its result is returned, allowing the throwing\n* behavior to be decided per error. Otherwise, `throwOnError` itself is coerced to a boolean (`undefined`\n* resolves to `false`).\n* @param throwOnError - The `throwOnError` option: a boolean, a function that decides per error, or\n* `undefined`.\n* @param params - The arguments passed to `throwOnError` if it is a function.\n* @returns Whether the error should be thrown.\n* @example\n* ```ts\n* const throwOnError =\n*   query.state.error && typeof options.throwOnError === 'function'\n*     ? shouldThrowError(options.throwOnError, [query.state.error, query])\n*     : options.throwOnError\n* ```\n*/\nfunction shouldThrowError(throwOnError, params) {\n\tif (typeof throwOnError === \"function\") return throwOnError(...params);\n\treturn !!throwOnError;\n}\n/**\n* Adds a lazy `signal` getter to an object, such as a query function context. The first time\n* `signal` is read, `onCancelled` is registered for the signal's `abort` event (or called right\n* away if it is already aborted), so cancellation is only tracked when the signal is actually used.\n* @param object - The object to add the `signal` property to.\n* @param getSignal - Returns the `AbortSignal`. Called once, when `signal` is first read.\n* @param onCancelled - Called when the signal is aborted, if `signal` was read.\n* @returns The same object, with the `signal` property added.\n*/\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n\tlet consumed = false;\n\tlet signal;\n\tObject.defineProperty(object, \"signal\", {\n\t\tenumerable: true,\n\t\tget: () => {\n\t\t\tsignal ??= getSignal();\n\t\t\tif (consumed) return signal;\n\t\t\tconsumed = true;\n\t\t\tif (signal.aborted) onCancelled();\n\t\t\telse signal.addEventListener(\"abort\", onCancelled, { once: true });\n\t\t\treturn signal;\n\t\t}\n\t});\n\treturn object;\n}\n//#endregion\nexport { addConsumeAwareSignal, addToEnd, addToStart, ensureQueryFn, functionalUpdate, hashKey, hashQueryKeyByOptions, isPlainArray, isPlainObject, isServer, isValidTimeout, keepPreviousData, matchMutation, matchQuery, noop, partialMatchKey, replaceData, replaceEqualDeep, resolveQueryValue, shallowEqualObjects, shouldThrowError, skipToken, sleep, timeUntilStale };\n\n//# sourceMappingURL=utils.js.map","import { isServer as isServer$1 } from \"./utils.js\";\n//#region src/environmentManager.ts\nlet isServerFn = () => isServer$1;\n/**\n* Returns whether the current runtime should be treated as a server environment.\n* @returns `true` if the runtime is treated as a server.\n*/\nconst isServer = () => isServerFn();\n/**\n* Manages how TanStack Query detects whether the current runtime should be treated as\n* server-side, which disables scheduling refetch timers and changes the default `retry` count\n* and `gcTime`. By default, the detection treats a missing `window` (or the presence of a\n* `Deno` global) as server.\n*\n* Override this for runtimes where that default detection would give the wrong answer — for\n* example, a Service Worker, where `window` is undefined even though the environment should\n* behave like a client.\n* @example\n* ```ts\n* import { environmentManager } from '@tanstack/query-core'\n*\n* environmentManager.setIsServer(() => false)\n* ```\n*/\nconst environmentManager = {\n\tisServer,\n\t/**\n\t* Overrides the server check globally.\n\t* @param isServerValue - A function that returns whether the runtime should be treated as a\n\t* server.\n\t*/\n\tsetIsServer(isServerValue) {\n\t\tisServerFn = isServerValue;\n\t}\n};\n//#endregion\nexport { environmentManager, isServer };\n\n//# sourceMappingURL=environmentManager.js.map","//#region src/subscribable.ts\n/**\n* The base class behind everything in Query that you can subscribe to: `QueryCache`, `MutationCache`,\n* the observers, and the `FocusManager`/`OnlineManager` behind `focusManager` and `onlineManager`.\n* Subclasses decide what a listener receives and when it is called.\n*/\nvar Subscribable = class {\n\tconstructor() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t}\n\t/**\n\t* Registers a listener to be called on every update this object notifies about. Returns a function\n\t* that removes the listener again — call it to stop listening. The base class never drops a listener\n\t* on its own, though some subclasses clear all of theirs in `destroy()`.\n\t* @param listener - Called on each update, with whatever the subclass passes to its subscribers.\n\t* @returns A function that removes the listener.\n\t* @example\n\t* ```ts\n\t* const unsubscribe = subscribable.subscribe(() => {\n\t*   // react to the update\n\t* })\n\t*\n\t* unsubscribe()\n\t* ```\n\t*/\n\tsubscribe(listener) {\n\t\tthis.listeners.add(listener);\n\t\tthis.onSubscribe();\n\t\treturn () => {\n\t\t\tthis.listeners.delete(listener);\n\t\t\tthis.onUnsubscribe();\n\t\t};\n\t}\n\t/**\n\t* Returns `true` while at least one listener is registered, `false` once they have all unsubscribed.\n\t* @returns `true` if at least one listener is registered.\n\t*/\n\thasListeners() {\n\t\treturn this.listeners.size > 0;\n\t}\n\t/**\n\t* Called after a listener is added. Does nothing here; subclasses override it, e.g. to start\n\t* tracking what they observe once the first listener subscribes.\n\t*/\n\tonSubscribe() {}\n\t/**\n\t* Called after a listener is removed. Does nothing here; subclasses override it, e.g. to clean up\n\t* once the last listener unsubscribes.\n\t*/\n\tonUnsubscribe() {}\n};\n//#endregion\nexport { Subscribable };\n\n//# sourceMappingURL=subscribable.js.map","import { Subscribable } from \"./subscribable.js\";\n//#region src/focusManager.ts\n/**\n* The `FocusManager` manages the focus state within TanStack Query.\n*\n* It can be used to change the default event listeners or to manually change the focus state.\n*/\nvar FocusManager = class extends Subscribable {\n\t#focused;\n\t#cleanup;\n\t#setup;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#setup = (onFocus) => {\n\t\t\tif (typeof window !== \"undefined\" && window.addEventListener) {\n\t\t\t\tconst listener = () => onFocus();\n\t\t\t\twindow.addEventListener(\"visibilitychange\", listener, false);\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener(\"visibilitychange\", listener);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tonSubscribe() {\n\t\tif (!this.#cleanup) this.setEventListener(this.#setup);\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) {\n\t\t\tthis.#cleanup?.();\n\t\t\tthis.#cleanup = void 0;\n\t\t}\n\t}\n\t/**\n\t* `setEventListener` can be used to set a custom event listener that will\n\t* be used to determine the focus state. The provided `setup` function\n\t* receives a `setFocused` callback: call it with a `boolean` to manually\n\t* set the focus state, or with no arguments to re-evaluate the current\n\t* focus state and notify subscribers.\n\t* @param setup - Receives the `setFocused` callback, registers the event listener, and may return\n\t* a cleanup function that is called when the listener is replaced or no longer needed.\n\t* @example\n\t* ```ts\n\t* import { focusManager } from '@tanstack/query-core'\n\t*\n\t* focusManager.setEventListener((handleFocus) => {\n\t*   const listener = () => handleFocus()\n\t*   // Listen to visibilitychange\n\t*   if (typeof window !== 'undefined' && window.addEventListener) {\n\t*     window.addEventListener('visibilitychange', listener, false)\n\t*   }\n\t*\n\t*   return () => {\n\t*     // Be sure to unsubscribe if a new handler is set\n\t*     window.removeEventListener('visibilitychange', listener)\n\t*   }\n\t* })\n\t* ```\n\t*/\n\tsetEventListener(setup) {\n\t\tthis.#setup = setup;\n\t\tthis.#cleanup?.();\n\t\tthis.#cleanup = setup((focused) => {\n\t\t\tif (typeof focused === \"boolean\") this.setFocused(focused);\n\t\t\telse this.onFocus();\n\t\t});\n\t}\n\t/**\n\t* `setFocused` can be used to manually set the focus state. Set `undefined`\n\t* to fall back to the default focus check.\n\t* @param focused - The focus state, or `undefined` to use the default focus check.\n\t* @example\n\t* ```ts\n\t* import { focusManager } from '@tanstack/query-core'\n\t*\n\t* // Set focused\n\t* focusManager.setFocused(true)\n\t*\n\t* // Set unfocused\n\t* focusManager.setFocused(false)\n\t*\n\t* // Fallback to the default focus check\n\t* focusManager.setFocused(undefined)\n\t* ```\n\t*/\n\tsetFocused(focused) {\n\t\tif (this.#focused !== focused) {\n\t\t\tthis.#focused = focused;\n\t\t\tthis.onFocus();\n\t\t}\n\t}\n\t/**\n\t* `onFocus` notifies all subscribed listeners with the current focus state.\n\t*/\n\tonFocus() {\n\t\tconst isFocused = this.isFocused();\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistener(isFocused);\n\t\t});\n\t}\n\t/**\n\t* `isFocused` can be used to get the current focus state.\n\t* @returns The focus state set with `setFocused`, or otherwise whether the document is visible.\n\t*/\n\tisFocused() {\n\t\tif (typeof this.#focused === \"boolean\") return this.#focused;\n\t\treturn globalThis.document?.visibilityState !== \"hidden\";\n\t}\n};\n/**\n* Singleton instance of {@link FocusManager}, used to manage and observe the focus state within TanStack Query.\n*/\nconst focusManager = new FocusManager();\n//#endregion\nexport { FocusManager, focusManager };\n\n//# sourceMappingURL=focusManager.js.map","import { systemSetTimeoutZero } from \"./timeoutManager.js\";\n//#region src/notifyManager.ts\n/**\n* Default scheduling function used by the notify manager.\n* Schedules the callback with the system's `setTimeout(callback, 0)`.\n*/\nconst defaultScheduler = systemSetTimeoutZero;\n/**\n* Creates a notify manager, which schedules and batches notifications to subscribers. Query uses a\n* single instance of it, exported as {@link notifyManager}.\n* @returns A new notify manager.\n*/\nfunction createNotifyManager() {\n\tlet queue = [];\n\tlet transactions = 0;\n\tlet notifyFn = (callback) => {\n\t\tcallback();\n\t};\n\tlet batchNotifyFn = (callback) => {\n\t\tcallback();\n\t};\n\tlet scheduleFn = defaultScheduler;\n\tconst schedule = (callback) => {\n\t\tif (transactions) queue.push(callback);\n\t\telse scheduleFn(() => {\n\t\t\tnotifyFn(callback);\n\t\t});\n\t};\n\tconst flush = () => {\n\t\tconst originalQueue = queue;\n\t\tqueue = [];\n\t\tif (originalQueue.length) scheduleFn(() => {\n\t\t\tbatchNotifyFn(() => {\n\t\t\t\toriginalQueue.forEach((callback) => {\n\t\t\t\t\tnotifyFn(callback);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n\treturn {\n\t\t/**\n\t\t* Batches all updates scheduled inside the passed callback.\n\t\t* This is mainly used internally to optimize query client updating.\n\t\t* Batches can be nested; the queue is only flushed once the outermost `batch` call finishes.\n\t\t* The return value of `callback` is passed through.\n\t\t* @param callback - The function to run in the batch.\n\t\t* @returns The return value of `callback`.\n\t\t*/\n\t\tbatch: (callback) => {\n\t\t\tlet result;\n\t\t\ttransactions++;\n\t\t\ttry {\n\t\t\t\tresult = callback();\n\t\t\t} finally {\n\t\t\t\ttransactions--;\n\t\t\t\tif (!transactions) flush();\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t/**\n\t\t* All calls to the wrapped function will be batched.\n\t\t* @param callback - The function to wrap.\n\t\t* @returns A function that schedules a call to `callback` with the given arguments.\n\t\t*/\n\t\tbatchCalls: (callback) => {\n\t\t\treturn (...args) => {\n\t\t\t\tschedule(() => {\n\t\t\t\t\tcallback(...args);\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t\t/**\n\t\t* Schedules a function to be run on the next batch.\n\t\t* By default, the batch is run with a `setTimeout`, but this can be configured via `setScheduler`.\n\t\t*/\n\t\tschedule,\n\t\t/**\n\t\t* Use this method to set a custom notify function.\n\t\t* This can be used to for example wrap notifications with `React.act` while running tests.\n\t\t* @param fn - Receives each notification callback and must call it.\n\t\t*/\n\t\tsetNotifyFunction: (fn) => {\n\t\t\tnotifyFn = fn;\n\t\t},\n\t\t/**\n\t\t* Use this method to set a custom function to batch notifications together into a single tick.\n\t\t* Framework adapters use this to plug in their own batching primitive, so that a single query\n\t\t* update only triggers one re-render instead of one per subscriber.\n\t\t* @param fn - Receives a function that runs a batch of notifications and must call it.\n\t\t* @example\n\t\t* ```ts\n\t\t* import { notifyManager } from '@tanstack/query-core'\n\t\t* import { batch } from 'solid-js'\n\t\t*\n\t\t* notifyManager.setBatchNotifyFunction(batch)\n\t\t* ```\n\t\t*/\n\t\tsetBatchNotifyFunction: (fn) => {\n\t\t\tbatchNotifyFn = fn;\n\t\t},\n\t\t/**\n\t\t* Configures a custom callback that schedules when the next batch runs.\n\t\t* The default behavior is `setTimeout(callback, 0)`.\n\t\t* @param fn - Receives a callback that runs the next batch, and schedules it.\n\t\t* @example\n\t\t* ```ts\n\t\t* import { notifyManager } from '@tanstack/query-core'\n\t\t*\n\t\t* // Schedule batches in the next microtask\n\t\t* notifyManager.setScheduler(queueMicrotask)\n\t\t*\n\t\t* // Schedule batches before the next frame is rendered\n\t\t* notifyManager.setScheduler(requestAnimationFrame)\n\t\t*\n\t\t* // Schedule batches some time in the future\n\t\t* notifyManager.setScheduler((cb) => setTimeout(cb, 10))\n\t\t* ```\n\t\t*/\n\t\tsetScheduler: (fn) => {\n\t\t\tscheduleFn = fn;\n\t\t}\n\t};\n}\n/**\n* Handles scheduling and batching callbacks in TanStack Query.\n*/\nconst notifyManager = createNotifyManager();\n//#endregion\nexport { createNotifyManager, defaultScheduler, notifyManager };\n\n//# sourceMappingURL=notifyManager.js.map","import { Subscribable } from \"./subscribable.js\";\n//#region src/onlineManager.ts\n/**\n* The `OnlineManager` manages the online state within TanStack Query. It can\n* be used to change the default event listeners or to manually change the\n* online state.\n*\n* By default, the `onlineManager` assumes an active network connection, and\n* listens to the `online` and `offline` events on the `window` object to\n* detect changes.\n*/\nvar OnlineManager = class extends Subscribable {\n\t#online = true;\n\t#cleanup;\n\t#setup;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#setup = (onOnline) => {\n\t\t\tif (typeof window !== \"undefined\" && window.addEventListener) {\n\t\t\t\tconst onlineListener = () => onOnline(true);\n\t\t\t\tconst offlineListener = () => onOnline(false);\n\t\t\t\twindow.addEventListener(\"online\", onlineListener, false);\n\t\t\t\twindow.addEventListener(\"offline\", offlineListener, false);\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener(\"online\", onlineListener);\n\t\t\t\t\twindow.removeEventListener(\"offline\", offlineListener);\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tonSubscribe() {\n\t\tif (!this.#cleanup) this.setEventListener(this.#setup);\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) {\n\t\t\tthis.#cleanup?.();\n\t\t\tthis.#cleanup = void 0;\n\t\t}\n\t}\n\t/**\n\t* `setEventListener` can be used to set a custom event listener that will\n\t* be used to determine the online state. The provided `setup` function\n\t* receives a `setOnline` callback that should be called with a `boolean`\n\t* whenever the online state changes.\n\t* @param setup - Receives the `setOnline` callback, registers the event listener, and may return\n\t* a cleanup function that is called when the listener is replaced or no longer needed.\n\t* @example\n\t* ```ts\n\t* import NetInfo from '@react-native-community/netinfo'\n\t* import { onlineManager } from '@tanstack/query-core'\n\t*\n\t* onlineManager.setEventListener((setOnline) => {\n\t*   return NetInfo.addEventListener((state) => {\n\t*     setOnline(!!state.isConnected)\n\t*   })\n\t* })\n\t* ```\n\t*/\n\tsetEventListener(setup) {\n\t\tthis.#setup = setup;\n\t\tthis.#cleanup?.();\n\t\tthis.#cleanup = setup(this.setOnline.bind(this));\n\t}\n\t/**\n\t* `setOnline` can be used to manually set the online state.\n\t* @param online - The online state.\n\t* @example\n\t* ```ts\n\t* import { onlineManager } from '@tanstack/query-core'\n\t*\n\t* // Set to online\n\t* onlineManager.setOnline(true)\n\t*\n\t* // Set to offline\n\t* onlineManager.setOnline(false)\n\t* ```\n\t*/\n\tsetOnline(online) {\n\t\tif (this.#online !== online) {\n\t\t\tthis.#online = online;\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(online);\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* `isOnline` can be used to get the current online state.\n\t* @returns `true` if online.\n\t*/\n\tisOnline() {\n\t\treturn this.#online;\n\t}\n};\n/**\n* Singleton instance of {@link OnlineManager}, used to manage and observe the online state within TanStack Query.\n*/\nconst onlineManager = new OnlineManager();\n//#endregion\nexport { OnlineManager, onlineManager };\n\n//# sourceMappingURL=onlineManager.js.map","import { noop, sleep } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\n//#region src/retryer.ts\n/**\n* The default `retryDelay`: doubles with every failure, starting at 1 second, up to 30 seconds.\n* @param failureCount - The number of failures so far.\n* @returns The delay before the next retry, in milliseconds.\n*/\nfunction defaultRetryDelay(failureCount) {\n\treturn Math.min(1e3 * 2 ** failureCount, 3e4);\n}\n/**\n* Checks whether a fetch can run for the given network mode.\n* @param networkMode - The `networkMode` option. Defaults to `'online'`.\n* @returns `true` if the network mode is not `'online'`, or if it is and the client is online.\n*/\nfunction canFetch(networkMode) {\n\treturn (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\n/**\n* The error thrown by a `Retryer` (and surfaced to `query.promise`/`mutation`) when a fetch is cancelled, e.g. via\n* `query.cancel()`. `revert`, if `true`, tells the caller to restore the state the query was in before the fetch\n* started instead of surfacing the error. `silent`, if `true`, tells the caller to suppress this error and instead\n* resolve with the promise of the fetch that triggered the cancellation.\n* @example\n* ```ts\n* query.cancel()\n*\n* try {\n*   await query.promise\n* } catch (error) {\n*   if (error instanceof CancelledError) {\n*     // the fetch was cancelled, e.g. via `query.cancel()`\n*   }\n* }\n* ```\n*/\nvar CancelledError = class extends Error {\n\tconstructor(options) {\n\t\tsuper(\"CancelledError\");\n\t\tthis.revert = options?.revert;\n\t\tthis.silent = options?.silent;\n\t}\n};\n/**\n* Checks whether a value is a `CancelledError`.\n* @param value - The value to check.\n* @returns `true` if `value` is a `CancelledError`.\n* @deprecated Use instanceof `CancelledError` instead.\n*/\nfunction isCancelledError(value) {\n\treturn value instanceof CancelledError;\n}\n/**\n* Creates a retryer, which runs a function and retries it on failure according to the `retry` and\n* `retryDelay` options. It pauses while the network mode doesn't allow fetching or `canRun` returns\n* `false`, and can be cancelled. Queries and mutations use it to run their `queryFn` and\n* `mutationFn`.\n* @param config - The function to run, the retry options, and the callbacks for failures, pausing,\n* continuing, and cancellation.\n* @returns The retryer, whose `promise` settles with the result of the function.\n*/\nfunction createRetryer(config) {\n\tlet isRetryCancelled = false;\n\tlet failureCount = 0;\n\tlet continueFn;\n\tlet status = \"pending\";\n\tlet promiseResolve;\n\tlet promiseReject;\n\tconst promise = new Promise((resolve, reject) => {\n\t\tpromiseResolve = resolve;\n\t\tpromiseReject = reject;\n\t});\n\tpromise.catch(noop);\n\tconst isResolved = () => status !== \"pending\";\n\tconst cancel = (cancelOptions) => {\n\t\tif (!isResolved()) {\n\t\t\tconst error = new CancelledError(cancelOptions);\n\t\t\treject(error);\n\t\t\tconfig.onCancel?.(error);\n\t\t}\n\t};\n\tconst cancelRetry = () => {\n\t\tisRetryCancelled = true;\n\t};\n\tconst continueRetry = () => {\n\t\tisRetryCancelled = false;\n\t};\n\tconst canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n\tconst canStart = () => canFetch(config.networkMode) && config.canRun();\n\tconst resolve = (value) => {\n\t\tif (!isResolved()) {\n\t\t\tcontinueFn?.();\n\t\t\tstatus = \"resolved\";\n\t\t\tpromiseResolve(value);\n\t\t}\n\t};\n\tconst reject = (value) => {\n\t\tif (!isResolved()) {\n\t\t\tcontinueFn?.();\n\t\t\tstatus = \"rejected\";\n\t\t\tpromiseReject(value);\n\t\t}\n\t};\n\tconst pause = (canResume) => {\n\t\treturn new Promise((continueResolve) => {\n\t\t\tcontinueFn = (value) => {\n\t\t\t\tif (isResolved() || canResume()) continueResolve(value);\n\t\t\t};\n\t\t\tconfig.onPause?.();\n\t\t}).then(() => {\n\t\t\tcontinueFn = void 0;\n\t\t\tif (!isResolved()) config.onContinue?.();\n\t\t});\n\t};\n\tconst run = () => {\n\t\tif (isResolved()) return;\n\t\tlet promiseOrValue;\n\t\tconst initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n\t\ttry {\n\t\t\tpromiseOrValue = initialPromise ?? config.fn();\n\t\t} catch (error) {\n\t\t\tpromiseOrValue = Promise.reject(error);\n\t\t}\n\t\tPromise.resolve(promiseOrValue).then(resolve).catch((error) => {\n\t\t\tif (isResolved()) return;\n\t\t\tconst retry = config.retry ?? (isServer() ? 0 : 3);\n\t\t\tconst retryDelay = config.retryDelay ?? defaultRetryDelay;\n\t\t\tconst delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n\t\t\tconst shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n\t\t\tif (isRetryCancelled || !shouldRetry) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfailureCount++;\n\t\t\tconfig.onFail?.(failureCount, error);\n\t\t\tsleep(delay).then(() => {\n\t\t\t\treturn canContinue() ? void 0 : pause(canContinue);\n\t\t\t}).then(() => {\n\t\t\t\tif (isRetryCancelled) reject(error);\n\t\t\t\telse run();\n\t\t\t});\n\t\t});\n\t};\n\treturn {\n\t\tpromise,\n\t\tstatus: () => status,\n\t\tcancel,\n\t\tcontinue: () => {\n\t\t\tcontinueFn?.();\n\t\t\treturn promise;\n\t\t},\n\t\tcancelRetry,\n\t\tcontinueRetry,\n\t\tcanStart,\n\t\tstart: () => {\n\t\t\tif (canStart()) run();\n\t\t\telse pause(canStart).then(run);\n\t\t\treturn promise;\n\t\t}\n\t};\n}\n//#endregion\nexport { CancelledError, canFetch, createRetryer, isCancelledError };\n\n//# sourceMappingURL=retryer.js.map","import { timeoutManager } from \"./timeoutManager.js\";\nimport { isValidTimeout } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\n//#region src/removable.ts\n/**\n* The base class for cache entries that are garbage collected once nothing is using them —\n* `Query` and `Mutation` both extend it. `gcTime` controls how long an unused entry is kept.\n*/\nvar Removable = class {\n\t#gcTimeout;\n\t/**\n\t* Clears the pending garbage collection timeout, so the entry is no longer scheduled for removal.\n\t* A subclass may override this to release what it holds on to as well — `Query` also cancels any\n\t* in-flight fetch.\n\t*/\n\tdestroy() {\n\t\tthis.clearGcTimeout();\n\t}\n\t/**\n\t* Schedules the entry to be removed from its cache after `gcTime`, replacing any timeout scheduled\n\t* before. Nothing is scheduled if `gcTime` is `Infinity`.\n\t*/\n\tscheduleGc() {\n\t\tthis.clearGcTimeout();\n\t\tif (isValidTimeout(this.gcTime)) this.#gcTimeout = timeoutManager.setTimeout(() => {\n\t\t\tthis.optionalRemove();\n\t\t}, this.gcTime);\n\t}\n\t/**\n\t* Updates `gcTime`, keeping the longest one seen so far. Without a value, it defaults to 5 minutes\n\t* on the client and `Infinity` on the server.\n\t* @param newGcTime - The `gcTime` from the latest options, if any.\n\t*/\n\tupdateGcTime(newGcTime) {\n\t\tthis.gcTime = Math.max(this.gcTime || 0, newGcTime ?? (isServer() ? Infinity : 3e5));\n\t}\n\t/**\n\t* Cancels the scheduled removal, if there is one.\n\t*/\n\tclearGcTimeout() {\n\t\tif (this.#gcTimeout !== void 0) {\n\t\t\ttimeoutManager.clearTimeout(this.#gcTimeout);\n\t\t\tthis.#gcTimeout = void 0;\n\t\t}\n\t}\n};\n//#endregion\nexport { Removable };\n\n//# sourceMappingURL=removable.js.map","import { addConsumeAwareSignal, addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\n//#region src/infiniteQueryBehavior.ts\n/**\n* Creates the behavior that fetches the pages of an infinite query: the next or previous page for\n* `fetchNextPage`/`fetchPreviousPage`, or all pages again from the start on a refetch.\n* @param pages - The number of pages to fetch from the start when all pages are fetched again,\n* e.g. from the `pages` option of `queryClient.infiniteQuery`. Defaults to the number of cached\n* pages.\n* @returns The query behavior to set on an infinite query.\n*/\nfunction infiniteQueryBehavior(pages) {\n\treturn { onFetch: (context, query) => {\n\t\tconst options = context.options;\n\t\tconst direction = context.fetchOptions?.meta?.fetchMore?.direction;\n\t\tconst oldPages = context.state.data?.pages || [];\n\t\tconst oldPageParams = context.state.data?.pageParams || [];\n\t\tlet result = {\n\t\t\tpages: [],\n\t\t\tpageParams: []\n\t\t};\n\t\tlet currentPage = 0;\n\t\tconst fetchFn = async () => {\n\t\t\tlet cancelled = false;\n\t\t\tconst addSignalProperty = (object) => {\n\t\t\t\taddConsumeAwareSignal(object, () => context.signal, () => cancelled = true);\n\t\t\t};\n\t\t\tconst queryFn = ensureQueryFn(context.options, context.fetchOptions);\n\t\t\tconst fetchPage = async (data, param, previous) => {\n\t\t\t\tif (cancelled) return Promise.reject(context.signal.reason);\n\t\t\t\tif (param == null && data.pages.length) return Promise.resolve(data);\n\t\t\t\tconst createQueryFnContext = () => {\n\t\t\t\t\tconst queryFnContext = {\n\t\t\t\t\t\tclient: context.client,\n\t\t\t\t\t\tqueryKey: context.queryKey,\n\t\t\t\t\t\tpageParam: param,\n\t\t\t\t\t\tdirection: previous ? \"backward\" : \"forward\",\n\t\t\t\t\t\tmeta: context.options.meta\n\t\t\t\t\t};\n\t\t\t\t\taddSignalProperty(queryFnContext);\n\t\t\t\t\treturn queryFnContext;\n\t\t\t\t};\n\t\t\t\tconst queryFnContext = createQueryFnContext();\n\t\t\t\tconst page = await queryFn(queryFnContext);\n\t\t\t\tconst { maxPages } = context.options;\n\t\t\t\tconst addTo = previous ? addToStart : addToEnd;\n\t\t\t\treturn {\n\t\t\t\t\tpages: addTo(data.pages, page, maxPages),\n\t\t\t\t\tpageParams: addTo(data.pageParams, param, maxPages)\n\t\t\t\t};\n\t\t\t};\n\t\t\tif (direction && oldPages.length) {\n\t\t\t\tconst previous = direction === \"backward\";\n\t\t\t\tconst pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n\t\t\t\tconst oldData = {\n\t\t\t\t\tpages: oldPages,\n\t\t\t\t\tpageParams: oldPageParams\n\t\t\t\t};\n\t\t\t\tresult = await fetchPage(oldData, pageParamFn(options, oldData), previous);\n\t\t\t} else {\n\t\t\t\tconst remainingPages = pages ?? oldPages.length;\n\t\t\t\tdo {\n\t\t\t\t\tconst param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n\t\t\t\t\tif (currentPage > 0 && param == null) break;\n\t\t\t\t\tresult = await fetchPage(result, param);\n\t\t\t\t\tcurrentPage++;\n\t\t\t\t} while (currentPage < remainingPages);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (context.options.persister) context.fetchFn = () => {\n\t\t\treturn context.options.persister?.(fetchFn, {\n\t\t\t\tclient: context.client,\n\t\t\t\tqueryKey: context.queryKey,\n\t\t\t\tmeta: context.options.meta,\n\t\t\t\tsignal: context.signal\n\t\t\t}, query);\n\t\t};\n\t\telse context.fetchFn = fetchFn;\n\t} };\n}\n/**\n* Computes the page param of the page after the last one, with the `getNextPageParam` option.\n* @param options - The infinite query options.\n* @param data - The current pages and page params.\n* @returns The next page param, or `undefined` if there are no pages yet.\n*/\nfunction getNextPageParam(options, { pages, pageParams }) {\n\tconst lastIndex = pages.length - 1;\n\treturn pages.length > 0 ? options.getNextPageParam(pages[lastIndex], pages, pageParams[lastIndex], pageParams) : void 0;\n}\n/**\n* Computes the page param of the page before the first one, with the `getPreviousPageParam`\n* option.\n* @param options - The infinite query options.\n* @param data - The current pages and page params.\n* @returns The previous page param, or `undefined` if there are no pages yet or no\n* `getPreviousPageParam` option.\n*/\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n\treturn pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\n/**\n* Checks if there is a next page.\n* @param options - The infinite query options with `getNextPageParam`.\n* @param data - The current pages and page params.\n* @returns `true` if `getNextPageParam` returns a value other than `null` or `undefined`.\n*/\nfunction hasNextPage(options, data) {\n\tif (!data) return false;\n\treturn getNextPageParam(options, data) != null;\n}\n/**\n* Checks if there is a previous page.\n* @param options - The infinite query options with `getPreviousPageParam`.\n* @param data - The current pages and page params.\n* @returns `true` if `getPreviousPageParam` is set and returns a value other than `null` or\n* `undefined`.\n*/\nfunction hasPreviousPage(options, data) {\n\tif (!data || !options.getPreviousPageParam) return false;\n\treturn getPreviousPageParam(options, data) != null;\n}\n//#endregion\nexport { hasNextPage, hasPreviousPage, infiniteQueryBehavior };\n\n//# sourceMappingURL=infiniteQueryBehavior.js.map","import { ensureQueryFn, noop, replaceData, resolveQueryValue, skipToken, timeUntilStale } from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\n//#region src/query.ts\n/**\n* Represents a single cached query. A `Query` holds the query's key, options,\n* state (data/error/status), and the observers currently subscribed to it.\n*\n* Instances are created and managed internally by `QueryCache`; application\n* code typically interacts with queries indirectly through `QueryClient` or\n* a framework hook like `useQuery`. Direct access to a `Query` instance is\n* possible via `queryCache.find()`/`findAll()` for inspecting cache state.\n* @example\n* ```ts\n* const queryCache = queryClient.getQueryCache()\n* const query = queryCache.find({ queryKey: ['posts'] })\n*\n* if (query) {\n*   console.log(query.state.dataUpdatedAt)\n* }\n* ```\n*/\nvar Query = class extends Removable {\n\t#queryType;\n\t#initialState;\n\t#revertState;\n\t#cache;\n\t#client;\n\t#retryer;\n\t#defaultOptions;\n\t#abortSignalConsumed;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.#abortSignalConsumed = false;\n\t\tthis.#defaultOptions = config.defaultOptions;\n\t\tthis.setOptions(config.options);\n\t\tthis.observers = [];\n\t\tthis.#client = config.client;\n\t\tthis.#cache = this.#client.getQueryCache();\n\t\tthis.queryKey = config.queryKey;\n\t\tthis.queryHash = config.queryHash;\n\t\tthis.#initialState = getDefaultState(this.options);\n\t\tthis.state = config.state ?? this.#initialState;\n\t\tthis.scheduleGc();\n\t}\n\t/**\n\t* The `meta` object passed in the query's options, if any.\n\t* @returns The query's `meta`, or `undefined` if none was set.\n\t*/\n\tget meta() {\n\t\treturn this.options.meta;\n\t}\n\t/**\n\t* `'infinite'` for an infinite query, otherwise `undefined`.\n\t* @internal\n\t* @returns The type of the query, set from the `_type` option (e.g. `'infinite'`).\n\t*/\n\tget queryType() {\n\t\treturn this.#queryType;\n\t}\n\t/**\n\t* The promise for the currently in-flight fetch, if the query is fetching.\n\t* `undefined` when the query is not fetching.\n\t* @returns The promise of the in-flight fetch, or `undefined`.\n\t*/\n\tget promise() {\n\t\treturn this.#retryer?.promise;\n\t}\n\t/**\n\t* Replaces the query's options and applies their `gcTime`. If the query has no data yet, it gets\n\t* the `initialData` from the new options, if any.\n\t* @internal\n\t* @param options - The new query options, merged on top of the query's default options.\n\t*/\n\tsetOptions(options) {\n\t\tthis.options = {\n\t\t\t...this.#defaultOptions,\n\t\t\t...options\n\t\t};\n\t\tif (options?._type) this.#queryType = options._type;\n\t\tthis.updateGcTime(this.options.gcTime);\n\t\tif (this.state && this.state.data === void 0) {\n\t\t\tconst defaultState = getDefaultState(this.options);\n\t\t\tif (defaultState.data !== void 0) {\n\t\t\t\tthis.setState(successState(defaultState.data, defaultState.dataUpdatedAt));\n\t\t\t\tthis.#initialState = defaultState;\n\t\t\t}\n\t\t}\n\t}\n\toptionalRemove() {\n\t\tif (!this.observers.length && this.state.fetchStatus === \"idle\") this.#cache.remove(this);\n\t}\n\t/**\n\t* Writes new data to the query and marks it as successfully fetched.\n\t* @internal\n\t* @param newData - The data to write. Structural sharing with the current data is applied.\n\t* @param options - Set `updatedAt` to override the timestamp, and `manual` to mark the write as\n\t* manual (e.g. from `queryClient.setQueryData`).\n\t* @returns The data that was written.\n\t*/\n\tsetData(newData, options) {\n\t\tconst data = replaceData(this.state.data, newData, this.options);\n\t\tthis.#dispatch({\n\t\t\tdata,\n\t\t\ttype: \"success\",\n\t\t\tdataUpdatedAt: options?.updatedAt,\n\t\t\tmanual: options?.manual\n\t\t});\n\t\treturn data;\n\t}\n\t/**\n\t* Merges the given partial state directly into this query's state, notifying observers. Used\n\t* by persistence and broadcast plugins to restore a state snapshot, and by devtools to let a\n\t* user manually trigger a loading/error state or edit the cached data.\n\t* @param state - The partial state to merge into the query's state.\n\t*/\n\tsetState(state) {\n\t\tthis.#dispatch({\n\t\t\ttype: \"setState\",\n\t\t\tstate\n\t\t});\n\t}\n\t/**\n\t* Cancels the query's currently in-flight fetch, if any.\n\t* - Returns a promise that resolves once the cancellation has settled.\n\t* - If no fetch is in progress, resolves immediately.\n\t* @param options - Set `revert` to restore the state from before the fetch started, and `silent`\n\t* to suppress the cancellation error when a new fetch replaces the cancelled one.\n\t* @returns A promise that resolves once the cancellation has settled.\n\t* @example\n\t* ```ts\n\t* await query.cancel()\n\t* ```\n\t*/\n\tcancel(options) {\n\t\tconst promise = this.#retryer?.promise;\n\t\tthis.#retryer?.cancel(options);\n\t\treturn promise ? promise.then(noop).catch(noop) : Promise.resolve();\n\t}\n\t/**\n\t* Clears the query's garbage collection timeout and silently cancels any\n\t* in-flight fetch. Called by `QueryCache` when the query is removed from\n\t* the cache.\n\t* @see {@link Query#cancel}\n\t*/\n\tdestroy() {\n\t\tsuper.destroy();\n\t\tthis.cancel({ silent: true });\n\t}\n\t/**\n\t* The state the query was created with.\n\t* @internal\n\t* @returns The state the query had when it was first created, used by {@link Query#reset}.\n\t*/\n\tget resetState() {\n\t\treturn this.#initialState;\n\t}\n\t/**\n\t* Resets the query back to its initial state (the state it had when it was\n\t* first created, e.g. any `initialData`), destroying it first to cancel any\n\t* in-flight fetch.\n\t*/\n\treset() {\n\t\tthis.destroy();\n\t\tthis.setState(this.resetState);\n\t}\n\t/**\n\t* Returns `true` if the query has at least one observer for which `enabled`\n\t* does not resolve to `false`.\n\t* @returns `true` if the query has an enabled observer.\n\t*/\n\tisActive() {\n\t\treturn this.observers.some((observer) => resolveQueryValue(observer.options.enabled, this) !== false);\n\t}\n\t/**\n\t* Returns `true` if the query is disabled, meaning it will not fetch\n\t* automatically.\n\t* - If the query has observers, it is disabled when none of them are active\n\t*   (see `isActive`).\n\t* - If the query has no observers, it is disabled when its `queryFn` is\n\t*   `skipToken` or it has never been fetched.\n\t* @returns `true` if the query is disabled.\n\t*/\n\tisDisabled() {\n\t\tif (this.getObserversCount() > 0) return !this.isActive();\n\t\treturn this.options.queryFn === skipToken || !this.isFetched();\n\t}\n\t/**\n\t* Returns `true` if the query has been fetched, i.e. it has resolved with\n\t* either data or an error at least once.\n\t* @returns `true` if the query has been fetched.\n\t*/\n\tisFetched() {\n\t\treturn this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n\t}\n\t/**\n\t* Returns `true` if the query has at least one observer configured with\n\t* `staleTime: 'static'`, meaning it is treated as never stale.\n\t* @returns `true` if the query is static.\n\t*/\n\tisStatic() {\n\t\tif (this.getObserversCount() > 0) return this.observers.some((observer) => resolveQueryValue(observer.options.staleTime, this) === \"static\");\n\t\treturn false;\n\t}\n\t/**\n\t* Returns `true` if the query is stale.\n\t* - If the query has observers, defers to whether any observer's current\n\t*   result reports `isStale` (which accounts for each observer's own\n\t*   `staleTime` and `enabled` state).\n\t* - If the query has no observers, it is considered stale when it has no\n\t*   data or has been invalidated.\n\t* @returns `true` if the query is stale.\n\t* @see {@link Query#isStaleByTime}\n\t* @example\n\t* ```ts\n\t* if (query.isStale()) {\n\t*   // refetch or otherwise treat the cached data as outdated\n\t* }\n\t* ```\n\t*/\n\tisStale() {\n\t\tif (this.getObserversCount() > 0) return this.observers.some((observer) => observer.getCurrentResult().isStale);\n\t\treturn this.state.data === void 0 || this.state.isInvalidated;\n\t}\n\t/**\n\t* Returns `true` if the query's data is stale relative to the given\n\t* `staleTime` (defaults to `0`).\n\t* - A query with no data is always stale.\n\t* - `staleTime: 'static'` is never stale.\n\t* - An invalidated query is always stale.\n\t* - Otherwise, staleness is based on elapsed time since `dataUpdatedAt`.\n\t* @param staleTime - The time, in milliseconds, after which data is considered stale, or\n\t* `'static'` to never treat existing data as stale. A query without data is stale either way.\n\t* @returns `true` if the query's data is stale.\n\t* @see {@link Query#isStale}\n\t* @example\n\t* ```ts\n\t* const isStale = query.isStaleByTime(1000 * 60)\n\t* ```\n\t*/\n\tisStaleByTime(staleTime = 0) {\n\t\tif (this.state.data === void 0) return true;\n\t\tif (staleTime === \"static\") return false;\n\t\tif (this.state.isInvalidated) return true;\n\t\treturn !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n\t}\n\t/**\n\t* Refetches the query when the window regains focus, if an observer wants that, and continues a\n\t* paused fetch.\n\t* @internal\n\t*/\n\tonFocus() {\n\t\tthis.observers.find((x) => x.shouldFetchOnWindowFocus())?.refetch({ cancelRefetch: false });\n\t\tthis.#retryer?.continue();\n\t}\n\t/**\n\t* Refetches the query when the app reconnects, if an observer wants that, and continues a paused\n\t* fetch.\n\t* @internal\n\t*/\n\tonOnline() {\n\t\tthis.observers.find((x) => x.shouldFetchOnReconnect())?.refetch({ cancelRefetch: false });\n\t\tthis.#retryer?.continue();\n\t}\n\t/**\n\t* Subscribes an observer to the query and stops its garbage collection.\n\t* @internal\n\t* @param observer - The observer to add. Adding an observer that is already subscribed does\n\t* nothing.\n\t*/\n\taddObserver(observer) {\n\t\tif (!this.observers.includes(observer)) {\n\t\t\tthis.observers.push(observer);\n\t\t\tthis.clearGcTimeout();\n\t\t\tthis.#cache.notify({\n\t\t\t\ttype: \"observerAdded\",\n\t\t\t\tquery: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Unsubscribes an observer from the query.\n\t* @internal\n\t* @param observer - The observer to remove. When the last observer is removed, the in-flight\n\t* fetch is cancelled if its abort signal was consumed (otherwise only its retries are stopped),\n\t* and garbage collection is scheduled.\n\t*/\n\tremoveObserver(observer) {\n\t\tconst index = this.observers.indexOf(observer);\n\t\tif (index !== -1) {\n\t\t\tthis.observers.splice(index, 1);\n\t\t\tif (!this.observers.length) {\n\t\t\t\tif (this.#retryer) {\n\t\t\t\t\tif (this.#abortSignalConsumed || this.state.fetchStatus === \"paused\" && this.state.status === \"pending\") this.#retryer.cancel({ revert: true });\n\t\t\t\t\telse this.#retryer.cancelRetry();\n\t\t\t\t}\n\t\t\t\tthis.scheduleGc();\n\t\t\t}\n\t\t\tthis.#cache.notify({\n\t\t\t\ttype: \"observerRemoved\",\n\t\t\t\tquery: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Returns the number of observers currently subscribed to this query.\n\t* @returns The number of observers.\n\t* @example\n\t* ```ts\n\t* if (query.getObserversCount() === 0) {\n\t*   // no component is currently watching this query\n\t* }\n\t* ```\n\t*/\n\tgetObserversCount() {\n\t\treturn this.observers.length;\n\t}\n\t/**\n\t* Marks the query as invalidated, unless it is already invalidated. This\n\t* updates `state.isInvalidated` and notifies observers, but does not by\n\t* itself trigger a refetch.\n\t* @example\n\t* ```ts\n\t* query.invalidate()\n\t* ```\n\t*/\n\tinvalidate() {\n\t\tif (!this.state.isInvalidated) this.#dispatch({ type: \"invalidate\" });\n\t}\n\t/**\n\t* Fetches the query, i.e. runs its `queryFn` (through any configured\n\t* retryer/behavior) and updates the query's state with the result.\n\t* - If a fetch is already in flight, returns its promise instead of\n\t*   starting a new one, unless `fetchOptions.cancelRefetch` is set and the\n\t*   query already has data, in which case the current fetch is silently\n\t*   cancelled first.\n\t* - If `options` is passed, it replaces the query's current options\n\t*   before fetching.\n\t* @param options - Query options that replace the query's current options before fetching. They\n\t* are not applied when an in-flight fetch is reused.\n\t* @param fetchOptions - Set `cancelRefetch` to cancel an in-flight fetch first (only if the query\n\t* already has data), and `meta` to pass extra information to the query's behavior.\n\t* @returns A promise that resolves with the fetched data, or rejects with the fetch error. If the\n\t* fetch is cancelled with `revert` while the query has data, it resolves with the restored data\n\t* instead.\n\t*/\n\tasync fetch(options, fetchOptions) {\n\t\tif (this.state.fetchStatus !== \"idle\" && this.#retryer?.status() !== \"rejected\") {\n\t\t\tif (this.state.data !== void 0 && fetchOptions?.cancelRefetch) this.cancel({ silent: true });\n\t\t\telse if (this.#retryer) {\n\t\t\t\tthis.#retryer.continueRetry();\n\t\t\t\treturn this.#retryer.promise;\n\t\t\t}\n\t\t}\n\t\tif (options) this.setOptions(options);\n\t\tif (!this.options.queryFn) {\n\t\t\tconst observer = this.observers.find((x) => x.options.queryFn);\n\t\t\tif (observer) this.setOptions(observer.options);\n\t\t}\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (!Array.isArray(this.options.queryKey)) console.error(`As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`);\n\t\t}\n\t\tconst abortController = new AbortController();\n\t\tconst addSignalProperty = (object) => {\n\t\t\tObject.defineProperty(object, \"signal\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => {\n\t\t\t\t\tthis.#abortSignalConsumed = true;\n\t\t\t\t\treturn abortController.signal;\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tconst fetchFn = () => {\n\t\t\tconst queryFn = ensureQueryFn(this.options, fetchOptions);\n\t\t\tconst createQueryFnContext = () => {\n\t\t\t\tconst queryFnContext = {\n\t\t\t\t\tclient: this.#client,\n\t\t\t\t\tqueryKey: this.queryKey,\n\t\t\t\t\tmeta: this.meta\n\t\t\t\t};\n\t\t\t\taddSignalProperty(queryFnContext);\n\t\t\t\treturn queryFnContext;\n\t\t\t};\n\t\t\tconst queryFnContext = createQueryFnContext();\n\t\t\tthis.#abortSignalConsumed = false;\n\t\t\tif (this.options.persister) return this.options.persister(queryFn, queryFnContext, this);\n\t\t\treturn queryFn(queryFnContext);\n\t\t};\n\t\tconst createFetchContext = () => {\n\t\t\tconst context = {\n\t\t\t\tfetchOptions,\n\t\t\t\toptions: this.options,\n\t\t\t\tqueryKey: this.queryKey,\n\t\t\t\tclient: this.#client,\n\t\t\t\tstate: this.state,\n\t\t\t\tfetchFn\n\t\t\t};\n\t\t\taddSignalProperty(context);\n\t\t\treturn context;\n\t\t};\n\t\tconst context = createFetchContext();\n\t\t(this.#queryType === \"infinite\" ? infiniteQueryBehavior(this.options.pages) : this.options.behavior)?.onFetch(context, this);\n\t\tthis.#revertState = this.state;\n\t\tif (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) this.#dispatch({\n\t\t\ttype: \"fetch\",\n\t\t\tmeta: context.fetchOptions?.meta\n\t\t});\n\t\tconst retryer = this.#retryer = createRetryer({\n\t\t\tinitialPromise: fetchOptions?.initialPromise,\n\t\t\tfn: context.fetchFn,\n\t\t\tonCancel: (error) => {\n\t\t\t\tif (error instanceof CancelledError && error.revert) this.setState({\n\t\t\t\t\t...this.#revertState,\n\t\t\t\t\tfetchStatus: \"idle\"\n\t\t\t\t});\n\t\t\t\tabortController.abort();\n\t\t\t},\n\t\t\tonFail: (failureCount, error) => {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"failed\",\n\t\t\t\t\tfailureCount,\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPause: () => {\n\t\t\t\tthis.#dispatch({ type: \"pause\" });\n\t\t\t},\n\t\t\tonContinue: () => {\n\t\t\t\tthis.#dispatch({ type: \"continue\" });\n\t\t\t},\n\t\t\tretry: context.options.retry,\n\t\t\tretryDelay: context.options.retryDelay,\n\t\t\tnetworkMode: context.options.networkMode,\n\t\t\tcanRun: () => true\n\t\t});\n\t\ttry {\n\t\t\tconst data = await retryer.start();\n\t\t\tif (data === void 0) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.error(`Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`);\n\t\t\t\tthrow new Error(`${this.queryHash} data is undefined`);\n\t\t\t}\n\t\t\tthis.setData(data);\n\t\t\tthis.#cache.config.onSuccess?.(data, this);\n\t\t\tthis.#cache.config.onSettled?.(data, this.state.error, this);\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\tif (error instanceof CancelledError) {\n\t\t\t\tif (error.silent) return this.#retryer.promise;\n\t\t\t\telse if (error.revert) {\n\t\t\t\t\tif (this.state.data === void 0) throw error;\n\t\t\t\t\treturn this.state.data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror\n\t\t\t});\n\t\t\tthis.#cache.config.onError?.(error, this);\n\t\t\tthis.#cache.config.onSettled?.(this.state.data, error, this);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.#retryer === retryer) this.#retryer = void 0;\n\t\t\tthis.scheduleGc();\n\t\t}\n\t}\n\t#dispatch(action) {\n\t\tconst reducer = (state) => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase \"failed\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchFailureCount: action.failureCount,\n\t\t\t\t\tfetchFailureReason: action.error\n\t\t\t\t};\n\t\t\t\tcase \"pause\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchStatus: \"paused\"\n\t\t\t\t};\n\t\t\t\tcase \"continue\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfetchStatus: \"fetching\"\n\t\t\t\t};\n\t\t\t\tcase \"fetch\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\t...fetchState(state.data, this.options),\n\t\t\t\t\tfetchMeta: action.meta ?? null\n\t\t\t\t};\n\t\t\t\tcase \"success\":\n\t\t\t\t\tconst newState = {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t...successState(action.data, action.dataUpdatedAt),\n\t\t\t\t\t\tdataUpdateCount: state.dataUpdateCount + 1,\n\t\t\t\t\t\t...!action.manual && {\n\t\t\t\t\t\t\tfetchStatus: \"idle\",\n\t\t\t\t\t\t\tfetchFailureCount: 0,\n\t\t\t\t\t\t\tfetchFailureReason: null\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tthis.#revertState = action.manual ? newState : void 0;\n\t\t\t\t\treturn newState;\n\t\t\t\tcase \"error\":\n\t\t\t\t\tconst error = action.error;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\terror,\n\t\t\t\t\t\terrorUpdateCount: state.errorUpdateCount + 1,\n\t\t\t\t\t\terrorUpdatedAt: Date.now(),\n\t\t\t\t\t\tfetchFailureCount: state.fetchFailureCount + 1,\n\t\t\t\t\t\tfetchFailureReason: error,\n\t\t\t\t\t\tfetchStatus: \"idle\",\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tisInvalidated: true\n\t\t\t\t\t};\n\t\t\t\tcase \"invalidate\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisInvalidated: true\n\t\t\t\t};\n\t\t\t\tcase \"setState\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\t...action.state\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tthis.state = reducer(this.state);\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.observers.slice().forEach((observer) => {\n\t\t\t\tobserver.onQueryUpdate();\n\t\t\t});\n\t\t\tthis.#cache.notify({\n\t\t\t\tquery: this,\n\t\t\t\ttype: \"updated\",\n\t\t\t\taction\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Returns the state changes applied when a query starts fetching.\n* @param data - The query's current data. If it is `undefined`, the query is also reset to\n* `'pending'` with no error.\n* @param options - The query options, whose `networkMode` decides whether the query is `'fetching'`\n* or `'paused'`.\n* @returns The partial query state for a starting fetch.\n*/\nfunction fetchState(data, options) {\n\treturn {\n\t\tfetchFailureCount: 0,\n\t\tfetchFailureReason: null,\n\t\tfetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n\t\t...data === void 0 && {\n\t\t\terror: null,\n\t\t\tstatus: \"pending\"\n\t\t}\n\t};\n}\n/**\n* Returns the state changes applied when a query receives data.\n* @param data - The new data.\n* @param dataUpdatedAt - The timestamp the data is recorded with. Defaults to the current time.\n* @returns The partial query state for a successful update.\n*/\nfunction successState(data, dataUpdatedAt) {\n\treturn {\n\t\tdata,\n\t\tdataUpdatedAt: dataUpdatedAt ?? Date.now(),\n\t\terror: null,\n\t\tisInvalidated: false,\n\t\tstatus: \"success\"\n\t};\n}\n/**\n* Returns the initial state of a query, based on its `initialData` and `initialDataUpdatedAt`\n* options.\n* @param options - The query options.\n* @returns The initial query state: `'success'` if `initialData` is set, otherwise `'pending'`.\n*/\nfunction getDefaultState(options) {\n\tconst data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n\tconst hasData = data !== void 0;\n\tconst initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n\treturn {\n\t\tdata,\n\t\tdataUpdateCount: 0,\n\t\tdataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n\t\terror: null,\n\t\terrorUpdateCount: 0,\n\t\terrorUpdatedAt: 0,\n\t\tfetchFailureCount: 0,\n\t\tfetchFailureReason: null,\n\t\tfetchMeta: null,\n\t\tisInvalidated: false,\n\t\tstatus: hasData ? \"success\" : \"pending\",\n\t\tfetchStatus: \"idle\"\n\t};\n}\n//#endregion\nexport { Query, fetchState };\n\n//# sourceMappingURL=query.js.map","import { timeoutManager } from \"./timeoutManager.js\";\nimport { isValidTimeout, noop, replaceData, resolveQueryValue, shallowEqualObjects, timeUntilStale } from \"./utils.js\";\nimport { isServer } from \"./environmentManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\n//#region src/queryObserver.ts\n/**\n* A `QueryObserver` watches a single query in the `QueryCache` and computes a\n* `QueryObserverResult` from its state, recomputing and notifying subscribers\n* whenever the underlying query (or the observer's options) changes. It is\n* the primitive that framework adapters (e.g. `useQuery`) build their hooks\n* on top of, but it can also be used directly to observe and switch between\n* queries outside of any framework.\n* @example\n* ```ts\n* const observer = new QueryObserver(queryClient, {\n*   queryKey: ['posts'],\n*   queryFn: fetchPosts,\n* })\n*\n* const unsubscribe = observer.subscribe((result) => {\n*   console.log(result.data)\n* })\n* ```\n*/\nvar QueryObserver = class extends Subscribable {\n\t#client;\n\t#currentQuery = void 0;\n\t#currentQueryInitialState = void 0;\n\t#currentResult = void 0;\n\t#currentResultState;\n\t#currentResultOptions;\n\t#selectError;\n\t#selectFn;\n\t#selectResult;\n\t#lastQueryWithDefinedData;\n\t#staleTimeoutId;\n\t#refetchIntervalId;\n\t#currentRefetchInterval;\n\t#trackedProps = /* @__PURE__ */ new Set();\n\tconstructor(client, options) {\n\t\tsuper();\n\t\tthis.options = options;\n\t\tthis.#client = client;\n\t\tthis.#selectError = null;\n\t\tthis.bindMethods();\n\t\tthis.setOptions(options);\n\t}\n\t/**\n\t* Binds the methods of the result (`refetch`) to the observer, so they keep working when destructured\n\t* from it. Subclasses override it to bind their own result methods as well.\n\t*/\n\tbindMethods() {\n\t\tthis.refetch = this.refetch.bind(this);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1) {\n\t\t\tthis.#currentQuery.addObserver(this);\n\t\t\tif (shouldFetchOnMount(this.#currentQuery, this.options)) this.#executeFetch();\n\t\t\telse this.updateResult();\n\t\t\tthis.#updateTimers();\n\t\t}\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) this.destroy();\n\t}\n\t/**\n\t* Returns whether the observed query is currently stale and configured\n\t* (via the `refetchOnReconnect` option) to refetch when the network\n\t* reconnects.\n\t* @returns `true` if the observer should refetch the query on reconnect.\n\t*/\n\tshouldFetchOnReconnect() {\n\t\treturn shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnReconnect);\n\t}\n\t/**\n\t* Returns whether the observed query is currently stale and configured\n\t* (via the `refetchOnWindowFocus` option) to refetch when the window\n\t* regains focus.\n\t* @returns `true` if the observer should refetch the query on window focus.\n\t*/\n\tshouldFetchOnWindowFocus() {\n\t\treturn shouldFetchOn(this.#currentQuery, this.options, this.options.refetchOnWindowFocus);\n\t}\n\t/**\n\t* Stops observing the current query: clears all listeners, cancels the\n\t* stale and refetch-interval timers, and removes this observer from the\n\t* query it was observing.\n\t*/\n\tdestroy() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.#clearStaleTimeout();\n\t\tthis.#clearRefetchInterval();\n\t\tthis.#currentQuery.removeObserver(this);\n\t}\n\t/**\n\t* Updates the observer's options. This will re-resolve the query being\n\t* observed (switching to a different query if the `queryKey` changed),\n\t* trigger a fetch if the new options require one and the observer has\n\t* subscribers, recompute the current result, and reschedule the stale and\n\t* refetch-interval timers as needed.\n\t* @param options - The new observer options. They are defaulted with {@link\n\t* QueryClient#defaultQueryOptions} before being applied.\n\t* @throws {Error} If `enabled` is neither a boolean nor a function.\n\t* @example\n\t* ```ts\n\t* observer.setOptions({ queryKey: ['posts', 1], queryFn: () => fetchPost(1) })\n\t* // later: switch to a different query, reusing the same observer\n\t* observer.setOptions({ queryKey: ['posts', 2], queryFn: () => fetchPost(2) })\n\t* ```\n\t*/\n\tsetOptions(options) {\n\t\tconst prevOptions = this.options;\n\t\tconst prevQuery = this.#currentQuery;\n\t\tthis.options = this.#client.defaultQueryOptions(options);\n\t\tif (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryValue(this.options.enabled, this.#currentQuery) !== \"boolean\") throw new Error(\"Expected enabled to be a boolean or a callback that returns a boolean\");\n\t\tthis.#updateQuery();\n\t\tthis.#currentQuery.setOptions(this.options);\n\t\tif (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) this.#client.getQueryCache().notify({\n\t\t\ttype: \"observerOptionsUpdated\",\n\t\t\tquery: this.#currentQuery,\n\t\t\tobserver: this\n\t\t});\n\t\tconst mounted = this.hasListeners();\n\t\tif (mounted && shouldFetchOptionally(this.#currentQuery, prevQuery, this.options, prevOptions)) this.#executeFetch();\n\t\tthis.updateResult();\n\t\tif (mounted && (this.#currentQuery !== prevQuery || resolveQueryValue(this.options.enabled, this.#currentQuery) !== resolveQueryValue(prevOptions.enabled, this.#currentQuery) || resolveQueryValue(this.options.staleTime, this.#currentQuery) !== resolveQueryValue(prevOptions.staleTime, this.#currentQuery))) this.#updateStaleTimeout();\n\t\tconst nextRefetchInterval = this.#computeRefetchInterval();\n\t\tif (mounted && (this.#currentQuery !== prevQuery || resolveQueryValue(this.options.enabled, this.#currentQuery) !== resolveQueryValue(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) this.#updateRefetchInterval(nextRefetchInterval);\n\t}\n\t/**\n\t* Computes the result the observer would produce for the given (already-defaulted) options\n\t* right now, building the underlying `Query` if it doesn't exist yet, without waiting for a\n\t* subscription callback. Called by framework adapters on every render (e.g. `useQuery`) so the\n\t* returned value is available synchronously, ahead of `setOptions` triggering an actual fetch.\n\t* @param options - The defaulted observer options to compute the result for.\n\t* @returns The result for the given options.\n\t*/\n\tgetOptimisticResult(options) {\n\t\tconst query = this.#client.getQueryCache().build(this.#client, options);\n\t\tconst result = this.createResult(query, options);\n\t\tif (!shallowEqualObjects(this.getCurrentResult(), result)) {\n\t\t\tthis.#currentResult = result;\n\t\t\tthis.#currentResultOptions = this.options;\n\t\t\tthis.#currentResultState = this.#currentQuery.state;\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Returns the most recently computed `QueryObserverResult` for the\n\t* observed query. This is a point-in-time read; to be notified of updates\n\t* as they happen, subscribe to the observer instead (its inherited\n\t* `subscribe` method).\n\t* @returns The observer's latest result.\n\t* @example\n\t* ```ts\n\t* const result = observer.getCurrentResult()\n\t* console.log(result.status, result.data)\n\t* ```\n\t*/\n\tgetCurrentResult() {\n\t\treturn this.#currentResult;\n\t}\n\t/**\n\t* Wraps a `QueryObserverResult` in a `Proxy` that records which properties are read, via\n\t* {@link QueryObserver#trackProp} (and an optional `onPropTracked` callback). Used by framework\n\t* adapters when `notifyOnChangeProps` is not set, to implement its default \"only re-render on\n\t* properties you actually read\" behavior.\n\t* @param result - The result to wrap.\n\t* @param onPropTracked - Called with the name of each property that is read.\n\t* @returns A proxy of `result` that tracks property reads.\n\t*/\n\ttrackResult(result, onPropTracked) {\n\t\treturn new Proxy(result, { get: (target, key) => {\n\t\t\tthis.trackProp(key);\n\t\t\tonPropTracked?.(key);\n\t\t\treturn Reflect.get(target, key);\n\t\t} });\n\t}\n\t/**\n\t* Records that the given `QueryObserverResult` property was read, so a subsequent update only\n\t* notifies this observer if a tracked property actually changed. Normally called indirectly via\n\t* {@link QueryObserver#trackResult}'s proxy; exposed directly for adapters that track property\n\t* access themselves (e.g. through their own reactivity system) instead of via the proxy.\n\t* @param key - The name of the property that was read.\n\t*/\n\ttrackProp(key) {\n\t\tthis.#trackedProps.add(key);\n\t}\n\t/**\n\t* Returns the `Query` instance this observer is currently observing.\n\t* @returns The observed query.\n\t*/\n\tgetCurrentQuery() {\n\t\treturn this.#currentQuery;\n\t}\n\t/**\n\t* Refetches the observed query and returns a promise that resolves with\n\t* the resulting `QueryObserverResult`.\n\t* @param options - Set `cancelRefetch` to `false` to keep a running fetch instead of cancelling\n\t* it, and `throwOnError` to `true` to reject when the refetch fails.\n\t* @returns A promise that resolves with the result after the refetch.\n\t* @example\n\t* ```ts\n\t* const result = await observer.refetch({ cancelRefetch: false })\n\t* console.log(result.data)\n\t* ```\n\t*/\n\trefetch({ ...options } = {}) {\n\t\treturn this.fetch({ ...options });\n\t}\n\t/**\n\t* Fetches a query defined by the given options without affecting this\n\t* observer's own tracked query or result, and returns a promise that\n\t* resolves with the `QueryObserverResult` for that fetch. This is useful\n\t* for prefetching data that another observer (e.g. a query about to be\n\t* navigated to) will need, ahead of time.\n\t* @param options - The observer options of the query to fetch.\n\t* @returns A promise that resolves with the result for the fetched query.\n\t* @example\n\t* ```ts\n\t* const result = await observer.fetchOptimistic({\n\t*   queryKey: ['posts', 2],\n\t*   queryFn: () => fetchPost(2),\n\t* })\n\t* console.log(result.data)\n\t* ```\n\t*/\n\tfetchOptimistic(options) {\n\t\tconst defaultedOptions = this.#client.defaultQueryOptions(options);\n\t\tconst query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n\t\tlet unsubscribe = () => {};\n\t\tlet resolveEarly;\n\t\tconst cachePromise = new Promise((resolve) => {\n\t\t\tresolveEarly = resolve;\n\t\t\tunsubscribe = this.#client.getQueryCache().subscribe((event) => {\n\t\t\t\tif (event.type === \"updated\" && event.query.queryHash === query.queryHash && query.state.data !== void 0) {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t\tresolve(this.createResult(query, defaultedOptions));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn Promise.race([query.fetch().then(() => {\n\t\t\tconst result = this.createResult(query, defaultedOptions);\n\t\t\tresolveEarly?.(result);\n\t\t\treturn result;\n\t\t}).finally(() => {\n\t\t\tunsubscribe();\n\t\t}), cachePromise]);\n\t}\n\t/**\n\t* Fetches the observed query and updates the result once the fetch settles. Used by `refetch` and,\n\t* in `InfiniteQueryObserver`, to fetch more pages.\n\t* @param fetchOptions - Options for this fetch. `cancelRefetch` defaults to `true`.\n\t* @returns A promise that resolves with the updated result.\n\t*/\n\tfetch(fetchOptions) {\n\t\treturn this.#executeFetch({\n\t\t\t...fetchOptions,\n\t\t\tcancelRefetch: fetchOptions.cancelRefetch ?? true\n\t\t}).then(() => {\n\t\t\tthis.updateResult();\n\t\t\treturn this.#currentResult;\n\t\t});\n\t}\n\t#executeFetch(fetchOptions) {\n\t\tthis.#updateQuery();\n\t\tlet promise = this.#currentQuery.fetch(this.options, fetchOptions);\n\t\tif (!fetchOptions?.throwOnError) promise = promise.catch(noop);\n\t\treturn promise;\n\t}\n\t#shouldScheduleTimer(timeout) {\n\t\treturn !isServer() && resolveQueryValue(this.options.enabled, this.#currentQuery) !== false && isValidTimeout(timeout);\n\t}\n\t#updateStaleTimeout() {\n\t\tthis.#clearStaleTimeout();\n\t\tconst staleTime = resolveQueryValue(this.options.staleTime, this.#currentQuery);\n\t\tif (this.#currentResult.isStale || !this.#shouldScheduleTimer(staleTime)) return;\n\t\tconst timeout = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime) + 1;\n\t\tthis.#staleTimeoutId = timeoutManager.setTimeout(() => {\n\t\t\tif (!this.#currentResult.isStale) this.updateResult();\n\t\t}, timeout);\n\t}\n\t#computeRefetchInterval() {\n\t\treturn resolveQueryValue(this.options.refetchInterval, this.#currentQuery) ?? false;\n\t}\n\t#updateRefetchInterval(nextInterval) {\n\t\tthis.#clearRefetchInterval();\n\t\tthis.#currentRefetchInterval = nextInterval;\n\t\tif (this.#currentRefetchInterval === 0 || !this.#shouldScheduleTimer(this.#currentRefetchInterval)) return;\n\t\tthis.#refetchIntervalId = timeoutManager.setInterval(() => {\n\t\t\tif (this.options.refetchIntervalInBackground || focusManager.isFocused()) this.#executeFetch();\n\t\t}, this.#currentRefetchInterval);\n\t}\n\t#updateTimers() {\n\t\tthis.#updateStaleTimeout();\n\t\tthis.#updateRefetchInterval(this.#computeRefetchInterval());\n\t}\n\t#clearStaleTimeout() {\n\t\tif (this.#staleTimeoutId !== void 0) {\n\t\t\ttimeoutManager.clearTimeout(this.#staleTimeoutId);\n\t\t\tthis.#staleTimeoutId = void 0;\n\t\t}\n\t}\n\t#clearRefetchInterval() {\n\t\tif (this.#refetchIntervalId !== void 0) {\n\t\t\ttimeoutManager.clearInterval(this.#refetchIntervalId);\n\t\t\tthis.#refetchIntervalId = void 0;\n\t\t}\n\t}\n\t/**\n\t* Computes the result for a query and options from the query's state, applying `select`,\n\t* `placeholderData`, and the derived flags. Subclasses override it to add their own fields.\n\t* @param query - The query to compute the result for.\n\t* @param options - The observer options to compute the result with.\n\t* @returns The computed result.\n\t*/\n\tcreateResult(query, options) {\n\t\tconst prevQuery = this.#currentQuery;\n\t\tconst prevOptions = this.options;\n\t\tconst prevResult = this.#currentResult;\n\t\tconst prevResultState = this.#currentResultState;\n\t\tconst prevResultOptions = this.#currentResultOptions;\n\t\tconst queryInitialState = query !== prevQuery ? query.state : this.#currentQueryInitialState;\n\t\tconst { state } = query;\n\t\tlet newState = { ...state };\n\t\tlet isPlaceholderData = false;\n\t\tlet data;\n\t\tif (options._optimisticResults) {\n\t\t\tconst mounted = this.hasListeners();\n\t\t\tconst fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n\t\t\tconst fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\t\t\tif (fetchOnMount || fetchOptionally) newState = {\n\t\t\t\t...newState,\n\t\t\t\t...fetchState(state.data, query.options)\n\t\t\t};\n\t\t\tif (options._optimisticResults === \"isRestoring\") newState.fetchStatus = \"idle\";\n\t\t}\n\t\tlet { error, errorUpdatedAt, status } = newState;\n\t\tdata = newState.data;\n\t\tlet skipSelect = false;\n\t\tif (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n\t\t\tlet placeholderData;\n\t\t\tif (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n\t\t\t\tplaceholderData = prevResult.data;\n\t\t\t\tskipSelect = true;\n\t\t\t} else placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(this.#lastQueryWithDefinedData?.state.data, this.#lastQueryWithDefinedData) : options.placeholderData;\n\t\t\tif (placeholderData !== void 0) {\n\t\t\t\tstatus = \"success\";\n\t\t\t\tdata = replaceData(prevResult?.data, placeholderData, options);\n\t\t\t\tisPlaceholderData = true;\n\t\t\t}\n\t\t}\n\t\tif (options.select && data !== void 0 && !skipSelect) {\n\t\t\tif (prevResult && data === prevResultState?.data && options.select === this.#selectFn) data = this.#selectResult;\n\t\t\telse try {\n\t\t\t\tthis.#selectFn = options.select;\n\t\t\t\tdata = options.select(data);\n\t\t\t\tdata = replaceData(prevResult?.data, data, options);\n\t\t\t\tthis.#selectResult = data;\n\t\t\t\tthis.#selectError = null;\n\t\t\t} catch (selectError) {\n\t\t\t\tthis.#selectError = selectError;\n\t\t\t}\n\t\t} else if (data === void 0) this.#selectError = null;\n\t\tif (this.#selectError) {\n\t\t\terror = this.#selectError;\n\t\t\tdata = this.#selectResult;\n\t\t\terrorUpdatedAt = Date.now();\n\t\t\tstatus = \"error\";\n\t\t\tisPlaceholderData = false;\n\t\t}\n\t\tconst isFetching = newState.fetchStatus === \"fetching\";\n\t\tconst isPending = status === \"pending\";\n\t\tconst isError = status === \"error\";\n\t\tconst isLoading = isPending && isFetching;\n\t\tconst hasData = data !== void 0;\n\t\treturn {\n\t\t\tstatus,\n\t\t\tfetchStatus: newState.fetchStatus,\n\t\t\tisPending,\n\t\t\tisSuccess: status === \"success\",\n\t\t\tisError,\n\t\t\tisInitialLoading: isLoading,\n\t\t\tisLoading,\n\t\t\tdata,\n\t\t\tdataUpdatedAt: newState.dataUpdatedAt,\n\t\t\terror,\n\t\t\terrorUpdatedAt,\n\t\t\tfailureCount: newState.fetchFailureCount,\n\t\t\tfailureReason: newState.fetchFailureReason,\n\t\t\terrorUpdateCount: newState.errorUpdateCount,\n\t\t\tisFetched: query.isFetched(),\n\t\t\tisFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n\t\t\tisFetching,\n\t\t\tisRefetching: isFetching && !isPending,\n\t\t\tisLoadingError: isError && !hasData,\n\t\t\tisPaused: newState.fetchStatus === \"paused\",\n\t\t\tisPlaceholderData,\n\t\t\tisRefetchError: isError && hasData,\n\t\t\tisStale: isStale(query, options),\n\t\t\trefetch: this.refetch,\n\t\t\tisEnabled: resolveQueryValue(options.enabled, query) !== false\n\t\t};\n\t}\n\t/**\n\t* Recomputes and stores the current result from the current query/options, notifying listeners\n\t* if it changed. Framework adapters call this right after subscribing to make sure no query\n\t* update was missed in the gap between creating the observer and subscribing to it.\n\t*/\n\tupdateResult() {\n\t\tconst prevResult = this.#currentResult;\n\t\tconst nextResult = this.createResult(this.#currentQuery, this.options);\n\t\tthis.#currentResultState = this.#currentQuery.state;\n\t\tthis.#currentResultOptions = this.options;\n\t\tif (this.#currentResultState.data !== void 0) this.#lastQueryWithDefinedData = this.#currentQuery;\n\t\tif (shallowEqualObjects(nextResult, prevResult)) return;\n\t\tthis.#currentResult = nextResult;\n\t\tconst shouldNotifyListeners = () => {\n\t\t\tif (!prevResult) return true;\n\t\t\tconst { notifyOnChangeProps } = this.options;\n\t\t\tconst notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n\t\t\tif (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) return true;\n\t\t\tconst includedProps = new Set(notifyOnChangePropsValue ?? this.#trackedProps);\n\t\t\tif (this.options.throwOnError) includedProps.add(\"error\");\n\t\t\treturn Object.keys(this.#currentResult).some((key) => {\n\t\t\t\tconst typedKey = key;\n\t\t\t\treturn this.#currentResult[typedKey] !== prevResult[typedKey] && includedProps.has(typedKey);\n\t\t\t});\n\t\t};\n\t\tconst notifyListeners = shouldNotifyListeners();\n\t\tnotifyManager.batch(() => {\n\t\t\tif (notifyListeners) this.listeners.forEach((listener) => {\n\t\t\t\tlistener(this.#currentResult);\n\t\t\t});\n\t\t\tthis.#client.getQueryCache().notify({\n\t\t\t\tquery: this.#currentQuery,\n\t\t\t\ttype: \"observerResultsUpdated\"\n\t\t\t});\n\t\t});\n\t}\n\t#updateQuery() {\n\t\tconst query = this.#client.getQueryCache().build(this.#client, this.options);\n\t\tif (query === this.#currentQuery) return;\n\t\tconst prevQuery = this.#currentQuery;\n\t\tthis.#currentQuery = query;\n\t\tthis.#currentQueryInitialState = query.state;\n\t\tif (this.hasListeners()) {\n\t\t\tprevQuery?.removeObserver(this);\n\t\t\tquery.addObserver(this);\n\t\t}\n\t}\n\t/**\n\t* Updates the observer's result when the observed query changes, and reschedules its timers if it\n\t* has listeners.\n\t* @internal\n\t*/\n\tonQueryUpdate() {\n\t\tthis.updateResult();\n\t\tif (this.hasListeners()) this.#updateTimers();\n\t}\n};\n/**\n* Checks whether a query has no data yet and should do its initial load when an observer mounts.\n* @param query - The query to check.\n* @param options - The observer options.\n* @returns `true` if the query is enabled, has no data, and isn't in an error state with\n* `retryOnMount: false`.\n*/\nfunction shouldLoadOnMount(query, options) {\n\treturn resolveQueryValue(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryValue(options.retryOnMount, query) === false);\n}\n/**\n* Checks whether a query should fetch when an observer mounts: either for its initial load, or\n* because it has data and `refetchOnMount` asks for a refetch.\n* @param query - The query to check.\n* @param options - The observer options.\n* @returns `true` if the query should fetch on mount.\n*/\nfunction shouldFetchOnMount(query, options) {\n\treturn shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n/**\n* Checks whether a query should fetch for a `refetchOnMount`, `refetchOnWindowFocus`, or\n* `refetchOnReconnect` option.\n* @param query - The query to check.\n* @param options - The observer options.\n* @param field - The value of the option to check.\n* @returns `true` if the query is enabled, not static, and the option is `'always'`, or is not\n* `false` and the query is stale.\n*/\nfunction shouldFetchOn(query, options, field) {\n\tif (resolveQueryValue(options.enabled, query) !== false && resolveQueryValue(options.staleTime, query) !== \"static\") {\n\t\tconst value = resolveQueryValue(field, query);\n\t\treturn value === \"always\" || value !== false && isStale(query, options);\n\t}\n\treturn false;\n}\n/**\n* Checks whether a query should fetch after the observer's options change.\n* @param query - The query observed with the new options.\n* @param prevQuery - The query observed with the previous options.\n* @param options - The new observer options.\n* @param prevOptions - The previous observer options.\n* @returns `true` if the query changed or was disabled before, it isn't a suspense query in an\n* error state, and it is stale.\n*/\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n\treturn (query !== prevQuery || resolveQueryValue(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\n/**\n* Checks whether a query is stale for the given observer options.\n* @param query - The query to check.\n* @param options - The observer options, whose `enabled` and `staleTime` are used.\n* @returns `true` if the query is enabled and its data is stale for `staleTime`.\n*/\nfunction isStale(query, options) {\n\treturn resolveQueryValue(options.enabled, query) !== false && query.isStaleByTime(resolveQueryValue(options.staleTime, query));\n}\n//#endregion\nexport { QueryObserver };\n\n//# sourceMappingURL=queryObserver.js.map","import { notifyManager } from \"./notifyManager.js\";\nimport { createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\n//#region src/mutation.ts\n/**\n* Represents a single mutation attempt. A `Mutation` holds the mutation's\n* options, state (data/error/status), and the `MutationObserver`s currently\n* subscribed to it.\n*\n* Instances are created and managed internally by `MutationCache`; application\n* code typically interacts with mutations indirectly through `QueryClient` or\n* a framework hook like `useMutation`. Direct access to a `Mutation` instance\n* is possible via `mutationCache.find()`/`getAll()` for inspecting cache state.\n* @example\n* ```ts\n* const mutationCache = queryClient.getMutationCache()\n*\n* const mutation = mutationCache.find({ mutationKey: ['addPost'] })\n* ```\n*/\nvar Mutation = class extends Removable {\n\t#client;\n\t#observers;\n\t#mutationCache;\n\t#retryer;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.#client = config.client;\n\t\tthis.mutationId = config.mutationId;\n\t\tthis.#mutationCache = config.mutationCache;\n\t\tthis.#observers = [];\n\t\tthis.state = config.state || getDefaultState();\n\t\tthis.setOptions(config.options);\n\t\tthis.scheduleGc();\n\t}\n\t/**\n\t* Replaces the mutation's options and applies their `gcTime`.\n\t* @internal\n\t* @param options - The new mutation options.\n\t*/\n\tsetOptions(options) {\n\t\tthis.options = options;\n\t\tthis.updateGcTime(this.options.gcTime);\n\t}\n\t/**\n\t* The `meta` object passed in the mutation's options, if any.\n\t* @returns The mutation's `meta`, or `undefined` if none was set.\n\t*/\n\tget meta() {\n\t\treturn this.options.meta;\n\t}\n\t/**\n\t* Subscribes an observer to the mutation and stops its garbage collection.\n\t* @internal\n\t* @param observer - The observer to add. Adding an observer that is already subscribed does\n\t* nothing.\n\t*/\n\taddObserver(observer) {\n\t\tif (!this.#observers.includes(observer)) {\n\t\t\tthis.#observers.push(observer);\n\t\t\tthis.clearGcTimeout();\n\t\t\tthis.#mutationCache.notify({\n\t\t\t\ttype: \"observerAdded\",\n\t\t\t\tmutation: this,\n\t\t\t\tobserver\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Unsubscribes an observer from the mutation.\n\t* @internal\n\t* @param observer - The observer to remove. Garbage collection is scheduled afterwards.\n\t*/\n\tremoveObserver(observer) {\n\t\tthis.#observers = this.#observers.filter((x) => x !== observer);\n\t\tthis.scheduleGc();\n\t\tthis.#mutationCache.notify({\n\t\t\ttype: \"observerRemoved\",\n\t\t\tmutation: this,\n\t\t\tobserver\n\t\t});\n\t}\n\toptionalRemove() {\n\t\tif (!this.#observers.length) {\n\t\t\tif (this.state.status === \"pending\") this.scheduleGc();\n\t\t\telse this.#mutationCache.remove(this);\n\t\t}\n\t}\n\t/**\n\t* Resumes a mutation that is currently paused or was restored from a\n\t* dehydrated, still-`pending` state.\n\t*\n\t* - If this mutation has an active retryer (it paused mid-attempt, e.g. due\n\t*   to the network mode or scope-based queuing), its retryer is resumed.\n\t* - Otherwise, if the mutation's status is still `pending` (e.g. it was\n\t*   dehydrated while an attempt was in flight and never got a retryer in\n\t*   this instance), `execute` is called again with the last known variables.\n\t* - Otherwise the mutation has already settled and this resolves immediately\n\t*   without running anything again.\n\t* @returns A promise that settles with the resumed mutation: it rejects if the mutation fails.\n\t* It resolves immediately if the mutation has already settled.\n\t* @see {@link Mutation#execute}\n\t* @example\n\t* ```ts\n\t* // typically driven by reconnect handling, e.g. queryClient.resumePausedMutations()\n\t* const mutation = mutationCache.find({ mutationKey: ['addPost'] })\n\t* await mutation?.continue()\n\t* ```\n\t*/\n\tcontinue() {\n\t\treturn this.#retryer?.continue() ?? (this.state.status === \"pending\" ? this.execute(this.state.variables) : Promise.resolve());\n\t}\n\t/**\n\t* Runs the mutation function for the given variables through a retryer, and\n\t* drives the mutation's state and lifecycle callbacks through to settlement.\n\t*\n\t* If this mutation's state is already `pending` when `execute` is called\n\t* (i.e. it was restored, still in-flight, from a dehydrated state), the\n\t* `onMutate` step is skipped and a `continue` action is dispatched to\n\t* unpause it; otherwise a `pending` action is dispatched first, then the\n\t* mutation cache's `onMutate` and the mutation's own `onMutate` option are\n\t* awaited in that order, and the resulting context is stored.\n\t*\n\t* The mutation function is then run (subject to `retry`/`retryDelay`/\n\t* `networkMode`, and to the mutation cache's scope-based serialization).\n\t* On success, the cache's `onSuccess`/`onSettled` callbacks run before the\n\t* mutation's own `onSuccess`/`onSettled` options, a `success` action is\n\t* dispatched, and the resolved data is returned. On failure, the same\n\t* cache-then-option ordering is used for `onError`/`onSettled`, but each of\n\t* those four callbacks is individually caught so that a throwing callback\n\t* cannot mask the original error; an `error` action is then dispatched and\n\t* the original error is re-thrown.\n\t* @param variables - The variables passed to the `mutationFn`.\n\t* @returns A promise that resolves with the mutation's data, or rejects with its error.\n\t* @see {@link Mutation#continue}\n\t* @example\n\t* ```ts\n\t* // Called internally by `MutationObserver.mutate` and `Mutation.continue` —\n\t* // applications normally trigger mutations through those, not this method.\n\t* const data = await mutation.execute(variables)\n\t* ```\n\t*/\n\tasync execute(variables) {\n\t\tconst onContinue = () => {\n\t\t\tthis.#dispatch({ type: \"continue\" });\n\t\t};\n\t\tconst mutationFnContext = {\n\t\t\tclient: this.#client,\n\t\t\tmeta: this.options.meta,\n\t\t\tmutationKey: this.options.mutationKey\n\t\t};\n\t\tconst retryer = this.#retryer = createRetryer({\n\t\t\tfn: () => {\n\t\t\t\tif (!this.options.mutationFn) return Promise.reject(/* @__PURE__ */ new Error(\"No mutationFn found\"));\n\t\t\t\treturn this.options.mutationFn(variables, mutationFnContext);\n\t\t\t},\n\t\t\tonFail: (failureCount, error) => {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"failed\",\n\t\t\t\t\tfailureCount,\n\t\t\t\t\terror\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPause: () => {\n\t\t\t\tthis.#dispatch({ type: \"pause\" });\n\t\t\t},\n\t\t\tonContinue,\n\t\t\tretry: this.options.retry ?? 0,\n\t\t\tretryDelay: this.options.retryDelay,\n\t\t\tnetworkMode: this.options.networkMode,\n\t\t\tcanRun: () => this.#mutationCache.canRun(this)\n\t\t});\n\t\tconst restored = this.state.status === \"pending\";\n\t\tconst isPaused = !retryer.canStart();\n\t\ttry {\n\t\t\tif (restored) onContinue();\n\t\t\telse {\n\t\t\t\tthis.#dispatch({\n\t\t\t\t\ttype: \"pending\",\n\t\t\t\t\tvariables,\n\t\t\t\t\tisPaused\n\t\t\t\t});\n\t\t\t\tif (this.#mutationCache.config.onMutate) await this.#mutationCache.config.onMutate(variables, this, mutationFnContext);\n\t\t\t\tconst context = await this.options.onMutate?.(variables, mutationFnContext);\n\t\t\t\tif (context !== this.state.context) this.#dispatch({\n\t\t\t\t\ttype: \"pending\",\n\t\t\t\t\tcontext,\n\t\t\t\t\tvariables,\n\t\t\t\t\tisPaused\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst data = await retryer.start();\n\t\t\tawait this.#mutationCache.config.onSuccess?.(data, variables, this.state.context, this, mutationFnContext);\n\t\t\tawait this.options.onSuccess?.(data, variables, this.state.context, mutationFnContext);\n\t\t\tawait this.#mutationCache.config.onSettled?.(data, null, this.state.variables, this.state.context, this, mutationFnContext);\n\t\t\tawait this.options.onSettled?.(data, null, variables, this.state.context, mutationFnContext);\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"success\",\n\t\t\t\tdata\n\t\t\t});\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tawait this.#mutationCache.config.onError?.(error, variables, this.state.context, this, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.options.onError?.(error, variables, this.state.context, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.#mutationCache.config.onSettled?.(void 0, error, this.state.variables, this.state.context, this, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.options.onSettled?.(void 0, error, variables, this.state.context, mutationFnContext);\n\t\t\t} catch (e) {\n\t\t\t\tPromise.reject(e);\n\t\t\t}\n\t\t\tthis.#dispatch({\n\t\t\t\ttype: \"error\",\n\t\t\t\terror\n\t\t\t});\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tif (this.#retryer === retryer) this.#retryer = void 0;\n\t\t\tthis.#mutationCache.runNext(this);\n\t\t}\n\t}\n\t#dispatch(action) {\n\t\tconst reducer = (state) => {\n\t\t\tswitch (action.type) {\n\t\t\t\tcase \"failed\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tfailureCount: action.failureCount,\n\t\t\t\t\tfailureReason: action.error\n\t\t\t\t};\n\t\t\t\tcase \"pause\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisPaused: true\n\t\t\t\t};\n\t\t\t\tcase \"continue\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tisPaused: false\n\t\t\t\t};\n\t\t\t\tcase \"pending\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tcontext: action.context,\n\t\t\t\t\tdata: void 0,\n\t\t\t\t\tfailureCount: 0,\n\t\t\t\t\tfailureReason: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tisPaused: action.isPaused,\n\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\tvariables: action.variables,\n\t\t\t\t\tsubmittedAt: Date.now()\n\t\t\t\t};\n\t\t\t\tcase \"success\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tdata: action.data,\n\t\t\t\t\tfailureCount: 0,\n\t\t\t\t\tfailureReason: null,\n\t\t\t\t\terror: null,\n\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\tisPaused: false\n\t\t\t\t};\n\t\t\t\tcase \"error\": return {\n\t\t\t\t\t...state,\n\t\t\t\t\tdata: void 0,\n\t\t\t\t\terror: action.error,\n\t\t\t\t\tfailureCount: state.failureCount + 1,\n\t\t\t\t\tfailureReason: action.error,\n\t\t\t\t\tisPaused: false,\n\t\t\t\t\tstatus: \"error\"\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tthis.state = reducer(this.state);\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.#observers.forEach((observer) => {\n\t\t\t\tobserver.onMutationUpdate(action);\n\t\t\t});\n\t\t\tthis.#mutationCache.notify({\n\t\t\t\tmutation: this,\n\t\t\t\ttype: \"updated\",\n\t\t\t\taction\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Returns the initial state of a mutation: `'idle'`, with no data, error, or variables.\n* @returns The initial mutation state.\n*/\nfunction getDefaultState() {\n\treturn {\n\t\tcontext: void 0,\n\t\tdata: void 0,\n\t\terror: null,\n\t\tfailureCount: 0,\n\t\tfailureReason: null,\n\t\tisPaused: false,\n\t\tstatus: \"idle\",\n\t\tvariables: void 0,\n\t\tsubmittedAt: 0\n\t};\n}\n//#endregion\nexport { Mutation, getDefaultState };\n\n//# sourceMappingURL=mutation.js.map","import { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\n//#region src/mutationCache.ts\n/**\n* The `MutationCache` is the storage for mutations.\n*\n* Normally, you will not interact with the `MutationCache` directly and instead use a\n* `QueryClient`. You can subscribe to it (inherited from `Subscribable`) to be informed of\n* safe/known updates to the cache, such as mutations being added, removed, or updated.\n* @example\n* ```ts\n* const unsubscribe = mutationCache.subscribe((event) => {\n*   console.log(event.type, event.mutation)\n* })\n* ```\n*/\nvar MutationCache = class extends Subscribable {\n\t#mutations;\n\t#scopes;\n\t#mutationId;\n\tconstructor(config = {}) {\n\t\tsuper();\n\t\tthis.config = config;\n\t\tthis.#mutations = /* @__PURE__ */ new Set();\n\t\tthis.#scopes = /* @__PURE__ */ new Map();\n\t\tthis.#mutationId = 0;\n\t}\n\t/**\n\t* Creates a mutation and adds it to the cache.\n\t* @internal\n\t* @param client - The client the mutation belongs to, used to default its options.\n\t* @param options - The mutation options. They are defaulted with {@link\n\t* QueryClient#defaultMutationOptions}.\n\t* @param state - The initial state of the mutation, e.g. when restoring a dehydrated mutation.\n\t* @returns The new mutation, already added to the cache.\n\t*/\n\tbuild(client, options, state) {\n\t\tconst mutation = new Mutation({\n\t\t\tclient,\n\t\t\tmutationCache: this,\n\t\t\tmutationId: ++this.#mutationId,\n\t\t\toptions: client.defaultMutationOptions(options),\n\t\t\tstate\n\t\t});\n\t\tthis.add(mutation);\n\t\treturn mutation;\n\t}\n\t/**\n\t* Adds a mutation to the cache.\n\t* @internal\n\t* @param mutation - The mutation to add. If it has a `scope`, it is queued in that scope.\n\t*/\n\tadd(mutation) {\n\t\tthis.#mutations.add(mutation);\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") {\n\t\t\tconst scopedMutations = this.#scopes.get(scope);\n\t\t\tif (scopedMutations) scopedMutations.push(mutation);\n\t\t\telse this.#scopes.set(scope, [mutation]);\n\t\t}\n\t\tthis.notify({\n\t\t\ttype: \"added\",\n\t\t\tmutation\n\t\t});\n\t}\n\t/**\n\t* Removes a mutation from the cache.\n\t* @internal\n\t* @param mutation - The mutation to remove, also from its scope's queue.\n\t*/\n\tremove(mutation) {\n\t\tif (this.#mutations.delete(mutation)) {\n\t\t\tconst scope = scopeFor(mutation);\n\t\t\tif (typeof scope === \"string\") {\n\t\t\t\tconst scopedMutations = this.#scopes.get(scope);\n\t\t\t\tif (scopedMutations) {\n\t\t\t\t\tif (scopedMutations.length > 1) {\n\t\t\t\t\t\tconst index = scopedMutations.indexOf(mutation);\n\t\t\t\t\t\tif (index !== -1) scopedMutations.splice(index, 1);\n\t\t\t\t\t} else if (scopedMutations[0] === mutation) this.#scopes.delete(scope);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.notify({\n\t\t\ttype: \"removed\",\n\t\t\tmutation\n\t\t});\n\t}\n\t/**\n\t* Checks whether a mutation can run now, given the other mutations in its `scope`.\n\t* @internal\n\t* @param mutation - The mutation to check.\n\t* @returns `true` if the mutation has no `scope`, or no other mutation in its scope is pending\n\t* ahead of it.\n\t*/\n\tcanRun(mutation) {\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") {\n\t\t\tconst firstPendingMutation = this.#scopes.get(scope)?.find((m) => m.state.status === \"pending\");\n\t\t\treturn !firstPendingMutation || firstPendingMutation === mutation;\n\t\t} else return true;\n\t}\n\t/**\n\t* Continues the next paused mutation in the same `scope` after a mutation finishes.\n\t* @internal\n\t* @param mutation - The mutation that finished.\n\t* @returns A promise that resolves once the next paused mutation in the same scope has continued,\n\t* or immediately if there is none.\n\t*/\n\trunNext(mutation) {\n\t\tconst scope = scopeFor(mutation);\n\t\tif (typeof scope === \"string\") return (this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused))?.continue() ?? Promise.resolve();\n\t\telse return Promise.resolve();\n\t}\n\t/**\n\t* Removes all mutations from the cache.\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* mutationCache.clear()\n\t* ```\n\t*/\n\tclear() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.#mutations.forEach((mutation) => {\n\t\t\t\tthis.notify({\n\t\t\t\t\ttype: \"removed\",\n\t\t\t\t\tmutation\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis.#mutations.clear();\n\t\t\tthis.#scopes.clear();\n\t\t});\n\t}\n\t/**\n\t* Returns all mutations within the cache.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about a mutation in rare scenarios.\n\t* @returns Every mutation in the cache.\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* const mutations = mutationCache.getAll()\n\t* ```\n\t*/\n\tgetAll() {\n\t\treturn Array.from(this.#mutations);\n\t}\n\t/**\n\t* A slightly more advanced method that can be used to get an existing mutation instance from\n\t* the cache. If the mutation does not exist, `undefined` is returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about a mutation in rare scenarios.\n\t* @param filters - The filters to match. `exact` defaults to `true`.\n\t* @returns The first matching mutation, or `undefined`.\n\t* @see {@link MutationCache#findAll}\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* const mutation = mutationCache.find({ mutationKey: ['addPost'] })\n\t* ```\n\t*/\n\tfind(filters) {\n\t\tconst defaultedFilters = {\n\t\t\texact: true,\n\t\t\t...filters\n\t\t};\n\t\treturn this.getAll().find((mutation) => matchMutation(defaultedFilters, mutation));\n\t}\n\t/**\n\t* An even more advanced method that can be used to get existing mutation instances from the\n\t* cache that match the given filters. If no mutations match, an empty array is returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about mutations in rare scenarios.\n\t* @param filters - The filters to match. Without filters, every mutation is returned.\n\t* @returns The matching mutations.\n\t* @see {@link MutationCache#find}\n\t* @example\n\t* ```ts\n\t* const mutationCache = queryClient.getMutationCache()\n\t*\n\t* const mutations = mutationCache.findAll({ mutationKey: ['addPost'] })\n\t* ```\n\t*/\n\tfindAll(filters = {}) {\n\t\treturn this.getAll().filter((mutation) => matchMutation(filters, mutation));\n\t}\n\t/**\n\t* Notifies every cache listener of an event, in one batch.\n\t* @internal\n\t* @param event - The event passed to every listener.\n\t*/\n\tnotify(event) {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(event);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Continues every paused mutation, e.g. when the app comes back online.\n\t* @internal\n\t* @returns A promise that resolves once every paused mutation has continued and settled.\n\t*/\n\tresumePausedMutations() {\n\t\tconst pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n\t\treturn notifyManager.batch(() => Promise.all(pausedMutations.map((mutation) => mutation.continue().catch(noop))));\n\t}\n};\n/**\n* Returns the scope id of a mutation, used to run mutations with the same scope one after another.\n* @param mutation - The mutation to read the scope of.\n* @returns The mutation's `scope.id`, or `undefined` if it has no scope.\n*/\nfunction scopeFor(mutation) {\n\treturn mutation.options.scope?.id;\n}\n//#endregion\nexport { MutationCache };\n\n//# sourceMappingURL=mutationCache.js.map","import { hashKey, shallowEqualObjects } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { getDefaultState } from \"./mutation.js\";\n//#region src/mutationObserver.ts\n/**\n* Observes a single mutation and derives a `MutationObserverResult` from it.\n* A framework hook like `useMutation` creates one `MutationObserver` per hook\n* call, keeps it stable across re-renders, calls `setOptions` when the options\n* passed to the hook change, subscribes to it to re-render on updates, and\n* reads `getCurrentResult()` for the value to return. Calling `mutate()`\n* builds a new underlying `Mutation` in the `MutationCache` and executes it.\n* @example\n* ```ts\n* const observer = new MutationObserver(queryClient, {\n*   mutationFn: (variables: { title: string }) => addPost(variables),\n* })\n* ```\n*/\nvar MutationObserver = class extends Subscribable {\n\t#client;\n\t#currentResult = void 0;\n\t#currentMutation;\n\t#mutateOptions;\n\tconstructor(client, options) {\n\t\tsuper();\n\t\tthis.#client = client;\n\t\tthis.setOptions(options);\n\t\tthis.bindMethods();\n\t\tthis.#updateResult();\n\t}\n\t/**\n\t* Binds the methods of the result (`mutate` and `reset`) to the observer, so they keep working when\n\t* destructured from it.\n\t*/\n\tbindMethods() {\n\t\tthis.mutate = this.mutate.bind(this);\n\t\tthis.reset = this.reset.bind(this);\n\t}\n\t/**\n\t* Updates the observer's options.\n\t*\n\t* If the new `mutationKey` differs from the previous one (and both were\n\t* defined), the observer is reset, detaching it from the mutation it was\n\t* observing. Otherwise, if the currently observed mutation is still\n\t* `pending`, its options are updated in place as well.\n\t* @param options - The new mutation observer options. They are defaulted with {@link\n\t* QueryClient#defaultMutationOptions} before being applied.\n\t* @example\n\t* ```ts\n\t* observer.setOptions({\n\t*   mutationFn: (variables: { title: string }) => addPost(variables),\n\t*   onSuccess: (data) => console.log(data),\n\t* })\n\t* ```\n\t*/\n\tsetOptions(options) {\n\t\tconst prevOptions = this.options;\n\t\tthis.options = this.#client.defaultMutationOptions(options);\n\t\tif (!shallowEqualObjects(this.options, prevOptions)) this.#client.getMutationCache().notify({\n\t\t\ttype: \"observerOptionsUpdated\",\n\t\t\tmutation: this.#currentMutation,\n\t\t\tobserver: this\n\t\t});\n\t\tif (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) this.reset();\n\t\telse if (this.#currentMutation?.state.status === \"pending\") this.#currentMutation.setOptions(this.options);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1 && this.#currentMutation) {\n\t\t\tthis.#currentMutation.addObserver(this);\n\t\t\tthis.#updateResult();\n\t\t}\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.hasListeners()) this.#currentMutation?.removeObserver(this);\n\t}\n\t/**\n\t* Updates the observer's result when the observed mutation changes, and notifies its listeners.\n\t* @internal\n\t* @param action - The action that updated the observed mutation, passed on to the observer's\n\t* callbacks.\n\t*/\n\tonMutationUpdate(action) {\n\t\tthis.#updateResult();\n\t\tthis.#notify(action);\n\t}\n\t/**\n\t* Returns the observer's current result, derived from the observed\n\t* mutation's state (or the default, `idle` state if no mutation has been\n\t* built yet, e.g. before the first `mutate()` call or after `reset()`).\n\t* @returns The observer's latest result.\n\t*/\n\tgetCurrentResult() {\n\t\treturn this.#currentResult;\n\t}\n\t/**\n\t* Detaches the observer from the mutation it is currently observing (if\n\t* any) and resets the observed result back to its default, `idle` state.\n\t*\n\t* This does not cancel an in-flight mutation; the mutation itself keeps\n\t* running to completion and its own callbacks still fire, but this\n\t* observer stops reflecting its state and a subsequent `mutate()` call\n\t* will build a brand new mutation.\n\t* @see {@link MutationObserver#mutate}\n\t* @example\n\t* ```ts\n\t* observer.reset()\n\t* ```\n\t*/\n\treset() {\n\t\tthis.#currentMutation?.removeObserver(this);\n\t\tthis.#currentMutation = void 0;\n\t\tthis.#updateResult();\n\t\tthis.#notify();\n\t}\n\t/**\n\t* Builds a new `Mutation` in the `MutationCache` using the observer's\n\t* current options, detaches this observer from any previously observed\n\t* mutation, attaches it to the new one, and executes it with the given\n\t* variables.\n\t*\n\t* The optional per-call `options` (`onSuccess`/`onError`/`onSettled`) are\n\t* invoked once the mutation settles, in addition to any callbacks defined\n\t* on the observer's own options.\n\t* @param variables - The variables passed to the `mutationFn`.\n\t* @param options - Per-call `onSuccess`, `onError`, and `onSettled` callbacks.\n\t* @returns A promise that resolves with the mutation's data, or rejects with its error.\n\t* @example\n\t* ```ts\n\t* await observer.mutate(\n\t*   { title: 'New post' },\n\t*   { onSuccess: (data) => console.log(data) },\n\t* )\n\t* ```\n\t*/\n\tmutate(variables, options) {\n\t\tthis.#mutateOptions = options;\n\t\tthis.#currentMutation?.removeObserver(this);\n\t\tthis.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n\t\tthis.#currentMutation.addObserver(this);\n\t\treturn this.#currentMutation.execute(variables);\n\t}\n\t#updateResult() {\n\t\tconst state = this.#currentMutation?.state ?? getDefaultState();\n\t\tthis.#currentResult = {\n\t\t\t...state,\n\t\t\tisPending: state.status === \"pending\",\n\t\t\tisSuccess: state.status === \"success\",\n\t\t\tisError: state.status === \"error\",\n\t\t\tisIdle: state.status === \"idle\",\n\t\t\tmutate: this.mutate,\n\t\t\treset: this.reset\n\t\t};\n\t}\n\t#notify(action) {\n\t\tnotifyManager.batch(() => {\n\t\t\tconst mutateOptions = this.#mutateOptions;\n\t\t\tif (mutateOptions && this.hasListeners()) {\n\t\t\t\tconst variables = this.#currentResult.variables;\n\t\t\t\tconst onMutateResult = this.#currentResult.context;\n\t\t\t\tconst context = {\n\t\t\t\t\tclient: this.#client,\n\t\t\t\t\tmeta: this.options.meta,\n\t\t\t\t\tmutationKey: this.options.mutationKey\n\t\t\t\t};\n\t\t\t\tif (action?.type === \"success\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmutateOptions.onSuccess?.(action.data, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmutateOptions.onSettled?.(action.data, null, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t} else if (action?.type === \"error\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmutateOptions.onError?.(action.error, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmutateOptions.onSettled?.(void 0, action.error, variables, onMutateResult, context);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tPromise.reject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(this.#currentResult);\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\nexport { MutationObserver };\n\n//# sourceMappingURL=mutationObserver.js.map","import { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Query } from \"./query.js\";\n//#region src/queryCache.ts\n/**\n* The `QueryCache` is the storage mechanism for TanStack Query. It stores all the data, meta\n* information, and state of the queries it contains.\n*\n* Normally, you will not interact with the `QueryCache` directly and instead use a `QueryClient`\n* for a specific cache. You can subscribe to it (inherited from `Subscribable`) to be informed of\n* safe/known updates to the cache, such as queries being added, removed, or updated — updates made\n* outside of the cache's own tracked mechanisms (e.g. mutating a query's state object directly) do\n* not notify subscribers.\n* @example\n* ```ts\n* const unsubscribe = queryCache.subscribe((event) => {\n*   console.log(event.type, event.query)\n* })\n* ```\n*/\nvar QueryCache = class extends Subscribable {\n\t#queries;\n\tconstructor(config = {}) {\n\t\tsuper();\n\t\tthis.config = config;\n\t\tthis.#queries = /* @__PURE__ */ new Map();\n\t}\n\t/**\n\t* Returns the existing `Query` instance for the given options' `queryKey`/`queryHash`, or\n\t* builds and adds a new one to the cache if none exists yet. Used by framework adapters and\n\t* plugins (e.g. broadcast/persistence) that need to get-or-create a `Query` directly, bypassing\n\t* the reactive `QueryObserver` machinery.\n\t* @param client - The client the query belongs to, used to default its options.\n\t* @param options - The query options, including the `queryKey`. A new query is created with the\n\t* options defaulted by {@link QueryClient#defaultQueryOptions}.\n\t* @param state - The initial state of a newly created query, e.g. when hydrating. Ignored if the\n\t* query already exists.\n\t* @returns The existing or newly created query.\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const query = queryCache.build(queryClient, {\n\t*   queryKey: ['posts'],\n\t*   queryFn: fetchPosts,\n\t* })\n\t* ```\n\t*/\n\tbuild(client, options, state) {\n\t\tconst queryKey = options.queryKey;\n\t\tconst queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n\t\tlet query = this.get(queryHash);\n\t\tif (!query) {\n\t\t\tquery = new Query({\n\t\t\t\tclient,\n\t\t\t\tqueryKey,\n\t\t\t\tqueryHash,\n\t\t\t\toptions: client.defaultQueryOptions(options),\n\t\t\t\tstate,\n\t\t\t\tdefaultOptions: client.getQueryDefaults(queryKey)\n\t\t\t});\n\t\t\tthis.add(query);\n\t\t}\n\t\treturn query;\n\t}\n\t/**\n\t* Adds a query to the cache.\n\t* @internal\n\t* @param query - The query to add. If a query with the same hash is already cached, nothing\n\t* happens.\n\t*/\n\tadd(query) {\n\t\tif (!this.#queries.has(query.queryHash)) {\n\t\t\tthis.#queries.set(query.queryHash, query);\n\t\t\tthis.notify({\n\t\t\t\ttype: \"added\",\n\t\t\t\tquery\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Destroys the given `Query` and removes it from the cache, notifying subscribers with a\n\t* `'removed'` event. A no-op if the query is no longer the one currently stored under its hash\n\t* (e.g. it was already replaced). Used by plugins (e.g. the broadcast client) that mirror\n\t* removals across `QueryCache` instances.\n\t* @param query - The query to remove.\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t* const query = queryCache.find({ queryKey: ['posts'] })\n\t*\n\t* if (query) {\n\t*   queryCache.remove(query)\n\t* }\n\t* ```\n\t*/\n\tremove(query) {\n\t\tif (this.#queries.get(query.queryHash) === query) {\n\t\t\tquery.destroy();\n\t\t\tthis.#queries.delete(query.queryHash);\n\t\t\tthis.notify({\n\t\t\t\ttype: \"removed\",\n\t\t\t\tquery\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Removes all queries from the cache.\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* queryCache.clear()\n\t* ```\n\t*/\n\tclear() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tthis.remove(query);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Returns the `Query` instance stored under the given `queryHash`, or `undefined` if none\n\t* exists. Unlike {@link QueryCache#find}, this looks up by the already-computed hash rather\n\t* than by `QueryFilters`. Used by plugins (e.g. broadcast/hydration) that already have a hash\n\t* to look up directly.\n\t* @param queryHash - The hash of the query to look up.\n\t* @returns The query stored under the hash, or `undefined`.\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t* const queryHash = hashKey(['posts'])\n\t*\n\t* const query = queryCache.get(queryHash)\n\t* ```\n\t*/\n\tget(queryHash) {\n\t\treturn this.#queries.get(queryHash);\n\t}\n\t/**\n\t* Returns all queries within the cache.\n\t* @returns Every query in the cache.\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const queries = queryCache.getAll()\n\t* ```\n\t*/\n\tgetAll() {\n\t\treturn [...this.#queries.values()];\n\t}\n\t/**\n\t* A slightly more advanced method that can be used to get an existing query instance from the\n\t* cache. This instance not only contains all the state for the query, but all of the instances,\n\t* and underlying guts of the query as well. If the query does not exist, `undefined` is\n\t* returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about a query in rare scenarios (e.g. looking at `query.state.dataUpdatedAt` to\n\t* decide whether a query is fresh enough to be used as an initial value).\n\t* @param filters - The filters to match, including the required `queryKey`. `exact` defaults to\n\t* `true`.\n\t* @returns The first matching query, or `undefined`.\n\t* @see {@link QueryCache#findAll}\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const query = queryCache.find({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tfind(filters) {\n\t\tconst defaultedFilters = {\n\t\t\texact: true,\n\t\t\t...filters\n\t\t};\n\t\treturn this.getAll().find((query) => matchQuery(defaultedFilters, query));\n\t}\n\t/**\n\t* An even more advanced method that can be used to get existing query instances from the cache\n\t* that partially match a query key. If no queries match, an empty array is returned.\n\t*\n\t* This is not typically needed for most applications, but can come in handy when needing more\n\t* information about queries in rare scenarios.\n\t* @param filters - The filters to match. Without filters, every query is returned.\n\t* @returns The matching queries.\n\t* @see {@link QueryCache#find}\n\t* @example\n\t* ```ts\n\t* const queryCache = queryClient.getQueryCache()\n\t*\n\t* const queries = queryCache.findAll({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tfindAll(filters = {}) {\n\t\tconst queries = this.getAll();\n\t\treturn Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n\t}\n\t/**\n\t* Notifies every cache listener of an event, in one batch.\n\t* @internal\n\t* @param event - The event passed to every listener.\n\t*/\n\tnotify(event) {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\tlistener(event);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Calls {@link Query#onFocus} on every cached query, in one batch.\n\t* @internal\n\t*/\n\tonFocus() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tquery.onFocus();\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Calls {@link Query#onOnline} on every cached query, in one batch.\n\t* @internal\n\t*/\n\tonOnline() {\n\t\tnotifyManager.batch(() => {\n\t\t\tthis.getAll().forEach((query) => {\n\t\t\t\tquery.onOnline();\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\nexport { QueryCache };\n\n//# sourceMappingURL=queryCache.js.map","import { functionalUpdate, hashKey, hashQueryKeyByOptions, noop, partialMatchKey, resolveQueryValue, skipToken } from \"./utils.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { QueryCache } from \"./queryCache.js\";\n//#region src/queryClient.ts\n/**\n* `QueryClient` is used to interact with a cache of queries and mutations. It owns a\n* `QueryCache` and a `MutationCache` (creating default ones if none are passed in) and holds\n* the default options that are applied to queries and mutations created through it.\n* @example\n* ```ts\n* const queryClient = new QueryClient({\n*   defaultOptions: {\n*     queries: {\n*       staleTime: Infinity,\n*     },\n*   },\n* })\n*\n* await queryClient.query({ queryKey: ['posts'], queryFn: fetchPosts })\n* ```\n*/\nvar QueryClient = class {\n\t#queryCache;\n\t#mutationCache;\n\t#defaultOptions;\n\t#queryDefaults;\n\t#mutationDefaults;\n\t#mountCount;\n\t#unsubscribeFocus;\n\t#unsubscribeOnline;\n\tconstructor(config = {}) {\n\t\tthis.#queryCache = config.queryCache || new QueryCache();\n\t\tthis.#mutationCache = config.mutationCache || new MutationCache();\n\t\tthis.#defaultOptions = config.defaultOptions || {};\n\t\tthis.#queryDefaults = /* @__PURE__ */ new Map();\n\t\tthis.#mutationDefaults = /* @__PURE__ */ new Map();\n\t\tthis.#mountCount = 0;\n\t}\n\t/**\n\t* Called by a framework adapter's `QueryClientProvider`-equivalent when it mounts, to start\n\t* listening for focus/online events and resume paused mutations. Ref-counted via an internal\n\t* mount count, so nested or multiple providers sharing the same `QueryClient` don't tear down\n\t* the shared listeners until the last one unmounts.\n\t*/\n\tmount() {\n\t\tthis.#mountCount++;\n\t\tif (this.#mountCount !== 1) return;\n\t\tthis.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n\t\t\tif (focused) {\n\t\t\t\tawait this.resumePausedMutations();\n\t\t\t\tthis.#queryCache.onFocus();\n\t\t\t}\n\t\t});\n\t\tthis.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n\t\t\tif (online) {\n\t\t\t\tawait this.resumePausedMutations();\n\t\t\t\tthis.#queryCache.onOnline();\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* The inverse of {@link QueryClient#mount} — called by a framework adapter's\n\t* `QueryClientProvider`-equivalent when it unmounts. Only tears down the focus/online\n\t* listeners once the mount count returns to `0`.\n\t*/\n\tunmount() {\n\t\tthis.#mountCount--;\n\t\tif (this.#mountCount !== 0) return;\n\t\tthis.#unsubscribeFocus?.();\n\t\tthis.#unsubscribeFocus = void 0;\n\t\tthis.#unsubscribeOnline?.();\n\t\tthis.#unsubscribeOnline = void 0;\n\t}\n\t/**\n\t* Returns the number of queries in the cache that are currently fetching, optionally\n\t* matching a set of filters. This includes background-fetching, loading new pages, and\n\t* loading more infinite query results.\n\t* @param filters - Narrows down which fetching queries are counted. Without filters, every\n\t* fetching query is counted.\n\t* @returns The number of matching queries whose `fetchStatus` is `'fetching'`.\n\t* @example\n\t* ```ts\n\t* if (queryClient.isFetching()) {\n\t*   console.log('At least one query is fetching!')\n\t* }\n\t* ```\n\t*/\n\tisFetching(filters) {\n\t\treturn this.#queryCache.findAll({\n\t\t\t...filters,\n\t\t\tfetchStatus: \"fetching\"\n\t\t}).length;\n\t}\n\t/**\n\t* Returns the number of mutations in the cache that are currently pending, optionally\n\t* matching a set of filters.\n\t* @param filters - Narrows down which pending mutations are counted. Without filters, every\n\t* pending mutation is counted.\n\t* @returns The number of matching mutations whose `status` is `'pending'`.\n\t* @example\n\t* ```ts\n\t* if (queryClient.isMutating()) {\n\t*   console.log('At least one mutation is pending!')\n\t* }\n\t* ```\n\t*/\n\tisMutating(filters) {\n\t\treturn this.#mutationCache.findAll({\n\t\t\t...filters,\n\t\t\tstatus: \"pending\"\n\t\t}).length;\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve data for a QueryKey.\n\t* Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n\t*\n\t* Hint: Do not use this function inside a component, because it won't receive updates.\n\t* Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n\t* @param queryKey - The query key of the query to read.\n\t* @returns The cached data for the query, or `undefined` if no query with this key has been observed yet.\n\t* @see {@link QueryClient#getQueriesData}\n\t*/\n\tgetQueryData(queryKey) {\n\t\tconst options = this.defaultQueryOptions({ queryKey });\n\t\treturn this.#queryCache.get(options.queryHash)?.state.data;\n\t}\n\t/**\n\t* Returns the cached data of a query, or fetches it if there is none. With `revalidateIfStale`,\n\t* stale cached data is also refetched in the background.\n\t* @param options - The query options. If the query has no cached data yet, it is fetched with\n\t* these options.\n\t* @returns A promise that resolves to the cached data, or to the fetched data if nothing was\n\t* cached yet.\n\t* @deprecated Use queryClient.query({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n\t*/\n\tensureQueryData(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\tconst cachedData = query.state.data;\n\t\tif (cachedData === void 0) return this.fetchQuery(options);\n\t\tif (options.revalidateIfStale && query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query))) this.prefetchQuery(defaultedOptions);\n\t\treturn Promise.resolve(cachedData);\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve the cached data of multiple queries at once.\n\t* Only queries matching the given filters are returned; if none match, an empty array is\n\t* returned.\n\t*\n\t* Because the matched queries can hold data of different shapes (e.g. a broad filter can match\n\t* queries with unrelated data types), the `TQueryFnData` generic defaults to `unknown` rather\n\t* than being inferred. Passing a more specific type is a convenience for call sites that know\n\t* every matched query holds the same shape — it is not checked against the actual cache\n\t* contents.\n\t* @param filters - The filters that select which queries to read.\n\t* @returns An array of query key and data pairs. The data is `undefined` for a query with no cached data.\n\t* @see {@link QueryClient#getQueryData}\n\t* @example\n\t* ```ts\n\t* const data = queryClient.getQueriesData({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tgetQueriesData(filters) {\n\t\treturn this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n\t\t\treturn [queryKey, state.data];\n\t\t});\n\t}\n\t/**\n\t* Synchronous way to immediately update a query's cached data. If the updater (or the value\n\t* passed) resolves to `undefined`, the cache is left untouched and no query is created;\n\t* otherwise, if the query does not exist yet, it will be created. To update multiple queries\n\t* at once by partially matching query keys, use {@link QueryClient#setQueriesData} instead.\n\t*\n\t* Updates must be performed immutably: do not mutate `oldData`, or data previously retrieved\n\t* via {@link QueryClient#getQueryData}, in place.\n\t* @param queryKey - The query key to set data for.\n\t* @param updater - Either the new data, or a function that receives the current data (which\n\t* may be `undefined`) and returns the new data.\n\t* @param options - Set `updatedAt` to override the timestamp the written data is recorded with.\n\t* @returns The data that was written, or `undefined` if the updater returned `undefined` — in that case\n\t* the write is skipped and the cache is left unchanged.\n\t* @example\n\t* ```ts\n\t* queryClient.setQueryData(['posts'], newPosts)\n\t*\n\t* // Or, using an updater function that receives the current data:\n\t* queryClient.setQueryData(['posts'], (oldPosts) => [...oldPosts, newPost])\n\t* ```\n\t*/\n\tsetQueryData(queryKey, updater, options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions({ queryKey });\n\t\tconst prevData = this.#queryCache.get(defaultedOptions.queryHash)?.state.data;\n\t\tconst data = functionalUpdate(updater, prevData);\n\t\tif (data === void 0) return;\n\t\treturn this.#queryCache.build(this, defaultedOptions).setData(data, {\n\t\t\t...options,\n\t\t\tmanual: true\n\t\t});\n\t}\n\t/**\n\t* Synchronous way to immediately update the cached data of multiple queries at once, using\n\t* filters or partial query key matching. Only queries that already exist and match the given\n\t* filters are updated; no new cache entries are created. Internally this calls\n\t* {@link QueryClient#setQueryData} for each matching query.\n\t* @param filters - The filters that select which existing queries to update.\n\t* @param updater - Either the new data, or a function that receives each matched query's current\n\t* data (which may be `undefined`) and returns the new data.\n\t* @param options - Set `updatedAt` to override the timestamp the written data is recorded with.\n\t* @returns One `[queryKey, data]` tuple per matched query, in the same shape and with the same\n\t* `undefined` case as {@link QueryClient#setQueryData}.\n\t* @example\n\t* ```ts\n\t* queryClient.setQueriesData({ queryKey: ['posts'] }, (oldPosts) =>\n\t*   oldPosts ? oldPosts.filter((post) => post.id !== deletedId) : oldPosts,\n\t* )\n\t* ```\n\t*/\n\tsetQueriesData(filters, updater, options) {\n\t\treturn notifyManager.batch(() => this.#queryCache.findAll(filters).map(({ queryKey }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n\t}\n\t/**\n\t* Imperative (non-reactive) way to retrieve an existing query's state. If the query does not\n\t* exist, `undefined` is returned.\n\t* @param queryKey - The query key of the query to read.\n\t* @returns The query's state, or `undefined` if no query with this key exists.\n\t* @example\n\t* ```ts\n\t* const state = queryClient.getQueryState(['posts'])\n\t* console.log(state?.dataUpdatedAt)\n\t* ```\n\t*/\n\tgetQueryState(queryKey) {\n\t\tconst options = this.defaultQueryOptions({ queryKey });\n\t\treturn this.#queryCache.get(options.queryHash)?.state;\n\t}\n\t/**\n\t* Removes queries from the cache that match the given filters. Unlike\n\t* {@link QueryClient#invalidateQueries} or {@link QueryClient#refetchQueries}, this removes\n\t* matching queries from the cache instead of refetching them. Without filters, every query in\n\t* the cache is removed.\n\t* @param filters - The filters that select which queries to remove. Without filters, every query\n\t* is removed.\n\t* @example\n\t* ```ts\n\t* queryClient.removeQueries({ queryKey: ['posts'], exact: true })\n\t* ```\n\t*/\n\tremoveQueries(filters) {\n\t\tconst queryCache = this.#queryCache;\n\t\tnotifyManager.batch(() => {\n\t\t\tqueryCache.findAll(filters).forEach((query) => {\n\t\t\t\tqueryCache.remove(query);\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Resets queries matching the given filters back to their initial state (e.g. any\n\t* `initialData`), notifying subscribers rather than removing them. Active queries among the\n\t* matched set are then refetched, and the returned promise resolves once that refetch settles.\n\t* @param filters - The filters that select which queries to reset. Without filters, every query\n\t* is reset.\n\t* @param options - Passed to the refetch of the active matched queries, e.g. `cancelRefetch` and\n\t* `throwOnError`.\n\t* @returns A promise that resolves once the refetch of the active matched queries settles.\n\t* @example\n\t* ```ts\n\t* await queryClient.resetQueries({ queryKey: ['posts'], exact: true })\n\t* ```\n\t*/\n\tresetQueries(filters, options) {\n\t\tconst queryCache = this.#queryCache;\n\t\treturn notifyManager.batch(() => {\n\t\t\tconst matched = queryCache.findAll(filters);\n\t\t\tconst queriesToRefetch = new Set(matched);\n\t\t\tmatched.forEach((query) => {\n\t\t\t\tquery.reset();\n\t\t\t});\n\t\t\treturn this.refetchQueries({\n\t\t\t\ttype: \"active\",\n\t\t\t\tpredicate: (query) => queriesToRefetch.has(query)\n\t\t\t}, options);\n\t\t});\n\t}\n\t/**\n\t* Cancels outgoing fetches for queries matching the given filters. Most useful when performing\n\t* optimistic updates, since any outgoing refetch that resolves afterwards would otherwise\n\t* overwrite the optimistic update. By default (`revert: true`), a cancelled query's data is\n\t* reverted to its state before the outgoing fetch started.\n\t*\n\t* The returned promise never rejects, even if individual cancellations fail.\n\t* @param filters - The filters that select which queries to cancel. Without filters, every query\n\t* is cancelled.\n\t* @param cancelOptions - Passed to each matched query's cancellation. `revert` defaults to\n\t* `true`.\n\t* @returns A promise that resolves once every cancellation has settled.\n\t* @example\n\t* ```ts\n\t* await queryClient.cancelQueries({ queryKey: ['posts'], exact: true })\n\t* ```\n\t*/\n\tcancelQueries(filters, cancelOptions = {}) {\n\t\tconst defaultedCancelOptions = {\n\t\t\trevert: true,\n\t\t\t...cancelOptions\n\t\t};\n\t\tconst promises = notifyManager.batch(() => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions)));\n\t\treturn Promise.all(promises).then(noop).catch(noop);\n\t}\n\t/**\n\t* Marks queries matching the given filters as invalidated. Unlike\n\t* {@link QueryClient#removeQueries}, invalidated queries stay in the cache.\n\t*\n\t* Unless `filters.refetchType` is `'none'`, matching queries are then refetched via\n\t* {@link QueryClient#refetchQueries}, using `filters.refetchType` if set, otherwise\n\t* `filters.type`, otherwise `'active'`.\n\t* @param filters - The filters that select which queries to invalidate, plus `refetchType` to\n\t* control which of them to refetch afterwards. Without filters, every query is invalidated.\n\t* @param options - Passed to {@link QueryClient#refetchQueries}, e.g. `cancelRefetch` and\n\t* `throwOnError`.\n\t* @returns A promise that resolves once the refetch settles, or immediately if `refetchType` is\n\t* `'none'`.\n\t* @example\n\t* ```ts\n\t* await queryClient.invalidateQueries({ queryKey: ['posts'], refetchType: 'active' })\n\t* ```\n\t*/\n\tinvalidateQueries(filters, options = {}) {\n\t\treturn notifyManager.batch(() => {\n\t\t\tthis.#queryCache.findAll(filters).forEach((query) => {\n\t\t\t\tquery.invalidate();\n\t\t\t});\n\t\t\tif (filters?.refetchType === \"none\") return Promise.resolve();\n\t\t\treturn this.refetchQueries({\n\t\t\t\t...filters,\n\t\t\t\ttype: filters?.refetchType ?? filters?.type ?? \"active\"\n\t\t\t}, options);\n\t\t});\n\t}\n\t/**\n\t* Refetches queries matching the given filters, regardless of whether they are stale. Without\n\t* filters, every query in the cache is refetched. Queries that are disabled, or static (only\n\t* have observers with a static `staleTime`), are never refetched.\n\t*\n\t* By default (`cancelRefetch: true`), a currently running fetch is cancelled before the new\n\t* one starts. The returned promise resolves once all matching queries have settled; it does\n\t* not reject on individual query failures unless `throwOnError` is set.\n\t* @param filters - The filters that select which queries to refetch. Without filters, every query\n\t* in the cache is included.\n\t* @param options - Set `cancelRefetch` to `false` to keep a running fetch instead of cancelling\n\t* it, and `throwOnError` to `true` to reject when a refetch fails.\n\t* @returns A promise that resolves once every matched query has settled.\n\t* @example\n\t* ```ts\n\t* // refetch all active queries partially matching a query key:\n\t* await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })\n\t* ```\n\t*/\n\trefetchQueries(filters, options = {}) {\n\t\tconst fetchOptions = {\n\t\t\t...options,\n\t\t\tcancelRefetch: options.cancelRefetch ?? true\n\t\t};\n\t\tconst promises = notifyManager.batch(() => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n\t\t\tlet promise = query.fetch(void 0, fetchOptions);\n\t\t\tif (!fetchOptions.throwOnError) promise = promise.catch(noop);\n\t\t\treturn query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n\t\t}));\n\t\treturn Promise.all(promises).then(noop);\n\t}\n\t/**\n\t* Asynchronous method to fetch and cache a query, resolving with the data or throwing with\n\t* the error.\n\t*\n\t* If the query already exists in the cache and its data is not stale (per the given\n\t* `staleTime`), the cached data is returned without fetching. Otherwise, the query is fetched\n\t* and the promise resolves once the fetch settles. If a `select` function is provided, it is\n\t* applied to the data in both cases (cached or freshly fetched) before it is returned.\n\t*\n\t* Unlike a reactive observer, retries are disabled by default here (`retry: false`) unless\n\t* explicitly configured, since there is no component to catch a thrown error and retry through\n\t* re-render.\n\t*\n\t* The accepted options are `QueryObserverOptions` minus the fields that only make sense for a\n\t* reactive observer — `enabled`, `refetchInterval`, `refetchIntervalInBackground`,\n\t* `refetchOnWindowFocus`, `refetchOnReconnect`, `refetchOnMount`, `retryOnMount`,\n\t* `notifyOnChangeProps`, `throwOnError`, `suspense`, and `placeholderData` are not part of this\n\t* method's options.\n\t*\n\t* This method replaces the deprecated `fetchQuery`, and — combined with\n\t* `{ staleTime: 'static' }` — the deprecated `ensureQueryData`.\n\t* @param options - The query options, including the `queryKey` and the `queryFn` used if the\n\t* query needs to fetch.\n\t* @returns A promise that resolves to the data, or to the result of `select` if provided. It\n\t* rejects with the error from the fetch or from `select`.\n\t* @example\n\t* ```ts\n\t* try {\n\t*   const data = await queryClient.query({ queryKey, queryFn, staleTime: 10000 })\n\t* } catch (error) {\n\t*   console.log(error)\n\t* }\n\t* ```\n\t*/\n\tasync query(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tif (defaultedOptions.retry === void 0) defaultedOptions.retry = false;\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\tconst queryData = query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query)) ? await query.fetch(defaultedOptions) : query.state.data;\n\t\tconst select = defaultedOptions.select;\n\t\tif (select) return select(queryData);\n\t\treturn queryData;\n\t}\n\t/**\n\t* Fetches and caches a query, or returns its cached data if it isn't stale. Unlike in observers,\n\t* the fetch isn't retried unless `retry` is set.\n\t* @param options - The query options, including the `queryKey` and the `queryFn` used if the\n\t* query needs to fetch.\n\t* @returns A promise that resolves to the cached or fetched data, or rejects with the fetch\n\t* error.\n\t* @deprecated Use queryClient.query(options) instead. This method will be removed in the next major version.\n\t*/\n\tfetchQuery(options) {\n\t\tconst defaultedOptions = this.defaultQueryOptions(options);\n\t\tif (defaultedOptions.retry === void 0) defaultedOptions.retry = false;\n\t\tconst query = this.#queryCache.build(this, defaultedOptions);\n\t\treturn query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query)) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n\t}\n\t/**\n\t* Fetches and caches a query like {@link QueryClient#fetchQuery}, but ignores the result and any\n\t* error.\n\t* @param options - The query options, including the `queryKey` and the `queryFn` used if the\n\t* query needs to fetch.\n\t* @returns A promise that resolves once the fetch settles. It never rejects.\n\t* @deprecated Use queryClient.query(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n\t*/\n\tprefetchQuery(options) {\n\t\treturn this.fetchQuery(options).then(noop).catch(noop);\n\t}\n\t/**\n\t* Asynchronous method to fetch and cache an infinite query, resolving with an\n\t* {@link InfiniteData} object or throwing with the error.\n\t*\n\t* Behaves like {@link QueryClient#query}, accepting the same options (minus\n\t* `initialPageParam`), plus the required `initialPageParam`, and an optional `pages` /\n\t* `getNextPageParam` pair used to refetch a fixed number of pages from the start.\n\t*\n\t* This method replaces the deprecated `fetchInfiniteQuery`, and — combined with\n\t* `{ staleTime: 'static' }` — the deprecated `ensureInfiniteQueryData`.\n\t* @param options - The infinite query options, including the `queryKey`, the `queryFn`, and the\n\t* `initialPageParam`.\n\t* @returns A promise that resolves to the {@link InfiniteData}, or to the result of `select` if\n\t* provided. It rejects with the error from the fetch or from `select`.\n\t* @example\n\t* ```ts\n\t* try {\n\t*   const data = await queryClient.infiniteQuery({ queryKey, queryFn, initialPageParam: 0 })\n\t*   console.log(data.pages)\n\t* } catch (error) {\n\t*   console.log(error)\n\t* }\n\t* ```\n\t*/\n\tinfiniteQuery(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.query(options);\n\t}\n\t/**\n\t* Fetches and caches an infinite query, or returns its cached data if it isn't stale.\n\t* @param options - The infinite query options, including the `queryKey`, the `queryFn`, and the\n\t* `initialPageParam`.\n\t* @returns A promise that resolves to the cached or fetched {@link InfiniteData}, or rejects with\n\t* the fetch error.\n\t* @deprecated Use queryClient.infiniteQuery(options) instead. This method will be removed in the next major version.\n\t*/\n\tfetchInfiniteQuery(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.fetchQuery(options);\n\t}\n\t/**\n\t* Fetches and caches an infinite query like {@link QueryClient#fetchInfiniteQuery}, but ignores\n\t* the result and any error.\n\t* @param options - The infinite query options, including the `queryKey`, the `queryFn`, and the\n\t* `initialPageParam`.\n\t* @returns A promise that resolves once the fetch settles. It never rejects.\n\t* @deprecated Use queryClient.infiniteQuery(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n\t*/\n\tprefetchInfiniteQuery(options) {\n\t\treturn this.fetchInfiniteQuery(options).then(noop).catch(noop);\n\t}\n\t/**\n\t* Returns the cached data of an infinite query, or fetches it if there is none. With\n\t* `revalidateIfStale`, stale cached data is also refetched in the background.\n\t* @param options - The infinite query options. If the query has no cached data yet, it is fetched\n\t* with these options.\n\t* @returns A promise that resolves to the cached {@link InfiniteData}, or to the fetched data if\n\t* nothing was cached yet.\n\t* @deprecated Use queryClient.infiniteQuery({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n\t*/\n\tensureInfiniteQueryData(options) {\n\t\toptions._type = \"infinite\";\n\t\treturn this.ensureQueryData(options);\n\t}\n\t/**\n\t* Resumes mutations that were paused because there was no network connection. Does nothing\n\t* (resolving immediately) if the client is currently offline.\n\t* @returns A promise that resolves once the resumed mutations have settled.\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* await queryClient.resumePausedMutations()\n\t* ```\n\t*/\n\tresumePausedMutations() {\n\t\tif (onlineManager.isOnline()) return this.#mutationCache.resumePausedMutations();\n\t\treturn Promise.resolve();\n\t}\n\t/**\n\t* Returns the query cache this client is connected to.\n\t* @returns The {@link QueryCache} instance.\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* const queryCache = queryClient.getQueryCache()\n\t* const queries = queryCache.findAll({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tgetQueryCache() {\n\t\treturn this.#queryCache;\n\t}\n\t/**\n\t* Returns the mutation cache this client is connected to.\n\t* @returns The {@link MutationCache} instance.\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* const mutationCache = queryClient.getMutationCache()\n\t* const mutations = mutationCache.findAll({ status: 'pending' })\n\t* ```\n\t*/\n\tgetMutationCache() {\n\t\treturn this.#mutationCache;\n\t}\n\t/**\n\t* Returns the default options that were set when creating the client, or via\n\t* {@link QueryClient#setDefaultOptions}.\n\t* @returns The client's current default options.\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* const defaultOptions = queryClient.getDefaultOptions()\n\t* ```\n\t*/\n\tgetDefaultOptions() {\n\t\treturn this.#defaultOptions;\n\t}\n\t/**\n\t* Dynamically sets the default options for this client, overwriting any previously defined\n\t* default options.\n\t* @param options - The new default options for queries and mutations.\n\t* @see {@link QueryClient#getDefaultOptions}\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* queryClient.setDefaultOptions({\n\t*   queries: {\n\t*     staleTime: Infinity,\n\t*   },\n\t* })\n\t* ```\n\t*/\n\tsetDefaultOptions(options) {\n\t\tthis.#defaultOptions = options;\n\t}\n\t/**\n\t* Sets default options for queries whose query key partially matches the given `queryKey`.\n\t*\n\t* If several registered query defaults match a given query key, they are merged together in\n\t* registration order by {@link QueryClient#getQueryDefaults}, so register defaults from the\n\t* most generic key to the least generic one — more specific defaults should be registered\n\t* after more generic ones so they take precedence.\n\t* @param queryKey - The query key that query keys are partially matched against.\n\t* @param options - The default options applied to matching queries.\n\t* @example\n\t* ```ts\n\t* queryClient.setQueryDefaults(['posts'], { queryFn: fetchPosts })\n\t*\n\t* await queryClient.query({ queryKey: ['posts'] })\n\t* ```\n\t*/\n\tsetQueryDefaults(queryKey, options) {\n\t\tthis.#queryDefaults.set(hashKey(queryKey), {\n\t\t\tqueryKey,\n\t\t\tdefaultOptions: options\n\t\t});\n\t}\n\t/**\n\t* Returns the default options registered for queries whose query key partially matches the\n\t* given `queryKey`, via {@link QueryClient#setQueryDefaults}. If multiple registered defaults\n\t* match, they are merged together in registration order.\n\t* @param queryKey - The query key to look up registered defaults for.\n\t* @returns The merged default options of every registration that matches, or an empty object if\n\t* none match.\n\t* @example\n\t* ```ts\n\t* const defaultOptions = queryClient.getQueryDefaults(['posts'])\n\t* ```\n\t*/\n\tgetQueryDefaults(queryKey) {\n\t\tconst defaults = [...this.#queryDefaults.values()];\n\t\tconst result = {};\n\t\tdefaults.forEach((queryDefault) => {\n\t\t\tif (partialMatchKey(queryKey, queryDefault.queryKey)) Object.assign(result, queryDefault.defaultOptions);\n\t\t});\n\t\treturn result;\n\t}\n\t/**\n\t* Sets default options for mutations whose mutation key partially matches the given\n\t* `mutationKey`. As with {@link QueryClient#setQueryDefaults}, the order of registration\n\t* matters when several registered defaults match the same mutation key.\n\t* @param mutationKey - The mutation key that mutation keys are partially matched against.\n\t* @param options - The default options applied to matching mutations.\n\t* @see {@link QueryClient#getMutationDefaults}\n\t* @example\n\t* ```ts\n\t* queryClient.setMutationDefaults(['addPost'], { mutationFn: addPost })\n\t* ```\n\t*/\n\tsetMutationDefaults(mutationKey, options) {\n\t\tthis.#mutationDefaults.set(hashKey(mutationKey), {\n\t\t\tmutationKey,\n\t\t\tdefaultOptions: options\n\t\t});\n\t}\n\t/**\n\t* Returns the default options registered for mutations whose mutation key partially matches\n\t* the given `mutationKey`, via {@link QueryClient#setMutationDefaults}. If multiple registered\n\t* defaults match, they are merged together in registration order.\n\t* @param mutationKey - The mutation key to look up registered defaults for.\n\t* @returns The merged default options of every registration that matches, or an empty object if\n\t* none match.\n\t* @example\n\t* ```ts\n\t* const defaultOptions = queryClient.getMutationDefaults(['addPost'])\n\t* ```\n\t*/\n\tgetMutationDefaults(mutationKey) {\n\t\tconst defaults = [...this.#mutationDefaults.values()];\n\t\tconst result = {};\n\t\tdefaults.forEach((queryDefault) => {\n\t\t\tif (partialMatchKey(mutationKey, queryDefault.mutationKey)) Object.assign(result, queryDefault.defaultOptions);\n\t\t});\n\t\treturn result;\n\t}\n\t/**\n\t* Called by framework adapters (e.g. inside `useQuery`) to resolve the options passed by the\n\t* caller into their final, defaulted form: merging the client's own `defaultOptions.queries`,\n\t* then `queryClient.setQueryDefaults` for the given `queryKey`, then the caller's options on\n\t* top. A no-op if the options are already defaulted (`_defaulted: true`).\n\t* @param options - The query options passed by the caller.\n\t* @returns The defaulted options, with `queryHash` and dependent defaults (e.g.\n\t* `refetchOnReconnect`) filled in.\n\t*/\n\tdefaultQueryOptions(options) {\n\t\tif (options._defaulted) return options;\n\t\tconst defaultedOptions = {\n\t\t\t...this.#defaultOptions.queries,\n\t\t\t...this.getQueryDefaults(options.queryKey),\n\t\t\t...options,\n\t\t\t_defaulted: true\n\t\t};\n\t\tif (!defaultedOptions.queryHash) defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n\t\tif (defaultedOptions.refetchOnReconnect === void 0) defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n\t\tif (defaultedOptions.throwOnError === void 0) defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n\t\tif (!defaultedOptions.networkMode && defaultedOptions.persister) defaultedOptions.networkMode = \"offlineFirst\";\n\t\tif (defaultedOptions.queryFn === skipToken) defaultedOptions.enabled = false;\n\t\treturn defaultedOptions;\n\t}\n\t/**\n\t* The mutation counterpart of {@link QueryClient#defaultQueryOptions}. Called by framework\n\t* adapters (e.g. inside `useMutation`) to merge the client's `defaultOptions.mutations`, then\n\t* `queryClient.setMutationDefaults` for the given `mutationKey`, then the caller's options on\n\t* top. A no-op if the options are already defaulted (`_defaulted: true`).\n\t* @param options - The mutation options passed by the caller.\n\t* @returns The defaulted options.\n\t*/\n\tdefaultMutationOptions(options) {\n\t\tif (options?._defaulted) return options;\n\t\treturn {\n\t\t\t...this.#defaultOptions.mutations,\n\t\t\t...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n\t\t\t...options,\n\t\t\t_defaulted: true\n\t\t};\n\t}\n\t/**\n\t* Clears both the query cache and the mutation cache this client is connected to.\n\t* @example\n\t* ```ts\n\t* import { QueryClient } from '@tanstack/query-core'\n\t*\n\t* const queryClient = new QueryClient()\n\t* queryClient.clear()\n\t* ```\n\t*/\n\tclear() {\n\t\tthis.#queryCache.clear();\n\t\tthis.#mutationCache.clear();\n\t}\n};\n//#endregion\nexport { QueryClient };\n\n//# sourceMappingURL=queryClient.js.map","\"use client\";\nimport * as React from \"react\";\n//#region src/IsRestoringProvider.ts\nconst IsRestoringContext = React.createContext(false);\n/**\n* If you are using `PersistQueryClientProvider`, you can also use the `useIsRestoring` hook alongside it to\n* check if a restore is currently in progress. `useQuery` and friends also check this internally to avoid\n* race conditions between the restore and mounting queries.\n* @returns `true` while a persisted client is being restored, `false` otherwise.\n*/\nconst useIsRestoring = () => React.useContext(IsRestoringContext);\n/**\n* The Provider that `PersistQueryClientProvider` uses to signal whether a persisted client is currently\n* being restored, read by `useIsRestoring`.\n*/\nconst IsRestoringProvider = IsRestoringContext.Provider;\n//#endregion\nexport { IsRestoringProvider, useIsRestoring };\n\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/QueryErrorResetBoundary.tsx\n/**\n* Creates the value shared through the boundary's context, which tracks whether a reset was\n* requested.\n* @returns The `clearReset`, `isReset`, and `reset` functions of the boundary.\n*/\nfunction createValue() {\n\tlet isReset = false;\n\treturn {\n\t\t/**\n\t\t* Clears the reset state, so queries know not to try again until the boundary is reset again.\n\t\t*/\n\t\tclearReset: () => {\n\t\t\tisReset = false;\n\t\t},\n\t\t/**\n\t\t* Resets any query errors within the boundary, so queries know they can try again.\n\t\t*/\n\t\treset: () => {\n\t\t\tisReset = true;\n\t\t},\n\t\t/**\n\t\t* Returns whether the boundary has been reset and not yet cleared.\n\t\t* @returns `true` if the boundary has been reset and not yet cleared.\n\t\t*/\n\t\tisReset: () => {\n\t\t\treturn isReset;\n\t\t}\n\t};\n}\nconst QueryErrorResetBoundaryContext = React.createContext(createValue());\n/**\n* This hook will reset any query errors within the closest `QueryErrorResetBoundary`. If there is no boundary\n* defined it will reset them globally.\n* @returns The boundary's {@link QueryErrorResetBoundaryValue}.\n* @example\n* ```tsx\n* import { ErrorBoundary } from 'react-error-boundary'\n* import { useQueryErrorResetBoundary } from '@tanstack/react-query'\n*\n* function App({ children }: { children: React.ReactNode }) {\n*   const { reset } = useQueryErrorResetBoundary()\n*\n*   return (\n*     <ErrorBoundary\n*       onReset={reset}\n*       fallbackRender={({ resetErrorBoundary }) => (\n*         <div>\n*           There was an error!\n*           <button onClick={() => resetErrorBoundary()}>Try again</button>\n*         </div>\n*       )}\n*     >\n*       {children}\n*     </ErrorBoundary>\n*   )\n* }\n* ```\n*/\nconst useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\n/**\n* When using `suspense` or `throwOnError` in your queries, you need a way to let queries know that you want to\n* try again when re-rendering after some error occurred. With the `QueryErrorResetBoundary` component you can\n* reset any query errors within the boundaries of the component.\n* @param props - The `children` to render.\n* @returns The `children`, rendered as-is, or called with the boundary's {@link QueryErrorResetBoundaryValue}\n* if `children` is a function.\n* @example\n* ```tsx\n* import { ErrorBoundary } from 'react-error-boundary'\n* import { QueryErrorResetBoundary } from '@tanstack/react-query'\n*\n* function App() {\n*   return (\n*     <QueryErrorResetBoundary>\n*       {({ reset }) => (\n*         <ErrorBoundary\n*           onReset={reset}\n*           fallbackRender={({ resetErrorBoundary }) => (\n*             <div>\n*               There was an error!\n*               <button onClick={() => resetErrorBoundary()}>Try again</button>\n*             </div>\n*           )}\n*         >\n*           <Page />\n*         </ErrorBoundary>\n*       )}\n*     </QueryErrorResetBoundary>\n*   )\n* }\n* ```\n*/\nconst QueryErrorResetBoundary = ({ children }) => {\n\tconst [value] = React.useState(() => createValue());\n\treturn /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, {\n\t\tvalue,\n\t\tchildren: typeof children === \"function\" ? children(value) : children\n\t});\n};\n//#endregion\nexport { QueryErrorResetBoundary, useQueryErrorResetBoundary };\n\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\n//#region src/errorBoundaryUtils.ts\n/**\n* Turns off `retryOnMount` for a query that throws its errors (with `suspense` or `throwOnError`),\n* unless the error boundary has been reset, so a remount doesn't retry the failed query before the\n* user resets the boundary. Mutates the options.\n* @param options - The defaulted query options to adjust.\n* @param errorResetBoundary - The value of the nearest `QueryErrorResetBoundary`.\n* @param query - The query, used to evaluate a `throwOnError` function against its error.\n*/\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n\tconst throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n\tif (options.suspense || throwOnError) {\n\t\tif (!errorResetBoundary.isReset()) options.retryOnMount = false;\n\t}\n};\n/**\n* Clears the reset state of the error boundary after the component mounts, so later errors are\n* thrown to the boundary again.\n* @param errorResetBoundary - The value of the nearest `QueryErrorResetBoundary`.\n*/\nconst useClearResetErrorBoundary = (errorResetBoundary) => {\n\tReact.useEffect(() => {\n\t\terrorResetBoundary.clearReset();\n\t}, [errorResetBoundary]);\n};\n/**\n* Checks whether the query error should be thrown to the nearest error boundary: the query errored\n* and isn't fetching, the boundary hasn't been reset, and either `suspense` is enabled with no data\n* or `throwOnError` says so.\n* @param params - The observer `result`, the `errorResetBoundary`, the `throwOnError` option, the\n* `query`, and the `suspense` option.\n* @returns `true` if the error should be thrown.\n*/\nconst getHasError = ({ result, errorResetBoundary, throwOnError, query, suspense }) => {\n\treturn result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\n//#endregion\nexport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary };\n\n//# sourceMappingURL=errorBoundaryUtils.js.map","//#region src/suspense.ts\n/**\n* The default `throwOnError` of the suspense hooks: throws the error to the nearest error boundary\n* only if the query has no data to show.\n* @param _error - The error of the query. Unused.\n* @param query - The query that errored.\n* @returns `true` if the query has no data.\n*/\nconst defaultThrowOnError = (_error, query) => query.state.data === void 0;\n/**\n* Raises `staleTime` and a numeric `gcTime` to at least 1000ms when `suspense` is enabled, so a\n* component that remounts after suspending doesn't refetch right away or find the query garbage\n* collected. A `'static'` `staleTime` is kept as is. Mutates the options.\n* @param defaultedOptions - The defaulted query options to adjust.\n*/\nconst ensureSuspenseTimers = (defaultedOptions) => {\n\tif (defaultedOptions.suspense) {\n\t\tconst MIN_SUSPENSE_TIME_MS = 1e3;\n\t\tconst clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n\t\tconst originalStaleTime = defaultedOptions.staleTime;\n\t\tdefaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n\t\tif (typeof defaultedOptions.gcTime === \"number\") defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, MIN_SUSPENSE_TIME_MS);\n\t}\n};\n/**\n* Checks whether a query should suspend: `suspense` is enabled and the result is still `pending`.\n* @param defaultedOptions - The defaulted query options, if any.\n* @param result - The current result of the observer.\n* @returns `true` if the component should suspend.\n*/\nconst shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\n/**\n* Fetches the query for a suspending component, without affecting the observer's own result. If\n* the fetch fails, the reset state of the error boundary is cleared, so the error is thrown to it.\n* @param defaultedOptions - The defaulted query options to fetch with.\n* @param observer - The observer of the query.\n* @param errorResetBoundary - The value of the nearest `QueryErrorResetBoundary`.\n* @returns A promise that resolves once the fetch settles. It never rejects.\n*/\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n\terrorResetBoundary.clearReset();\n});\n//#endregion\nexport { defaultThrowOnError, ensureSuspenseTimers, fetchOptimistic, shouldSuspend };\n\n//# sourceMappingURL=suspense.js.map","\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary } from \"./errorBoundaryUtils.js\";\nimport { ensureSuspenseTimers, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nimport * as React from \"react\";\nimport { noop, notifyManager } from \"@tanstack/query-core\";\n//#region src/useBaseQuery.ts\n/**\n* Base implementation shared by `useQuery`, `useInfiniteQuery`, `useSuspenseQuery`, and\n* `useSuspenseInfiniteQuery`.\n* @param options - The options passed to the calling hook.\n* @param Observer - The observer class from query-core (`QueryObserver` or\n* `InfiniteQueryObserver`).\n* @param queryClient - Use this to use a custom `QueryClient`. Otherwise, the one from the nearest\n* context will be used.\n* @returns The query result, tracking which properties are read unless `notifyOnChangeProps` is\n* set.\n* @throws {Error} If `options` is not an object (outside production), or the query error when it should be\n* thrown to the nearest error boundary (see `throwOnError`). While suspending, it throws a promise instead.\n*/\nfunction useBaseQuery(options, Observer, queryClient) {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (typeof options !== \"object\" || Array.isArray(options)) throw new Error(\"Bad argument type. Starting with v5, only the \\\"Object\\\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object\");\n\t}\n\tconst isRestoring = useIsRestoring();\n\tconst errorResetBoundary = useQueryErrorResetBoundary();\n\tconst client = useQueryClient(queryClient);\n\tconst defaultedOptions = client.defaultQueryOptions(options);\n\tconst query = client.getQueryCache().get(defaultedOptions.queryHash);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif (!defaultedOptions.queryFn) console.error(`[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`);\n\t}\n\tconst subscribed = options.subscribed !== false;\n\tdefaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n\tensureSuspenseTimers(defaultedOptions);\n\tensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n\tuseClearResetErrorBoundary(errorResetBoundary);\n\tconst [observer] = React.useState(() => new Observer(client, defaultedOptions));\n\tconst result = observer.getOptimisticResult(defaultedOptions);\n\tconst shouldSubscribe = !isRestoring && subscribed;\n\tReact.useSyncExternalStore(React.useCallback((onStoreChange) => {\n\t\tconst unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n\t\tobserver.updateResult();\n\t\treturn unsubscribe;\n\t}, [observer, shouldSubscribe]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tReact.useEffect(() => {\n\t\tobserver.setOptions(defaultedOptions);\n\t}, [defaultedOptions, observer]);\n\tif (shouldSuspend(defaultedOptions, result)) throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n\tif (getHasError({\n\t\tresult,\n\t\terrorResetBoundary,\n\t\tthrowOnError: defaultedOptions.throwOnError,\n\t\tquery,\n\t\tsuspense: defaultedOptions.suspense\n\t})) throw result.error;\n\treturn !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n//#endregion\nexport { useBaseQuery };\n\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nimport { QueryObserver } from \"@tanstack/query-core\";\n//#region src/useQuery.ts\nfunction useQuery(options, queryClient) {\n\treturn useBaseQuery(options, QueryObserver, queryClient);\n}\n//#endregion\nexport { useQuery };\n\n//# sourceMappingURL=useQuery.js.map","\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport * as React from \"react\";\nimport { MutationObserver, noop, notifyManager, shouldThrowError } from \"@tanstack/query-core\";\n//#region src/useMutation.ts\n/**\n* Unlike queries, mutations are typically used to create/update/delete data or perform server side-effects.\n* `useMutation` is the hook for that.\n* @param options - The {@link UseMutationOptions} to use — everything you can pass to `useMutation`.\n* @param queryClient - Use this to use a custom `QueryClient`. Otherwise, the one from the nearest context will\n* be used.\n* @returns `mutate`/`mutateAsync` also accept per-call `onSuccess`/`onError`/`onSettled` callbacks as a second\n* argument, useful for triggering call-site side effects (e.g. navigation) without coupling them to the shared\n* mutation definition. Hook-level callbacks (passed to `options`) fire for every mutation; per-call callbacks\n* fire only for the latest call you've made, and only while the component is still mounted — unmounting before\n* the mutation settles removes the subscription and prevents them from firing.\n* @throws {Error} The mutation error, when `throwOnError` is `true` or returns `true` for it, so that it is\n* thrown to the nearest error boundary.\n* @see {@link mutationOptions} to share these options across multiple `useMutation` call sites, or to look\n* the mutation up elsewhere via its `mutationKey` (e.g. with `useMutationState`).\n* @example\n* ```tsx\n* import { useMutation, useQueryClient } from '@tanstack/react-query'\n*\n* function AddTodo() {\n*   const queryClient = useQueryClient()\n*\n*   const addMutation = useMutation({\n*     mutationFn: addTodo,\n*     onSuccess: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),\n*   })\n*\n*   return (\n*     <button\n*       onClick={() =>\n*         addMutation.mutate('Item', {\n*           onError: (error) => console.error('Failed to add item:', error),\n*         })\n*       }\n*     >\n*       Add\n*     </button>\n*   )\n* }\n* ```\n* @example\n* Rendering the mutation's own state, rather than just firing it off:\n* ```tsx\n* import { useMutation, useQueryClient } from '@tanstack/react-query'\n*\n* function AddTodo() {\n*   const queryClient = useQueryClient()\n*\n*   const addMutation = useMutation({\n*     mutationFn: addTodo,\n*     onSuccess: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),\n*   })\n*\n*   return (\n*     <div>\n*       {addMutation.isPending ? (\n*         'Adding todo...'\n*       ) : (\n*         <>\n*           {addMutation.isError ? (\n*             <div>An error occurred: {addMutation.error.message}</div>\n*           ) : null}\n*           <button onClick={() => addMutation.mutate('Item')}>Add</button>\n*         </>\n*       )}\n*     </div>\n*   )\n* }\n* ```\n* @example\n* Optimistic update via `onMutate`, rolling back on `onError`:\n* ```tsx\n* import { useMutation, useQueryClient } from '@tanstack/react-query'\n*\n* function AddTodo() {\n*   const queryClient = useQueryClient()\n*\n*   const addMutation = useMutation({\n*     mutationFn: addTodo,\n*     onMutate: async (newTodo) => {\n*       await queryClient.cancelQueries({ queryKey: ['todos'] })\n*       const previousTodos = queryClient.getQueryData<Array<string>>(['todos'])\n*\n*       queryClient.setQueryData<Array<string>>(['todos'], (old) => [\n*         ...(old ?? []),\n*         newTodo,\n*       ])\n*\n*       // Passed to `onError` as `onMutateResult` if the mutation fails.\n*       return { previousTodos }\n*     },\n*     onError: (_err, _newTodo, onMutateResult) => {\n*       queryClient.setQueryData(['todos'], onMutateResult?.previousTodos)\n*     },\n*     onSettled: () => {\n*       queryClient.invalidateQueries({ queryKey: ['todos'] })\n*     },\n*   })\n*\n*   return (\n*     <button onClick={() => addMutation.mutate('Item')}>Add</button>\n*   )\n* }\n* ```\n* @example\n* Callbacks passed per call to `mutate` only fire for the last call — `mutateAsync` gives you a\n* promise per call instead, so you can wait for all of them when they succeed:\n* ```tsx\n* import { useMutation, useQueryClient } from '@tanstack/react-query'\n*\n* function AddTodos() {\n*   const queryClient = useQueryClient()\n*\n*   const addMutation = useMutation({\n*     mutationFn: addTodo,\n*     onSuccess: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),\n*   })\n*\n*   async function handleAddAll(todos: Array<string>) {\n*     try {\n*       await Promise.all(todos.map((todo) => addMutation.mutateAsync(todo)))\n*     } catch (error) {\n*       console.error('Failed to add todos:', error)\n*     }\n*   }\n*\n*   return (\n*     <button onClick={() => handleAddAll(['Todo 1', 'Todo 2', 'Todo 3'])}>\n*       Add all\n*     </button>\n*   )\n* }\n* ```\n* @example\n* If some of the mutations above can fail independently of the others, and you want to know which ones\n* did — rather than losing that information the moment the first one rejects — swap `Promise.all` for\n* `Promise.allSettled`:\n* ```tsx\n* import { useMutation, useQueryClient } from '@tanstack/react-query'\n*\n* function AddTodos() {\n*   const queryClient = useQueryClient()\n*\n*   const addMutation = useMutation({\n*     mutationFn: addTodo,\n*     onSuccess: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),\n*   })\n*\n*   async function handleAddAll(todos: Array<string>) {\n*     const addResults = await Promise.allSettled(\n*       todos.map((todo) => addMutation.mutateAsync(todo)),\n*     )\n*\n*     addResults.forEach((addResult, index) => {\n*       if (addResult.status === 'rejected') {\n*         console.error(`Failed to add \"${todos[index]}\":`, addResult.reason)\n*       }\n*     })\n*   }\n*\n*   return (\n*     <button onClick={() => handleAddAll(['Todo 1', 'Todo 2', 'Todo 3'])}>\n*       Add all\n*     </button>\n*   )\n* }\n* ```\n*/\nfunction useMutation(options, queryClient) {\n\tconst client = useQueryClient(queryClient);\n\tconst [observer] = React.useState(() => new MutationObserver(client, options));\n\tReact.useEffect(() => {\n\t\tobserver.setOptions(options);\n\t}, [observer, options]);\n\tconst result = React.useSyncExternalStore(React.useCallback((onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)), [observer]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tconst mutate = React.useCallback((...args) => {\n\t\tobserver.mutate(args[0], args[1]).catch(noop);\n\t}, [observer]);\n\tif (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) throw result.error;\n\treturn {\n\t\t...result,\n\t\tmutate,\n\t\tmutateAsync: result.mutate\n\t};\n}\n//#endregion\nexport { useMutation };\n\n//# sourceMappingURL=useMutation.js.map","/**\n * react-router v7.18.4\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\n\n// lib/router/url.ts\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|[\\\\/]{2})/i;\nvar PROTOCOL_RELATIVE_URL_REGEX = /^[\\\\/]{2}/;\nfunction normalizeProtocolRelativeUrl(url, protocol) {\n  return protocol + url.replace(/\\\\/g, \"/\");\n}\n\n// lib/router/history.ts\nvar Action = /* @__PURE__ */ ((Action2) => {\n  Action2[\"Pop\"] = \"POP\";\n  Action2[\"Push\"] = \"PUSH\";\n  Action2[\"Replace\"] = \"REPLACE\";\n  return Action2;\n})(Action || {});\nvar PopStateEventType = \"popstate\";\nfunction isLocation(obj) {\n  return typeof obj === \"object\" && obj != null && \"pathname\" in obj && \"search\" in obj && \"hash\" in obj && \"state\" in obj && \"key\" in obj;\n}\nfunction createMemoryHistory(options = {}) {\n  let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n  let entries;\n  entries = initialEntries.map(\n    (entry, index2) => createMemoryLocation(\n      entry,\n      typeof entry === \"string\" ? null : entry.state,\n      index2 === 0 ? \"default\" : void 0,\n      typeof entry === \"string\" ? void 0 : entry.mask\n    )\n  );\n  let index = clampIndex(\n    initialIndex == null ? entries.length - 1 : initialIndex\n  );\n  let action = \"POP\" /* Pop */;\n  let listener = null;\n  function clampIndex(n) {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation() {\n    return entries[index];\n  }\n  function createMemoryLocation(to, state = null, key, mask) {\n    let location = createLocation(\n      entries ? getCurrentLocation().pathname : \"/\",\n      to,\n      state,\n      key,\n      mask\n    );\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in memory history: ${JSON.stringify(\n        to\n      )}`\n    );\n    return location;\n  }\n  function createHref2(to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  let history = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref: createHref2,\n    createURL(to) {\n      return new URL(createHref2(to), \"http://localhost\");\n    },\n    encodeLocation(to) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\"\n      };\n    },\n    push(to, state) {\n      action = \"PUSH\" /* Push */;\n      let nextLocation = isLocation(to) ? to : createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 1 });\n      }\n    },\n    replace(to, state) {\n      action = \"REPLACE\" /* Replace */;\n      let nextLocation = isLocation(to) ? to : createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 0 });\n      }\n    },\n    go(delta) {\n      action = \"POP\" /* Pop */;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({ action, location: nextLocation, delta });\n      }\n    },\n    listen(fn) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    }\n  };\n  return history;\n}\nfunction createBrowserHistory(options = {}) {\n  function createBrowserLocation(window2, globalHistory) {\n    let maskedLocation = globalHistory.state?.masked;\n    let { pathname, search, hash } = maskedLocation || window2.location;\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\",\n      maskedLocation ? {\n        pathname: window2.location.pathname,\n        search: window2.location.search,\n        hash: window2.location.hash\n      } : void 0\n    );\n  }\n  function createBrowserHref(window2, to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  return getUrlBasedHistory(\n    createBrowserLocation,\n    createBrowserHref,\n    null,\n    options\n  );\n}\nfunction createHashHistory(options = {}) {\n  function createHashLocation(window2, globalHistory) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\"\n    } = parsePath(window2.location.hash.substring(1));\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\"\n    );\n  }\n  function createHashHref(window2, to) {\n    let base = window2.document.querySelector(\"base\");\n    let href = \"\";\n    if (base && base.getAttribute(\"href\")) {\n      let url = window2.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n  function validateHashLocation(location, to) {\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in hash history.push(${JSON.stringify(\n        to\n      )})`\n    );\n  }\n  return getUrlBasedHistory(\n    createHashLocation,\n    createHashHref,\n    validateHashLocation,\n    options\n  );\n}\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\nfunction warning(cond, message) {\n  if (!cond) {\n    if (typeof console !== \"undefined\") console.warn(message);\n    try {\n      throw new Error(message);\n    } catch (e) {\n    }\n  }\n}\nfunction createKey() {\n  return Math.random().toString(36).substring(2, 10);\n}\nfunction getHistoryState(location, index) {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index,\n    masked: location.mask ? {\n      pathname: location.pathname,\n      search: location.search,\n      hash: location.hash\n    } : void 0\n  };\n}\nfunction createLocation(current, to, state = null, key, mask) {\n  let location = {\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\",\n    ...typeof to === \"string\" ? parsePath(to) : to,\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: to && to.key || key || createKey(),\n    mask\n  };\n  return location;\n}\nfunction createPath({\n  pathname = \"/\",\n  search = \"\",\n  hash = \"\"\n}) {\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\nfunction parsePath(path) {\n  let parsedPath = {};\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substring(hashIndex);\n      path = path.substring(0, hashIndex);\n    }\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substring(searchIndex);\n      path = path.substring(0, searchIndex);\n    }\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n  return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref2, validateLocation, options = {}) {\n  let { window: window2 = document.defaultView, v5Compat = false } = options;\n  let globalHistory = window2.history;\n  let action = \"POP\" /* Pop */;\n  let listener = null;\n  let index = getIndex();\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n  }\n  function getIndex() {\n    let state = globalHistory.state || { idx: null };\n    return state.idx;\n  }\n  function handlePop() {\n    action = \"POP\" /* Pop */;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({ action, location: history.location, delta });\n    }\n  }\n  function push(to, state) {\n    action = \"PUSH\" /* Push */;\n    let location = isLocation(to) ? to : createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location.mask || location);\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      window2.location.assign(url);\n    }\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 1 });\n    }\n  }\n  function replace2(to, state) {\n    action = \"REPLACE\" /* Replace */;\n    let location = isLocation(to) ? to : createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location.mask || location);\n    globalHistory.replaceState(historyState, \"\", url);\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 0 });\n    }\n  }\n  function createURL(to) {\n    return createBrowserURLImpl(window2, to);\n  }\n  let history = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window2, globalHistory);\n    },\n    listen(fn) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window2.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n      return () => {\n        window2.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref2(window2, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash\n      };\n    },\n    push,\n    replace: replace2,\n    go(n) {\n      return globalHistory.go(n);\n    }\n  };\n  return history;\n}\nfunction createBrowserURLImpl(windowImpl, to, isAbsolute = false) {\n  let base = \"http://localhost\";\n  if (windowImpl) {\n    base = windowImpl.location.origin !== \"null\" ? windowImpl.location.origin : windowImpl.location.href;\n  }\n  invariant(base, \"No window.location.(origin|href) available to create URL\");\n  let href = typeof to === \"string\" ? to : createPath(to);\n  href = href.replace(/ $/, \"%20\");\n  if (!isAbsolute && PROTOCOL_RELATIVE_URL_REGEX.test(href)) {\n    href = base + href;\n  }\n  return new URL(href, base);\n}\n\n// lib/router/utils.ts\nfunction createContext(defaultValue) {\n  return { defaultValue };\n}\nvar _map;\nvar RouterContextProvider = class {\n  /**\n   * Create a new `RouterContextProvider` instance\n   * @param init An optional initial context map to populate the provider with\n   */\n  constructor(init) {\n    __privateAdd(this, _map, /* @__PURE__ */ new Map());\n    if (init) {\n      for (let [context, value] of init) {\n        this.set(context, value);\n      }\n    }\n  }\n  /**\n   * Access a value from the context. If no value has been set for the context,\n   * it will return the context's `defaultValue` if provided, or throw an error\n   * if no `defaultValue` was set.\n   * @param context The context to get the value for\n   * @returns The value for the context, or the context's `defaultValue` if no\n   * value was set\n   */\n  get(context) {\n    if (__privateGet(this, _map).has(context)) {\n      return __privateGet(this, _map).get(context);\n    }\n    if (context.defaultValue !== void 0) {\n      return context.defaultValue;\n    }\n    throw new Error(\"No value found for context\");\n  }\n  /**\n   * Set a value for the context. If the context already has a value set, this\n   * will overwrite it.\n   *\n   * @param context The context to set the value for\n   * @param value The value to set for the context\n   * @returns {void}\n   */\n  set(context, value) {\n    __privateGet(this, _map).set(context, value);\n  }\n};\n_map = new WeakMap();\nvar unsupportedLazyRouteObjectKeys = /* @__PURE__ */ new Set([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"children\"\n]);\nfunction isUnsupportedLazyRouteObjectKey(key) {\n  return unsupportedLazyRouteObjectKeys.has(\n    key\n  );\n}\nvar unsupportedLazyRouteFunctionKeys = /* @__PURE__ */ new Set([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"middleware\",\n  \"children\"\n]);\nfunction isUnsupportedLazyRouteFunctionKey(key) {\n  return unsupportedLazyRouteFunctionKeys.has(\n    key\n  );\n}\nfunction isIndexRoute(route) {\n  return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath = [], manifest = {}, allowInPlaceMutations = false) {\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, String(index)];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(\n      route.index !== true || !route.children,\n      `Cannot specify children on an index route`\n    );\n    invariant(\n      allowInPlaceMutations || !manifest[id],\n      `Found a route id collision on id \"${id}\".  Route id's must be globally unique within Data Router usages`\n    );\n    if (isIndexRoute(route)) {\n      let indexRoute = {\n        ...route,\n        id\n      };\n      manifest[id] = mergeRouteUpdates(\n        indexRoute,\n        mapRouteProperties2(indexRoute)\n      );\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute = {\n        ...route,\n        id,\n        children: void 0\n      };\n      manifest[id] = mergeRouteUpdates(\n        pathOrLayoutRoute,\n        mapRouteProperties2(pathOrLayoutRoute)\n      );\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n          route.children,\n          mapRouteProperties2,\n          treePath,\n          manifest,\n          allowInPlaceMutations\n        );\n      }\n      return pathOrLayoutRoute;\n    }\n  });\n}\nfunction mergeRouteUpdates(route, updates) {\n  return Object.assign(route, {\n    ...updates,\n    ...typeof updates.lazy === \"object\" && updates.lazy != null ? {\n      lazy: {\n        ...route.lazy,\n        ...updates.lazy\n      }\n    } : {}\n  });\n}\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n  return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial, precomputedBranches) {\n  let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n  if (pathname == null) {\n    return null;\n  }\n  let branches = precomputedBranches ?? flattenAndRankRoutes(routes);\n  let matches = null;\n  let decoded = decodePath(pathname);\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    matches = matchRouteBranch(\n      branches[i],\n      decoded,\n      allowPartial\n    );\n  }\n  return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n  let { route, pathname, params } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    loaderData: loaderData[route.id],\n    handle: route.handle\n  };\n}\nfunction flattenAndRankRoutes(routes) {\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n  return branches;\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\", _hasParentOptionalSegments = false) {\n  let flattenRoute = (route, index, hasParentOptionalSegments = _hasParentOptionalSegments, relativePath) => {\n    let meta = {\n      relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route\n    };\n    if (meta.relativePath.startsWith(\"/\")) {\n      if (!meta.relativePath.startsWith(parentPath) && hasParentOptionalSegments) {\n        return;\n      }\n      invariant(\n        meta.relativePath.startsWith(parentPath),\n        `Absolute route path \"${meta.relativePath}\" nested under path \"${parentPath}\" is not valid. An absolute child route path must start with the combined path of all its parent routes.`\n      );\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`\n      );\n      flattenRoutes(\n        route.children,\n        branches,\n        routesMeta,\n        path,\n        hasParentOptionalSegments\n      );\n    }\n    if (route.path == null && !route.index) {\n      return;\n    }\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta: routesMeta.map((meta2, i) => {\n        let [matcher, params] = compilePath(\n          meta2.relativePath,\n          meta2.caseSensitive,\n          i === routesMeta.length - 1\n        );\n        return {\n          ...meta2,\n          matcher,\n          compiledParams: params\n        };\n      })\n    });\n  };\n  routes.forEach((route, index) => {\n    if (route.path === \"\" || !route.path?.includes(\"?\")) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, true, exploded);\n      }\n    }\n  });\n  return branches;\n}\nfunction explodeOptionalSegments(path) {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n  let [first, ...rest] = segments;\n  let isOptional = first.endsWith(\"?\");\n  let required = first.replace(/\\?$/, \"\");\n  if (rest.length === 0) {\n    return isOptional ? [required, \"\"] : [required];\n  }\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n  let result = [];\n  result.push(\n    ...restExploded.map(\n      (subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")\n    )\n  );\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n  return result.map(\n    (exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n  );\n}\nfunction rankRouteBranches(branches) {\n  branches.sort(\n    (a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(\n      a.routesMeta.map((meta) => meta.childrenIndex),\n      b.routesMeta.map((meta) => meta.childrenIndex)\n    )\n  );\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n  return segments.filter((s) => !isSplat(s)).reduce(\n    (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue),\n    initialScore\n  );\n}\nfunction compareIndexes(a, b) {\n  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n  return siblings ? (\n    // If two routes are siblings, we should try to match the earlier sibling\n    // first. This allows people to have fine-grained control over the matching\n    // behavior by simply putting routes with identical paths in the order they\n    // want them tried.\n    a[a.length - 1] - b[b.length - 1]\n  ) : (\n    // Otherwise, it doesn't really make sense to rank non-siblings by index,\n    // so they sort equally.\n    0\n  );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n  let { routesMeta } = branch;\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n    let pattern = {\n      path: meta.relativePath,\n      caseSensitive: meta.caseSensitive,\n      end\n    };\n    let match = (\n      // Use precomputed matcher if it exists\n      meta.matcher && meta.compiledParams ? matchPathImpl(\n        pattern,\n        remainingPathname,\n        meta.matcher,\n        meta.compiledParams\n      ) : matchPath(pattern, remainingPathname)\n    );\n    let route = meta.route;\n    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n      match = matchPath(\n        {\n          path: meta.relativePath,\n          caseSensitive: meta.caseSensitive,\n          end: false\n        },\n        remainingPathname\n      );\n    }\n    if (!match) {\n      return null;\n    }\n    Object.assign(matchedParams, match.params);\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(\n        joinPaths([matchedPathname, match.pathnameBase])\n      ),\n      route\n    });\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n  return matches;\n}\nfunction generatePath(originalPath, params = {}) {\n  let path = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(\n      false,\n      `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n    );\n    path = path.replace(/\\*$/, \"/*\");\n  }\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n  const stringify2 = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n  const segments = path.split(/\\/+/).map((segment, index, array) => {\n    const isLastSegment = index === array.length - 1;\n    if (isLastSegment && segment === \"*\") {\n      return stringify2(params[\"*\"]);\n    }\n    const keyMatch = segment.match(/^:([\\w-]+)(\\??)(.*)/);\n    if (keyMatch) {\n      const [, key, optional, suffix] = keyMatch;\n      let param = params[key];\n      invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n      return encodeURIComponent(stringify2(param)) + suffix;\n    }\n    return segment.replace(/\\?$/g, \"\");\n  }).filter((segment) => !!segment);\n  return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n  if (typeof pattern === \"string\") {\n    pattern = { path: pattern, caseSensitive: false, end: true };\n  }\n  let [matcher, compiledParams] = compilePath(\n    pattern.path,\n    pattern.caseSensitive,\n    pattern.end\n  );\n  return matchPathImpl(pattern, pathname, matcher, compiledParams);\n}\nfunction matchPathImpl(pattern, pathname, matcher, compiledParams) {\n  let match = pathname.match(matcher);\n  if (!match) return null;\n  let matchedPathname = match[0];\n  let pathnameBase = removeTrailingSlash(matchedPathname, 1);\n  let captureGroups = match.slice(1);\n  let params = compiledParams.reduce(\n    (memo2, { paramName, isOptional }, index) => {\n      if (paramName === \"*\") {\n        let splatValue = captureGroups[index] || \"\";\n        pathnameBase = removeTrailingSlash(\n          matchedPathname.slice(0, matchedPathname.length - splatValue.length),\n          1\n        );\n      }\n      const value = captureGroups[index];\n      if (isOptional && !value) {\n        memo2[paramName] = void 0;\n      } else {\n        memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n      }\n      return memo2;\n    },\n    {}\n  );\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern\n  };\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n  warning(\n    path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n    `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n  );\n  let params = [];\n  let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(\n    /\\/:([\\w-]+)(\\?)?/g,\n    (match, paramName, isOptional, index, str) => {\n      params.push({ paramName, isOptional: isOptional != null });\n      if (isOptional) {\n        let nextChar = str.charAt(index + match.length);\n        if (nextChar && nextChar !== \"/\") {\n          return \"/([^\\\\/]*)\";\n        }\n        return \"(?:/([^\\\\/]*))?\";\n      }\n      return \"/([^\\\\/]+)\";\n    }\n  ).replace(/\\/([\\w-]+)\\?(\\/|$)/g, \"(/$1)?$2\");\n  if (path.endsWith(\"*\")) {\n    params.push({ paramName: \"*\" });\n    regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n  } else if (end) {\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else {\n  }\n  let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n  return [matcher, params];\n}\nfunction decodePath(value) {\n  try {\n    return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n  } catch (error) {\n    warning(\n      false,\n      `The URL path \"${value}\" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`\n    );\n    return value;\n  }\n}\nfunction stripBasename(pathname, basename) {\n  if (basename === \"/\") return pathname;\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n  let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    return null;\n  }\n  return pathname.slice(startIndex) || \"/\";\n}\nfunction prependBasename({\n  basename,\n  pathname\n}) {\n  return pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n}\nvar isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);\nfunction resolvePath(to, fromPathname = \"/\") {\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\"\n  } = typeof to === \"string\" ? parsePath(to) : to;\n  let pathname;\n  if (toPathname) {\n    toPathname = removeDoubleSlashes(toPathname);\n    if (toPathname.startsWith(\"/\") || toPathname.startsWith(\"\\\\\")) {\n      pathname = resolvePathname(toPathname.substring(1), \"/\");\n    } else {\n      pathname = resolvePathname(toPathname, fromPathname);\n    }\n  } else {\n    pathname = fromPathname;\n  }\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash)\n  };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n  let segments = removeTrailingSlash(fromPathname).split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n  return `Cannot include a '${char}' character in a manually specified \\`to.${field}\\` field [${JSON.stringify(\n    path\n  )}].  Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n  return matches.filter(\n    (match, index) => index === 0 || match.route.path && match.route.path.length > 0\n  );\n}\nfunction getResolveToMatches(matches) {\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches.map(\n    (match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n  );\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n  let to;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = { ...toArg };\n    invariant(\n      !to.pathname || !to.pathname.includes(\"?\"),\n      getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n    );\n    invariant(\n      !to.pathname || !to.pathname.includes(\"#\"),\n      getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n    );\n    invariant(\n      !to.search || !to.search.includes(\"#\"),\n      getInvalidPathError(\"#\", \"search\", \"hash\", to)\n    );\n  }\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n  let from;\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n      to.pathname = toSegments.join(\"/\");\n    }\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n  let path = resolvePath(to, from);\n  let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n    path.pathname += \"/\";\n  }\n  return path;\n}\nvar removeDoubleSlashes = (path) => path.replace(/[\\\\/]{2,}/g, \"/\");\nvar joinPaths = (paths) => removeDoubleSlashes(paths.join(\"/\"));\nfunction removeTrailingSlash(path, minLength = 0) {\n  let end = path.length;\n  while (end > minLength && path.charCodeAt(end - 1) === 47) {\n    end--;\n  }\n  return end === path.length ? path : path.slice(0, end);\n}\nvar normalizePathname = (pathname) => removeTrailingSlash(pathname).replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n  constructor(data2, init) {\n    this.type = \"DataWithResponseInit\";\n    this.data = data2;\n    this.init = init || null;\n  }\n};\nfunction data(data2, init) {\n  return new DataWithResponseInit(\n    data2,\n    typeof init === \"number\" ? { status: init } : init\n  );\n}\nvar redirect = (url, init = 302) => {\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = { status: responseInit };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n  return new Response(null, { ...responseInit, headers });\n};\nvar redirectDocument = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\nvar replace = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Replace\", \"true\");\n  return response;\n};\nvar SUPPORTED_ERROR_TYPES = [\n  \"EvalError\",\n  \"RangeError\",\n  \"ReferenceError\",\n  \"SyntaxError\",\n  \"TypeError\",\n  \"URIError\"\n];\nvar ErrorResponseImpl = class {\n  constructor(status, statusText, data2, internal = false) {\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data2 instanceof Error) {\n      this.data = data2.toString();\n      this.error = data2;\n    } else {\n      this.data = data2;\n    }\n  }\n};\nfunction isRouteErrorResponse(error) {\n  return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\nfunction getRoutePattern(matches) {\n  let parts = matches.map((m) => m.route.path).filter(Boolean);\n  return joinPaths(parts) || \"/\";\n}\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nfunction parseToInfo(_to, basename) {\n  let to = _to;\n  if (typeof to !== \"string\" || !ABSOLUTE_URL_REGEX.test(to)) {\n    return {\n      absoluteURL: void 0,\n      isExternal: false,\n      to\n    };\n  }\n  let absoluteURL = to;\n  let isExternal = false;\n  if (isBrowser) {\n    try {\n      let currentUrl = new URL(window.location.href);\n      let targetUrl = PROTOCOL_RELATIVE_URL_REGEX.test(to) ? new URL(normalizeProtocolRelativeUrl(to, currentUrl.protocol)) : new URL(to);\n      let path = stripBasename(targetUrl.pathname, basename);\n      if (targetUrl.origin === currentUrl.origin && path != null) {\n        to = path + targetUrl.search + targetUrl.hash;\n      } else {\n        isExternal = true;\n      }\n    } catch (e) {\n      warning(\n        false,\n        `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`\n      );\n    }\n  }\n  return {\n    absoluteURL,\n    isExternal,\n    to\n  };\n}\n\n// lib/router/instrumentation.ts\nvar UninstrumentedSymbol = Symbol(\"Uninstrumented\");\nfunction getRouteInstrumentationUpdates(fns, route) {\n  let aggregated = {\n    lazy: [],\n    \"lazy.loader\": [],\n    \"lazy.action\": [],\n    \"lazy.middleware\": [],\n    middleware: [],\n    loader: [],\n    action: []\n  };\n  fns.forEach(\n    (fn) => fn({\n      id: route.id,\n      index: route.index,\n      path: route.path,\n      instrument(i) {\n        let keys = Object.keys(aggregated);\n        for (let key of keys) {\n          if (i[key]) {\n            aggregated[key].push(i[key]);\n          }\n        }\n      }\n    })\n  );\n  let updates = {};\n  if (typeof route.lazy === \"function\" && aggregated.lazy.length > 0) {\n    let instrumented = wrapImpl(aggregated.lazy, route.lazy, () => void 0);\n    if (instrumented) {\n      updates.lazy = instrumented;\n    }\n  }\n  if (typeof route.lazy === \"object\") {\n    let lazyObject = route.lazy;\n    [\"middleware\", \"loader\", \"action\"].forEach((key) => {\n      let lazyFn = lazyObject[key];\n      let instrumentations = aggregated[`lazy.${key}`];\n      if (typeof lazyFn === \"function\" && instrumentations.length > 0) {\n        let instrumented = wrapImpl(instrumentations, lazyFn, () => void 0);\n        if (instrumented) {\n          updates.lazy = Object.assign(updates.lazy || {}, {\n            [key]: instrumented\n          });\n        }\n      }\n    });\n  }\n  [\"loader\", \"action\"].forEach((key) => {\n    let handler = route[key];\n    if (typeof handler === \"function\" && aggregated[key].length > 0) {\n      let original = handler[UninstrumentedSymbol] ?? handler;\n      let instrumented = wrapImpl(\n        aggregated[key],\n        original,\n        (...args) => getHandlerInfo(args[0])\n      );\n      if (instrumented) {\n        if (key === \"loader\" && original.hydrate === true) {\n          instrumented.hydrate = true;\n        }\n        instrumented[UninstrumentedSymbol] = original;\n        updates[key] = instrumented;\n      }\n    }\n  });\n  if (route.middleware && route.middleware.length > 0 && aggregated.middleware.length > 0) {\n    updates.middleware = route.middleware.map((middleware) => {\n      let original = middleware[UninstrumentedSymbol] ?? middleware;\n      let instrumented = wrapImpl(\n        aggregated.middleware,\n        original,\n        (...args) => getHandlerInfo(args[0])\n      );\n      if (instrumented) {\n        instrumented[UninstrumentedSymbol] = original;\n        return instrumented;\n      }\n      return middleware;\n    });\n  }\n  return updates;\n}\nfunction instrumentClientSideRouter(router, fns) {\n  let aggregated = {\n    navigate: [],\n    fetch: []\n  };\n  fns.forEach(\n    (fn) => fn({\n      instrument(i) {\n        let keys = Object.keys(i);\n        for (let key of keys) {\n          if (i[key]) {\n            aggregated[key].push(i[key]);\n          }\n        }\n      }\n    })\n  );\n  if (aggregated.navigate.length > 0) {\n    let navigate = router.navigate[UninstrumentedSymbol] ?? router.navigate;\n    let instrumentedNavigate = wrapImpl(\n      aggregated.navigate,\n      navigate,\n      (...args) => {\n        let [to, opts] = args;\n        return {\n          to: typeof to === \"number\" || typeof to === \"string\" ? to : to ? createPath(to) : \".\",\n          ...getRouterInfo(router, opts ?? {})\n        };\n      }\n    );\n    if (instrumentedNavigate) {\n      instrumentedNavigate[UninstrumentedSymbol] = navigate;\n      router.navigate = instrumentedNavigate;\n    }\n  }\n  if (aggregated.fetch.length > 0) {\n    let fetch2 = router.fetch[UninstrumentedSymbol] ?? router.fetch;\n    let instrumentedFetch = wrapImpl(aggregated.fetch, fetch2, (...args) => {\n      let [key, , href, opts] = args;\n      return {\n        href: href ?? \".\",\n        fetcherKey: key,\n        ...getRouterInfo(router, opts ?? {})\n      };\n    });\n    if (instrumentedFetch) {\n      instrumentedFetch[UninstrumentedSymbol] = fetch2;\n      router.fetch = instrumentedFetch;\n    }\n  }\n  return router;\n}\nfunction instrumentHandler(handler, fns) {\n  let aggregated = {\n    request: []\n  };\n  fns.forEach(\n    (fn) => fn({\n      instrument(i) {\n        let keys = Object.keys(i);\n        for (let key of keys) {\n          if (i[key]) {\n            aggregated[key].push(i[key]);\n          }\n        }\n      }\n    })\n  );\n  let instrumentedHandler = handler;\n  if (aggregated.request.length > 0) {\n    instrumentedHandler = wrapImpl(aggregated.request, handler, (...args) => {\n      let [request, context] = args;\n      return {\n        request: getReadonlyRequest(request),\n        context: context != null ? getReadonlyContext(context) : context\n      };\n    });\n  }\n  return instrumentedHandler;\n}\nfunction wrapImpl(impls, handler, getInfo) {\n  if (impls.length === 0) {\n    return null;\n  }\n  return async (...args) => {\n    let result = await recurseRight(\n      impls,\n      getInfo(...args),\n      () => handler(...args),\n      impls.length - 1\n    );\n    if (result.type === \"error\") {\n      throw result.value;\n    }\n    return result.value;\n  };\n}\nasync function recurseRight(impls, info, handler, index) {\n  let impl = impls[index];\n  let result;\n  if (!impl) {\n    try {\n      let value = await handler();\n      result = { type: \"success\", value };\n    } catch (e) {\n      result = { type: \"error\", value: e };\n    }\n  } else {\n    let handlerPromise = void 0;\n    let callHandler = async () => {\n      if (handlerPromise) {\n        console.error(\"You cannot call instrumented handlers more than once\");\n      } else {\n        handlerPromise = recurseRight(impls, info, handler, index - 1);\n      }\n      result = await handlerPromise;\n      invariant(result, \"Expected a result\");\n      if (result.type === \"error\" && result.value instanceof Error) {\n        return { status: \"error\", error: result.value };\n      }\n      return { status: \"success\", error: void 0 };\n    };\n    try {\n      await impl(callHandler, info);\n    } catch (e) {\n      console.error(\"An instrumentation function threw an error:\", e);\n    }\n    if (!handlerPromise) {\n      await callHandler();\n    }\n    await handlerPromise;\n  }\n  if (result) {\n    return result;\n  }\n  return {\n    type: \"error\",\n    value: new Error(\"No result assigned in instrumentation chain.\")\n  };\n}\nfunction getHandlerInfo(args) {\n  let { request, context, params, pattern } = args;\n  return {\n    request: getReadonlyRequest(request),\n    params: { ...params },\n    pattern,\n    context: getReadonlyContext(context)\n  };\n}\nfunction getRouterInfo(router, opts) {\n  return {\n    currentUrl: createPath(router.state.location),\n    ...\"formMethod\" in opts ? { formMethod: opts.formMethod } : {},\n    ...\"formEncType\" in opts ? { formEncType: opts.formEncType } : {},\n    ...\"formData\" in opts ? { formData: opts.formData } : {},\n    ...\"body\" in opts ? { body: opts.body } : {}\n  };\n}\nfunction getReadonlyRequest(request) {\n  return {\n    method: request.method,\n    url: request.url,\n    headers: {\n      get: (...args) => request.headers.get(...args)\n    }\n  };\n}\nfunction getReadonlyContext(context) {\n  if (isPlainObject(context)) {\n    let frozen = { ...context };\n    Object.freeze(frozen);\n    return frozen;\n  } else {\n    return {\n      get: (ctx) => context.get(ctx)\n    };\n  }\n}\nvar objectProtoNames = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject(thing) {\n  if (thing === null || typeof thing !== \"object\") {\n    return false;\n  }\n  const proto = Object.getPrototypeOf(thing);\n  return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames;\n}\n\n// lib/router/navigation.ts\nvar DEFAULT_NAVIGATION_URL = new URL(\"http://localhost\");\nfunction getNavigatorCurrentUrl(navigator) {\n  if (navigator.createURL) {\n    return navigator.createURL(\"/\");\n  }\n  try {\n    return new URL(navigator.createHref(\"/\"), DEFAULT_NAVIGATION_URL);\n  } catch {\n    return DEFAULT_NAVIGATION_URL;\n  }\n}\nfunction isSameOrigin(a, b) {\n  return a.origin === b.origin && (a.origin !== \"null\" || a.protocol === b.protocol && a.host === b.host);\n}\nfunction isExplicitUrl(destination, target) {\n  if (destination.startsWith(\"//\")) {\n    return true;\n  }\n  let protocol = target.protocol.toLowerCase();\n  if (!destination.toLowerCase().startsWith(protocol)) {\n    return false;\n  }\n  return target.host === \"\" || destination.slice(protocol.length).startsWith(\"//\");\n}\nfunction validateNavigationTarget(original, resolved, currentUrl, externalPolicy) {\n  let originalUrl = null;\n  try {\n    originalUrl = original == null ? null : new URL(original, currentUrl);\n  } catch {\n  }\n  let resolvedUrl = new URL(resolved, currentUrl);\n  let originalIsExternal = originalUrl != null && !isSameOrigin(originalUrl, currentUrl);\n  let resolvedIsExternal = !isSameOrigin(resolvedUrl, currentUrl);\n  if (externalPolicy === \"reject\") {\n    if (originalIsExternal || resolvedIsExternal) {\n      throw new Error(\"External navigation is not allowed\");\n    }\n  } else if (resolvedIsExternal) {\n    if (originalUrl == null || !isExplicitUrl(original, originalUrl) || !isSameOrigin(originalUrl, resolvedUrl)) {\n      throw new Error(\"External navigation is not allowed\");\n    }\n  }\n}\n\n// lib/router/router.ts\nvar validMutationMethodsArr = [\n  \"POST\",\n  \"PUT\",\n  \"PATCH\",\n  \"DELETE\"\n];\nvar validMutationMethods = new Set(\n  validMutationMethodsArr\n);\nvar validRequestMethodsArr = [\n  \"GET\",\n  ...validMutationMethodsArr\n];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n  state: \"idle\",\n  location: void 0,\n  matches: void 0,\n  historyAction: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_FETCHER = {\n  state: \"idle\",\n  data: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_BLOCKER = {\n  state: \"unblocked\",\n  proceed: void 0,\n  reset: void 0,\n  location: void 0\n};\nvar defaultMapRouteProperties = (route) => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nvar ResetLoaderDataSymbol = Symbol(\"ResetLoaderData\");\nvar _routes, _branches, _hmrRoutes, _hmrBranches;\nvar DataRoutes = class {\n  constructor(routes) {\n    __privateAdd(this, _routes);\n    __privateAdd(this, _branches);\n    __privateAdd(this, _hmrRoutes);\n    __privateAdd(this, _hmrBranches);\n    __privateSet(this, _routes, routes);\n    __privateSet(this, _branches, flattenAndRankRoutes(routes));\n  }\n  /** The stable route tree */\n  get stableRoutes() {\n    return __privateGet(this, _routes);\n  }\n  /** The in-flight route tree if one is active, otherwise the stable tree */\n  get activeRoutes() {\n    return __privateGet(this, _hmrRoutes) ?? __privateGet(this, _routes);\n  }\n  /** Pre-computed branches */\n  get branches() {\n    return __privateGet(this, _hmrBranches) ?? __privateGet(this, _branches);\n  }\n  get hasHMRRoutes() {\n    return __privateGet(this, _hmrRoutes) != null;\n  }\n  /** Replace the stable route tree and recompute its branches */\n  setRoutes(routes) {\n    __privateSet(this, _routes, routes);\n    __privateSet(this, _branches, flattenAndRankRoutes(routes));\n  }\n  /** Set a new in-flight route tree and recompute its branches */\n  setHmrRoutes(routes) {\n    __privateSet(this, _hmrRoutes, routes);\n    __privateSet(this, _hmrBranches, flattenAndRankRoutes(routes));\n  }\n  /** Commit in-flight routes/branches to the stable slot and clear in-flight */\n  commitHmrRoutes() {\n    if (__privateGet(this, _hmrRoutes)) {\n      __privateSet(this, _routes, __privateGet(this, _hmrRoutes));\n      __privateSet(this, _branches, __privateGet(this, _hmrBranches));\n      __privateSet(this, _hmrRoutes, void 0);\n      __privateSet(this, _hmrBranches, void 0);\n    }\n  }\n};\n_routes = new WeakMap();\n_branches = new WeakMap();\n_hmrRoutes = new WeakMap();\n_hmrBranches = new WeakMap();\nfunction createRouter(init) {\n  const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n  const isBrowser3 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n  invariant(\n    init.routes.length > 0,\n    \"You must provide a non-empty routes array to createRouter\"\n  );\n  let hydrationRouteProperties2 = init.hydrationRouteProperties || [];\n  let _mapRouteProperties = init.mapRouteProperties || defaultMapRouteProperties;\n  let mapRouteProperties2 = _mapRouteProperties;\n  if (init.instrumentations) {\n    let instrumentations = init.instrumentations;\n    mapRouteProperties2 = (route) => {\n      return {\n        ..._mapRouteProperties(route),\n        ...getRouteInstrumentationUpdates(\n          instrumentations.map((i) => i.route).filter(Boolean),\n          route\n        )\n      };\n    };\n  }\n  let manifest = {};\n  let dataRoutes = new DataRoutes(\n    convertRoutesToDataRoutes(\n      init.routes,\n      mapRouteProperties2,\n      void 0,\n      manifest\n    )\n  );\n  let basename = init.basename || \"/\";\n  if (!basename.startsWith(\"/\")) {\n    basename = `/${basename}`;\n  }\n  let dataStrategyImpl = init.dataStrategy || defaultDataStrategyWithMiddleware;\n  let future = {\n    ...init.future\n  };\n  let unlistenHistory = null;\n  let subscribers = /* @__PURE__ */ new Set();\n  let bufferedInitialStateUpdate = null;\n  let savedScrollPositions2 = null;\n  let getScrollRestorationKey2 = null;\n  let getScrollPosition = null;\n  let initialScrollRestored = init.hydrationData != null;\n  let initialMatches = matchRoutesImpl(\n    dataRoutes.activeRoutes,\n    init.history.location,\n    basename,\n    false,\n    dataRoutes.branches\n  );\n  let initialMatchesIsFOW = false;\n  let initialErrors = null;\n  let initialized;\n  let renderFallback;\n  if (initialMatches == null && !init.patchRoutesOnNavigation) {\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname\n    });\n    let { matches, route } = getShortCircuitMatches(dataRoutes.activeRoutes);\n    initialized = true;\n    renderFallback = !initialized;\n    initialMatches = matches;\n    initialErrors = { [route.id]: error };\n  } else {\n    if (initialMatches && !init.hydrationData) {\n      let fogOfWar = checkFogOfWar(\n        initialMatches,\n        dataRoutes.activeRoutes,\n        init.history.location.pathname\n      );\n      if (fogOfWar.active) {\n        initialMatches = null;\n      }\n    }\n    if (!initialMatches) {\n      initialized = false;\n      renderFallback = !initialized;\n      initialMatches = [];\n      let fogOfWar = checkFogOfWar(\n        null,\n        dataRoutes.activeRoutes,\n        init.history.location.pathname\n      );\n      if (fogOfWar.active && fogOfWar.matches) {\n        initialMatchesIsFOW = true;\n        initialMatches = fogOfWar.matches;\n      }\n    } else if (initialMatches.some((m) => m.route.lazy)) {\n      initialized = false;\n      renderFallback = !initialized;\n    } else if (!initialMatches.some((m) => routeHasLoaderOrMiddleware(m.route))) {\n      initialized = true;\n      renderFallback = !initialized;\n    } else {\n      let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n      let errors = init.hydrationData ? init.hydrationData.errors : null;\n      let relevantMatches = initialMatches;\n      if (errors) {\n        let idx = initialMatches.findIndex(\n          (m) => errors[m.route.id] !== void 0\n        );\n        relevantMatches = relevantMatches.slice(0, idx + 1);\n      }\n      renderFallback = false;\n      initialized = true;\n      relevantMatches.forEach((m) => {\n        let status = getRouteHydrationStatus(m.route, loaderData, errors);\n        renderFallback = renderFallback || status.renderFallback;\n        initialized = initialized && !status.shouldLoad;\n      });\n    }\n  }\n  let router;\n  let state = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    renderFallback,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n    actionData: init.hydrationData && init.hydrationData.actionData || null,\n    errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n    fetchers: /* @__PURE__ */ new Map(),\n    blockers: /* @__PURE__ */ new Map()\n  };\n  let pendingAction = \"POP\" /* Pop */;\n  let pendingPopstateNavigationDfd = null;\n  let pendingPreventScrollReset = false;\n  let pendingNavigationController;\n  let pendingViewTransitionEnabled = false;\n  let appliedViewTransitions = /* @__PURE__ */ new Map();\n  let removePageHideEventListener = null;\n  let isUninterruptedRevalidation = false;\n  let isRevalidationRequired = false;\n  let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n  let fetchControllers = /* @__PURE__ */ new Map();\n  let incrementingLoadId = 0;\n  let pendingNavigationLoadId = -1;\n  let fetchReloadIds = /* @__PURE__ */ new Map();\n  let fetchRedirectIds = /* @__PURE__ */ new Set();\n  let fetchLoadMatches = /* @__PURE__ */ new Map();\n  let activeFetchers = /* @__PURE__ */ new Map();\n  let fetchersQueuedForDeletion = /* @__PURE__ */ new Set();\n  let blockerFunctions = /* @__PURE__ */ new Map();\n  let unblockBlockerHistoryUpdate = void 0;\n  let pendingRevalidationDfd = null;\n  function initialize() {\n    unlistenHistory = init.history.listen(\n      ({ action: historyAction, location, delta }) => {\n        if (unblockBlockerHistoryUpdate) {\n          unblockBlockerHistoryUpdate();\n          unblockBlockerHistoryUpdate = void 0;\n          return;\n        }\n        warning(\n          blockerFunctions.size === 0 || delta != null,\n          \"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs.  This can also happen if you are using createHashRouter and the user manually changes the URL.\"\n        );\n        let blockerKey = shouldBlockNavigation({\n          currentLocation: state.location,\n          nextLocation: location,\n          historyAction\n        });\n        if (blockerKey && delta != null) {\n          let nextHistoryUpdatePromise = new Promise((resolve) => {\n            unblockBlockerHistoryUpdate = resolve;\n          });\n          init.history.go(delta * -1);\n          updateBlocker(blockerKey, {\n            state: \"blocked\",\n            location,\n            proceed() {\n              updateBlocker(blockerKey, {\n                state: \"proceeding\",\n                proceed: void 0,\n                reset: void 0,\n                location\n              });\n              nextHistoryUpdatePromise.then(() => init.history.go(delta));\n            },\n            reset() {\n              let blockers = new Map(state.blockers);\n              blockers.set(blockerKey, IDLE_BLOCKER);\n              updateState({ blockers });\n            }\n          });\n          pendingPopstateNavigationDfd?.resolve();\n          pendingPopstateNavigationDfd = null;\n          return;\n        }\n        return startNavigation(historyAction, location);\n      }\n    );\n    if (isBrowser3) {\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n    if (!state.initialized) {\n      startNavigation(\"POP\" /* Pop */, state.location, {\n        initialHydration: true\n      });\n    }\n    return router;\n  }\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(state.fetchers, key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n  function subscribe(fn) {\n    subscribers.add(fn);\n    if (bufferedInitialStateUpdate) {\n      let { newErrors } = bufferedInitialStateUpdate;\n      bufferedInitialStateUpdate = null;\n      fn(state, {\n        deletedFetchers: [],\n        newErrors,\n        viewTransitionOpts: void 0,\n        flushSync: false\n      });\n    }\n    return () => subscribers.delete(fn);\n  }\n  function updateState(newState, opts = {}) {\n    if (newState.matches) {\n      newState.matches = newState.matches.map((m) => {\n        let route = manifest[m.route.id];\n        let matchRoute = m.route;\n        if (matchRoute.element !== route.element || matchRoute.errorElement !== route.errorElement || matchRoute.hydrateFallbackElement !== route.hydrateFallbackElement) {\n          return {\n            ...m,\n            route\n          };\n        }\n        return m;\n      });\n    }\n    state = {\n      ...state,\n      ...newState\n    };\n    let unmountedFetchers = [];\n    let mountedFetchers = [];\n    state.fetchers.forEach((fetcher, key) => {\n      if (fetcher.state === \"idle\") {\n        if (fetchersQueuedForDeletion.has(key)) {\n          unmountedFetchers.push(key);\n        } else {\n          mountedFetchers.push(key);\n        }\n      }\n    });\n    fetchersQueuedForDeletion.forEach((key) => {\n      if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n        unmountedFetchers.push(key);\n      }\n    });\n    if (subscribers.size === 0) {\n      bufferedInitialStateUpdate = { newErrors: newState.errors ?? null };\n    }\n    [...subscribers].forEach(\n      (subscriber) => subscriber(state, {\n        deletedFetchers: unmountedFetchers,\n        newErrors: newState.errors ?? null,\n        viewTransitionOpts: opts.viewTransitionOpts,\n        flushSync: opts.flushSync === true\n      })\n    );\n    unmountedFetchers.forEach((key) => deleteFetcher(state.fetchers, key));\n    mountedFetchers.forEach((key) => state.fetchers.delete(key));\n  }\n  function completeNavigation(location, newState, { flushSync } = {}) {\n    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && location.state?._isRedirect !== true;\n    let actionData;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      actionData = state.actionData;\n    } else {\n      actionData = null;\n    }\n    let loaderData = newState.loaderData ? mergeLoaderData(\n      state.loaderData,\n      newState.loaderData,\n      newState.matches || [],\n      newState.errors\n    ) : state.loaderData;\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n    let restoreScrollPosition = isUninterruptedRevalidation ? false : getSavedScrollPosition(location, newState.matches || state.matches);\n    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && location.state?._isRedirect !== true;\n    dataRoutes.commitHmrRoutes();\n    if (isUninterruptedRevalidation) {\n    } else if (pendingAction === \"POP\" /* Pop */) {\n    } else if (pendingAction === \"PUSH\" /* Push */) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === \"REPLACE\" /* Replace */) {\n      init.history.replace(location, location.state);\n    }\n    let viewTransitionOpts;\n    if (pendingAction === \"POP\" /* Pop */ && !isUninterruptedRevalidation && location !== state.location) {\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = /* @__PURE__ */ new Set([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location\n      };\n    }\n    updateState(\n      {\n        ...newState,\n        // matches, errors, fetchers go through as-is\n        actionData,\n        loaderData,\n        historyAction: pendingAction,\n        location,\n        initialized: true,\n        renderFallback: false,\n        navigation: IDLE_NAVIGATION,\n        revalidation: \"idle\",\n        restoreScrollPosition,\n        preventScrollReset,\n        blockers\n      },\n      {\n        viewTransitionOpts,\n        flushSync: flushSync === true\n      }\n    );\n    pendingAction = \"POP\" /* Pop */;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    pendingPopstateNavigationDfd?.resolve();\n    pendingPopstateNavigationDfd = null;\n    pendingRevalidationDfd?.resolve();\n    pendingRevalidationDfd = null;\n  }\n  async function navigate(to, opts) {\n    pendingPopstateNavigationDfd?.resolve();\n    pendingPopstateNavigationDfd = null;\n    if (typeof to === \"number\") {\n      if (!pendingPopstateNavigationDfd) {\n        pendingPopstateNavigationDfd = createDeferred();\n      }\n      let promise = pendingPopstateNavigationDfd.promise;\n      init.history.go(to);\n      return promise;\n    }\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      to,\n      opts?.fromRouteId,\n      opts?.relative\n    );\n    let { path, submission, error } = normalizeNavigateOptions(\n      false,\n      normalizedPath,\n      opts\n    );\n    let maskPath;\n    if (opts?.mask) {\n      let partialPath = typeof opts.mask === \"string\" ? parsePath(opts.mask) : {\n        ...state.location.mask,\n        ...opts.mask\n      };\n      maskPath = {\n        pathname: partialPath.pathname ?? \"\",\n        search: partialPath.search ?? \"\",\n        hash: partialPath.hash ?? \"\"\n      };\n      if (PROTOCOL_RELATIVE_URL_REGEX.test(maskPath.pathname)) {\n        throw new Error(\"External navigation is not allowed\");\n      } else if (maskPath.pathname.startsWith(\"\\\\\")) {\n        maskPath.pathname = maskPath.pathname.replace(/^\\\\+/, \"/\");\n      }\n      validateNavigationTarget(\n        typeof opts.mask === \"string\" ? opts.mask : createPath(opts.mask),\n        createPath(maskPath),\n        init.history.createURL(\"/\"),\n        \"reject\"\n      );\n    }\n    let currentLocation = state.location;\n    let nextLocation = createLocation(\n      currentLocation,\n      path,\n      opts && opts.state,\n      void 0,\n      maskPath\n    );\n    nextLocation = {\n      ...nextLocation,\n      ...init.history.encodeLocation(nextLocation)\n    };\n    validateNavigationTarget(\n      to == null ? init.history.createHref(state.location) : typeof to === \"string\" ? to : createPath(to),\n      init.history.createHref(nextLocation.mask || nextLocation),\n      init.history.createURL(\"/\"),\n      \"reject\"\n    );\n    let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n    let historyAction = \"PUSH\" /* Push */;\n    if (userReplace === true) {\n      historyAction = \"REPLACE\" /* Replace */;\n    } else if (userReplace === false) {\n    } else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n      historyAction = \"REPLACE\" /* Replace */;\n    }\n    let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n    let flushSync = (opts && opts.flushSync) === true;\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction\n    });\n    if (blockerKey) {\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey, {\n            state: \"proceeding\",\n            proceed: void 0,\n            reset: void 0,\n            location: nextLocation\n          });\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey, IDLE_BLOCKER);\n          updateState({ blockers });\n        }\n      });\n      return;\n    }\n    await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.viewTransition,\n      flushSync,\n      callSiteDefaultShouldRevalidate: opts && opts.defaultShouldRevalidate\n    });\n  }\n  function revalidate() {\n    if (!pendingRevalidationDfd) {\n      pendingRevalidationDfd = createDeferred();\n    }\n    interruptActiveLoads();\n    updateState({ revalidation: \"loading\" });\n    let promise = pendingRevalidationDfd.promise;\n    if (state.navigation.state === \"submitting\") {\n      return promise;\n    }\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true\n      });\n      return promise;\n    }\n    startNavigation(\n      pendingAction || state.historyAction,\n      state.navigation.location,\n      {\n        overrideNavigation: state.navigation,\n        // Proxy through any rending view transition\n        enableViewTransition: pendingViewTransitionEnabled === true\n      }\n    );\n    return promise;\n  }\n  async function startNavigation(historyAction, location, opts) {\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n    let routesToUse = dataRoutes.activeRoutes;\n    let matches = opts?.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ? (\n      // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n      state.matches\n    ) : matchRoutesImpl(\n      routesToUse,\n      location,\n      basename,\n      false,\n      dataRoutes.branches\n    );\n    let flushSync = (opts && opts.flushSync) === true;\n    if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n      completeNavigation(location, { matches }, { flushSync });\n      return;\n    }\n    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      let { error, notFoundMatches, route } = handleNavigational404(\n        location.pathname\n      );\n      completeNavigation(\n        location,\n        {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        },\n        { flushSync }\n      );\n      return;\n    }\n    let loadingNavigation = opts && opts.overrideNavigation ? {\n      ...opts.overrideNavigation,\n      matches,\n      historyAction\n    } : void 0;\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(\n      init.history,\n      location,\n      pendingNavigationController.signal,\n      opts && opts.submission\n    );\n    let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n    let pendingActionResult;\n    if (opts && opts.pendingError) {\n      pendingActionResult = [\n        findNearestBoundary(matches).route.id,\n        { type: \"error\" /* error */, error: opts.pendingError }\n      ];\n    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n      let actionResult = await handleAction(\n        request,\n        location,\n        opts.submission,\n        matches,\n        historyAction,\n        scopedContext,\n        fogOfWar.active,\n        opts && opts.initialHydration === true,\n        { replace: opts.replace, flushSync }\n      );\n      if (actionResult.shortCircuited) {\n        return;\n      }\n      if (actionResult.pendingActionResult) {\n        let [routeId, result] = actionResult.pendingActionResult;\n        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n          pendingNavigationController = null;\n          completeNavigation(location, {\n            matches: actionResult.matches,\n            loaderData: {},\n            errors: {\n              [routeId]: result.error\n            }\n          });\n          return;\n        }\n      }\n      matches = actionResult.matches || matches;\n      pendingActionResult = actionResult.pendingActionResult;\n      loadingNavigation = getLoadingNavigation(\n        location,\n        matches,\n        historyAction,\n        opts.submission\n      );\n      flushSync = false;\n      fogOfWar.active = false;\n      request = createClientSideRequest(\n        init.history,\n        request.url,\n        request.signal\n      );\n    }\n    let {\n      shortCircuited,\n      matches: updatedMatches,\n      loaderData,\n      errors,\n      workingFetchers\n    } = await handleLoaders(\n      request,\n      location,\n      matches,\n      historyAction,\n      scopedContext,\n      fogOfWar.active,\n      loadingNavigation,\n      opts && opts.submission,\n      opts && opts.fetcherSubmission,\n      opts && opts.replace,\n      opts && opts.initialHydration === true,\n      flushSync,\n      pendingActionResult,\n      opts && opts.callSiteDefaultShouldRevalidate\n    );\n    if (shortCircuited) {\n      return;\n    }\n    pendingNavigationController = null;\n    completeNavigation(location, {\n      matches: updatedMatches || matches,\n      ...getActionDataForCommit(pendingActionResult),\n      loaderData,\n      errors,\n      ...workingFetchers ? { fetchers: workingFetchers } : {}\n    });\n  }\n  async function handleAction(request, location, submission, matches, historyAction, scopedContext, isFogOfWar, initialHydration, opts = {}) {\n    interruptActiveLoads();\n    let navigation = getSubmittingNavigation(\n      location,\n      matches,\n      historyAction,\n      submission\n    );\n    updateState({ navigation }, { flushSync: opts.flushSync === true });\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        if (discoverResult.partialMatches.length === 0) {\n          let { matches: matches2, route } = getShortCircuitMatches(\n            dataRoutes.activeRoutes\n          );\n          return {\n            matches: matches2,\n            pendingActionResult: [\n              route.id,\n              {\n                type: \"error\" /* error */,\n                error: discoverResult.error\n              }\n            ]\n          };\n        }\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          pendingActionResult: [\n            boundaryId,\n            {\n              type: \"error\" /* error */,\n              error: discoverResult.error\n            }\n          ]\n        };\n      } else if (!discoverResult.matches) {\n        let { notFoundMatches, error, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          pendingActionResult: [\n            route.id,\n            {\n              type: \"error\" /* error */,\n              error\n            }\n          ]\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let result;\n    let actionMatch = getTargetMatch(matches, location);\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: \"error\" /* error */,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id\n        })\n      };\n    } else {\n      let dsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        matches,\n        actionMatch,\n        initialHydration ? [] : hydrationRouteProperties2,\n        scopedContext\n      );\n      let results = await callDataStrategy(\n        request,\n        location,\n        dsMatches,\n        scopedContext,\n        null\n      );\n      result = results[actionMatch.route.id];\n      if (!result) {\n        for (let match of matches) {\n          if (results[match.route.id]) {\n            result = results[match.route.id];\n            break;\n          }\n        }\n      }\n      if (request.signal.aborted) {\n        return { shortCircuited: true };\n      }\n    }\n    if (isRedirectResult(result)) {\n      let replace2;\n      if (opts && opts.replace != null) {\n        replace2 = opts.replace;\n      } else {\n        let location2 = normalizeRedirectLocation(\n          result.response.headers.get(\"Location\"),\n          new URL(request.url),\n          basename,\n          init.history\n        );\n        replace2 = location2 === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(request, result, true, {\n        submission,\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      if ((opts && opts.replace) !== true) {\n        pendingAction = \"PUSH\" /* Push */;\n      }\n      return {\n        matches,\n        pendingActionResult: [\n          boundaryMatch.route.id,\n          result,\n          actionMatch.route.id\n        ]\n      };\n    }\n    return {\n      matches,\n      pendingActionResult: [actionMatch.route.id, result]\n    };\n  }\n  async function handleLoaders(request, location, matches, historyAction, scopedContext, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult, callSiteDefaultShouldRevalidate) {\n    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, matches, historyAction, submission);\n    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n    let shouldUpdateNavigationState = !isUninterruptedRevalidation && !initialHydration;\n    if (isFogOfWar) {\n      if (shouldUpdateNavigationState) {\n        let actionData = getUpdatedActionData(pendingActionResult);\n        updateState(\n          {\n            navigation: loadingNavigation,\n            ...actionData !== void 0 ? { actionData } : {}\n          },\n          {\n            flushSync\n          }\n        );\n      }\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        if (discoverResult.partialMatches.length === 0) {\n          let { matches: matches2, route } = getShortCircuitMatches(\n            dataRoutes.activeRoutes\n          );\n          return {\n            matches: matches2,\n            loaderData: {},\n            errors: {\n              [route.id]: discoverResult.error\n            }\n          };\n        }\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          loaderData: {},\n          errors: {\n            [boundaryId]: discoverResult.error\n          }\n        };\n      } else if (!discoverResult.matches) {\n        let { error, notFoundMatches, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let routesToUse = dataRoutes.activeRoutes;\n    let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n      request,\n      scopedContext,\n      mapRouteProperties2,\n      manifest,\n      init.history,\n      state,\n      matches,\n      activeSubmission,\n      location,\n      initialHydration ? [] : hydrationRouteProperties2,\n      initialHydration === true,\n      isRevalidationRequired,\n      cancelledFetcherLoads,\n      fetchersQueuedForDeletion,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      init.patchRoutesOnNavigation != null,\n      dataRoutes.branches,\n      pendingActionResult,\n      callSiteDefaultShouldRevalidate\n    );\n    pendingNavigationLoadId = ++incrementingLoadId;\n    if (!init.dataStrategy && !dsMatches.some((m) => m.shouldLoad) && !dsMatches.some(\n      (m) => m.route.middleware && m.route.middleware.length > 0\n    ) && revalidatingFetchers.length === 0) {\n      let workingFetchers2 = new Map(state.fetchers);\n      let didUpdateFetcherRedirects2 = markFetchRedirectsDone(workingFetchers2);\n      completeNavigation(\n        location,\n        {\n          matches,\n          loaderData: {},\n          // Commit pending error if we're short circuiting\n          errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? { [pendingActionResult[0]]: pendingActionResult[1].error } : null,\n          ...getActionDataForCommit(pendingActionResult),\n          ...didUpdateFetcherRedirects2 ? { fetchers: workingFetchers2 } : {}\n        },\n        { flushSync }\n      );\n      return { shortCircuited: true };\n    }\n    if (shouldUpdateNavigationState) {\n      let updates = {};\n      if (!isFogOfWar) {\n        updates.navigation = loadingNavigation;\n        let actionData = getUpdatedActionData(pendingActionResult);\n        if (actionData !== void 0) {\n          updates.actionData = actionData;\n        }\n      }\n      if (revalidatingFetchers.length > 0) {\n        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n      }\n      updateState(updates, { flushSync });\n    }\n    revalidatingFetchers.forEach((rf) => {\n      abortFetcher(rf.key);\n      if (rf.controller) {\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n      dsMatches,\n      revalidatingFetchers,\n      request,\n      location,\n      scopedContext\n    );\n    if (request.signal.aborted) {\n      return { shortCircuited: true };\n    }\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n    let redirect2 = findRedirect(loaderResults);\n    if (redirect2) {\n      await startRedirectNavigation(request, redirect2.result, true, {\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    redirect2 = findRedirect(fetcherResults);\n    if (redirect2) {\n      fetchRedirectIds.add(redirect2.key);\n      await startRedirectNavigation(request, redirect2.result, true, {\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    let workingFetchers = new Map(state.fetchers);\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      loaderResults,\n      pendingActionResult,\n      revalidatingFetchers,\n      fetcherResults,\n      workingFetchers\n    );\n    if (initialHydration && state.errors) {\n      errors = { ...state.errors, ...errors };\n    }\n    let didUpdateFetcherRedirects = markFetchRedirectsDone(workingFetchers);\n    let didAbortFetchLoads = abortStaleFetchLoads(\n      pendingNavigationLoadId,\n      workingFetchers\n    );\n    let shouldUpdateFetchers = didUpdateFetcherRedirects || didAbortFetchLoads || revalidatingFetchers.length > 0;\n    return {\n      matches,\n      loaderData,\n      errors,\n      ...shouldUpdateFetchers ? { workingFetchers } : {}\n    };\n  }\n  function getUpdatedActionData(pendingActionResult) {\n    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n      return {\n        [pendingActionResult[0]]: pendingActionResult[1].data\n      };\n    } else if (state.actionData) {\n      if (Object.keys(state.actionData).length === 0) {\n        return null;\n      } else {\n        return state.actionData;\n      }\n    }\n  }\n  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n    let workingFetchers = new Map(state.fetchers);\n    revalidatingFetchers.forEach((rf) => {\n      let fetcher = workingFetchers.get(rf.key);\n      let revalidatingFetcher = getLoadingFetcher(\n        void 0,\n        fetcher ? fetcher.data : void 0\n      );\n      workingFetchers.set(rf.key, revalidatingFetcher);\n    });\n    return workingFetchers;\n  }\n  async function fetch2(key, routeId, href, opts) {\n    abortFetcher(key);\n    let flushSync = (opts && opts.flushSync) === true;\n    let routesToUse = dataRoutes.activeRoutes;\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      href,\n      routeId,\n      opts?.relative\n    );\n    let matches = matchRoutesImpl(\n      routesToUse,\n      normalizedPath,\n      basename,\n      false,\n      dataRoutes.branches\n    );\n    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      setFetcherError(\n        key,\n        routeId,\n        getInternalRouterError(404, { pathname: normalizedPath }),\n        { flushSync }\n      );\n      return;\n    }\n    let { path, submission, error } = normalizeNavigateOptions(\n      true,\n      normalizedPath,\n      opts\n    );\n    if (error) {\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n    let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n    let preventScrollReset = (opts && opts.preventScrollReset) === true;\n    if (submission && isMutationMethod(submission.formMethod)) {\n      await handleFetcherAction(\n        key,\n        routeId,\n        path,\n        matches,\n        scopedContext,\n        fogOfWar.active,\n        flushSync,\n        preventScrollReset,\n        submission,\n        opts && opts.defaultShouldRevalidate\n      );\n      return;\n    }\n    fetchLoadMatches.set(key, { routeId, path });\n    await handleFetcherLoader(\n      key,\n      routeId,\n      path,\n      matches,\n      scopedContext,\n      fogOfWar.active,\n      flushSync,\n      preventScrollReset,\n      submission\n    );\n  }\n  async function handleFetcherAction(key, routeId, path, requestMatches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission, callSiteDefaultShouldRevalidate) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal,\n      submission\n    );\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        requestMatches,\n        new URL(fetchRequest.url).pathname,\n        fetchRequest.signal,\n        key\n      );\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        requestMatches = discoverResult.matches;\n      }\n    }\n    let match = getTargetMatch(requestMatches, path);\n    if (!match.route.action && !match.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: submission.formMethod,\n        pathname: path,\n        routeId\n      });\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let fetchMatches = getTargetedDataStrategyMatches(\n      mapRouteProperties2,\n      manifest,\n      fetchRequest,\n      path,\n      requestMatches,\n      match,\n      hydrationRouteProperties2,\n      scopedContext\n    );\n    let actionResults = await callDataStrategy(\n      fetchRequest,\n      path,\n      fetchMatches,\n      scopedContext,\n      key\n    );\n    let actionResult = actionResults[match.route.id];\n    if (!actionResult) {\n      for (let match2 of fetchMatches) {\n        if (actionResults[match2.route.id]) {\n          actionResult = actionResults[match2.route.id];\n          break;\n        }\n      }\n    }\n    if (fetchRequest.signal.aborted) {\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n    if (fetchersQueuedForDeletion.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      }\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          updateFetcherState(key, getDoneFetcher(void 0));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(fetchRequest, actionResult, false, {\n            fetcherSubmission: submission,\n            preventScrollReset\n          });\n        }\n      }\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(\n      init.history,\n      nextLocation,\n      abortController.signal\n    );\n    let routesToUse = dataRoutes.activeRoutes;\n    let matches = state.navigation.state !== \"idle\" ? matchRoutesImpl(\n      routesToUse,\n      state.navigation.location,\n      basename,\n      false,\n      dataRoutes.branches\n    ) : state.matches;\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n    let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n      revalidationRequest,\n      scopedContext,\n      mapRouteProperties2,\n      manifest,\n      init.history,\n      state,\n      matches,\n      submission,\n      nextLocation,\n      hydrationRouteProperties2,\n      false,\n      isRevalidationRequired,\n      cancelledFetcherLoads,\n      fetchersQueuedForDeletion,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      init.patchRoutesOnNavigation != null,\n      dataRoutes.branches,\n      [match.route.id, actionResult],\n      callSiteDefaultShouldRevalidate\n    );\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    let workingFetchers = new Map(state.fetchers);\n    workingFetchers.set(key, loadFetcher);\n    revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n      let staleKey = rf.key;\n      let existingFetcher2 = workingFetchers.get(staleKey);\n      let revalidatingFetcher = getLoadingFetcher(\n        void 0,\n        existingFetcher2 ? existingFetcher2.data : void 0\n      );\n      workingFetchers.set(staleKey, revalidatingFetcher);\n      abortFetcher(staleKey);\n      if (rf.controller) {\n        fetchControllers.set(staleKey, rf.controller);\n      }\n    });\n    updateState({ fetchers: workingFetchers });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n    abortController.signal.addEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n    let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n      dsMatches,\n      revalidatingFetchers,\n      revalidationRequest,\n      nextLocation,\n      scopedContext\n    );\n    if (abortController.signal.aborted) {\n      return;\n    }\n    abortController.signal.removeEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n    let fetcherIsMounted = state.fetchers.has(key);\n    let getRedirectStateWithDoneFetcher = (s) => {\n      if (!fetcherIsMounted) return s;\n      let workingFetchers2 = new Map(s.fetchers);\n      workingFetchers2.set(key, getDoneFetcher(actionResult.data));\n      return { ...s, fetchers: workingFetchers2 };\n    };\n    let redirect2 = findRedirect(loaderResults);\n    if (redirect2) {\n      state = getRedirectStateWithDoneFetcher(state);\n      return startRedirectNavigation(\n        revalidationRequest,\n        redirect2.result,\n        false,\n        { preventScrollReset }\n      );\n    }\n    redirect2 = findRedirect(fetcherResults);\n    if (redirect2) {\n      fetchRedirectIds.add(redirect2.key);\n      state = getRedirectStateWithDoneFetcher(state);\n      return startRedirectNavigation(\n        revalidationRequest,\n        redirect2.result,\n        false,\n        { preventScrollReset }\n      );\n    }\n    let finalFetchers = new Map(state.fetchers);\n    if (fetcherIsMounted) {\n      finalFetchers.set(key, getDoneFetcher(actionResult.data));\n    }\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      loaderResults,\n      void 0,\n      revalidatingFetchers,\n      fetcherResults,\n      finalFetchers\n    );\n    abortStaleFetchLoads(loadId, finalFetchers);\n    if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: finalFetchers\n      });\n    } else {\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(\n          state.loaderData,\n          loaderData,\n          matches,\n          errors\n        ),\n        fetchers: finalFetchers\n      });\n      isRevalidationRequired = false;\n    }\n  }\n  async function handleFetcherLoader(key, routeId, path, matches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(\n      key,\n      getLoadingFetcher(\n        submission,\n        existingFetcher ? existingFetcher.data : void 0\n      ),\n      { flushSync }\n    );\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal\n    );\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        new URL(fetchRequest.url).pathname,\n        fetchRequest.signal,\n        key\n      );\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let match = getTargetMatch(matches, path);\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let dsMatches = getTargetedDataStrategyMatches(\n      mapRouteProperties2,\n      manifest,\n      fetchRequest,\n      path,\n      matches,\n      match,\n      hydrationRouteProperties2,\n      scopedContext\n    );\n    let results = await callDataStrategy(\n      fetchRequest,\n      path,\n      dsMatches,\n      scopedContext,\n      key\n    );\n    let result = results[match.route.id];\n    if (!result) {\n      for (let match2 of matches) {\n        if (results[match2.route.id]) {\n          result = results[match2.route.id];\n          break;\n        }\n      }\n    }\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n    if (fetchersQueuedForDeletion.has(key)) {\n      updateFetcherState(key, getDoneFetcher(void 0));\n      return;\n    }\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(fetchRequest, result, false, {\n          preventScrollReset\n        });\n        return;\n      }\n    }\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n  async function startRedirectNavigation(request, redirect2, isNavigation, {\n    submission,\n    fetcherSubmission,\n    preventScrollReset,\n    replace: replace2\n  } = {}) {\n    if (!isNavigation) {\n      pendingPopstateNavigationDfd?.resolve();\n      pendingPopstateNavigationDfd = null;\n    }\n    if (redirect2.response.headers.has(\"X-Remix-Revalidate\")) {\n      isRevalidationRequired = true;\n    }\n    let location = redirect2.response.headers.get(\"Location\");\n    invariant(location, \"Expected a Location header on the redirect Response\");\n    let originalLocation = location;\n    let currentUrl = new URL(request.url);\n    location = normalizeRedirectLocation(\n      location,\n      currentUrl,\n      basename,\n      init.history\n    );\n    validateNavigationTarget(\n      originalLocation,\n      location,\n      currentUrl,\n      \"allow-explicit\"\n    );\n    let redirectLocation = createLocation(state.location, location, {\n      _isRedirect: true\n    });\n    if (isBrowser3) {\n      let isDocumentReload = false;\n      if (redirect2.response.headers.has(\"X-Remix-Reload-Document\")) {\n        isDocumentReload = true;\n      } else if (isAbsoluteUrl(location)) {\n        const url = createBrowserURLImpl(routerWindow, location, true);\n        isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n        url.origin !== routerWindow.location.origin || // Hard reload if it's an absolute URL that does not match our basename\n        stripBasename(url.pathname, basename) == null;\n      }\n      if (isDocumentReload) {\n        if (replace2) {\n          routerWindow.location.replace(location);\n        } else {\n          routerWindow.location.assign(location);\n        }\n        return;\n      }\n    }\n    pendingNavigationController = null;\n    let redirectNavigationType = replace2 === true || redirect2.response.headers.has(\"X-Remix-Replace\") ? \"REPLACE\" /* Replace */ : \"PUSH\" /* Push */;\n    let { formMethod, formAction, formEncType } = state.navigation;\n    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n    let activeSubmission = submission || fetcherSubmission;\n    if (redirectPreserveMethodStatusCodes.has(redirect2.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n      await startNavigation(redirectNavigationType, redirectLocation, {\n        submission: {\n          ...activeSubmission,\n          formAction: location\n        },\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    } else {\n      let overrideNavigation = getLoadingNavigation(\n        redirectLocation,\n        [],\n        redirectNavigationType,\n        submission\n      );\n      await startNavigation(redirectNavigationType, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    }\n  }\n  async function callDataStrategy(request, path, matches, scopedContext, fetcherKey) {\n    let results;\n    let dataResults = {};\n    try {\n      results = await callDataStrategyImpl(\n        dataStrategyImpl,\n        request,\n        path,\n        matches,\n        fetcherKey,\n        scopedContext,\n        false\n      );\n    } catch (e) {\n      matches.filter((m) => m.shouldLoad).forEach((m) => {\n        dataResults[m.route.id] = {\n          type: \"error\" /* error */,\n          error: e\n        };\n      });\n      return dataResults;\n    }\n    if (request.signal.aborted) {\n      return dataResults;\n    }\n    if (!isMutationMethod(request.method)) {\n      for (let match of matches) {\n        if (results[match.route.id]?.type === \"error\" /* error */) {\n          break;\n        }\n        if (!results.hasOwnProperty(match.route.id) && !state.loaderData.hasOwnProperty(match.route.id) && (!state.errors || !state.errors.hasOwnProperty(match.route.id)) && match.shouldCallHandler()) {\n          results[match.route.id] = {\n            type: \"error\" /* error */,\n            result: new Error(\n              `No result returned from dataStrategy for route ${match.route.id}`\n            )\n          };\n        }\n      }\n    }\n    for (let [routeId, result] of Object.entries(results)) {\n      if (isRedirectDataStrategyResult(result)) {\n        let response = result.result;\n        dataResults[routeId] = {\n          type: \"redirect\" /* redirect */,\n          response: normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            routeId,\n            matches,\n            basename\n          )\n        };\n      } else {\n        dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n      }\n    }\n    return dataResults;\n  }\n  async function callLoadersAndMaybeResolveData(matches, fetchersToLoad, request, location, scopedContext) {\n    let loaderResultsPromise = callDataStrategy(\n      request,\n      location,\n      matches,\n      scopedContext,\n      null\n    );\n    let fetcherResultsPromise = Promise.all(\n      fetchersToLoad.map(async (f) => {\n        if (f.matches && f.match && f.request && f.controller) {\n          let results = await callDataStrategy(\n            f.request,\n            f.path,\n            f.matches,\n            scopedContext,\n            f.key\n          );\n          let result = results[f.match.route.id];\n          return { [f.key]: result };\n        } else {\n          return Promise.resolve({\n            [f.key]: {\n              type: \"error\" /* error */,\n              error: getInternalRouterError(404, {\n                pathname: f.path\n              })\n            }\n          });\n        }\n      })\n    );\n    let loaderResults = await loaderResultsPromise;\n    let fetcherResults = (await fetcherResultsPromise).reduce(\n      (acc, r) => Object.assign(acc, r),\n      {}\n    );\n    return {\n      loaderResults,\n      fetcherResults\n    };\n  }\n  function interruptActiveLoads() {\n    isRevalidationRequired = true;\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.add(key);\n      }\n      abortFetcher(key);\n    });\n  }\n  function updateFetcherState(key, fetcher, opts = {}) {\n    let workingFetchers = new Map(state.fetchers);\n    workingFetchers.set(key, fetcher);\n    updateState(\n      { fetchers: workingFetchers },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n  function setFetcherError(key, routeId, error, opts = {}) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    let workingFetchers = new Map(state.fetchers);\n    deleteFetcher(workingFetchers, key);\n    updateState(\n      {\n        errors: {\n          [boundaryMatch.route.id]: error\n        },\n        fetchers: workingFetchers\n      },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n  function getFetcher(key) {\n    activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n    if (fetchersQueuedForDeletion.has(key)) {\n      fetchersQueuedForDeletion.delete(key);\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n  function resetFetcher(key, opts) {\n    abortFetcher(key, opts?.reason);\n    updateFetcherState(key, getDoneFetcher(null));\n  }\n  function deleteFetcher(fetchers, key) {\n    let fetcher = state.fetchers.get(key);\n    if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    fetchersQueuedForDeletion.delete(key);\n    cancelledFetcherLoads.delete(key);\n    fetchers.delete(key);\n  }\n  function queueFetcherForDeletion(key) {\n    let count = (activeFetchers.get(key) || 0) - 1;\n    if (count <= 0) {\n      activeFetchers.delete(key);\n      fetchersQueuedForDeletion.add(key);\n    } else {\n      activeFetchers.set(key, count);\n    }\n    updateState({ fetchers: new Map(state.fetchers) });\n  }\n  function abortFetcher(key, reason) {\n    let controller = fetchControllers.get(key);\n    if (controller) {\n      controller.abort(reason);\n      fetchControllers.delete(key);\n    }\n  }\n  function markFetchersDone(keys, fetchers) {\n    for (let key of keys) {\n      let fetcher = fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      fetchers.set(key, doneFetcher);\n    }\n  }\n  function markFetchRedirectsDone(fetchers) {\n    let doneKeys = [];\n    let didUpdateFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        didUpdateFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys, fetchers);\n    return didUpdateFetchers;\n  }\n  function abortStaleFetchLoads(landedId, fetchers) {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = fetchers.get(key);\n        invariant(fetcher, `Expected fetcher: ${key}`);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys, fetchers);\n    return yeetedKeys.length > 0;\n  }\n  function getBlocker(key, fn) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n    return blocker;\n  }\n  function deleteBlocker(key) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n  function updateBlocker(key, newBlocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    invariant(\n      blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\",\n      `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n    );\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({ blockers });\n  }\n  function shouldBlockNavigation({\n    currentLocation,\n    nextLocation,\n    historyAction\n  }) {\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n    if (blocker && blocker.state === \"proceeding\") {\n      return;\n    }\n    if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n      return blockerKey;\n    }\n  }\n  function handleNavigational404(pathname) {\n    let error = getInternalRouterError(404, { pathname });\n    let routesToUse = dataRoutes.activeRoutes;\n    let { matches, route } = getShortCircuitMatches(routesToUse);\n    return { notFoundMatches: matches, route, error };\n  }\n  function enableScrollRestoration(positions, getPosition, getKey) {\n    savedScrollPositions2 = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey2 = getKey || null;\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({ restoreScrollPosition: y });\n      }\n    }\n    return () => {\n      savedScrollPositions2 = null;\n      getScrollPosition = null;\n      getScrollRestorationKey2 = null;\n    };\n  }\n  function getScrollKey(location, matches) {\n    if (getScrollRestorationKey2) {\n      let key = getScrollRestorationKey2(\n        location,\n        matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n      );\n      return key || location.key;\n    }\n    return location.key;\n  }\n  function saveScrollPosition(location, matches) {\n    if (savedScrollPositions2 && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions2[key] = getScrollPosition();\n    }\n  }\n  function getSavedScrollPosition(location, matches) {\n    if (savedScrollPositions2) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions2[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n  function checkFogOfWar(matches, routesToUse, pathname) {\n    if (init.patchRoutesOnNavigation) {\n      let activeBranches = dataRoutes.branches;\n      if (!matches) {\n        let fogMatches = matchRoutesImpl(\n          routesToUse,\n          pathname,\n          basename,\n          true,\n          activeBranches\n        );\n        return { active: true, matches: fogMatches || [] };\n      } else {\n        if (Object.keys(matches[0].params).length > 0) {\n          let partialMatches = matchRoutesImpl(\n            routesToUse,\n            pathname,\n            basename,\n            true,\n            activeBranches\n          );\n          return { active: true, matches: partialMatches };\n        }\n      }\n    }\n    return { active: false, matches: null };\n  }\n  async function discoverRoutes(matches, pathname, signal, fetcherKey) {\n    if (!init.patchRoutesOnNavigation) {\n      return { type: \"success\", matches };\n    }\n    let partialMatches = matches;\n    while (true) {\n      let localManifest = manifest;\n      try {\n        await init.patchRoutesOnNavigation({\n          signal,\n          path: pathname,\n          matches: partialMatches,\n          fetcherKey,\n          patch: (routeId, children) => {\n            if (signal.aborted) return;\n            patchRoutesImpl(\n              routeId,\n              children,\n              dataRoutes,\n              localManifest,\n              mapRouteProperties2,\n              false\n            );\n          }\n        });\n      } catch (e) {\n        return { type: \"error\", error: e, partialMatches };\n      }\n      if (signal.aborted) {\n        return { type: \"aborted\" };\n      }\n      let activeBranches = dataRoutes.branches;\n      let newMatches = matchRoutesImpl(\n        dataRoutes.activeRoutes,\n        pathname,\n        basename,\n        false,\n        activeBranches\n      );\n      let newPartialMatches = null;\n      if (newMatches) {\n        if (Object.keys(newMatches[0].params).length === 0) {\n          return { type: \"success\", matches: newMatches };\n        } else {\n          newPartialMatches = matchRoutesImpl(\n            dataRoutes.activeRoutes,\n            pathname,\n            basename,\n            true,\n            activeBranches\n          );\n          let matchedDeeper = newPartialMatches && partialMatches.length < newPartialMatches.length && compareMatches(\n            partialMatches,\n            newPartialMatches.slice(0, partialMatches.length)\n          );\n          if (!matchedDeeper) {\n            return { type: \"success\", matches: newMatches };\n          }\n        }\n      }\n      if (!newPartialMatches) {\n        newPartialMatches = matchRoutesImpl(\n          dataRoutes.activeRoutes,\n          pathname,\n          basename,\n          true,\n          activeBranches\n        );\n      }\n      if (!newPartialMatches || compareMatches(partialMatches, newPartialMatches)) {\n        return { type: \"success\", matches: null };\n      }\n      partialMatches = newPartialMatches;\n    }\n  }\n  function compareMatches(a, b) {\n    return a.length === b.length && a.every((m, i) => m.route.id === b[i].route.id);\n  }\n  function _internalSetRoutes(newRoutes) {\n    manifest = {};\n    dataRoutes.setHmrRoutes(\n      convertRoutesToDataRoutes(\n        newRoutes,\n        mapRouteProperties2,\n        void 0,\n        manifest\n      )\n    );\n  }\n  function patchRoutes(routeId, children, unstable_allowElementMutations = false) {\n    patchRoutesImpl(\n      routeId,\n      children,\n      dataRoutes,\n      manifest,\n      mapRouteProperties2,\n      unstable_allowElementMutations\n    );\n    if (!dataRoutes.hasHMRRoutes) {\n      updateState({});\n    }\n  }\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes.stableRoutes;\n    },\n    get branches() {\n      return dataRoutes.branches;\n    },\n    get manifest() {\n      return manifest;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch: fetch2,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to) => init.history.createHref(to),\n    createURL: (to) => init.history.createURL(to),\n    encodeLocation: (to) => init.history.encodeLocation(to),\n    getFetcher,\n    resetFetcher,\n    deleteFetcher: queueFetcherForDeletion,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    patchRoutes,\n    _internalFetchControllers: fetchControllers,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes,\n    _internalSetStateDoNotUseOrYouWillBreakYourApp(newState) {\n      updateState(newState);\n    }\n  };\n  if (init.instrumentations) {\n    router = instrumentClientSideRouter(\n      router,\n      init.instrumentations.map((i) => i.router).filter(Boolean)\n    );\n  }\n  return router;\n}\nfunction createStaticHandler(routes, opts) {\n  invariant(\n    routes.length > 0,\n    \"You must provide a non-empty routes array to createStaticHandler\"\n  );\n  let manifest = {};\n  let basename = (opts ? opts.basename : null) || \"/\";\n  let _mapRouteProperties = opts?.mapRouteProperties || defaultMapRouteProperties;\n  let mapRouteProperties2 = _mapRouteProperties;\n  let future = {\n    ...opts?.future\n  };\n  if (opts?.instrumentations) {\n    let instrumentations = opts.instrumentations;\n    mapRouteProperties2 = (route) => {\n      return {\n        ..._mapRouteProperties(route),\n        ...getRouteInstrumentationUpdates(\n          instrumentations.map((i) => i.route).filter(Boolean),\n          route\n        )\n      };\n    };\n  }\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties2,\n    void 0,\n    manifest\n  );\n  let routeBranches = flattenAndRankRoutes(dataRoutes);\n  async function query(request, {\n    requestContext,\n    filterMatchesToLoad,\n    skipLoaderErrorBubbling,\n    skipRevalidation,\n    dataStrategy,\n    generateMiddlewareResponse,\n    normalizePath\n  } = {}) {\n    let normalizePathImpl = normalizePath || defaultNormalizePath;\n    let method = request.method;\n    let location = createLocation(\n      \"\",\n      normalizePathImpl(request),\n      null,\n      \"default\"\n    );\n    let matches = matchRoutesImpl(\n      dataRoutes,\n      location,\n      basename,\n      false,\n      routeBranches\n    );\n    requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n    if (!isValidMethod(method) && method !== \"HEAD\") {\n      let error = getInternalRouterError(405, { method });\n      let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);\n      let staticContext = {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n      return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n    } else if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);\n      let staticContext = {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n      return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n    }\n    if (generateMiddlewareResponse) {\n      invariant(\n        requestContext instanceof RouterContextProvider,\n        \"When using middleware in `staticHandler.query()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n      );\n      try {\n        await loadLazyMiddlewareForMatches(\n          matches,\n          manifest,\n          mapRouteProperties2\n        );\n        let renderedStaticContext;\n        let response = await runServerMiddlewarePipeline(\n          {\n            request,\n            url: createDataFunctionUrl(request, location),\n            pattern: getRoutePattern(matches),\n            matches,\n            params: matches[0].params,\n            // If we're calling middleware then it must be enabled so we can cast\n            // this to the proper type knowing it's not an `AppLoadContext`\n            context: requestContext\n          },\n          async () => {\n            let res = await generateMiddlewareResponse(\n              async (revalidationRequest, opts2 = {}) => {\n                let result2 = await queryImpl(\n                  revalidationRequest,\n                  location,\n                  matches,\n                  requestContext,\n                  dataStrategy || null,\n                  skipLoaderErrorBubbling === true,\n                  null,\n                  \"filterMatchesToLoad\" in opts2 ? opts2.filterMatchesToLoad ?? null : filterMatchesToLoad ?? null,\n                  skipRevalidation === true\n                );\n                if (isResponse(result2)) {\n                  return result2;\n                }\n                renderedStaticContext = { location, basename, ...result2 };\n                return renderedStaticContext;\n              }\n            );\n            return res;\n          },\n          async (error, routeId) => {\n            if (isRedirectResponse(error)) {\n              return error;\n            }\n            if (isResponse(error)) {\n              try {\n                error = new ErrorResponseImpl(\n                  error.status,\n                  error.statusText,\n                  await parseResponseBody(error)\n                );\n              } catch (e) {\n                error = e;\n              }\n            }\n            if (isDataWithResponseInit(error)) {\n              error = dataWithResponseInitToErrorResponse(error);\n            }\n            if (renderedStaticContext) {\n              if (routeId in renderedStaticContext.loaderData) {\n                renderedStaticContext.loaderData[routeId] = void 0;\n              }\n              let staticContext = getStaticContextFromError(\n                dataRoutes,\n                renderedStaticContext,\n                error,\n                skipLoaderErrorBubbling ? routeId : findNearestBoundary(matches, routeId).route.id\n              );\n              return generateMiddlewareResponse(\n                () => Promise.resolve(staticContext)\n              );\n            } else {\n              let boundaryRouteId = skipLoaderErrorBubbling ? routeId : findNearestBoundary(\n                matches,\n                matches.find(\n                  (m) => m.route.id === routeId || m.route.loader\n                )?.route.id || routeId\n              ).route.id;\n              let staticContext = {\n                matches,\n                location,\n                basename,\n                loaderData: {},\n                actionData: null,\n                errors: {\n                  [boundaryRouteId]: error\n                },\n                statusCode: isRouteErrorResponse(error) ? error.status : 500,\n                actionHeaders: {},\n                loaderHeaders: {}\n              };\n              return generateMiddlewareResponse(\n                () => Promise.resolve(staticContext)\n              );\n            }\n          }\n        );\n        invariant(isResponse(response), \"Expected a response in query()\");\n        return response;\n      } catch (e) {\n        if (isResponse(e)) {\n          return e;\n        }\n        throw e;\n      }\n    }\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      dataStrategy || null,\n      skipLoaderErrorBubbling === true,\n      null,\n      filterMatchesToLoad || null,\n      skipRevalidation === true\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n    return { location, basename, ...result };\n  }\n  async function queryRoute(request, {\n    routeId,\n    requestContext,\n    dataStrategy,\n    generateMiddlewareResponse,\n    normalizePath\n  } = {}) {\n    let normalizePathImpl = normalizePath || defaultNormalizePath;\n    let method = request.method;\n    let location = createLocation(\n      \"\",\n      normalizePathImpl(request),\n      null,\n      \"default\"\n    );\n    let matches = matchRoutesImpl(\n      dataRoutes,\n      location,\n      basename,\n      false,\n      routeBranches\n    );\n    requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n    if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n      throw getInternalRouterError(405, { method });\n    } else if (!matches) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n    let match = routeId ? matches.find((m) => m.route.id === routeId) : getTargetMatch(matches, location);\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId\n      });\n    } else if (!match) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n    if (generateMiddlewareResponse) {\n      invariant(\n        requestContext instanceof RouterContextProvider,\n        \"When using middleware in `staticHandler.queryRoute()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n      );\n      await loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2);\n      let response = await runServerMiddlewarePipeline(\n        {\n          request,\n          url: createDataFunctionUrl(request, location),\n          pattern: getRoutePattern(matches),\n          matches,\n          params: matches[0].params,\n          // If we're calling middleware then it must be enabled so we can cast\n          // this to the proper type knowing it's not an `AppLoadContext`\n          context: requestContext\n        },\n        async () => {\n          let res = await generateMiddlewareResponse(\n            async (innerRequest) => {\n              let result2 = await queryImpl(\n                innerRequest,\n                location,\n                matches,\n                requestContext,\n                dataStrategy || null,\n                false,\n                match,\n                null,\n                false\n              );\n              let processed = handleQueryResult(result2);\n              return isResponse(processed) ? processed : typeof processed === \"string\" ? new Response(processed) : Response.json(processed);\n            }\n          );\n          return res;\n        },\n        (error) => {\n          if (isDataWithResponseInit(error)) {\n            return Promise.resolve(dataWithResponseInitToResponse(error));\n          }\n          if (isResponse(error)) {\n            return Promise.resolve(error);\n          }\n          throw error;\n        }\n      );\n      return response;\n    }\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      dataStrategy || null,\n      false,\n      match,\n      null,\n      false\n    );\n    return handleQueryResult(result);\n    function handleQueryResult(result2) {\n      if (isResponse(result2)) {\n        return result2;\n      }\n      let error = result2.errors ? Object.values(result2.errors)[0] : void 0;\n      if (error !== void 0) {\n        throw error;\n      }\n      if (result2.actionData) {\n        return Object.values(result2.actionData)[0];\n      }\n      if (result2.loaderData) {\n        return Object.values(result2.loaderData)[0];\n      }\n      return void 0;\n    }\n  }\n  async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, skipRevalidation) {\n    invariant(\n      request.signal,\n      \"query()/queryRoute() requests must contain an AbortController signal\"\n    );\n    try {\n      if (isMutationMethod(request.method)) {\n        let result2 = await submit(\n          request,\n          location,\n          matches,\n          routeMatch || getTargetMatch(matches, location),\n          requestContext,\n          dataStrategy,\n          skipLoaderErrorBubbling,\n          routeMatch != null,\n          filterMatchesToLoad,\n          skipRevalidation\n        );\n        return result2;\n      }\n      let result = await loadRouteData(\n        request,\n        location,\n        matches,\n        requestContext,\n        dataStrategy,\n        skipLoaderErrorBubbling,\n        routeMatch,\n        filterMatchesToLoad\n      );\n      return isResponse(result) ? result : {\n        ...result,\n        actionData: null,\n        actionHeaders: {}\n      };\n    } catch (e) {\n      if (isDataStrategyResult(e) && isResponse(e.result)) {\n        if (e.type === \"error\" /* error */) {\n          throw e.result;\n        }\n        return e.result;\n      }\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n  async function submit(request, location, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest, filterMatchesToLoad, skipRevalidation) {\n    let result;\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: \"error\" /* error */,\n        error\n      };\n    } else {\n      let dsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        matches,\n        actionMatch,\n        [],\n        requestContext\n      );\n      let results = await callDataStrategy(\n        request,\n        location,\n        dsMatches,\n        isRouteRequest,\n        requestContext,\n        dataStrategy\n      );\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        throwStaticHandlerAbortedError(request, isRouteRequest);\n      }\n    }\n    if (isRedirectResult(result)) {\n      throw new Response(null, {\n        status: result.response.status,\n        headers: {\n          Location: result.response.headers.get(\"Location\")\n        }\n      });\n    }\n    if (isRouteRequest) {\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: { [actionMatch.route.id]: result.data },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    }\n    if (skipRevalidation) {\n      if (isErrorResult(result)) {\n        let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n        return {\n          statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n          actionData: null,\n          actionHeaders: {\n            ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n          },\n          matches,\n          loaderData: {},\n          errors: {\n            [boundaryMatch.route.id]: result.error\n          },\n          loaderHeaders: {}\n        };\n      } else {\n        return {\n          actionData: {\n            [actionMatch.route.id]: result.data\n          },\n          actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {},\n          matches,\n          loaderData: {},\n          errors: null,\n          statusCode: result.statusCode || 200,\n          loaderHeaders: {}\n        };\n      }\n    }\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal\n    });\n    if (isErrorResult(result)) {\n      let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n      let handlerContext2 = await loadRouteData(\n        loaderRequest,\n        location,\n        matches,\n        requestContext,\n        dataStrategy,\n        skipLoaderErrorBubbling,\n        null,\n        filterMatchesToLoad,\n        [boundaryMatch.route.id, result]\n      );\n      return {\n        ...handlerContext2,\n        statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n        actionData: null,\n        actionHeaders: {\n          ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n        }\n      };\n    }\n    let handlerContext = await loadRouteData(\n      loaderRequest,\n      location,\n      matches,\n      requestContext,\n      dataStrategy,\n      skipLoaderErrorBubbling,\n      null,\n      filterMatchesToLoad\n    );\n    return {\n      ...handlerContext,\n      actionData: {\n        [actionMatch.route.id]: result.data\n      },\n      // action status codes take precedence over loader status codes\n      ...result.statusCode ? { statusCode: result.statusCode } : {},\n      actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {}\n    };\n  }\n  async function loadRouteData(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, pendingActionResult) {\n    let isRouteRequest = routeMatch != null;\n    if (isRouteRequest && !routeMatch?.route.loader && !routeMatch?.route.lazy) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch?.route.id\n      });\n    }\n    let dsMatches;\n    if (routeMatch) {\n      dsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        matches,\n        routeMatch,\n        [],\n        requestContext\n      );\n    } else {\n      let maxIdx = pendingActionResult && isErrorResult(pendingActionResult[1]) ? (\n        // Up to but not including the boundary\n        matches.findIndex((m) => m.route.id === pendingActionResult[0]) - 1\n      ) : void 0;\n      let pattern = getRoutePattern(matches);\n      dsMatches = matches.map((match, index) => {\n        if (maxIdx != null && index > maxIdx) {\n          return getDataStrategyMatch(\n            mapRouteProperties2,\n            manifest,\n            request,\n            location,\n            pattern,\n            match,\n            [],\n            requestContext,\n            false\n          );\n        }\n        return getDataStrategyMatch(\n          mapRouteProperties2,\n          manifest,\n          request,\n          location,\n          pattern,\n          match,\n          [],\n          requestContext,\n          (match.route.loader || match.route.lazy) != null && (!filterMatchesToLoad || filterMatchesToLoad(match))\n        );\n      });\n    }\n    if (!dataStrategy && !dsMatches.some((m) => m.shouldLoad)) {\n      return {\n        matches,\n        loaderData: {},\n        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n          [pendingActionResult[0]]: pendingActionResult[1].error\n        } : null,\n        statusCode: 200,\n        loaderHeaders: {}\n      };\n    }\n    let results = await callDataStrategy(\n      request,\n      location,\n      dsMatches,\n      isRouteRequest,\n      requestContext,\n      dataStrategy\n    );\n    if (request.signal.aborted) {\n      throwStaticHandlerAbortedError(request, isRouteRequest);\n    }\n    let handlerContext = processRouteLoaderData(\n      matches,\n      results,\n      pendingActionResult,\n      true,\n      skipLoaderErrorBubbling\n    );\n    return {\n      ...handlerContext,\n      matches\n    };\n  }\n  async function callDataStrategy(request, location, matches, isRouteRequest, requestContext, dataStrategy) {\n    let results = await callDataStrategyImpl(\n      dataStrategy || defaultDataStrategy,\n      request,\n      location,\n      matches,\n      null,\n      requestContext,\n      true\n    );\n    let dataResults = {};\n    await Promise.all(\n      matches.map(async (match) => {\n        if (!(match.route.id in results)) {\n          return;\n        }\n        let result = results[match.route.id];\n        if (isRedirectDataStrategyResult(result)) {\n          let response = result.result;\n          throw normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            match.route.id,\n            matches,\n            basename\n          );\n        }\n        if (isRouteRequest) {\n          if (isResponse(result.result)) {\n            throw result;\n          } else if (isDataWithResponseInit(result.result)) {\n            throw dataWithResponseInitToResponse(result.result);\n          }\n        }\n        dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n      })\n    );\n    return dataResults;\n  }\n  return {\n    dataRoutes,\n    _internalRouteBranches: routeBranches,\n    query,\n    queryRoute\n  };\n}\nfunction getStaticContextFromError(routes, handlerContext, error, boundaryId) {\n  let errorBoundaryId = boundaryId || handlerContext._deepestRenderedBoundaryId || routes[0].id;\n  return {\n    ...handlerContext,\n    statusCode: isRouteErrorResponse(error) ? error.status : 500,\n    errors: {\n      [errorBoundaryId]: error\n    }\n  };\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest) {\n  if (request.signal.reason !== void 0) {\n    throw request.signal.reason;\n  }\n  let method = isRouteRequest ? \"queryRoute\" : \"query\";\n  throw new Error(\n    `${method}() call aborted without an \\`AbortSignal.reason\\`: ${request.method} ${request.url}`\n  );\n}\nfunction isSubmissionNavigation(opts) {\n  return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction defaultNormalizePath(request) {\n  let url = new URL(request.url);\n  return {\n    pathname: url.pathname,\n    search: url.search,\n    hash: url.hash\n  };\n}\nfunction normalizeTo(location, matches, basename, to, fromRouteId, relative) {\n  let contextualMatches;\n  let activeRouteMatch;\n  if (fromRouteId) {\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n  let path = resolveTo(\n    to ? to : \".\",\n    getResolveToMatches(contextualMatches),\n    stripBasename(location.pathname, basename) || location.pathname,\n    relative === \"path\"\n  );\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n  if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n    let nakedIndex = hasNakedIndexQuery(path.search);\n    if (activeRouteMatch.route.index && !nakedIndex) {\n      path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n    } else if (!activeRouteMatch.route.index && nakedIndex) {\n      let params = new URLSearchParams(path.search);\n      let indexValues = params.getAll(\"index\");\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? `?${qs}` : \"\";\n    }\n  }\n  if (basename !== \"/\") {\n    path.pathname = prependBasename({ basename, pathname: path.pathname });\n  }\n  return createPath(path);\n}\nfunction normalizeNavigateOptions(isFetcher, path, opts) {\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return { path };\n  }\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, { method: opts.formMethod })\n    };\n  }\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, { type: \"invalid-body\" })\n  });\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = rawFormMethod.toUpperCase();\n  let formAction = stripHashFromPath(path);\n  if (opts.body !== void 0) {\n    if (opts.formEncType === \"text/plain\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ? (\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n        Array.from(opts.body.entries()).reduce(\n          (acc, [name, value]) => `${acc}${name}=${value}\n`,\n          \"\"\n        )\n      ) : String(opts.body);\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: void 0,\n          json: void 0,\n          text\n        }\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      try {\n        let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: void 0,\n            json,\n            text: void 0\n          }\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n  invariant(\n    typeof FormData === \"function\",\n    \"FormData is not available in this environment\"\n  );\n  let searchParams;\n  let formData;\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n  let submission = {\n    formMethod,\n    formAction,\n    formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n    formData,\n    json: void 0,\n    text: void 0\n  };\n  if (isMutationMethod(submission.formMethod)) {\n    return { path, submission };\n  }\n  let parsedPath = parsePath(path);\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = `?${searchParams}`;\n  return { path: createPath(parsedPath), submission };\n}\nfunction getMatchesToLoad(request, scopedContext, mapRouteProperties2, manifest, history, state, matches, submission, location, lazyRoutePropertiesToSkip, initialHydration, isRevalidationRequired, cancelledFetcherLoads, fetchersQueuedForDeletion, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, hasPatchRoutesOnNavigation, branches, pendingActionResult, callSiteDefaultShouldRevalidate) {\n  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n  let maxIdx;\n  if (initialHydration && state.errors) {\n    let boundaryId = Object.keys(state.errors)[0];\n    maxIdx = matches.findIndex((m) => m.route.id === boundaryId);\n  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n    let boundaryId = pendingActionResult[0];\n    maxIdx = matches.findIndex((m) => m.route.id === boundaryId) - 1;\n  }\n  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n  let shouldSkipRevalidation = actionStatus && actionStatus >= 400;\n  let baseShouldRevalidateArgs = {\n    currentUrl,\n    currentParams: state.matches[0]?.params || {},\n    nextUrl,\n    nextParams: matches[0].params,\n    ...submission,\n    actionResult,\n    actionStatus\n  };\n  let pattern = getRoutePattern(matches);\n  let dsMatches = matches.map((match, index) => {\n    let { route } = match;\n    let forceShouldLoad = null;\n    if (maxIdx != null && index > maxIdx) {\n      forceShouldLoad = false;\n    } else if (route.lazy) {\n      forceShouldLoad = true;\n    } else if (!routeHasLoaderOrMiddleware(route)) {\n      forceShouldLoad = false;\n    } else if (initialHydration) {\n      let { shouldLoad: shouldLoad2 } = getRouteHydrationStatus(\n        route,\n        state.loaderData,\n        state.errors\n      );\n      forceShouldLoad = shouldLoad2;\n    } else if (isNewLoader(state.loaderData, state.matches[index], match)) {\n      forceShouldLoad = true;\n    }\n    if (forceShouldLoad !== null) {\n      return getDataStrategyMatch(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        pattern,\n        match,\n        lazyRoutePropertiesToSkip,\n        scopedContext,\n        forceShouldLoad\n      );\n    }\n    let defaultShouldRevalidate = false;\n    if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n      defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n    } else if (shouldSkipRevalidation) {\n      defaultShouldRevalidate = false;\n    } else if (isRevalidationRequired) {\n      defaultShouldRevalidate = true;\n    } else if (currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search) {\n      defaultShouldRevalidate = true;\n    } else if (currentUrl.search !== nextUrl.search) {\n      defaultShouldRevalidate = true;\n    } else if (isNewRouteInstance(state.matches[index], match)) {\n      defaultShouldRevalidate = true;\n    }\n    let shouldRevalidateArgs = {\n      ...baseShouldRevalidateArgs,\n      defaultShouldRevalidate\n    };\n    let shouldLoad = shouldRevalidateLoader(match, shouldRevalidateArgs);\n    return getDataStrategyMatch(\n      mapRouteProperties2,\n      manifest,\n      request,\n      location,\n      pattern,\n      match,\n      lazyRoutePropertiesToSkip,\n      scopedContext,\n      shouldLoad,\n      shouldRevalidateArgs,\n      callSiteDefaultShouldRevalidate\n    );\n  });\n  let revalidatingFetchers = [];\n  fetchLoadMatches.forEach((f, key) => {\n    if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || fetchersQueuedForDeletion.has(key)) {\n      return;\n    }\n    let fetcher = state.fetchers.get(key);\n    let isMidInitialLoad = fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0;\n    let fetcherMatches = matchRoutesImpl(\n      routesToUse,\n      f.path,\n      basename ?? \"/\",\n      false,\n      branches\n    );\n    if (!fetcherMatches) {\n      if (hasPatchRoutesOnNavigation && isMidInitialLoad) {\n        return;\n      }\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        request: null,\n        controller: null\n      });\n      return;\n    }\n    if (fetchRedirectIds.has(key)) {\n      return;\n    }\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n    let fetchController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      history,\n      f.path,\n      fetchController.signal\n    );\n    let fetcherDsMatches = null;\n    if (cancelledFetcherLoads.has(key)) {\n      cancelledFetcherLoads.delete(key);\n      fetcherDsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        fetchRequest,\n        f.path,\n        fetcherMatches,\n        fetcherMatch,\n        lazyRoutePropertiesToSkip,\n        scopedContext\n      );\n    } else if (isMidInitialLoad) {\n      if (isRevalidationRequired) {\n        fetcherDsMatches = getTargetedDataStrategyMatches(\n          mapRouteProperties2,\n          manifest,\n          fetchRequest,\n          f.path,\n          fetcherMatches,\n          fetcherMatch,\n          lazyRoutePropertiesToSkip,\n          scopedContext\n        );\n      }\n    } else {\n      let defaultShouldRevalidate;\n      if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n        defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n      } else if (shouldSkipRevalidation) {\n        defaultShouldRevalidate = false;\n      } else {\n        defaultShouldRevalidate = isRevalidationRequired;\n      }\n      let shouldRevalidateArgs = {\n        ...baseShouldRevalidateArgs,\n        defaultShouldRevalidate\n      };\n      if (shouldRevalidateLoader(fetcherMatch, shouldRevalidateArgs)) {\n        fetcherDsMatches = getTargetedDataStrategyMatches(\n          mapRouteProperties2,\n          manifest,\n          fetchRequest,\n          f.path,\n          fetcherMatches,\n          fetcherMatch,\n          lazyRoutePropertiesToSkip,\n          scopedContext,\n          shouldRevalidateArgs\n        );\n      }\n    }\n    if (fetcherDsMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherDsMatches,\n        match: fetcherMatch,\n        request: fetchRequest,\n        controller: fetchController\n      });\n    }\n  });\n  return { dsMatches, revalidatingFetchers };\n}\nfunction routeHasLoaderOrMiddleware(route) {\n  return route.loader != null || route.middleware != null && route.middleware.length > 0;\n}\nfunction getRouteHydrationStatus(route, loaderData, errors) {\n  if (route.lazy) {\n    return { shouldLoad: true, renderFallback: true };\n  }\n  if (!routeHasLoaderOrMiddleware(route)) {\n    return { shouldLoad: false, renderFallback: false };\n  }\n  let hasData = loaderData != null && route.id in loaderData;\n  let hasError = errors != null && errors[route.id] !== void 0;\n  if (!hasData && hasError) {\n    return { shouldLoad: false, renderFallback: false };\n  }\n  if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n    return { shouldLoad: true, renderFallback: !hasData };\n  }\n  let shouldLoad = !hasData && !hasError;\n  return { shouldLoad, renderFallback: shouldLoad };\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n  let isNew = (\n    // [a] -> [a, b]\n    !currentMatch || // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id\n  );\n  let isMissingData = !currentLoaderData.hasOwnProperty(match.route.id);\n  return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n  );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n  return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, dataRoutes, manifest, mapRouteProperties2, allowElementMutations) {\n  let childrenToPatch;\n  if (routeId) {\n    let route = manifest[routeId];\n    invariant(\n      route,\n      `No route found to patch children into: routeId = ${routeId}`\n    );\n    if (!route.children) {\n      route.children = [];\n    }\n    childrenToPatch = route.children;\n  } else {\n    childrenToPatch = dataRoutes.activeRoutes;\n  }\n  let uniqueChildren = [];\n  let existingChildren = [];\n  children.forEach((newRoute) => {\n    let existingRoute = childrenToPatch.find(\n      (existingRoute2) => isSameRoute(newRoute, existingRoute2)\n    );\n    if (existingRoute) {\n      existingChildren.push({ existingRoute, newRoute });\n    } else {\n      uniqueChildren.push(newRoute);\n    }\n  });\n  if (uniqueChildren.length > 0) {\n    let newRoutes = convertRoutesToDataRoutes(\n      uniqueChildren,\n      mapRouteProperties2,\n      [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n      manifest\n    );\n    childrenToPatch.push(...newRoutes);\n  }\n  if (allowElementMutations && existingChildren.length > 0) {\n    for (let i = 0; i < existingChildren.length; i++) {\n      let { existingRoute, newRoute } = existingChildren[i];\n      let existingRouteTyped = existingRoute;\n      let [newRouteTyped] = convertRoutesToDataRoutes(\n        [newRoute],\n        mapRouteProperties2,\n        [],\n        // Doesn't matter for mutated routes since they already have an id\n        {},\n        // Don't touch the manifest here since we're updating in place\n        true\n      );\n      Object.assign(existingRouteTyped, {\n        element: newRouteTyped.element ? newRouteTyped.element : existingRouteTyped.element,\n        errorElement: newRouteTyped.errorElement ? newRouteTyped.errorElement : existingRouteTyped.errorElement,\n        hydrateFallbackElement: newRouteTyped.hydrateFallbackElement ? newRouteTyped.hydrateFallbackElement : existingRouteTyped.hydrateFallbackElement\n      });\n    }\n  }\n  if (!dataRoutes.hasHMRRoutes) {\n    dataRoutes.setRoutes([...dataRoutes.activeRoutes]);\n  }\n}\nfunction isSameRoute(newRoute, existingRoute) {\n  if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n    return true;\n  }\n  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n    return false;\n  }\n  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n    return true;\n  }\n  return newRoute.children?.every(\n    (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n  ) ?? false;\n}\nvar lazyRoutePropertyCache = /* @__PURE__ */ new WeakMap();\nvar loadLazyRouteProperty = ({\n  key,\n  route,\n  manifest,\n  mapRouteProperties: mapRouteProperties2\n}) => {\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  if (!routeToUpdate.lazy || typeof routeToUpdate.lazy !== \"object\") {\n    return;\n  }\n  let lazyFn = routeToUpdate.lazy[key];\n  if (!lazyFn) {\n    return;\n  }\n  let cache = lazyRoutePropertyCache.get(routeToUpdate);\n  if (!cache) {\n    cache = {};\n    lazyRoutePropertyCache.set(routeToUpdate, cache);\n  }\n  let cachedPromise = cache[key];\n  if (cachedPromise) {\n    return cachedPromise;\n  }\n  let propertyPromise = (async () => {\n    let isUnsupported = isUnsupportedLazyRouteObjectKey(key);\n    let staticRouteValue = routeToUpdate[key];\n    let isStaticallyDefined = staticRouteValue !== void 0 && key !== \"hasErrorBoundary\";\n    if (isUnsupported) {\n      warning(\n        !isUnsupported,\n        \"Route property \" + key + \" is not a supported lazy route property. This property will be ignored.\"\n      );\n      cache[key] = Promise.resolve();\n    } else if (isStaticallyDefined) {\n      warning(\n        false,\n        `Route \"${routeToUpdate.id}\" has a static property \"${key}\" defined. The lazy property will be ignored.`\n      );\n    } else {\n      let value = await lazyFn();\n      if (value != null) {\n        Object.assign(routeToUpdate, { [key]: value });\n        Object.assign(routeToUpdate, mapRouteProperties2(routeToUpdate));\n      }\n    }\n    if (typeof routeToUpdate.lazy === \"object\") {\n      routeToUpdate.lazy[key] = void 0;\n      if (Object.values(routeToUpdate.lazy).every((value) => value === void 0)) {\n        routeToUpdate.lazy = void 0;\n      }\n    }\n  })();\n  cache[key] = propertyPromise;\n  return propertyPromise;\n};\nvar lazyRouteFunctionCache = /* @__PURE__ */ new WeakMap();\nfunction loadLazyRoute(route, type, manifest, mapRouteProperties2, lazyRoutePropertiesToSkip) {\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  if (!route.lazy) {\n    return {\n      lazyRoutePromise: void 0,\n      lazyHandlerPromise: void 0\n    };\n  }\n  if (typeof route.lazy === \"function\") {\n    let cachedPromise = lazyRouteFunctionCache.get(routeToUpdate);\n    if (cachedPromise) {\n      return {\n        lazyRoutePromise: cachedPromise,\n        lazyHandlerPromise: cachedPromise\n      };\n    }\n    let lazyRoutePromise2 = (async () => {\n      invariant(\n        typeof route.lazy === \"function\",\n        \"No lazy route function found\"\n      );\n      let lazyRoute = await route.lazy();\n      let routeUpdates = {};\n      for (let lazyRouteProperty in lazyRoute) {\n        let lazyValue = lazyRoute[lazyRouteProperty];\n        if (lazyValue === void 0) {\n          continue;\n        }\n        let isUnsupported = isUnsupportedLazyRouteFunctionKey(lazyRouteProperty);\n        let staticRouteValue = routeToUpdate[lazyRouteProperty];\n        let isStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n        // on the route updates\n        lazyRouteProperty !== \"hasErrorBoundary\";\n        if (isUnsupported) {\n          warning(\n            !isUnsupported,\n            \"Route property \" + lazyRouteProperty + \" is not a supported property to be returned from a lazy route function. This property will be ignored.\"\n          );\n        } else if (isStaticallyDefined) {\n          warning(\n            !isStaticallyDefined,\n            `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" defined but its lazy function is also returning a value for this property. The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n          );\n        } else {\n          routeUpdates[lazyRouteProperty] = lazyValue;\n        }\n      }\n      Object.assign(routeToUpdate, routeUpdates);\n      Object.assign(routeToUpdate, {\n        // To keep things framework agnostic, we use the provided `mapRouteProperties`\n        // function to set the framework-aware properties (`element`/`hasErrorBoundary`)\n        // since the logic will differ between frameworks.\n        ...mapRouteProperties2(routeToUpdate),\n        lazy: void 0\n      });\n    })();\n    lazyRouteFunctionCache.set(routeToUpdate, lazyRoutePromise2);\n    lazyRoutePromise2.catch(() => {\n    });\n    return {\n      lazyRoutePromise: lazyRoutePromise2,\n      lazyHandlerPromise: lazyRoutePromise2\n    };\n  }\n  let lazyKeys = Object.keys(route.lazy);\n  let lazyPropertyPromises = [];\n  let lazyHandlerPromise = void 0;\n  for (let key of lazyKeys) {\n    if (lazyRoutePropertiesToSkip && lazyRoutePropertiesToSkip.includes(key)) {\n      continue;\n    }\n    let promise = loadLazyRouteProperty({\n      key,\n      route,\n      manifest,\n      mapRouteProperties: mapRouteProperties2\n    });\n    if (promise) {\n      lazyPropertyPromises.push(promise);\n      if (key === type) {\n        lazyHandlerPromise = promise;\n      }\n    }\n  }\n  let lazyRoutePromise = lazyPropertyPromises.length > 0 ? Promise.all(lazyPropertyPromises).then(() => {\n  }) : void 0;\n  lazyRoutePromise?.catch(() => {\n  });\n  lazyHandlerPromise?.catch(() => {\n  });\n  return {\n    lazyRoutePromise,\n    lazyHandlerPromise\n  };\n}\nfunction isNonNullable(value) {\n  return value !== void 0;\n}\nfunction loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2) {\n  let promises = matches.map(({ route }) => {\n    if (typeof route.lazy !== \"object\" || !route.lazy.middleware) {\n      return void 0;\n    }\n    return loadLazyRouteProperty({\n      key: \"middleware\",\n      route,\n      manifest,\n      mapRouteProperties: mapRouteProperties2\n    });\n  }).filter(isNonNullable);\n  return promises.length > 0 ? Promise.all(promises) : void 0;\n}\nasync function defaultDataStrategy(args) {\n  let matchesToLoad = args.matches.filter((m) => m.shouldLoad);\n  let keyedResults = {};\n  let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n  results.forEach((result, i) => {\n    keyedResults[matchesToLoad[i].route.id] = result;\n  });\n  return keyedResults;\n}\nasync function defaultDataStrategyWithMiddleware(args) {\n  if (!args.matches.some((m) => m.route.middleware)) {\n    return defaultDataStrategy(args);\n  }\n  return runClientMiddlewarePipeline(args, () => defaultDataStrategy(args));\n}\nfunction runServerMiddlewarePipeline(args, handler, errorHandler) {\n  return runMiddlewarePipeline(\n    args,\n    handler,\n    processResult,\n    isResponse,\n    errorHandler\n  );\n  function processResult(result) {\n    return isDataWithResponseInit(result) ? dataWithResponseInitToResponse(result) : result;\n  }\n}\nfunction runClientMiddlewarePipeline(args, handler) {\n  return runMiddlewarePipeline(\n    args,\n    handler,\n    (r) => {\n      if (isRedirectResponse(r)) {\n        throw r;\n      }\n      return r;\n    },\n    isDataStrategyResults,\n    errorHandler\n  );\n  function errorHandler(error, routeId, nextResult) {\n    if (nextResult) {\n      return Promise.resolve(\n        Object.assign(nextResult.value, {\n          [routeId]: { type: \"error\", result: error }\n        })\n      );\n    } else {\n      let { matches } = args;\n      let maxBoundaryIdx = Math.min(\n        // Throwing route\n        Math.max(\n          matches.findIndex((m) => m.route.id === routeId),\n          0\n        ),\n        // or the shallowest route that needs to load data\n        Math.max(\n          matches.findIndex((m) => m.shouldCallHandler()),\n          0\n        )\n      );\n      let boundaryRouteId = findNearestBoundary(\n        matches,\n        matches[maxBoundaryIdx].route.id\n      ).route.id;\n      return Promise.resolve({\n        [boundaryRouteId]: { type: \"error\", result: error }\n      });\n    }\n  }\n}\nasync function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {\n  let { matches, ...dataFnArgs } = args;\n  let tuples = matches.flatMap(\n    (m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []\n  );\n  let result = await callRouteMiddleware(\n    dataFnArgs,\n    tuples,\n    handler,\n    processResult,\n    isResult,\n    errorHandler\n  );\n  return result;\n}\nasync function callRouteMiddleware(args, middlewares, handler, processResult, isResult, errorHandler, idx = 0) {\n  let { request } = args;\n  if (request.signal.aborted) {\n    throw request.signal.reason ?? new Error(`Request aborted: ${request.method} ${request.url}`);\n  }\n  let tuple = middlewares[idx];\n  if (!tuple) {\n    let result = await handler();\n    return result;\n  }\n  let [routeId, middleware] = tuple;\n  let nextResult;\n  let next = async () => {\n    if (nextResult) {\n      throw new Error(\"You may only call `next()` once per middleware\");\n    }\n    try {\n      let result = await callRouteMiddleware(\n        args,\n        middlewares,\n        handler,\n        processResult,\n        isResult,\n        errorHandler,\n        idx + 1\n      );\n      nextResult = { value: result };\n      return nextResult.value;\n    } catch (error) {\n      nextResult = { value: await errorHandler(error, routeId, nextResult) };\n      return nextResult.value;\n    }\n  };\n  try {\n    let value = await middleware(args, next);\n    let result = value != null ? processResult(value) : void 0;\n    if (isResult(result)) {\n      return result;\n    } else if (nextResult) {\n      return result ?? nextResult.value;\n    } else {\n      nextResult = { value: await next() };\n      return nextResult.value;\n    }\n  } catch (error) {\n    let response = await errorHandler(error, routeId, nextResult);\n    return response;\n  }\n}\nfunction getDataStrategyMatchLazyPromises(mapRouteProperties2, manifest, request, match, lazyRoutePropertiesToSkip) {\n  let lazyMiddlewarePromise = loadLazyRouteProperty({\n    key: \"middleware\",\n    route: match.route,\n    manifest,\n    mapRouteProperties: mapRouteProperties2\n  });\n  let lazyRoutePromises = loadLazyRoute(\n    match.route,\n    isMutationMethod(request.method) ? \"action\" : \"loader\",\n    manifest,\n    mapRouteProperties2,\n    lazyRoutePropertiesToSkip\n  );\n  return {\n    middleware: lazyMiddlewarePromise,\n    route: lazyRoutePromises.lazyRoutePromise,\n    handler: lazyRoutePromises.lazyHandlerPromise\n  };\n}\nfunction getDataStrategyMatch(mapRouteProperties2, manifest, request, path, pattern, match, lazyRoutePropertiesToSkip, scopedContext, shouldLoad, shouldRevalidateArgs = null, callSiteDefaultShouldRevalidate) {\n  let isUsingNewApi = false;\n  let _lazyPromises = getDataStrategyMatchLazyPromises(\n    mapRouteProperties2,\n    manifest,\n    request,\n    match,\n    lazyRoutePropertiesToSkip\n  );\n  return {\n    ...match,\n    _lazyPromises,\n    shouldLoad,\n    shouldRevalidateArgs,\n    shouldCallHandler(defaultShouldRevalidate) {\n      isUsingNewApi = true;\n      if (!shouldRevalidateArgs) {\n        return shouldLoad;\n      }\n      if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n        return shouldRevalidateLoader(match, {\n          ...shouldRevalidateArgs,\n          defaultShouldRevalidate: callSiteDefaultShouldRevalidate\n        });\n      }\n      if (typeof defaultShouldRevalidate === \"boolean\") {\n        return shouldRevalidateLoader(match, {\n          ...shouldRevalidateArgs,\n          defaultShouldRevalidate\n        });\n      }\n      return shouldRevalidateLoader(match, shouldRevalidateArgs);\n    },\n    resolve(handlerOverride) {\n      let { lazy, loader, middleware } = match.route;\n      let callHandler = isUsingNewApi || shouldLoad || handlerOverride && !isMutationMethod(request.method) && (lazy || loader);\n      let isMiddlewareOnlyRoute = middleware && middleware.length > 0 && !loader && !lazy;\n      if (callHandler && (isMutationMethod(request.method) || !isMiddlewareOnlyRoute)) {\n        return callLoaderOrAction({\n          request,\n          path,\n          pattern,\n          match,\n          lazyHandlerPromise: _lazyPromises?.handler,\n          lazyRoutePromise: _lazyPromises?.route,\n          handlerOverride,\n          scopedContext\n        });\n      }\n      return Promise.resolve({ type: \"data\" /* data */, result: void 0 });\n    }\n  };\n}\nfunction getTargetedDataStrategyMatches(mapRouteProperties2, manifest, request, path, matches, targetMatch, lazyRoutePropertiesToSkip, scopedContext, shouldRevalidateArgs = null) {\n  return matches.map((match) => {\n    if (match.route.id !== targetMatch.route.id) {\n      return {\n        ...match,\n        shouldLoad: false,\n        shouldRevalidateArgs,\n        shouldCallHandler: () => false,\n        _lazyPromises: getDataStrategyMatchLazyPromises(\n          mapRouteProperties2,\n          manifest,\n          request,\n          match,\n          lazyRoutePropertiesToSkip\n        ),\n        resolve: () => Promise.resolve({ type: \"data\", result: void 0 })\n      };\n    }\n    return getDataStrategyMatch(\n      mapRouteProperties2,\n      manifest,\n      request,\n      path,\n      getRoutePattern(matches),\n      match,\n      lazyRoutePropertiesToSkip,\n      scopedContext,\n      true,\n      shouldRevalidateArgs\n    );\n  });\n}\nasync function callDataStrategyImpl(dataStrategyImpl, request, path, matches, fetcherKey, scopedContext, isStaticHandler) {\n  if (matches.some((m) => m._lazyPromises?.middleware)) {\n    await Promise.all(matches.map((m) => m._lazyPromises?.middleware));\n  }\n  let dataStrategyArgs = {\n    request,\n    url: createDataFunctionUrl(request, path),\n    pattern: getRoutePattern(matches),\n    params: matches[0].params,\n    context: scopedContext,\n    matches\n  };\n  let runClientMiddleware = isStaticHandler ? () => {\n    throw new Error(\n      \"You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response.  You can enable middleware via the `respond` API in `query`/`queryRoute`\"\n    );\n  } : (cb) => {\n    let typedDataStrategyArgs = dataStrategyArgs;\n    return runClientMiddlewarePipeline(typedDataStrategyArgs, () => {\n      return cb({\n        ...typedDataStrategyArgs,\n        fetcherKey,\n        runClientMiddleware: () => {\n          throw new Error(\n            \"Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler\"\n          );\n        }\n      });\n    });\n  };\n  let results = await dataStrategyImpl({\n    ...dataStrategyArgs,\n    fetcherKey,\n    runClientMiddleware\n  });\n  try {\n    await Promise.all(\n      matches.flatMap((m) => [\n        m._lazyPromises?.handler,\n        m._lazyPromises?.route\n      ])\n    );\n  } catch (e) {\n  }\n  return results;\n}\nasync function callLoaderOrAction({\n  request,\n  path,\n  pattern,\n  match,\n  lazyHandlerPromise,\n  lazyRoutePromise,\n  handlerOverride,\n  scopedContext\n}) {\n  let result;\n  let onReject;\n  let isAction = isMutationMethod(request.method);\n  let type = isAction ? \"action\" : \"loader\";\n  let runHandler = (handler) => {\n    let reject;\n    let abortPromise = new Promise((_, r) => reject = r);\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n    let actualHandler = (ctx) => {\n      if (typeof handler !== \"function\") {\n        return Promise.reject(\n          new Error(\n            `You cannot call the handler for a route which defines a boolean \"${type}\" [routeId: ${match.route.id}]`\n          )\n        );\n      }\n      return handler(\n        {\n          request,\n          url: createDataFunctionUrl(request, path),\n          pattern,\n          params: match.params,\n          context: scopedContext\n        },\n        ...ctx !== void 0 ? [ctx] : []\n      );\n    };\n    let handlerPromise = (async () => {\n      try {\n        let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n        return { type: \"data\", result: val };\n      } catch (e) {\n        return { type: \"error\", result: e };\n      }\n    })();\n    return Promise.race([handlerPromise, abortPromise]);\n  };\n  try {\n    let handler = isAction ? match.route.action : match.route.loader;\n    if (lazyHandlerPromise || lazyRoutePromise) {\n      if (handler) {\n        let handlerError;\n        let [value] = await Promise.all([\n          // If the handler throws, don't let it immediately bubble out,\n          // since we need to let the lazy() execution finish so we know if this\n          // route has a boundary that can handle the error\n          runHandler(handler).catch((e) => {\n            handlerError = e;\n          }),\n          // Ensure all lazy route promises are resolved before continuing\n          lazyHandlerPromise,\n          lazyRoutePromise\n        ]);\n        if (handlerError !== void 0) {\n          throw handlerError;\n        }\n        result = value;\n      } else {\n        await lazyHandlerPromise;\n        let handler2 = isAction ? match.route.action : match.route.loader;\n        if (handler2) {\n          [result] = await Promise.all([runHandler(handler2), lazyRoutePromise]);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id\n          });\n        } else {\n          return { type: \"data\" /* data */, result: void 0 };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n  } catch (e) {\n    return { type: \"error\" /* error */, result: e };\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n  return result;\n}\nasync function parseResponseBody(response) {\n  let contentType = response.headers.get(\"Content-Type\");\n  if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n    return response.body == null ? null : response.json();\n  }\n  return response.text();\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n  let { result, type } = dataStrategyResult;\n  if (isResponse(result)) {\n    let data2;\n    try {\n      data2 = await parseResponseBody(result);\n    } catch (e) {\n      return { type: \"error\" /* error */, error: e };\n    }\n    if (type === \"error\" /* error */) {\n      return {\n        type: \"error\" /* error */,\n        error: new ErrorResponseImpl(result.status, result.statusText, data2),\n        statusCode: result.status,\n        headers: result.headers\n      };\n    }\n    return {\n      type: \"data\" /* data */,\n      data: data2,\n      statusCode: result.status,\n      headers: result.headers\n    };\n  }\n  if (type === \"error\" /* error */) {\n    if (isDataWithResponseInit(result)) {\n      if (result.data instanceof Error) {\n        return {\n          type: \"error\" /* error */,\n          error: result.data,\n          statusCode: result.init?.status,\n          headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n        };\n      }\n      return {\n        type: \"error\" /* error */,\n        error: dataWithResponseInitToErrorResponse(result),\n        statusCode: isRouteErrorResponse(result) ? result.status : void 0,\n        headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n      };\n    }\n    return {\n      type: \"error\" /* error */,\n      error: result,\n      statusCode: isRouteErrorResponse(result) ? result.status : void 0\n    };\n  }\n  if (isDataWithResponseInit(result)) {\n    return {\n      type: \"data\" /* data */,\n      data: result.data,\n      statusCode: result.init?.status,\n      headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n    };\n  }\n  return { type: \"data\" /* data */, data: result };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename) {\n  let location = response.headers.get(\"Location\");\n  invariant(\n    location,\n    \"Redirects returned/thrown from loaders/actions must have a Location header\"\n  );\n  if (!isAbsoluteUrl(location)) {\n    let trimmedMatches = matches.slice(\n      0,\n      matches.findIndex((m) => m.route.id === routeId) + 1\n    );\n    location = normalizeTo(\n      new URL(request.url),\n      trimmedMatches,\n      basename,\n      location\n    );\n    response.headers.set(\"Location\", location);\n  }\n  return response;\n}\nvar invalidProtocols = [\n  \"about:\",\n  \"blob:\",\n  \"chrome:\",\n  \"chrome-untrusted:\",\n  \"content:\",\n  \"data:\",\n  \"devtools:\",\n  \"file:\",\n  \"filesystem:\",\n  // eslint-disable-next-line no-script-url\n  \"javascript:\"\n];\nfunction hasInvalidProtocol(location) {\n  try {\n    return invalidProtocols.includes(new URL(location).protocol);\n  } catch {\n    return false;\n  }\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename, historyInstance) {\n  if (isAbsoluteUrl(location)) {\n    let normalizedLocation = location;\n    let url = PROTOCOL_RELATIVE_URL_REGEX.test(normalizedLocation) ? new URL(\n      normalizeProtocolRelativeUrl(normalizedLocation, currentUrl.protocol)\n    ) : new URL(normalizedLocation);\n    if (hasInvalidProtocol(url.toString())) {\n      throw new Error(\"Invalid redirect location\");\n    }\n    let isSameBasename = stripBasename(url.pathname, basename) != null;\n    if (url.origin === currentUrl.origin && isSameBasename) {\n      return removeDoubleSlashes(url.pathname) + url.search + url.hash;\n    }\n  }\n  try {\n    let url = historyInstance.createURL(location);\n    if (hasInvalidProtocol(url.toString())) {\n      throw new Error(\"Invalid redirect location\");\n    }\n  } catch (e) {\n  }\n  return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init = { signal };\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let { formMethod, formEncType } = submission;\n    init.method = formMethod.toUpperCase();\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({ \"Content-Type\": formEncType });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      init.body = submission.text;\n    } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      init.body = submission.formData;\n    }\n  }\n  return new Request(url, init);\n}\nfunction createDataFunctionUrl(request, path) {\n  let url = new URL(request.url);\n  let parsed = typeof path === \"string\" ? parsePath(path) : path;\n  url.pathname = parsed.pathname || \"/\";\n  if (parsed.search) {\n    let searchParams = new URLSearchParams(parsed.search);\n    let indexValues = searchParams.getAll(\"index\");\n    searchParams.delete(\"index\");\n    for (let value of indexValues.filter(Boolean)) {\n      searchParams.append(\"index\", value);\n    }\n    url.search = searchParams.size ? `?${searchParams.toString()}` : \"\";\n  } else {\n    url.search = \"\";\n  }\n  url.hash = parsed.hash || \"\";\n  return url;\n}\nfunction convertFormDataToSearchParams(formData) {\n  let searchParams = new URLSearchParams();\n  for (let [key, value] of formData.entries()) {\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n  return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, isStaticHandler = false, skipLoaderErrorBubbling = false) {\n  let loaderData = {};\n  let errors = null;\n  let statusCode;\n  let foundError = false;\n  let loaderHeaders = {};\n  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n  matches.forEach((match) => {\n    if (!(match.route.id in results)) {\n      return;\n    }\n    let id = match.route.id;\n    let result = results[id];\n    invariant(\n      !isRedirectResult(result),\n      \"Cannot handle redirect results in processLoaderData\"\n    );\n    if (isErrorResult(result)) {\n      let error = result.error;\n      if (pendingError !== void 0) {\n        error = pendingError;\n        pendingError = void 0;\n      }\n      errors = errors || {};\n      if (skipLoaderErrorBubbling) {\n        errors[id] = error;\n      } else {\n        let boundaryMatch = findNearestBoundary(matches, id);\n        if (errors[boundaryMatch.route.id] == null) {\n          errors[boundaryMatch.route.id] = error;\n        }\n      }\n      if (!isStaticHandler) {\n        loaderData[id] = ResetLoaderDataSymbol;\n      }\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      loaderData[id] = result.data;\n      if (result.statusCode && result.statusCode !== 200 && !foundError) {\n        statusCode = result.statusCode;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    }\n  });\n  if (pendingError !== void 0 && pendingActionResult) {\n    errors = { [pendingActionResult[0]]: pendingError };\n    if (pendingActionResult[2]) {\n      loaderData[pendingActionResult[2]] = void 0;\n    }\n  }\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders\n  };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, workingFetchers) {\n  let { loaderData, errors } = processRouteLoaderData(\n    matches,\n    results,\n    pendingActionResult\n  );\n  revalidatingFetchers.filter((f) => !f.matches || f.matches.some((m) => m.shouldLoad)).forEach((rf) => {\n    let { key, match, controller } = rf;\n    if (controller && controller.signal.aborted) {\n      return;\n    }\n    let result = fetcherResults[key];\n    invariant(result, \"Did not find corresponding fetcher result\");\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = {\n          ...errors,\n          [boundaryMatch.route.id]: result.error\n        };\n      }\n      workingFetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      workingFetchers.set(key, doneFetcher);\n    }\n  });\n  return { loaderData, errors };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n  let mergedLoaderData = Object.entries(newLoaderData).filter(([, v]) => v !== ResetLoaderDataSymbol).reduce((merged, [k, v]) => {\n    merged[k] = v;\n    return merged;\n  }, {});\n  for (let match of matches) {\n    let id = match.route.id;\n    if (!newLoaderData.hasOwnProperty(id) && loaderData.hasOwnProperty(id) && match.route.loader) {\n      mergedLoaderData[id] = loaderData[id];\n    }\n    if (errors && errors.hasOwnProperty(id)) {\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n  if (!pendingActionResult) {\n    return {};\n  }\n  return isErrorResult(pendingActionResult[1]) ? {\n    // Clear out prior actionData on errors\n    actionData: {}\n  } : {\n    actionData: {\n      [pendingActionResult[0]]: pendingActionResult[1].data\n    }\n  };\n}\nfunction findNearestBoundary(matches, routeId) {\n  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1) : [...matches];\n  return eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n  let route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n    id: `__shim-error-route__`\n  };\n  return {\n    matches: [\n      {\n        params: {},\n        pathname: \"\",\n        pathnameBase: \"\",\n        route\n      }\n    ],\n    route\n  };\n}\nfunction getInternalRouterError(status, {\n  pathname,\n  routeId,\n  method,\n  type,\n  message\n} = {}) {\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage = `You made a ${method} request to \"${pathname}\" but did not provide a \\`loader\\` for route \"${routeId}\", so there is no way to handle the request.`;\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = `No route matches URL \"${pathname}\"`;\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage = `You made a ${method.toUpperCase()} request to \"${pathname}\" but did not provide an \\`action\\` for route \"${routeId}\", so there is no way to handle the request.`;\n    } else if (method) {\n      errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n    }\n  }\n  return new ErrorResponseImpl(\n    status || 500,\n    statusText,\n    new Error(errorMessage),\n    true\n  );\n}\nfunction findRedirect(results) {\n  let entries = Object.entries(results);\n  for (let i = entries.length - 1; i >= 0; i--) {\n    let [key, result] = entries[i];\n    if (isRedirectResult(result)) {\n      return { key, result };\n    }\n  }\n}\nfunction stripHashFromPath(path) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath({ ...parsedPath, hash: \"\" });\n}\nfunction isHashChangeOnly(a, b) {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n  if (a.hash === \"\") {\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    return true;\n  } else if (b.hash !== \"\") {\n    return true;\n  }\n  return false;\n}\nfunction dataWithResponseInitToResponse(data2) {\n  return Response.json(data2.data, data2.init ?? void 0);\n}\nfunction dataWithResponseInitToErrorResponse(data2) {\n  return new ErrorResponseImpl(\n    data2.init?.status ?? 500,\n    data2.init?.statusText ?? \"Internal Server Error\",\n    data2.data\n  );\n}\nfunction isDataStrategyResults(result) {\n  return result != null && typeof result === \"object\" && Object.entries(result).every(\n    ([key, value]) => typeof key === \"string\" && isDataStrategyResult(value)\n  );\n}\nfunction isDataStrategyResult(result) {\n  return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === \"data\" /* data */ || result.type === \"error\" /* error */);\n}\nfunction isRedirectDataStrategyResult(result) {\n  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isErrorResult(result) {\n  return result.type === \"error\" /* error */;\n}\nfunction isRedirectResult(result) {\n  return (result && result.type) === \"redirect\" /* redirect */;\n}\nfunction isDataWithResponseInit(value) {\n  return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isResponse(value) {\n  return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectStatusCode(statusCode) {\n  return redirectStatusCodes.has(statusCode);\n}\nfunction isRedirectResponse(result) {\n  return isResponse(result) && isRedirectStatusCode(result.status) && result.headers.has(\"Location\");\n}\nfunction isValidMethod(method) {\n  return validRequestMethods.has(method.toUpperCase());\n}\nfunction isMutationMethod(method) {\n  return validMutationMethods.has(method.toUpperCase());\n}\nfunction hasNakedIndexQuery(search) {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n  let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n    return matches[matches.length - 1];\n  }\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n  let { formMethod, formAction, formEncType, text, formData, json } = navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json: void 0,\n      text\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: void 0,\n      text: void 0\n    };\n  } else if (json !== void 0) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json,\n      text: void 0\n    };\n  }\n}\nfunction getLoadingNavigation(location, matches, historyAction, submission) {\n  if (submission) {\n    let navigation = {\n      state: \"loading\",\n      location,\n      matches,\n      historyAction,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text\n    };\n    return navigation;\n  } else {\n    let navigation = {\n      state: \"loading\",\n      location,\n      matches,\n      historyAction,\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0\n    };\n    return navigation;\n  }\n}\nfunction getSubmittingNavigation(location, matches, historyAction, submission) {\n  let navigation = {\n    state: \"submitting\",\n    location,\n    matches,\n    historyAction,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text\n  };\n  return navigation;\n}\nfunction getLoadingFetcher(submission, data2) {\n  if (submission) {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data: data2\n    };\n    return fetcher;\n  } else {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0,\n      data: data2\n    };\n    return fetcher;\n  }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n  let fetcher = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : void 0\n  };\n  return fetcher;\n}\nfunction getDoneFetcher(data2) {\n  let fetcher = {\n    state: \"idle\",\n    formMethod: void 0,\n    formAction: void 0,\n    formEncType: void 0,\n    formData: void 0,\n    json: void 0,\n    text: void 0,\n    data: data2\n  };\n  return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(\n      TRANSITIONS_STORAGE_KEY\n    );\n    if (sessionPositions) {\n      let json = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n  }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n  if (transitions.size > 0) {\n    let json = {};\n    for (let [k, v] of transitions) {\n      json[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(\n        TRANSITIONS_STORAGE_KEY,\n        JSON.stringify(json)\n      );\n    } catch (error) {\n      warning(\n        false,\n        `Failed to save applied view transitions in sessionStorage (${error}).`\n      );\n    }\n  }\n}\nfunction createDeferred() {\n  let resolve;\n  let reject;\n  let promise = new Promise((res, rej) => {\n    resolve = async (val) => {\n      res(val);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n    reject = async (error) => {\n      rej(error);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n  });\n  return {\n    promise,\n    //@ts-ignore\n    resolve,\n    //@ts-ignore\n    reject\n  };\n}\n\n// lib/context.ts\nimport * as React from \"react\";\nvar DataRouterContext = React.createContext(null);\nDataRouterContext.displayName = \"DataRouter\";\nvar DataRouterStateContext = React.createContext(null);\nDataRouterStateContext.displayName = \"DataRouterState\";\nvar RSCRouterContext = React.createContext(false);\nfunction useIsRSCRouterContext() {\n  return React.useContext(RSCRouterContext);\n}\nvar ViewTransitionContext = React.createContext({\n  isTransitioning: false\n});\nViewTransitionContext.displayName = \"ViewTransition\";\nvar FetchersContext = React.createContext(\n  /* @__PURE__ */ new Map()\n);\nFetchersContext.displayName = \"Fetchers\";\nvar AwaitContext = React.createContext(null);\nAwaitContext.displayName = \"Await\";\nvar AwaitContextProvider = (props) => React.createElement(AwaitContext.Provider, props);\nvar NavigationContext = React.createContext(\n  null\n);\nNavigationContext.displayName = \"Navigation\";\nvar LocationContext = React.createContext(\n  null\n);\nLocationContext.displayName = \"Location\";\nvar RouteContext = React.createContext({\n  outlet: null,\n  matches: [],\n  isDataRoute: false\n});\nRouteContext.displayName = \"Route\";\nvar RouteErrorContext = React.createContext(null);\nRouteErrorContext.displayName = \"RouteError\";\nvar ENABLE_DEV_WARNINGS = true;\n\n// lib/hooks.tsx\nimport * as React2 from \"react\";\n\n// lib/errors.ts\nvar ERROR_DIGEST_BASE = \"REACT_ROUTER_ERROR\";\nvar ERROR_DIGEST_REDIRECT = \"REDIRECT\";\nvar ERROR_DIGEST_ROUTE_ERROR_RESPONSE = \"ROUTE_ERROR_RESPONSE\";\nfunction decodeRedirectErrorDigest(digest) {\n  if (digest.startsWith(`${ERROR_DIGEST_BASE}:${ERROR_DIGEST_REDIRECT}:{`)) {\n    try {\n      let parsed = JSON.parse(digest.slice(28));\n      if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\" && typeof parsed.location === \"string\" && typeof parsed.reloadDocument === \"boolean\" && typeof parsed.replace === \"boolean\") {\n        return parsed;\n      }\n    } catch {\n    }\n  }\n}\nfunction decodeRouteErrorResponseDigest(digest) {\n  if (digest.startsWith(\n    `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_ROUTE_ERROR_RESPONSE}:{`\n  )) {\n    try {\n      let parsed = JSON.parse(digest.slice(40));\n      if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\") {\n        return new ErrorResponseImpl(\n          parsed.status,\n          parsed.statusText,\n          parsed.data\n        );\n      }\n    } catch {\n    }\n  }\n}\n\n// lib/hooks.tsx\nfunction useHref(to, { relative } = {}) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n  let { basename, navigator } = React2.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n  let joinedPathname = pathname;\n  if (basename !== \"/\") {\n    joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\nfunction useInRouterContext() {\n  return React2.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n  return React2.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n  return React2.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n  let { pathname } = useLocation();\n  return React2.useMemo(\n    () => matchPath(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\nvar navigateEffectWarning = `You should call navigate() in a React.useEffect(), not when your component is first rendered.`;\nfunction useIsomorphicLayoutEffect(cb) {\n  let isStatic = React2.useContext(NavigationContext).static;\n  if (!isStatic) {\n    React2.useLayoutEffect(cb);\n  }\n}\nfunction useNavigate() {\n  let { isDataRoute } = React2.useContext(RouteContext);\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n  let dataRouterContext = React2.useContext(DataRouterContext);\n  let { basename, navigator } = React2.useContext(NavigationContext);\n  let { matches } = React2.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n  let activeRef = React2.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React2.useCallback(\n    (to, options = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n      if (!activeRef.current) return;\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n      }\n      validateNavigationTarget(\n        typeof to === \"string\" ? to : createPath(to),\n        navigator.createHref(path),\n        getNavigatorCurrentUrl(navigator),\n        \"reject\"\n      );\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext\n    ]\n  );\n  return navigate;\n}\nvar OutletContext = React2.createContext(null);\nfunction useOutletContext() {\n  return React2.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n  let outlet = React2.useContext(RouteContext).outlet;\n  return React2.useMemo(\n    () => outlet && /* @__PURE__ */ React2.createElement(OutletContext.Provider, { value: context }, outlet),\n    [outlet, context]\n  );\n}\nfunction useParams() {\n  let { matches } = React2.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch?.params ?? {};\n}\nfunction useResolvedPath(to, { relative } = {}) {\n  let { matches } = React2.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n  return React2.useMemo(\n    () => resolveTo(\n      to,\n      JSON.parse(routePathnamesJson),\n      locationPathname,\n      relative === \"path\"\n    ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\nfunction useRoutes(routes, locationArg) {\n  return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterOpts) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n  let { navigator } = React2.useContext(NavigationContext);\n  let { matches: parentMatches } = React2.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n  if (ENABLE_DEV_WARNINGS) {\n    let parentPath = parentRoute && parentRoute.path || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\") || parentPath.endsWith(\"*?\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at \"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the parent route path has no trailing \"*\". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.\n\nPlease change the parent <Route path=\"${parentPath}\"> to <Route path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n  let locationFromContext = useLocation();\n  let location;\n  if (locationArg) {\n    let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n    invariant(\n      parentPathnameBase === \"/\" || parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n  let pathname = location.pathname || \"/\";\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n  let matches = dataRouterOpts && dataRouterOpts.state.matches.length ? (\n    // If we're in a data router, use the matches we've already identified but ensure\n    // we have the latest route instances from the manifest in case elements have changed\n    dataRouterOpts.state.matches.map(\n      (m) => Object.assign(m, {\n        route: dataRouterOpts.manifest[m.route.id] || m.route\n      })\n    )\n  ) : matchRoutes(routes, { pathname: remainingPathname });\n  if (ENABLE_DEV_WARNINGS) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n    warning(\n      matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n    );\n  }\n  let renderedMatches = _renderMatches(\n    matches && matches.map(\n      (match) => Object.assign({}, match, {\n        params: Object.assign({}, parentParams, match.params),\n        pathname: joinPaths([\n          parentPathnameBase,\n          // Re-encode pathnames that were decoded inside matchRoutes.\n          // Pre-encode `%`, `?` and `#` ahead of `encodeLocation` because it uses\n          // `new URL()` internally and we need to prevent it from treating\n          // them as separators\n          navigator.encodeLocation ? navigator.encodeLocation(\n            match.pathname.replace(/%/g, \"%25\").replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n          ).pathname : match.pathname\n        ]),\n        pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n          parentPathnameBase,\n          // Re-encode pathnames that were decoded inside matchRoutes\n          // Pre-encode `%`, `?` and `#` ahead of `encodeLocation` because it uses\n          // `new URL()` internally and we need to prevent it from treating\n          // them as separators\n          navigator.encodeLocation ? navigator.encodeLocation(\n            match.pathnameBase.replace(/%/g, \"%25\").replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n          ).pathname : match.pathnameBase\n        ])\n      })\n    ),\n    parentMatches,\n    dataRouterOpts\n  );\n  if (locationArg && renderedMatches) {\n    return /* @__PURE__ */ React2.createElement(\n      LocationContext.Provider,\n      {\n        value: {\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            mask: void 0,\n            ...location\n          },\n          navigationType: \"POP\" /* Pop */\n        }\n      },\n      renderedMatches\n    );\n  }\n  return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error) ? `${error.status} ${error.statusText}` : error instanceof Error ? error.message : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n  let devInfo = null;\n  if (ENABLE_DEV_WARNINGS) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n    devInfo = /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"p\", null, \"\\u{1F4BF} Hey developer \\u{1F44B}\"), /* @__PURE__ */ React2.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"ErrorBoundary\"), \" or\", \" \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"errorElement\"), \" prop on your route.\"));\n  }\n  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"h2\", null, \"Unexpected Application Error!\"), /* @__PURE__ */ React2.createElement(\"h3\", { style: { fontStyle: \"italic\" } }, message), stack ? /* @__PURE__ */ React2.createElement(\"pre\", { style: preStyles }, stack) : null, devInfo);\n}\nvar defaultErrorElement = /* @__PURE__ */ React2.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React2.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation\n      };\n    }\n    return {\n      error: props.error !== void 0 ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    if (this.props.onError) {\n      this.props.onError(error, errorInfo);\n    } else {\n      console.error(\n        \"React Router caught the following error during render\",\n        error\n      );\n    }\n  }\n  render() {\n    let error = this.state.error;\n    if (this.context && typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n      const decoded = decodeRouteErrorResponseDigest(error.digest);\n      if (decoded) error = decoded;\n    }\n    let result = error !== void 0 ? /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: this.props.routeContext }, /* @__PURE__ */ React2.createElement(\n      RouteErrorContext.Provider,\n      {\n        value: error,\n        children: this.props.component\n      }\n    )) : this.props.children;\n    if (this.context) {\n      return /* @__PURE__ */ React2.createElement(RSCErrorHandler, { error }, result);\n    }\n    return result;\n  }\n};\nRenderErrorBoundary.contextType = RSCRouterContext;\nvar errorRedirectHandledMap = /* @__PURE__ */ new WeakMap();\nfunction RSCErrorHandler({\n  children,\n  error\n}) {\n  let { basename, navigator } = React2.useContext(NavigationContext);\n  if (typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n    let redirect2 = decodeRedirectErrorDigest(error.digest);\n    if (redirect2) {\n      let existingRedirect = errorRedirectHandledMap.get(error);\n      if (existingRedirect) throw existingRedirect;\n      let parsed = parseToInfo(redirect2.location, basename);\n      let target = parsed.absoluteURL || parsed.to;\n      validateNavigationTarget(\n        redirect2.location,\n        target,\n        getNavigatorCurrentUrl(navigator),\n        \"allow-explicit\"\n      );\n      if (hasInvalidProtocol(target)) {\n        throw new Error(\"Invalid redirect location\");\n      }\n      if (isBrowser && !errorRedirectHandledMap.get(error)) {\n        if (parsed.isExternal || redirect2.reloadDocument) {\n          window.location.href = target;\n        } else {\n          const redirectPromise = Promise.resolve().then(\n            () => window.__reactRouterDataRouter.navigate(parsed.to, {\n              replace: redirect2.replace\n            })\n          );\n          errorRedirectHandledMap.set(error, redirectPromise);\n          throw redirectPromise;\n        }\n      }\n      return /* @__PURE__ */ React2.createElement(\"meta\", { httpEquiv: \"refresh\", content: `0;url=${target}` });\n    }\n  }\n  return children;\n}\nfunction RenderedRoute({ routeContext, match, children }) {\n  let dataRouterContext = React2.useContext(DataRouterContext);\n  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n  return /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: routeContext }, children);\n}\nfunction _renderMatches(matches, parentMatches = [], dataRouterOpts) {\n  let dataRouterState = dataRouterOpts?.state;\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n    if (dataRouterState.errors) {\n      matches = dataRouterState.matches;\n    } else if (parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n      matches = dataRouterState.matches;\n    } else {\n      return null;\n    }\n  }\n  let renderedMatches = matches;\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== void 0\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterOpts && dataRouterState) {\n    renderFallback = dataRouterState.renderFallback;\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n      if (match.route.id) {\n        let { loaderData, errors: errors2 } = dataRouterState;\n        let needsToRunLoader = match.route.loader && !loaderData.hasOwnProperty(match.route.id) && (!errors2 || errors2[match.route.id] === void 0);\n        if (match.route.lazy || needsToRunLoader) {\n          if (dataRouterOpts.isStatic) {\n            renderFallback = true;\n          }\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n  let onErrorHandler = dataRouterOpts?.onError;\n  let onError = dataRouterState && onErrorHandler ? (error, errorInfo) => {\n    onErrorHandler(error, {\n      location: dataRouterState.location,\n      params: dataRouterState.matches?.[0]?.params ?? {},\n      pattern: getRoutePattern(dataRouterState.matches),\n      errorInfo\n    });\n  } : void 0;\n  return renderedMatches.reduceRight(\n    (outlet, match, index) => {\n      let error;\n      let shouldRenderHydrateFallback = false;\n      let errorElement = null;\n      let hydrateFallbackElement = null;\n      if (dataRouterState) {\n        error = errors && match.route.id ? errors[match.route.id] : void 0;\n        errorElement = match.route.errorElement || defaultErrorElement;\n        if (renderFallback) {\n          if (fallbackIndex < 0 && index === 0) {\n            warningOnce(\n              \"route-fallback\",\n              false,\n              \"No `HydrateFallback` element provided to render during initial hydration\"\n            );\n            shouldRenderHydrateFallback = true;\n            hydrateFallbackElement = null;\n          } else if (fallbackIndex === index) {\n            shouldRenderHydrateFallback = true;\n            hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n          }\n        }\n      }\n      let matches2 = parentMatches.concat(renderedMatches.slice(0, index + 1));\n      let getChildren = () => {\n        let children;\n        if (error) {\n          children = errorElement;\n        } else if (shouldRenderHydrateFallback) {\n          children = hydrateFallbackElement;\n        } else if (match.route.Component) {\n          children = /* @__PURE__ */ React2.createElement(match.route.Component, null);\n        } else if (match.route.element) {\n          children = match.route.element;\n        } else {\n          children = outlet;\n        }\n        return /* @__PURE__ */ React2.createElement(\n          RenderedRoute,\n          {\n            match,\n            routeContext: {\n              outlet,\n              matches: matches2,\n              isDataRoute: dataRouterState != null\n            },\n            children\n          }\n        );\n      };\n      return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /* @__PURE__ */ React2.createElement(\n        RenderErrorBoundary,\n        {\n          location: dataRouterState.location,\n          revalidation: dataRouterState.revalidation,\n          component: errorElement,\n          error,\n          children: getChildren(),\n          routeContext: { outlet: null, matches: matches2, isDataRoute: true },\n          onError\n        }\n      ) : getChildren();\n    },\n    null\n  );\n}\nfunction getDataRouterConsoleError(hookName) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext(hookName) {\n  let ctx = React2.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\nfunction useDataRouterState(hookName) {\n  let state = React2.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\nfunction useRouteContext(hookName) {\n  let route = React2.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\nfunction useCurrentRouteId(hookName) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\nfunction useRouteId() {\n  return useCurrentRouteId(\"useRouteId\" /* UseRouteId */);\n}\nfunction useNavigation() {\n  let state = useDataRouterState(\"useNavigation\" /* UseNavigation */);\n  return React2.useMemo(() => {\n    let { matches, historyAction, ...rest } = state.navigation;\n    return rest;\n  }, [state.navigation]);\n}\nfunction useRevalidator() {\n  let dataRouterContext = useDataRouterContext(\"useRevalidator\" /* UseRevalidator */);\n  let state = useDataRouterState(\"useRevalidator\" /* UseRevalidator */);\n  let revalidate = React2.useCallback(async () => {\n    await dataRouterContext.router.revalidate();\n  }, [dataRouterContext.router]);\n  return React2.useMemo(\n    () => ({ revalidate, state: state.revalidation }),\n    [revalidate, state.revalidation]\n  );\n}\nfunction useMatches() {\n  let { matches, loaderData } = useDataRouterState(\n    \"useMatches\" /* UseMatches */\n  );\n  return React2.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\nfunction useLoaderData() {\n  let state = useDataRouterState(\"useLoaderData\" /* UseLoaderData */);\n  let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n  return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n  let state = useDataRouterState(\"useRouteLoaderData\" /* UseRouteLoaderData */);\n  return state.loaderData[routeId];\n}\nfunction useActionData() {\n  let state = useDataRouterState(\"useActionData\" /* UseActionData */);\n  let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n  return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n  let error = React2.useContext(RouteErrorContext);\n  let state = useDataRouterState(\"useRouteError\" /* UseRouteError */);\n  let routeId = useCurrentRouteId(\"useRouteError\" /* UseRouteError */);\n  if (error !== void 0) {\n    return error;\n  }\n  return state.errors?.[routeId];\n}\nfunction useAsyncValue() {\n  let value = React2.useContext(AwaitContext);\n  return value?._data;\n}\nfunction useAsyncError() {\n  let value = React2.useContext(AwaitContext);\n  return value?._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n  let { router, basename } = useDataRouterContext(\"useBlocker\" /* UseBlocker */);\n  let state = useDataRouterState(\"useBlocker\" /* UseBlocker */);\n  let [blockerKey, setBlockerKey] = React2.useState(\"\");\n  let blockerFunction = React2.useCallback(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n        },\n        historyAction\n      });\n    },\n    [basename, shouldBlock]\n  );\n  React2.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n  React2.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n  let { router } = useDataRouterContext(\"useNavigate\" /* UseNavigateStable */);\n  let id = useCurrentRouteId(\"useNavigate\" /* UseNavigateStable */);\n  let activeRef = React2.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React2.useCallback(\n    async (to, options = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n      if (!activeRef.current) return;\n      if (typeof to === \"number\") {\n        await router.navigate(to);\n      } else {\n        await router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n  return navigate;\n}\nvar alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\nfunction useRoute(...args) {\n  const currentRouteId = useCurrentRouteId(\n    \"useRoute\" /* UseRoute */\n  );\n  const id = args[0] ?? currentRouteId;\n  const state = useDataRouterState(\"useRoute\" /* UseRoute */);\n  const route = state.matches.find(({ route: route2 }) => route2.id === id);\n  if (route === void 0) return void 0;\n  return {\n    handle: route.route.handle,\n    loaderData: state.loaderData[id],\n    actionData: state.actionData?.[id]\n  };\n}\nfunction toRouterStateMatch(match) {\n  return {\n    id: match.route.id,\n    pathname: match.pathname,\n    params: match.params,\n    handle: match.route.handle\n  };\n}\nfunction useRouterState() {\n  let {\n    location,\n    historyAction: type,\n    matches,\n    navigation\n  } = useDataRouterState(\"unstable_useRouterState\" /* UseRouterState */);\n  let active = React2.useMemo(\n    () => ({\n      type,\n      location,\n      searchParams: new URLSearchParams(location.search),\n      params: matches[matches.length - 1]?.params ?? {},\n      matches: matches.map((m) => toRouterStateMatch(m))\n    }),\n    [location, matches, type]\n  );\n  let pending = React2.useMemo(() => {\n    if (navigation.state === \"idle\") return null;\n    let shared = {\n      type: navigation.historyAction,\n      location: navigation.location,\n      searchParams: new URLSearchParams(navigation.location.search),\n      params: navigation.matches[navigation.matches.length - 1]?.params ?? {},\n      matches: navigation.matches.map((m) => toRouterStateMatch(m))\n    };\n    return navigation.state === \"loading\" ? {\n      ...shared,\n      state: \"loading\",\n      formMethod: navigation.formMethod,\n      formAction: navigation.formAction,\n      formEncType: navigation.formEncType,\n      formData: navigation.formData,\n      json: navigation.json,\n      text: navigation.text\n    } : {\n      ...shared,\n      state: \"submitting\",\n      formMethod: navigation.formMethod,\n      formAction: navigation.formAction,\n      formEncType: navigation.formEncType,\n      formData: navigation.formData,\n      json: navigation.json,\n      text: navigation.text\n    };\n  }, [navigation]);\n  return React2.useMemo(\n    () => ({ active, pending }),\n    [active, pending]\n  );\n}\n\n// lib/components.tsx\nimport * as React3 from \"react\";\n\n// lib/server-runtime/warnings.ts\nvar alreadyWarned2 = {};\nfunction warnOnce(condition, message) {\n  if (!condition && !alreadyWarned2[message]) {\n    alreadyWarned2[message] = true;\n    console.warn(message);\n  }\n}\n\n// lib/components.tsx\nvar USE_OPTIMISTIC = \"useOptimistic\";\nvar useOptimisticImpl = React3[USE_OPTIMISTIC];\nvar stableUseOptimisticSetter = () => void 0;\nfunction useOptimisticSafe(val) {\n  if (useOptimisticImpl) {\n    return useOptimisticImpl(val);\n  } else {\n    return [val, stableUseOptimisticSetter];\n  }\n}\nfunction mapRouteProperties(route) {\n  let updates = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.hasErrorBoundary || route.ErrorBoundary != null || route.errorElement != null\n  };\n  if (route.Component) {\n    if (ENABLE_DEV_WARNINGS) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - `Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React3.createElement(route.Component),\n      Component: void 0\n    });\n  }\n  if (route.HydrateFallback) {\n    if (ENABLE_DEV_WARNINGS) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React3.createElement(route.HydrateFallback),\n      HydrateFallback: void 0\n    });\n  }\n  if (route.ErrorBoundary) {\n    if (ENABLE_DEV_WARNINGS) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React3.createElement(route.ErrorBoundary),\n      ErrorBoundary: void 0\n    });\n  }\n  return updates;\n}\nvar hydrationRouteProperties = [\n  \"HydrateFallback\",\n  \"hydrateFallbackElement\"\n];\nfunction createMemoryRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    getContext: opts?.getContext,\n    future: opts?.future,\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    hydrationRouteProperties,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    instrumentations: opts?.instrumentations\n  }).initialize();\n}\nvar Deferred = class {\n  constructor() {\n    this.status = \"pending\";\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = (value) => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = (reason) => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n};\nfunction RouterProvider({\n  router,\n  flushSync: reactDomFlushSyncImpl,\n  onError,\n  useTransitions\n}) {\n  let unstable_rsc = useIsRSCRouterContext();\n  useTransitions = unstable_rsc || useTransitions;\n  let [_state, setStateImpl] = React3.useState(router.state);\n  let [state, setOptimisticState] = useOptimisticSafe(_state);\n  let [pendingState, setPendingState] = React3.useState();\n  let [vtContext, setVtContext] = React3.useState({\n    isTransitioning: false\n  });\n  let [renderDfd, setRenderDfd] = React3.useState();\n  let [transition, setTransition] = React3.useState();\n  let [interruption, setInterruption] = React3.useState();\n  let fetcherData = React3.useRef(/* @__PURE__ */ new Map());\n  let setState = React3.useCallback(\n    (newState, { deletedFetchers, newErrors, flushSync, viewTransitionOpts }) => {\n      if (newErrors && onError) {\n        Object.values(newErrors).forEach(\n          (error) => onError(error, {\n            location: newState.location,\n            params: newState.matches[0]?.params ?? {},\n            pattern: getRoutePattern(newState.matches)\n          })\n        );\n      }\n      newState.fetchers.forEach((fetcher, key) => {\n        if (fetcher.data !== void 0) {\n          fetcherData.current.set(key, fetcher.data);\n        }\n      });\n      deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n      warnOnce(\n        flushSync === false || reactDomFlushSyncImpl != null,\n        'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable.  Please update your app to `import { RouterProvider } from \"react-router/dom\"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'\n      );\n      let isViewTransitionAvailable = router.window != null && router.window.document != null && typeof router.window.document.startViewTransition === \"function\";\n      warnOnce(\n        viewTransitionOpts == null || isViewTransitionAvailable,\n        \"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available.\"\n      );\n      if (!viewTransitionOpts || !isViewTransitionAvailable) {\n        if (reactDomFlushSyncImpl && flushSync) {\n          reactDomFlushSyncImpl(() => setStateImpl(newState));\n        } else if (useTransitions === false) {\n          setStateImpl(newState);\n        } else {\n          React3.startTransition(() => {\n            if (useTransitions === true) {\n              setOptimisticState((s) => getOptimisticRouterState(s, newState));\n            }\n            setStateImpl(newState);\n          });\n        }\n        return;\n      }\n      if (reactDomFlushSyncImpl && flushSync) {\n        reactDomFlushSyncImpl(() => {\n          if (transition) {\n            renderDfd?.resolve();\n            transition.skipTransition();\n          }\n          setVtContext({\n            isTransitioning: true,\n            flushSync: true,\n            currentLocation: viewTransitionOpts.currentLocation,\n            nextLocation: viewTransitionOpts.nextLocation\n          });\n        });\n        let t = router.window.document.startViewTransition(() => {\n          reactDomFlushSyncImpl(() => setStateImpl(newState));\n        });\n        t.finished.finally(() => {\n          reactDomFlushSyncImpl(() => {\n            setRenderDfd(void 0);\n            setTransition(void 0);\n            setPendingState(void 0);\n            setVtContext({ isTransitioning: false });\n          });\n        });\n        reactDomFlushSyncImpl(() => setTransition(t));\n        return;\n      }\n      if (transition) {\n        renderDfd?.resolve();\n        transition.skipTransition();\n        setInterruption({\n          state: newState,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      } else {\n        setPendingState(newState);\n        setVtContext({\n          isTransitioning: true,\n          flushSync: false,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      }\n    },\n    [\n      router.window,\n      reactDomFlushSyncImpl,\n      transition,\n      renderDfd,\n      useTransitions,\n      setOptimisticState,\n      onError\n    ]\n  );\n  React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n  React3.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred());\n    }\n  }, [vtContext]);\n  React3.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition2 = router.window.document.startViewTransition(async () => {\n        if (useTransitions === false) {\n          setStateImpl(newState);\n        } else {\n          React3.startTransition(() => {\n            if (useTransitions === true) {\n              setOptimisticState((s) => getOptimisticRouterState(s, newState));\n            }\n            setStateImpl(newState);\n          });\n        }\n        await renderPromise;\n      });\n      transition2.finished.finally(() => {\n        setRenderDfd(void 0);\n        setTransition(void 0);\n        setPendingState(void 0);\n        setVtContext({ isTransitioning: false });\n      });\n      setTransition(transition2);\n    }\n  }, [\n    pendingState,\n    renderDfd,\n    router.window,\n    useTransitions,\n    setOptimisticState\n  ]);\n  React3.useEffect(() => {\n    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n  React3.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation\n      });\n      setInterruption(void 0);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n  let navigator = React3.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      createURL: router.createURL,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state2, opts) => router.navigate(to, {\n        state: state2,\n        preventScrollReset: opts?.preventScrollReset\n      }),\n      replace: (to, state2, opts) => router.navigate(to, {\n        replace: true,\n        state: state2,\n        preventScrollReset: opts?.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  let dataRouterContext = React3.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n      onError\n    }),\n    [router, navigator, basename, onError]\n  );\n  return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(\n    Router,\n    {\n      basename,\n      location: state.location,\n      navigationType: state.historyAction,\n      navigator,\n      useTransitions\n    },\n    /* @__PURE__ */ React3.createElement(\n      MemoizedDataRoutes,\n      {\n        routes: router.routes,\n        manifest: router.manifest,\n        future: router.future,\n        state,\n        isStatic: false,\n        onError\n      }\n    )\n  ))))), null);\n}\nfunction getOptimisticRouterState(currentState, newState) {\n  return {\n    // Don't surface \"current location specific\" stuff mid-navigation\n    // (historyAction, location, matches, loaderData, errors, initialized,\n    // restoreScroll, preventScrollReset, blockers, etc.)\n    ...currentState,\n    // Only surface \"pending/in-flight stuff\"\n    // (navigation, revalidation, actionData, fetchers, )\n    navigation: newState.navigation.state !== \"idle\" ? newState.navigation : currentState.navigation,\n    revalidation: newState.revalidation !== \"idle\" ? newState.revalidation : currentState.revalidation,\n    actionData: newState.navigation.state !== \"submitting\" ? newState.actionData : currentState.actionData,\n    fetchers: newState.fetchers\n  };\n}\nvar MemoizedDataRoutes = React3.memo(DataRoutes2);\nfunction DataRoutes2({\n  routes,\n  manifest,\n  future,\n  state,\n  isStatic,\n  onError\n}) {\n  return useRoutesImpl(routes, void 0, {\n    manifest,\n    state,\n    isStatic,\n    onError,\n    future\n  });\n}\nfunction MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  useTransitions\n}) {\n  let historyRef = React3.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React3.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React3.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React3.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React3.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React3.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nfunction Navigate({\n  to,\n  replace: replace2,\n  state,\n  relative\n}) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n  let { static: isStatic, navigator } = React3.useContext(NavigationContext);\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`\n  );\n  let { matches } = React3.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches),\n    locationPathname,\n    relative === \"path\"\n  );\n  validateNavigationTarget(\n    typeof to === \"string\" ? to : createPath(to),\n    navigator.createHref(path),\n    getNavigatorCurrentUrl(navigator),\n    \"reject\"\n  );\n  let jsonPath = JSON.stringify(path);\n  React3.useEffect(() => {\n    navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });\n  }, [navigate, jsonPath, relative, replace2, state]);\n  return null;\n}\nfunction Outlet(props) {\n  return useOutlet(props.context);\n}\nfunction Route(props) {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\nfunction Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = \"POP\" /* Pop */,\n  navigator,\n  static: staticProp = false,\n  useTransitions\n}) {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`\n  );\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React3.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      useTransitions,\n      future: {}\n    }),\n    [basename, navigator, staticProp, useTransitions]\n  );\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n    mask\n  } = locationProp;\n  let locationContext = React3.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n    if (trailingPathname == null) {\n      return null;\n    }\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n        mask\n      },\n      navigationType\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType, mask]);\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL \"${pathname}${search}${hash}\" because it does not start with the basename, so the <Router> won't render anything.`\n  );\n  if (locationContext == null) {\n    return null;\n  }\n  return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));\n}\nfunction Routes({\n  children,\n  location\n}) {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await({\n  children,\n  errorElement,\n  resolve\n}) {\n  let dataRouterContext = React3.useContext(DataRouterContext);\n  let dataRouterStateContext = React3.useContext(DataRouterStateContext);\n  let onError = React3.useCallback(\n    (error, errorInfo) => {\n      if (dataRouterContext && dataRouterContext.onError && dataRouterStateContext) {\n        dataRouterContext.onError(error, {\n          location: dataRouterStateContext.location,\n          params: dataRouterStateContext.matches[0]?.params || {},\n          pattern: getRoutePattern(dataRouterStateContext.matches),\n          errorInfo\n        });\n      }\n    },\n    [dataRouterContext, dataRouterStateContext]\n  );\n  return /* @__PURE__ */ React3.createElement(\n    AwaitErrorBoundary,\n    {\n      resolve,\n      errorElement,\n      onError\n    },\n    /* @__PURE__ */ React3.createElement(ResolveAwait, null, children)\n  );\n}\nvar AwaitErrorBoundary = class extends React3.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: null };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error, errorInfo) {\n    if (this.props.onError) {\n      this.props.onError(error, errorInfo);\n    } else {\n      console.error(\n        \"<Await> caught the following error during render\",\n        error,\n        errorInfo\n      );\n    }\n  }\n  render() {\n    let { children, errorElement, resolve } = this.props;\n    let promise = null;\n    let status = 0 /* pending */;\n    if (!(resolve instanceof Promise)) {\n      status = 1 /* success */;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      status = 2 /* error */;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {\n      });\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if (resolve._tracked) {\n      promise = resolve;\n      status = \"_error\" in promise ? 2 /* error */ : \"_data\" in promise ? 1 /* success */ : 0 /* pending */;\n    } else {\n      status = 0 /* pending */;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data2) => Object.defineProperty(resolve, \"_data\", { get: () => data2 }),\n        (error) => {\n          this.props.onError?.(error);\n          Object.defineProperty(resolve, \"_error\", { get: () => error });\n        }\n      );\n    }\n    if (status === 2 /* error */ && !errorElement) {\n      throw promise._error;\n    }\n    if (status === 2 /* error */) {\n      return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });\n    }\n    if (status === 1 /* success */) {\n      return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });\n    }\n    throw promise;\n  }\n};\nfunction ResolveAwait({\n  children\n}) {\n  let data2 = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data2) : children;\n  return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath = []) {\n  let routes = [];\n  React3.Children.forEach(children, (element, index) => {\n    if (!React3.isValidElement(element)) {\n      return;\n    }\n    let treePath = [...parentPath, index];\n    if (element.type === React3.Fragment) {\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n    invariant(\n      element.type === Route,\n      `[${typeof element.type === \"string\" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n    let route = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      middleware: element.props.middleware,\n      loader: element.props.loader,\n      action: element.props.action,\n      hydrateFallbackElement: element.props.hydrateFallbackElement,\n      HydrateFallback: element.props.HydrateFallback,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary: element.props.hasErrorBoundary === true || element.props.ErrorBoundary != null || element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy\n    };\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n    routes.push(route);\n  });\n  return routes;\n}\nvar createRoutesFromElements = createRoutesFromChildren;\nfunction renderMatches(matches) {\n  return _renderMatches(matches);\n}\nfunction useRouteComponentProps() {\n  return {\n    params: useParams(),\n    loaderData: useLoaderData(),\n    actionData: useActionData(),\n    matches: useMatches()\n  };\n}\nfunction WithComponentProps({\n  children\n}) {\n  const props = useRouteComponentProps();\n  return React3.cloneElement(children, props);\n}\nfunction withComponentProps(Component4) {\n  return function WithComponentProps2() {\n    const props = useRouteComponentProps();\n    return React3.createElement(Component4, props);\n  };\n}\nfunction useHydrateFallbackProps() {\n  return {\n    params: useParams(),\n    loaderData: useLoaderData(),\n    actionData: useActionData()\n  };\n}\nfunction WithHydrateFallbackProps({\n  children\n}) {\n  const props = useHydrateFallbackProps();\n  return React3.cloneElement(children, props);\n}\nfunction withHydrateFallbackProps(HydrateFallback) {\n  return function WithHydrateFallbackProps2() {\n    const props = useHydrateFallbackProps();\n    return React3.createElement(HydrateFallback, props);\n  };\n}\nfunction useErrorBoundaryProps() {\n  return {\n    params: useParams(),\n    loaderData: useLoaderData(),\n    actionData: useActionData(),\n    error: useRouteError()\n  };\n}\nfunction WithErrorBoundaryProps({\n  children\n}) {\n  const props = useErrorBoundaryProps();\n  return React3.cloneElement(children, props);\n}\nfunction withErrorBoundaryProps(ErrorBoundary) {\n  return function WithErrorBoundaryProps2() {\n    const props = useErrorBoundaryProps();\n    return React3.createElement(ErrorBoundary, props);\n  };\n}\n\n// lib/dom/dom.ts\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n  return typeof HTMLElement !== \"undefined\" && object instanceof HTMLElement;\n}\nfunction isButtonElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n  return event.button === 0 && // Ignore everything but left clicks\n  (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n  !isModifiedEvent(event);\n}\nfunction createSearchParams(init = \"\") {\n  return new URLSearchParams(\n    typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n      let value = init[key];\n      return memo2.concat(\n        Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n      );\n    }, [])\n  );\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n  let searchParams = createSearchParams(locationSearch);\n  if (defaultSearchParams) {\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach((value) => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n  return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(\n        document.createElement(\"form\"),\n        // @ts-expect-error if FormData supports the submitter parameter, this will throw\n        0\n      );\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\n  \"application/x-www-form-urlencoded\",\n  \"multipart/form-data\",\n  \"text/plain\"\n]);\nfunction getFormEncType(encType) {\n  if (encType != null && !supportedFormEncTypes.has(encType)) {\n    warning(\n      false,\n      `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` and will default to \"${defaultEncType}\"`\n    );\n    return null;\n  }\n  return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n  let method;\n  let action;\n  let encType;\n  let formData;\n  let body;\n  if (isFormElement(target)) {\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(target);\n  } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n    let form = target.form;\n    if (form == null) {\n      throw new Error(\n        `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n      );\n    }\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(form, target);\n    if (!isFormDataSubmitterSupported()) {\n      let { name, type, value } = target;\n      if (type === \"image\") {\n        let prefix = name ? `${name}.` : \"\";\n        formData.append(`${prefix}x`, \"0\");\n        formData.append(`${prefix}y`, \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\n      `Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">`\n    );\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = void 0;\n  }\n  return { action, method: method.toLowerCase(), encType, formData, body };\n}\n\n// lib/dom/ssr/single-fetch.tsx\nimport * as React4 from \"react\";\n\n// vendor/turbo-stream-v2/utils.ts\nvar HOLE = -1;\nvar NAN = -2;\nvar NEGATIVE_INFINITY = -3;\nvar NEGATIVE_ZERO = -4;\nvar NULL = -5;\nvar POSITIVE_INFINITY = -6;\nvar UNDEFINED = -7;\nvar TYPE_BIGINT = \"B\";\nvar TYPE_DATE = \"D\";\nvar TYPE_ERROR = \"E\";\nvar TYPE_MAP = \"M\";\nvar TYPE_NULL_OBJECT = \"N\";\nvar TYPE_PROMISE = \"P\";\nvar TYPE_REGEXP = \"R\";\nvar TYPE_SET = \"S\";\nvar TYPE_SYMBOL = \"Y\";\nvar TYPE_URL = \"U\";\nvar TYPE_PREVIOUS_RESOLVED = \"Z\";\nvar Deferred2 = class {\n  constructor() {\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = resolve;\n      this.reject = reject;\n    });\n  }\n};\nfunction createLineSplittingTransform() {\n  const decoder = new TextDecoder();\n  let leftover = \"\";\n  return new TransformStream({\n    transform(chunk, controller) {\n      const str = decoder.decode(chunk, { stream: true });\n      const parts = (leftover + str).split(\"\\n\");\n      leftover = parts.pop() || \"\";\n      for (const part of parts) {\n        controller.enqueue(part);\n      }\n    },\n    flush(controller) {\n      if (leftover) {\n        controller.enqueue(leftover);\n      }\n    }\n  });\n}\n\n// vendor/turbo-stream-v2/flatten.ts\nvar TIME_LIMIT_MS = 1;\nvar getNow = () => Date.now();\nvar yieldToMain = () => new Promise((resolve) => setTimeout(resolve, 0));\nasync function flatten(input) {\n  const { indices } = this;\n  const existing = indices.get(input);\n  if (existing) return [existing];\n  if (input === void 0) return UNDEFINED;\n  if (input === null) return NULL;\n  if (Number.isNaN(input)) return NAN;\n  if (input === Number.POSITIVE_INFINITY) return POSITIVE_INFINITY;\n  if (input === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n  if (input === 0 && 1 / input < 0) return NEGATIVE_ZERO;\n  const index = this.index++;\n  indices.set(input, index);\n  const stack = [[input, index]];\n  await stringify.call(this, stack);\n  return index;\n}\nasync function stringify(stack) {\n  const { deferred, indices, plugins, postPlugins } = this;\n  const str = this.stringified;\n  let lastYieldTime = getNow();\n  const flattenValue = (value) => {\n    const existing = indices.get(value);\n    if (existing) return [existing];\n    if (value === void 0) return UNDEFINED;\n    if (value === null) return NULL;\n    if (Number.isNaN(value)) return NAN;\n    if (value === Number.POSITIVE_INFINITY) return POSITIVE_INFINITY;\n    if (value === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n    if (value === 0 && 1 / value < 0) return NEGATIVE_ZERO;\n    const index = this.index++;\n    indices.set(value, index);\n    stack.push([value, index]);\n    return index;\n  };\n  let i = 0;\n  while (stack.length > 0) {\n    const now = getNow();\n    if (++i % 6e3 === 0 && now - lastYieldTime >= TIME_LIMIT_MS) {\n      await yieldToMain();\n      lastYieldTime = getNow();\n    }\n    const [input, index] = stack.pop();\n    const partsForObj = (obj) => Object.keys(obj).map((k) => `\"_${flattenValue(k)}\":${flattenValue(obj[k])}`).join(\",\");\n    let error = null;\n    switch (typeof input) {\n      case \"boolean\":\n      case \"number\":\n      case \"string\":\n        str[index] = JSON.stringify(input);\n        break;\n      case \"bigint\":\n        str[index] = `[\"${TYPE_BIGINT}\",\"${input}\"]`;\n        break;\n      case \"symbol\": {\n        const keyFor = Symbol.keyFor(input);\n        if (!keyFor) {\n          error = new Error(\n            \"Cannot encode symbol unless created with Symbol.for()\"\n          );\n        } else {\n          str[index] = `[\"${TYPE_SYMBOL}\",${JSON.stringify(keyFor)}]`;\n        }\n        break;\n      }\n      case \"object\": {\n        if (!input) {\n          str[index] = `${NULL}`;\n          break;\n        }\n        const isArray = Array.isArray(input);\n        let pluginHandled = false;\n        if (!isArray && plugins) {\n          for (const plugin of plugins) {\n            const pluginResult = plugin(input);\n            if (Array.isArray(pluginResult)) {\n              pluginHandled = true;\n              const [pluginIdentifier, ...rest] = pluginResult;\n              str[index] = `[${JSON.stringify(pluginIdentifier)}`;\n              if (rest.length > 0) {\n                str[index] += `,${rest.map((v) => flattenValue(v)).join(\",\")}`;\n              }\n              str[index] += \"]\";\n              break;\n            }\n          }\n        }\n        if (!pluginHandled) {\n          let result = isArray ? \"[\" : \"{\";\n          if (isArray) {\n            for (let i2 = 0; i2 < input.length; i2++)\n              result += (i2 ? \",\" : \"\") + (i2 in input ? flattenValue(input[i2]) : HOLE);\n            str[index] = `${result}]`;\n          } else if (input instanceof Date) {\n            const dateTime = input.getTime();\n            str[index] = `[\"${TYPE_DATE}\",${Number.isNaN(dateTime) ? JSON.stringify(\"invalid\") : dateTime}]`;\n          } else if (input instanceof URL) {\n            str[index] = `[\"${TYPE_URL}\",${JSON.stringify(input.href)}]`;\n          } else if (input instanceof RegExp) {\n            str[index] = `[\"${TYPE_REGEXP}\",${JSON.stringify(\n              input.source\n            )},${JSON.stringify(input.flags)}]`;\n          } else if (input instanceof Set) {\n            if (input.size > 0) {\n              str[index] = `[\"${TYPE_SET}\",${[...input].map((val) => flattenValue(val)).join(\",\")}]`;\n            } else {\n              str[index] = `[\"${TYPE_SET}\"]`;\n            }\n          } else if (input instanceof Map) {\n            if (input.size > 0) {\n              str[index] = `[\"${TYPE_MAP}\",${[...input].flatMap(([k, v]) => [flattenValue(k), flattenValue(v)]).join(\",\")}]`;\n            } else {\n              str[index] = `[\"${TYPE_MAP}\"]`;\n            }\n          } else if (input instanceof Promise) {\n            str[index] = `[\"${TYPE_PROMISE}\",${index}]`;\n            deferred[index] = input;\n          } else if (input instanceof Error) {\n            str[index] = `[\"${TYPE_ERROR}\",${JSON.stringify(input.message)}`;\n            if (input.name !== \"Error\") {\n              str[index] += `,${JSON.stringify(input.name)}`;\n            }\n            str[index] += \"]\";\n          } else if (Object.getPrototypeOf(input) === null) {\n            str[index] = `[\"${TYPE_NULL_OBJECT}\",{${partsForObj(input)}}]`;\n          } else if (isPlainObject2(input)) {\n            str[index] = `{${partsForObj(input)}}`;\n          } else {\n            error = new Error(\"Cannot encode object with prototype\");\n          }\n        }\n        break;\n      }\n      default: {\n        const isArray = Array.isArray(input);\n        let pluginHandled = false;\n        if (!isArray && plugins) {\n          for (const plugin of plugins) {\n            const pluginResult = plugin(input);\n            if (Array.isArray(pluginResult)) {\n              pluginHandled = true;\n              const [pluginIdentifier, ...rest] = pluginResult;\n              str[index] = `[${JSON.stringify(pluginIdentifier)}`;\n              if (rest.length > 0) {\n                str[index] += `,${rest.map((v) => flattenValue(v)).join(\",\")}`;\n              }\n              str[index] += \"]\";\n              break;\n            }\n          }\n        }\n        if (!pluginHandled) {\n          error = new Error(\"Cannot encode function or unexpected type\");\n        }\n      }\n    }\n    if (error) {\n      let pluginHandled = false;\n      if (postPlugins) {\n        for (const plugin of postPlugins) {\n          const pluginResult = plugin(input);\n          if (Array.isArray(pluginResult)) {\n            pluginHandled = true;\n            const [pluginIdentifier, ...rest] = pluginResult;\n            str[index] = `[${JSON.stringify(pluginIdentifier)}`;\n            if (rest.length > 0) {\n              str[index] += `,${rest.map((v) => flattenValue(v)).join(\",\")}`;\n            }\n            str[index] += \"]\";\n            break;\n          }\n        }\n      }\n      if (!pluginHandled) {\n        throw error;\n      }\n    }\n  }\n}\nvar objectProtoNames2 = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject2(thing) {\n  const proto = Object.getPrototypeOf(thing);\n  return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames2;\n}\n\n// vendor/turbo-stream-v2/unflatten.ts\nvar globalObj = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : void 0;\nfunction unflatten(parsed) {\n  const { hydrated, values } = this;\n  if (typeof parsed === \"number\") return hydrate.call(this, parsed);\n  if (!Array.isArray(parsed) || !parsed.length) throw new SyntaxError();\n  const startIndex = values.length;\n  for (const value of parsed) {\n    values.push(value);\n  }\n  hydrated.length = values.length;\n  return hydrate.call(this, startIndex);\n}\nfunction hydrate(index) {\n  const { hydrated, values, deferred, plugins } = this;\n  let result;\n  const stack = [\n    [\n      index,\n      (v) => {\n        result = v;\n      }\n    ]\n  ];\n  let postRun = [];\n  while (stack.length > 0) {\n    const [index2, set] = stack.pop();\n    switch (index2) {\n      case UNDEFINED:\n        set(void 0);\n        continue;\n      case NULL:\n        set(null);\n        continue;\n      case NAN:\n        set(NaN);\n        continue;\n      case POSITIVE_INFINITY:\n        set(Infinity);\n        continue;\n      case NEGATIVE_INFINITY:\n        set(-Infinity);\n        continue;\n      case NEGATIVE_ZERO:\n        set(-0);\n        continue;\n    }\n    if (hydrated[index2]) {\n      set(hydrated[index2]);\n      continue;\n    }\n    const value = values[index2];\n    if (!value || typeof value !== \"object\") {\n      hydrated[index2] = value;\n      set(value);\n      continue;\n    }\n    if (Array.isArray(value)) {\n      if (typeof value[0] === \"string\") {\n        const [type, b, c] = value;\n        switch (type) {\n          case TYPE_DATE:\n            set(hydrated[index2] = new Date(b));\n            continue;\n          case TYPE_URL:\n            set(hydrated[index2] = new URL(b));\n            continue;\n          case TYPE_BIGINT:\n            set(hydrated[index2] = BigInt(b));\n            continue;\n          case TYPE_REGEXP:\n            set(hydrated[index2] = new RegExp(b, c));\n            continue;\n          case TYPE_SYMBOL:\n            set(hydrated[index2] = Symbol.for(b));\n            continue;\n          case TYPE_SET:\n            const newSet = /* @__PURE__ */ new Set();\n            hydrated[index2] = newSet;\n            for (let i = value.length - 1; i > 0; i--)\n              stack.push([\n                value[i],\n                (v) => {\n                  newSet.add(v);\n                }\n              ]);\n            set(newSet);\n            continue;\n          case TYPE_MAP:\n            const map = /* @__PURE__ */ new Map();\n            hydrated[index2] = map;\n            for (let i = value.length - 2; i > 0; i -= 2) {\n              const r = [];\n              stack.push([\n                value[i + 1],\n                (v) => {\n                  r[1] = v;\n                }\n              ]);\n              stack.push([\n                value[i],\n                (k) => {\n                  r[0] = k;\n                }\n              ]);\n              postRun.push(() => {\n                map.set(r[0], r[1]);\n              });\n            }\n            set(map);\n            continue;\n          case TYPE_NULL_OBJECT:\n            const obj = /* @__PURE__ */ Object.create(null);\n            hydrated[index2] = obj;\n            for (const key of Object.keys(b).reverse()) {\n              const r = [];\n              stack.push([\n                b[key],\n                (v) => {\n                  r[1] = v;\n                }\n              ]);\n              stack.push([\n                Number(key.slice(1)),\n                (k) => {\n                  r[0] = k;\n                }\n              ]);\n              postRun.push(() => {\n                obj[r[0]] = r[1];\n              });\n            }\n            set(obj);\n            continue;\n          case TYPE_PROMISE:\n            if (hydrated[b]) {\n              set(hydrated[index2] = hydrated[b]);\n            } else {\n              const d = new Deferred2();\n              deferred[b] = d;\n              set(hydrated[index2] = d.promise);\n            }\n            continue;\n          case TYPE_ERROR:\n            const [, message, errorType] = value;\n            let error = errorType && globalObj && SUPPORTED_ERROR_TYPES.includes(errorType) && errorType in globalObj && typeof globalObj[errorType] === \"function\" ? new globalObj[errorType](message) : new Error(message);\n            hydrated[index2] = error;\n            set(error);\n            continue;\n          case TYPE_PREVIOUS_RESOLVED:\n            set(hydrated[index2] = hydrated[b]);\n            continue;\n          default:\n            if (Array.isArray(plugins)) {\n              const r = [];\n              const vals = value.slice(1);\n              for (let i = 0; i < vals.length; i++) {\n                const v = vals[i];\n                stack.push([\n                  v,\n                  (v2) => {\n                    r[i] = v2;\n                  }\n                ]);\n              }\n              postRun.push(() => {\n                for (const plugin of plugins) {\n                  const result2 = plugin(value[0], ...r);\n                  if (result2) {\n                    set(hydrated[index2] = result2.value);\n                    return;\n                  }\n                }\n                throw new SyntaxError();\n              });\n              continue;\n            }\n            throw new SyntaxError();\n        }\n      } else {\n        const array = [];\n        hydrated[index2] = array;\n        for (let i = 0; i < value.length; i++) {\n          const n = value[i];\n          if (n !== HOLE) {\n            stack.push([\n              n,\n              (v) => {\n                array[i] = v;\n              }\n            ]);\n          }\n        }\n        set(array);\n        continue;\n      }\n    } else {\n      const object = {};\n      hydrated[index2] = object;\n      for (const key of Object.keys(value).reverse()) {\n        const r = [];\n        stack.push([\n          value[key],\n          (v) => {\n            r[1] = v;\n          }\n        ]);\n        stack.push([\n          Number(key.slice(1)),\n          (k) => {\n            r[0] = k;\n          }\n        ]);\n        postRun.push(() => {\n          object[r[0]] = r[1];\n        });\n      }\n      set(object);\n      continue;\n    }\n  }\n  while (postRun.length > 0) {\n    postRun.pop()();\n  }\n  return result;\n}\n\n// vendor/turbo-stream-v2/turbo-stream.ts\nasync function decode(readable, options) {\n  const { plugins } = options ?? {};\n  const done = new Deferred2();\n  const reader = readable.pipeThrough(createLineSplittingTransform()).getReader();\n  const decoder = {\n    values: [],\n    hydrated: [],\n    deferred: {},\n    plugins\n  };\n  const decoded = await decodeInitial.call(decoder, reader);\n  let donePromise = done.promise;\n  if (decoded.done) {\n    done.resolve();\n  } else {\n    donePromise = decodeDeferred.call(decoder, reader).then(done.resolve).catch((reason) => {\n      for (const deferred of Object.values(decoder.deferred)) {\n        deferred.reject(reason);\n      }\n      done.reject(reason);\n    });\n  }\n  return {\n    done: donePromise.then(() => reader.closed),\n    value: decoded.value\n  };\n}\nasync function decodeInitial(reader) {\n  const read = await reader.read();\n  if (!read.value) {\n    throw new SyntaxError();\n  }\n  let line;\n  try {\n    line = JSON.parse(read.value);\n  } catch (reason) {\n    throw new SyntaxError();\n  }\n  return {\n    done: read.done,\n    value: unflatten.call(this, line)\n  };\n}\nasync function decodeDeferred(reader) {\n  let read = await reader.read();\n  while (!read.done) {\n    if (!read.value) continue;\n    const line = read.value;\n    switch (line[0]) {\n      case TYPE_PROMISE: {\n        const colonIndex = line.indexOf(\":\");\n        const deferredId = Number(line.slice(1, colonIndex));\n        const deferred = this.deferred[deferredId];\n        if (!deferred) {\n          throw new Error(`Deferred ID ${deferredId} not found in stream`);\n        }\n        const lineData = line.slice(colonIndex + 1);\n        let jsonLine;\n        try {\n          jsonLine = JSON.parse(lineData);\n        } catch (reason) {\n          throw new SyntaxError();\n        }\n        const value = unflatten.call(this, jsonLine);\n        deferred.resolve(value);\n        break;\n      }\n      case TYPE_ERROR: {\n        const colonIndex = line.indexOf(\":\");\n        const deferredId = Number(line.slice(1, colonIndex));\n        const deferred = this.deferred[deferredId];\n        if (!deferred) {\n          throw new Error(`Deferred ID ${deferredId} not found in stream`);\n        }\n        const lineData = line.slice(colonIndex + 1);\n        let jsonLine;\n        try {\n          jsonLine = JSON.parse(lineData);\n        } catch (reason) {\n          throw new SyntaxError();\n        }\n        const value = unflatten.call(this, jsonLine);\n        deferred.reject(value);\n        break;\n      }\n      default:\n        throw new SyntaxError();\n    }\n    read = await reader.read();\n  }\n}\nfunction encode(input, options) {\n  const { onComplete, plugins, postPlugins, signal } = options ?? {};\n  const encoder = {\n    deferred: {},\n    index: 0,\n    indices: /* @__PURE__ */ new Map(),\n    stringified: [],\n    plugins,\n    postPlugins,\n    signal\n  };\n  const textEncoder = new TextEncoder();\n  let lastSentIndex = 0;\n  const readable = new ReadableStream({\n    async start(controller) {\n      const id = await flatten.call(encoder, input);\n      if (Array.isArray(id)) {\n        throw new Error(\"This should never happen\");\n      }\n      if (id < 0) {\n        controller.enqueue(textEncoder.encode(`${id}\n`));\n      } else {\n        controller.enqueue(\n          textEncoder.encode(`[${encoder.stringified.join(\",\")}]\n`)\n        );\n        lastSentIndex = encoder.stringified.length - 1;\n      }\n      const seenPromises = /* @__PURE__ */ new WeakSet();\n      let processingChain = Promise.resolve();\n      if (Object.keys(encoder.deferred).length) {\n        let raceDone;\n        const racePromise = new Promise((resolve, reject) => {\n          raceDone = resolve;\n          if (signal) {\n            const rejectPromise = () => reject(signal.reason || new Error(\"Signal was aborted.\"));\n            if (signal.aborted) {\n              rejectPromise();\n            } else {\n              signal.addEventListener(\"abort\", (event) => {\n                rejectPromise();\n              });\n            }\n          }\n        });\n        while (Object.keys(encoder.deferred).length > 0) {\n          for (const [deferredId, deferred] of Object.entries(\n            encoder.deferred\n          )) {\n            if (seenPromises.has(deferred)) continue;\n            seenPromises.add(\n              // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n              encoder.deferred[Number(deferredId)] = Promise.race([\n                racePromise,\n                deferred\n              ]).then(\n                (resolved) => {\n                  processingChain = processingChain.then(async () => {\n                    const id2 = await flatten.call(encoder, resolved);\n                    if (Array.isArray(id2)) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_PROMISE}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n                        )\n                      );\n                      encoder.index++;\n                      lastSentIndex++;\n                    } else if (id2 < 0) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_PROMISE}${deferredId}:${id2}\n`\n                        )\n                      );\n                    } else {\n                      const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_PROMISE}${deferredId}:[${values}]\n`\n                        )\n                      );\n                      lastSentIndex = encoder.stringified.length - 1;\n                    }\n                  });\n                  return processingChain;\n                },\n                (reason) => {\n                  processingChain = processingChain.then(async () => {\n                    if (!reason || typeof reason !== \"object\" || !(reason instanceof Error)) {\n                      reason = new Error(\"An unknown error occurred\");\n                    }\n                    const id2 = await flatten.call(encoder, reason);\n                    if (Array.isArray(id2)) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_ERROR}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n                        )\n                      );\n                      encoder.index++;\n                      lastSentIndex++;\n                    } else if (id2 < 0) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_ERROR}${deferredId}:${id2}\n`\n                        )\n                      );\n                    } else {\n                      const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_ERROR}${deferredId}:[${values}]\n`\n                        )\n                      );\n                      lastSentIndex = encoder.stringified.length - 1;\n                    }\n                  });\n                  return processingChain;\n                }\n              ).finally(() => {\n                delete encoder.deferred[Number(deferredId)];\n              })\n            );\n          }\n          await Promise.race(Object.values(encoder.deferred));\n        }\n        raceDone();\n      }\n      await Promise.all(Object.values(encoder.deferred));\n      await processingChain;\n      controller.close();\n      onComplete?.();\n    }\n  });\n  return readable;\n}\n\n// lib/dom/ssr/data.ts\nasync function createRequestInit(request) {\n  let init = { signal: request.signal };\n  if (request.method !== \"GET\") {\n    init.method = request.method;\n    let contentType = request.headers.get(\"Content-Type\");\n    if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n      init.headers = { \"Content-Type\": contentType };\n      init.body = JSON.stringify(await request.json());\n    } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n      init.headers = { \"Content-Type\": contentType };\n      init.body = await request.text();\n    } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n      init.body = new URLSearchParams(await request.text());\n    } else {\n      init.body = await request.formData();\n    }\n  }\n  return init;\n}\n\n// lib/dom/ssr/markup.ts\nvar ESCAPE_LOOKUP = {\n  \"&\": \"\\\\u0026\",\n  \">\": \"\\\\u003e\",\n  \"<\": \"\\\\u003c\",\n  \"\\u2028\": \"\\\\u2028\",\n  \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n  return html.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\nfunction escapeAttribute(value) {\n  return value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n\n// lib/dom/ssr/invariant.ts\nfunction invariant2(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\n// lib/dom/ssr/single-fetch.tsx\nvar SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\nvar SingleFetchNoResultError = class extends Error {\n};\nvar SINGLE_FETCH_REDIRECT_STATUS = 202;\nvar NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([100, 101, 204, 205]);\nfunction StreamTransfer({\n  context,\n  identifier,\n  reader,\n  textDecoder,\n  nonce\n}) {\n  if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n    return null;\n  }\n  if (!context.renderMeta.streamCache) {\n    context.renderMeta.streamCache = {};\n  }\n  let { streamCache } = context.renderMeta;\n  let promise = streamCache[identifier];\n  if (!promise) {\n    promise = streamCache[identifier] = reader.read().then((result) => {\n      streamCache[identifier].result = {\n        done: result.done,\n        value: textDecoder.decode(result.value, { stream: true })\n      };\n    }).catch((e) => {\n      streamCache[identifier].error = e;\n    });\n  }\n  if (promise.error) {\n    throw promise.error;\n  }\n  if (promise.result === void 0) {\n    throw promise;\n  }\n  let { done, value } = promise.result;\n  let scriptTag = value ? /* @__PURE__ */ React4.createElement(\n    \"script\",\n    {\n      nonce,\n      dangerouslySetInnerHTML: {\n        __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(\n          JSON.stringify(value)\n        )});`\n      }\n    }\n  ) : null;\n  if (done) {\n    return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(\n      \"script\",\n      {\n        nonce,\n        dangerouslySetInnerHTML: {\n          __html: `window.__reactRouterContext.streamController.close();`\n        }\n      }\n    ));\n  } else {\n    return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(\n      StreamTransfer,\n      {\n        context,\n        identifier: identifier + 1,\n        reader,\n        textDecoder,\n        nonce\n      }\n    )));\n  }\n}\nfunction getTurboStreamSingleFetchDataStrategy(getRouter, manifest, routeModules, ssr, basename, trailingSlashAware) {\n  let dataStrategy = getSingleFetchDataStrategyImpl(\n    getRouter,\n    (match) => {\n      let manifestRoute = manifest.routes[match.route.id];\n      invariant2(manifestRoute, \"Route not found in manifest\");\n      return {\n        hasLoader: manifestRoute.hasLoader,\n        hasClientLoader: manifestRoute.hasClientLoader\n      };\n    },\n    fetchAndDecodeViaTurboStream,\n    ssr,\n    basename,\n    trailingSlashAware\n  );\n  return async (args) => args.runClientMiddleware(dataStrategy);\n}\nfunction getSingleFetchDataStrategyImpl(getRouter, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n  return async (args) => {\n    let { request, matches, fetcherKey } = args;\n    let router = getRouter();\n    if (request.method !== \"GET\") {\n      return singleFetchActionStrategy(\n        args,\n        fetchAndDecode,\n        basename,\n        trailingSlashAware\n      );\n    }\n    let foundRevalidatingServerLoader = matches.some((m) => {\n      let { hasLoader, hasClientLoader } = getRouteInfo(m);\n      return m.shouldCallHandler() && hasLoader && !hasClientLoader;\n    });\n    if (!ssr && !foundRevalidatingServerLoader) {\n      return nonSsrStrategy(\n        args,\n        getRouteInfo,\n        fetchAndDecode,\n        basename,\n        trailingSlashAware\n      );\n    }\n    if (fetcherKey) {\n      return singleFetchLoaderFetcherStrategy(\n        args,\n        fetchAndDecode,\n        basename,\n        trailingSlashAware\n      );\n    }\n    return singleFetchLoaderNavigationStrategy(\n      args,\n      router,\n      getRouteInfo,\n      fetchAndDecode,\n      ssr,\n      basename,\n      trailingSlashAware,\n      shouldAllowOptOut\n    );\n  };\n}\nasync function singleFetchActionStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n  let actionMatch = args.matches.find((m) => m.shouldCallHandler());\n  invariant2(actionMatch, \"No action match found\");\n  let actionStatus = void 0;\n  let result = await actionMatch.resolve(async (handler) => {\n    let result2 = await handler(async () => {\n      let { data: data2, status } = await fetchAndDecode(\n        args,\n        basename,\n        trailingSlashAware,\n        [actionMatch.route.id]\n      );\n      actionStatus = status;\n      return unwrapSingleFetchResult(data2, actionMatch.route.id);\n    });\n    return result2;\n  });\n  if (isResponse(result.result) || isRouteErrorResponse(result.result) || isDataWithResponseInit(result.result)) {\n    return { [actionMatch.route.id]: result };\n  }\n  return {\n    [actionMatch.route.id]: {\n      type: result.type,\n      result: data(result.result, actionStatus)\n    }\n  };\n}\nasync function nonSsrStrategy(args, getRouteInfo, fetchAndDecode, basename, trailingSlashAware) {\n  let matchesToLoad = args.matches.filter((m) => m.shouldCallHandler());\n  let results = {};\n  await Promise.all(\n    matchesToLoad.map(\n      (m) => m.resolve(async (handler) => {\n        try {\n          let { hasClientLoader } = getRouteInfo(m);\n          let routeId = m.route.id;\n          let result = hasClientLoader ? await handler(async () => {\n            let { data: data2 } = await fetchAndDecode(\n              args,\n              basename,\n              trailingSlashAware,\n              [routeId]\n            );\n            return unwrapSingleFetchResult(data2, routeId);\n          }) : await handler();\n          results[m.route.id] = { type: \"data\", result };\n        } catch (e) {\n          results[m.route.id] = { type: \"error\", result: e };\n        }\n      })\n    )\n  );\n  return results;\n}\nasync function singleFetchLoaderNavigationStrategy(args, router, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n  let routesParams = /* @__PURE__ */ new Set();\n  let foundOptOutRoute = false;\n  let routeDfds = args.matches.map(() => createDeferred2());\n  let singleFetchDfd = createDeferred2();\n  let results = {};\n  let resolvePromise = Promise.all(\n    args.matches.map(\n      async (m, i) => m.resolve(async (handler) => {\n        routeDfds[i].resolve();\n        let routeId = m.route.id;\n        let { hasLoader, hasClientLoader } = getRouteInfo(m);\n        let defaultShouldRevalidate = !m.shouldRevalidateArgs || m.shouldRevalidateArgs.actionStatus == null || m.shouldRevalidateArgs.actionStatus < 400;\n        let shouldCall = m.shouldCallHandler(defaultShouldRevalidate);\n        if (!shouldCall) {\n          foundOptOutRoute || (foundOptOutRoute = m.shouldRevalidateArgs != null && // This is a revalidation,\n          hasLoader);\n          return;\n        }\n        if (shouldAllowOptOut(m) && hasClientLoader) {\n          if (hasLoader) {\n            foundOptOutRoute = true;\n          }\n          try {\n            let result = await handler(async () => {\n              let { data: data2 } = await fetchAndDecode(\n                args,\n                basename,\n                trailingSlashAware,\n                [routeId]\n              );\n              return unwrapSingleFetchResult(data2, routeId);\n            });\n            results[routeId] = { type: \"data\", result };\n          } catch (e) {\n            results[routeId] = { type: \"error\", result: e };\n          }\n          return;\n        }\n        if (hasLoader) {\n          routesParams.add(routeId);\n        }\n        try {\n          let result = await handler(async () => {\n            let data2 = await singleFetchDfd.promise;\n            return unwrapSingleFetchResult(data2, routeId);\n          });\n          results[routeId] = { type: \"data\", result };\n        } catch (e) {\n          results[routeId] = { type: \"error\", result: e };\n        }\n      })\n    )\n  );\n  await Promise.all(routeDfds.map((d) => d.promise));\n  let isInitialLoad = !router.state.initialized && router.state.navigation.state === \"idle\";\n  if ((isInitialLoad || routesParams.size === 0) && !window.__reactRouterHdrActive) {\n    singleFetchDfd.resolve({ routes: {} });\n  } else {\n    let targetRoutes = ssr && foundOptOutRoute && routesParams.size > 0 ? [...routesParams.keys()] : void 0;\n    try {\n      let data2 = await fetchAndDecode(\n        args,\n        basename,\n        trailingSlashAware,\n        targetRoutes\n      );\n      singleFetchDfd.resolve(data2.data);\n    } catch (e) {\n      singleFetchDfd.reject(e);\n    }\n  }\n  await resolvePromise;\n  await bubbleMiddlewareErrors(\n    singleFetchDfd.promise,\n    args.matches,\n    routesParams,\n    results\n  );\n  return results;\n}\nasync function bubbleMiddlewareErrors(singleFetchPromise, matches, routesParams, results) {\n  try {\n    let middlewareError;\n    let fetchedData = await singleFetchPromise;\n    if (\"routes\" in fetchedData) {\n      for (let match of matches) {\n        if (match.route.id in fetchedData.routes) {\n          let routeResult = fetchedData.routes[match.route.id];\n          if (\"error\" in routeResult) {\n            middlewareError = routeResult.error;\n            if (results[match.route.id]?.result == null) {\n              results[match.route.id] = {\n                type: \"error\",\n                result: middlewareError\n              };\n            }\n            break;\n          }\n        }\n      }\n    }\n    if (middlewareError !== void 0) {\n      Array.from(routesParams.values()).forEach((routeId) => {\n        if (results[routeId].result instanceof SingleFetchNoResultError) {\n          results[routeId].result = middlewareError;\n        }\n      });\n    }\n  } catch (e) {\n  }\n}\nasync function singleFetchLoaderFetcherStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n  let fetcherMatch = args.matches.find((m) => m.shouldCallHandler());\n  invariant2(fetcherMatch, \"No fetcher match found\");\n  let routeId = fetcherMatch.route.id;\n  let result = await fetcherMatch.resolve(\n    async (handler) => handler(async () => {\n      let { data: data2 } = await fetchAndDecode(args, basename, trailingSlashAware, [\n        routeId\n      ]);\n      return unwrapSingleFetchResult(data2, routeId);\n    })\n  );\n  return { [fetcherMatch.route.id]: result };\n}\nfunction stripIndexParam(url) {\n  let indexValues = url.searchParams.getAll(\"index\");\n  url.searchParams.delete(\"index\");\n  let indexValuesToKeep = [];\n  for (let indexValue of indexValues) {\n    if (indexValue) {\n      indexValuesToKeep.push(indexValue);\n    }\n  }\n  for (let toKeep of indexValuesToKeep) {\n    url.searchParams.append(\"index\", toKeep);\n  }\n  return url;\n}\nfunction singleFetchUrl(reqUrl, basename, trailingSlashAware, extension) {\n  let url = typeof reqUrl === \"string\" ? new URL(\n    reqUrl,\n    // This can be called during the SSR flow via PrefetchPageLinksImpl so\n    // don't assume window is available\n    typeof window === \"undefined\" ? \"server://singlefetch/\" : window.location.origin\n  ) : reqUrl;\n  if (trailingSlashAware) {\n    if (url.pathname.endsWith(\"/\")) {\n      url.pathname = `${url.pathname}_.${extension}`;\n    } else {\n      url.pathname = `${url.pathname}.${extension}`;\n    }\n  } else {\n    if (url.pathname === \"/\") {\n      url.pathname = `_root.${extension}`;\n    } else if (basename && stripBasename(url.pathname, basename) === \"/\") {\n      url.pathname = `${removeTrailingSlash(basename)}/_root.${extension}`;\n    } else {\n      url.pathname = `${removeTrailingSlash(url.pathname)}.${extension}`;\n    }\n  }\n  return url;\n}\nasync function fetchAndDecodeViaTurboStream(args, basename, trailingSlashAware, targetRoutes) {\n  let { request } = args;\n  let url = singleFetchUrl(request.url, basename, trailingSlashAware, \"data\");\n  if (request.method === \"GET\") {\n    url = stripIndexParam(url);\n    if (targetRoutes) {\n      url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n    }\n  }\n  let res = await fetch(url, await createRequestInit(request));\n  if (res.status >= 400 && !res.headers.has(\"X-Remix-Response\")) {\n    throw new ErrorResponseImpl(res.status, res.statusText, await res.text());\n  }\n  if (res.status === 204 && res.headers.has(\"X-Remix-Redirect\")) {\n    return {\n      status: SINGLE_FETCH_REDIRECT_STATUS,\n      data: {\n        redirect: {\n          redirect: res.headers.get(\"X-Remix-Redirect\"),\n          status: Number(res.headers.get(\"X-Remix-Status\") || \"302\"),\n          revalidate: res.headers.get(\"X-Remix-Revalidate\") === \"true\",\n          reload: res.headers.get(\"X-Remix-Reload-Document\") === \"true\",\n          replace: res.headers.get(\"X-Remix-Replace\") === \"true\"\n        }\n      }\n    };\n  }\n  if (NO_BODY_STATUS_CODES.has(res.status)) {\n    let routes = {};\n    if (targetRoutes && request.method !== \"GET\") {\n      routes[targetRoutes[0]] = { data: void 0 };\n    }\n    return {\n      status: res.status,\n      data: { routes }\n    };\n  }\n  invariant2(res.body, \"No response body to decode\");\n  try {\n    let decoded = await decodeViaTurboStream(res.body, window);\n    let data2;\n    if (request.method === \"GET\") {\n      let typed = decoded.value;\n      if (SingleFetchRedirectSymbol in typed) {\n        data2 = { redirect: typed[SingleFetchRedirectSymbol] };\n      } else {\n        data2 = { routes: typed };\n      }\n    } else {\n      let typed = decoded.value;\n      let routeId = targetRoutes?.[0];\n      invariant2(routeId, \"No routeId found for single fetch call decoding\");\n      if (\"redirect\" in typed) {\n        data2 = { redirect: typed };\n      } else {\n        data2 = { routes: { [routeId]: typed } };\n      }\n    }\n    return { status: res.status, data: data2 };\n  } catch (e) {\n    throw new Error(\"Unable to decode turbo-stream response\");\n  }\n}\nfunction decodeViaTurboStream(body, global) {\n  return decode(body, {\n    plugins: [\n      (type, ...rest) => {\n        if (type === \"SanitizedError\") {\n          let [name, message, stack] = rest;\n          let Constructor = Error;\n          if (name && SUPPORTED_ERROR_TYPES.includes(name) && name in global && // @ts-expect-error\n          typeof global[name] === \"function\") {\n            Constructor = global[name];\n          }\n          let error = new Constructor(message);\n          error.stack = stack;\n          return { value: error };\n        }\n        if (type === \"ErrorResponse\") {\n          let [data2, status, statusText] = rest;\n          return {\n            value: new ErrorResponseImpl(status, statusText, data2)\n          };\n        }\n        if (type === \"SingleFetchRedirect\") {\n          return { value: { [SingleFetchRedirectSymbol]: rest[0] } };\n        }\n        if (type === \"SingleFetchClassInstance\") {\n          return { value: rest[0] };\n        }\n        if (type === \"SingleFetchFallback\") {\n          return { value: void 0 };\n        }\n      }\n    ]\n  });\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n  if (\"redirect\" in result) {\n    let {\n      redirect: location,\n      revalidate,\n      reload,\n      replace: replace2,\n      status\n    } = result.redirect;\n    throw redirect(location, {\n      status,\n      headers: {\n        // Three R's of redirecting (lol Veep)\n        ...revalidate ? { \"X-Remix-Revalidate\": \"yes\" } : null,\n        ...reload ? { \"X-Remix-Reload-Document\": \"yes\" } : null,\n        ...replace2 ? { \"X-Remix-Replace\": \"yes\" } : null\n      }\n    });\n  }\n  let routeResult = result.routes[routeId];\n  if (routeResult == null) {\n    throw new SingleFetchNoResultError(\n      `No result found for routeId \"${routeId}\"`\n    );\n  } else if (\"error\" in routeResult) {\n    throw routeResult.error;\n  } else if (\"data\" in routeResult) {\n    return routeResult.data;\n  } else {\n    throw new Error(`Invalid response found for routeId \"${routeId}\"`);\n  }\n}\nfunction createDeferred2() {\n  let resolve;\n  let reject;\n  let promise = new Promise((res, rej) => {\n    resolve = async (val) => {\n      res(val);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n    reject = async (error) => {\n      rej(error);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n  });\n  return {\n    promise,\n    //@ts-ignore\n    resolve,\n    //@ts-ignore\n    reject\n  };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nimport * as React9 from \"react\";\n\n// lib/dom/ssr/components.tsx\nimport * as React8 from \"react\";\n\n// lib/dom/ssr/routeModules.ts\nasync function loadRouteModule(route, routeModulesCache) {\n  if (route.id in routeModulesCache) {\n    return routeModulesCache[route.id];\n  }\n  try {\n    let routeModule = await import(\n      /* @vite-ignore */\n      /* webpackIgnore: true */\n      route.module\n    );\n    routeModulesCache[route.id] = routeModule;\n    return routeModule;\n  } catch (error) {\n    console.error(\n      `Error loading route module \\`${route.module}\\`, reloading page...`\n    );\n    console.error(error);\n    if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error\n    import.meta.hot) {\n      throw error;\n    }\n    window.location.reload();\n    return new Promise(() => {\n    });\n  }\n}\n\n// lib/dom/ssr/links.ts\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n  let descriptors = matches.map((match) => {\n    let module = routeModules[match.route.id];\n    let route = manifest.routes[match.route.id];\n    return [\n      route && route.css ? route.css.map((href) => ({ rel: \"stylesheet\", href })) : [],\n      module?.links?.() || []\n    ];\n  }).flat(2);\n  let preloads = getModuleLinkHrefs(matches, manifest);\n  return dedupeLinkDescriptors(descriptors, preloads);\n}\nfunction getRouteCssDescriptors(route) {\n  if (!route.css) return [];\n  return route.css.map((href) => ({ rel: \"stylesheet\", href }));\n}\nasync function prefetchRouteCss(route) {\n  if (!route.css) return;\n  let descriptors = getRouteCssDescriptors(route);\n  await Promise.all(descriptors.map(prefetchStyleLink));\n}\nasync function prefetchStyleLinks(route, routeModule) {\n  if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n  let descriptors = [];\n  if (route.css) {\n    descriptors.push(...getRouteCssDescriptors(route));\n  }\n  if (routeModule.links) {\n    descriptors.push(...routeModule.links());\n  }\n  if (descriptors.length === 0) return;\n  let styleLinks = [];\n  for (let descriptor of descriptors) {\n    if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n      styleLinks.push({\n        ...descriptor,\n        rel: \"preload\",\n        as: \"style\"\n      });\n    }\n  }\n  await Promise.all(styleLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n  return new Promise((resolve) => {\n    if (descriptor.media && !window.matchMedia(descriptor.media).matches || document.querySelector(\n      `link[rel=\"stylesheet\"][href=\"${descriptor.href}\"]`\n    )) {\n      return resolve();\n    }\n    let link = document.createElement(\"link\");\n    Object.assign(link, descriptor);\n    function removeLink() {\n      if (document.head.contains(link)) {\n        document.head.removeChild(link);\n      }\n    }\n    link.onload = () => {\n      removeLink();\n      resolve();\n    };\n    link.onerror = () => {\n      removeLink();\n      resolve();\n    };\n    document.head.appendChild(link);\n  });\n}\nfunction isPageLinkDescriptor(object) {\n  return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n  if (object == null) {\n    return false;\n  }\n  if (object.href == null) {\n    return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n  }\n  return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n  let links = await Promise.all(\n    matches.map(async (match) => {\n      let route = manifest.routes[match.route.id];\n      if (route) {\n        let mod = await loadRouteModule(route, routeModules);\n        return mod.links ? mod.links() : [];\n      }\n      return [];\n    })\n  );\n  return dedupeLinkDescriptors(\n    links.flat(1).filter(isHtmlLinkDescriptor).filter((link) => link.rel === \"stylesheet\" || link.rel === \"preload\").map(\n      (link) => link.rel === \"stylesheet\" ? { ...link, rel: \"prefetch\", as: \"style\" } : { ...link, rel: \"prefetch\" }\n    )\n  );\n}\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n  let isNew = (match, index) => {\n    if (!currentMatches[index]) return true;\n    return match.route.id !== currentMatches[index].route.id;\n  };\n  let matchPathChanged = (match, index) => {\n    return (\n      // param change, /users/123 -> /users/456\n      currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n      // e.g. /files/images/avatar.jpg -> files/finances.xls\n      currentMatches[index].route.path?.endsWith(\"*\") && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n    );\n  };\n  if (mode === \"assets\") {\n    return nextMatches.filter(\n      (match, index) => isNew(match, index) || matchPathChanged(match, index)\n    );\n  }\n  if (mode === \"data\") {\n    return nextMatches.filter((match, index) => {\n      let manifestRoute = manifest.routes[match.route.id];\n      if (!manifestRoute || !manifestRoute.hasLoader) {\n        return false;\n      }\n      if (isNew(match, index) || matchPathChanged(match, index)) {\n        return true;\n      }\n      if (match.route.shouldRevalidate) {\n        let routeChoice = match.route.shouldRevalidate({\n          currentUrl: new URL(\n            location.pathname + location.search + location.hash,\n            window.origin\n          ),\n          currentParams: currentMatches[0]?.params || {},\n          nextUrl: new URL(page, window.origin),\n          nextParams: match.params,\n          defaultShouldRevalidate: true\n        });\n        if (typeof routeChoice === \"boolean\") {\n          return routeChoice;\n        }\n      }\n      return true;\n    });\n  }\n  return [];\n}\nfunction getModuleLinkHrefs(matches, manifest, { includeHydrateFallback } = {}) {\n  return dedupeHrefs(\n    matches.map((match) => {\n      let route = manifest.routes[match.route.id];\n      if (!route) return [];\n      let hrefs = [route.module];\n      if (route.clientActionModule) {\n        hrefs = hrefs.concat(route.clientActionModule);\n      }\n      if (route.clientLoaderModule) {\n        hrefs = hrefs.concat(route.clientLoaderModule);\n      }\n      if (includeHydrateFallback && route.hydrateFallbackModule) {\n        hrefs = hrefs.concat(route.hydrateFallbackModule);\n      }\n      if (route.imports) {\n        hrefs = hrefs.concat(route.imports);\n      }\n      return hrefs;\n    }).flat(1)\n  );\n}\nfunction dedupeHrefs(hrefs) {\n  return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n  let sorted = {};\n  let keys = Object.keys(obj).sort();\n  for (let key of keys) {\n    sorted[key] = obj[key];\n  }\n  return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n  let set = /* @__PURE__ */ new Set();\n  let preloadsSet = new Set(preloads);\n  return descriptors.reduce((deduped, descriptor) => {\n    let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n    if (alreadyModulePreload) {\n      return deduped;\n    }\n    let key = JSON.stringify(sortKeys(descriptor));\n    if (!set.has(key)) {\n      set.add(key);\n      deduped.push({ key, link: descriptor });\n    }\n    return deduped;\n  }, []);\n}\nvar _isPreloadSupported;\nfunction isPreloadSupported() {\n  if (_isPreloadSupported !== void 0) {\n    return _isPreloadSupported;\n  }\n  let el = document.createElement(\"link\");\n  _isPreloadSupported = el.relList.supports(\"preload\");\n  el = null;\n  return _isPreloadSupported;\n}\n\n// lib/dom/ssr/fog-of-war.ts\nimport * as React7 from \"react\";\n\n// lib/dom/ssr/routes.tsx\nimport * as React6 from \"react\";\n\n// lib/dom/ssr/fallback.tsx\nimport * as React5 from \"react\";\nfunction RemixRootDefaultHydrateFallback() {\n  let { nonce } = useFrameworkContext();\n  return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: \"Loading...\", renderScripts: true }, ENABLE_DEV_WARNINGS ? /* @__PURE__ */ React5.createElement(\n    \"script\",\n    {\n      nonce,\n      dangerouslySetInnerHTML: {\n        __html: `\n              console.log(\n                \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this \" +\n                \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n                \"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback \" +\n                \"for more information.\"\n              );\n            `\n      }\n    }\n  ) : null);\n}\n\n// lib/dom/ssr/routes.tsx\nfunction groupRoutesByParentId(manifest) {\n  let routes = {};\n  Object.values(manifest).forEach((route) => {\n    if (route) {\n      let parentId = route.parentId || \"\";\n      if (!routes[parentId]) {\n        routes[parentId] = [];\n      }\n      routes[parentId].push(route);\n    }\n  });\n  return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n  let Component4 = getRouteModuleComponent(routeModule);\n  let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : void 0;\n  let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /* @__PURE__ */ React6.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;\n  if (route.id === \"root\" && routeModule.Layout) {\n    return {\n      ...Component4 ? {\n        element: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(Component4, null))\n      } : { Component: Component4 },\n      ...ErrorBoundary ? {\n        errorElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(ErrorBoundary, null))\n      } : { ErrorBoundary },\n      ...HydrateFallback ? {\n        hydrateFallbackElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(HydrateFallback, null))\n      } : { HydrateFallback }\n    };\n  }\n  return { Component: Component4, ErrorBoundary, HydrateFallback };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let routeModule = routeModules[route.id];\n    invariant2(\n      routeModule,\n      \"No `routeModule` available to create server routes\"\n    );\n    let dataRoute = {\n      ...getRouteComponents(route, routeModule, isSpaMode),\n      caseSensitive: route.caseSensitive,\n      id: route.id,\n      index: route.index,\n      path: route.path,\n      handle: routeModule.handle,\n      // For SPA Mode, all routes are lazy except root.  However we tell the\n      // router root is also lazy here too since we don't need a full\n      // implementation - we just need a `lazy` prop to tell the RR rendering\n      // where to stop which is always at the root route in SPA mode\n      lazy: isSpaMode ? () => spaModeLazyPromise : void 0,\n      // For partial hydration rendering, we need to indicate when the route\n      // has a loader/clientLoader, but it won't ever be called during the static\n      // render, so just give it a no-op function so we can render down to the\n      // proper fallback\n      loader: route.hasLoader || route.hasClientLoader ? () => null : void 0\n      // We don't need middleware/action/shouldRevalidate on these routes since\n      // they're for a static render\n    };\n    let children = createServerRoutes(\n      manifest,\n      routeModules,\n      future,\n      isSpaMode,\n      route.id,\n      routesByParentId,\n      spaModeLazyPromise\n    );\n    if (children.length > 0) dataRoute.children = children;\n    return dataRoute;\n  });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {\n  return createClientRoutes(\n    manifest,\n    routeModulesCache,\n    initialState,\n    ssr,\n    isSpaMode,\n    \"\",\n    groupRoutesByParentId(manifest),\n    needsRevalidation\n  );\n}\nfunction preventInvalidServerHandlerCall(type, route) {\n  if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n    let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n    let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${route.id}\")`;\n    console.error(msg);\n    throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n  }\n}\nfunction noActionDefinedError(type, routeId) {\n  let article = type === \"clientAction\" ? \"a\" : \"an\";\n  let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n  console.error(msg);\n  throw new ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let routeModule = routeModulesCache[route.id];\n    function fetchServerHandler(singleFetch) {\n      invariant2(\n        typeof singleFetch === \"function\",\n        \"No single fetch function available for route handler\"\n      );\n      return singleFetch();\n    }\n    function fetchServerLoader(singleFetch) {\n      if (!route.hasLoader) return Promise.resolve(null);\n      return fetchServerHandler(singleFetch);\n    }\n    function fetchServerAction(singleFetch) {\n      if (!route.hasAction) {\n        throw noActionDefinedError(\"action\", route.id);\n      }\n      return fetchServerHandler(singleFetch);\n    }\n    function prefetchModule(modulePath) {\n      import(\n        /* @vite-ignore */\n        /* webpackIgnore: true */\n        modulePath\n      );\n    }\n    function prefetchRouteModuleChunks(route2) {\n      if (route2.clientActionModule) {\n        prefetchModule(route2.clientActionModule);\n      }\n      if (route2.clientLoaderModule) {\n        prefetchModule(route2.clientLoaderModule);\n      }\n    }\n    async function prefetchStylesAndCallHandler(handler) {\n      let cachedModule = routeModulesCache[route.id];\n      let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n      try {\n        return handler();\n      } finally {\n        await linkPrefetchPromise;\n      }\n    }\n    let dataRoute = {\n      id: route.id,\n      index: route.index,\n      path: route.path\n    };\n    if (routeModule) {\n      Object.assign(dataRoute, {\n        ...dataRoute,\n        ...getRouteComponents(route, routeModule, isSpaMode),\n        middleware: routeModule.clientMiddleware,\n        handle: routeModule.handle,\n        shouldRevalidate: getShouldRevalidateFunction(\n          dataRoute.path,\n          routeModule,\n          route,\n          ssr,\n          needsRevalidation\n        )\n      });\n      let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;\n      let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;\n      let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;\n      let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;\n      let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);\n      dataRoute.loader = async ({ request, params, context, pattern, url }, singleFetch) => {\n        let _isHydrationRequest = isHydrationRequest;\n        isHydrationRequest = false;\n        let result = await prefetchStylesAndCallHandler(async () => {\n          invariant2(\n            routeModule,\n            \"No `routeModule` available for critical-route loader\"\n          );\n          if (!routeModule.clientLoader) {\n            return fetchServerLoader(singleFetch);\n          }\n          return routeModule.clientLoader({\n            request,\n            params,\n            context,\n            pattern,\n            url,\n            async serverLoader() {\n              preventInvalidServerHandlerCall(\"loader\", route);\n              if (_isHydrationRequest) {\n                if (hasInitialData) {\n                  return initialData;\n                }\n                if (hasInitialError) {\n                  throw initialError;\n                }\n              }\n              return fetchServerLoader(singleFetch);\n            }\n          });\n        });\n        return result;\n      };\n      dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n        route.id,\n        routeModule.clientLoader,\n        route.hasLoader,\n        isSpaMode\n      );\n      dataRoute.action = ({ request, params, context, pattern, url }, singleFetch) => {\n        return prefetchStylesAndCallHandler(async () => {\n          invariant2(\n            routeModule,\n            \"No `routeModule` available for critical-route action\"\n          );\n          if (!routeModule.clientAction) {\n            if (isSpaMode) {\n              throw noActionDefinedError(\"clientAction\", route.id);\n            }\n            return fetchServerAction(singleFetch);\n          }\n          return routeModule.clientAction({\n            request,\n            params,\n            context,\n            pattern,\n            url,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        });\n      };\n    } else {\n      if (!route.hasClientLoader) {\n        dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n          return fetchServerLoader(singleFetch);\n        });\n      }\n      if (!route.hasClientAction) {\n        dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n          if (isSpaMode) {\n            throw noActionDefinedError(\"clientAction\", route.id);\n          }\n          return fetchServerAction(singleFetch);\n        });\n      }\n      let lazyRoutePromise;\n      async function getLazyRoute() {\n        if (lazyRoutePromise) {\n          return await lazyRoutePromise;\n        }\n        lazyRoutePromise = (async () => {\n          if (route.clientLoaderModule || route.clientActionModule) {\n            await new Promise((resolve) => setTimeout(resolve, 0));\n          }\n          let routeModulePromise = loadRouteModuleWithBlockingLinks(\n            route,\n            routeModulesCache\n          );\n          prefetchRouteModuleChunks(route);\n          return await routeModulePromise;\n        })();\n        return await lazyRoutePromise;\n      }\n      dataRoute.lazy = {\n        loader: route.hasClientLoader ? async () => {\n          let { clientLoader } = route.clientLoaderModule ? await import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientLoaderModule\n          ) : await getLazyRoute();\n          invariant2(clientLoader, \"No `clientLoader` export found\");\n          return (args, singleFetch) => clientLoader({\n            ...args,\n            async serverLoader() {\n              preventInvalidServerHandlerCall(\"loader\", route);\n              return fetchServerLoader(singleFetch);\n            }\n          });\n        } : void 0,\n        action: route.hasClientAction ? async () => {\n          let clientActionPromise = route.clientActionModule ? import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientActionModule\n          ) : getLazyRoute();\n          prefetchRouteModuleChunks(route);\n          let { clientAction } = await clientActionPromise;\n          invariant2(clientAction, \"No `clientAction` export found\");\n          return (args, singleFetch) => clientAction({\n            ...args,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        } : void 0,\n        middleware: route.hasClientMiddleware ? async () => {\n          let { clientMiddleware } = route.clientMiddlewareModule ? await import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientMiddlewareModule\n          ) : await getLazyRoute();\n          invariant2(clientMiddleware, \"No `clientMiddleware` export found\");\n          return clientMiddleware;\n        } : void 0,\n        shouldRevalidate: async () => {\n          let lazyRoute = await getLazyRoute();\n          return getShouldRevalidateFunction(\n            dataRoute.path,\n            lazyRoute,\n            route,\n            ssr,\n            needsRevalidation\n          );\n        },\n        handle: async () => (await getLazyRoute()).handle,\n        // No need to wrap these in layout since the root route is never\n        // loaded via route.lazy()\n        Component: async () => (await getLazyRoute()).Component,\n        ErrorBoundary: route.hasErrorBoundary ? async () => (await getLazyRoute()).ErrorBoundary : void 0\n      };\n    }\n    let children = createClientRoutes(\n      manifest,\n      routeModulesCache,\n      initialState,\n      ssr,\n      isSpaMode,\n      route.id,\n      routesByParentId,\n      needsRevalidation\n    );\n    if (children.length > 0) dataRoute.children = children;\n    return dataRoute;\n  });\n}\nfunction getShouldRevalidateFunction(path, route, manifestRoute, ssr, needsRevalidation) {\n  if (needsRevalidation) {\n    return wrapShouldRevalidateForHdr(\n      manifestRoute.id,\n      route.shouldRevalidate,\n      needsRevalidation\n    );\n  }\n  if (!ssr && manifestRoute.hasLoader && !manifestRoute.hasClientLoader) {\n    let myParams = path ? compilePath(path)[1].map((p) => p.paramName) : [];\n    const didParamsChange = (opts) => myParams.some((p) => opts.currentParams[p] !== opts.nextParams[p]);\n    if (route.shouldRevalidate) {\n      let fn = route.shouldRevalidate;\n      return (opts) => fn({\n        ...opts,\n        defaultShouldRevalidate: didParamsChange(opts)\n      });\n    } else {\n      return (opts) => didParamsChange(opts);\n    }\n  }\n  return route.shouldRevalidate;\n}\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n  let handledRevalidation = false;\n  return (arg) => {\n    if (!handledRevalidation) {\n      handledRevalidation = true;\n      return needsRevalidation.has(routeId);\n    }\n    return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n  };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n  let routeModulePromise = loadRouteModule(route, routeModules);\n  let prefetchRouteCssPromise = prefetchRouteCss(route);\n  let routeModule = await routeModulePromise;\n  await Promise.all([\n    prefetchRouteCssPromise,\n    prefetchStyleLinks(route, routeModule)\n  ]);\n  return {\n    Component: getRouteModuleComponent(routeModule),\n    ErrorBoundary: routeModule.ErrorBoundary,\n    clientMiddleware: routeModule.clientMiddleware,\n    clientAction: routeModule.clientAction,\n    clientLoader: routeModule.clientLoader,\n    handle: routeModule.handle,\n    links: routeModule.links,\n    meta: routeModule.meta,\n    shouldRevalidate: routeModule.shouldRevalidate\n  };\n}\nfunction getRouteModuleComponent(routeModule) {\n  if (routeModule.default == null) return void 0;\n  let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n  if (!isEmptyObject) {\n    return routeModule.default;\n  }\n}\nfunction shouldHydrateRouteLoader(routeId, clientLoader, hasLoader, isSpaMode) {\n  return isSpaMode && routeId !== \"root\" || clientLoader != null && (clientLoader.hydrate === true || hasLoader !== true);\n}\n\n// lib/dom/ssr/fog-of-war.ts\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nvar URL_LIMIT = 7680;\nfunction getPathsWithAncestors(paths) {\n  let result = /* @__PURE__ */ new Set();\n  paths.forEach((path) => {\n    if (!path.startsWith(\"/\")) {\n      path = `/${path}`;\n    }\n    for (let i = 1; i < path.length; i++) {\n      if (path[i] === \"/\") {\n        result.add(path.slice(0, i));\n      }\n    }\n    result.add(path);\n  });\n  return Array.from(result);\n}\nfunction isFogOfWarEnabled(routeDiscovery, ssr) {\n  return routeDiscovery.mode === \"lazy\" && ssr === true;\n}\nfunction getPartialManifest({ sri, ...manifest }, router) {\n  let routeIds = new Set(router.state.matches.map((m) => m.route.id));\n  let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n  let paths = [\"/\"];\n  segments.pop();\n  while (segments.length > 0) {\n    paths.push(`/${segments.join(\"/\")}`);\n    segments.pop();\n  }\n  paths.forEach((path) => {\n    let matches = matchRoutesImpl(\n      router.routes,\n      path,\n      router.basename || \"/\",\n      false,\n      router.branches\n    );\n    if (matches) {\n      matches.forEach((m) => routeIds.add(m.route.id));\n    }\n  });\n  let initialRoutes = [...routeIds].reduce(\n    (acc, id) => Object.assign(acc, { [id]: manifest.routes[id] }),\n    {}\n  );\n  return {\n    ...manifest,\n    routes: initialRoutes,\n    sri: sri ? true : void 0\n  };\n}\nfunction getPatchRoutesOnNavigationFunction(getRouter, manifest, routeModules, ssr, routeDiscovery, isSpaMode, basename) {\n  if (!isFogOfWarEnabled(routeDiscovery, ssr)) {\n    return void 0;\n  }\n  return async ({ path, patch, signal, fetcherKey }) => {\n    if (discoveredPaths.has(path)) {\n      return;\n    }\n    let { state } = getRouter();\n    await fetchAndApplyManifestPatches(\n      [path],\n      // If we're patching for a fetcher call, reload the current location\n      // Otherwise prefer any ongoing navigation location\n      fetcherKey ? window.location.href : createPath(state.navigation.location || state.location),\n      manifest,\n      routeModules,\n      ssr,\n      isSpaMode,\n      basename,\n      routeDiscovery.manifestPath,\n      patch,\n      signal\n    );\n  };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscovery, isSpaMode) {\n  React7.useEffect(() => {\n    if (!isFogOfWarEnabled(routeDiscovery, ssr) || // @ts-expect-error - TS doesn't know about this yet\n    window.navigator?.connection?.saveData === true) {\n      return;\n    }\n    function registerElement(el) {\n      let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n      if (!path) {\n        return;\n      }\n      let pathname = el.tagName === \"A\" ? el.pathname : new URL(path, window.location.origin).pathname;\n      if (!discoveredPaths.has(pathname)) {\n        nextPaths.add(pathname);\n      }\n    }\n    async function fetchPatches() {\n      document.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(registerElement);\n      let lazyPaths = Array.from(nextPaths.keys()).filter((path) => {\n        if (discoveredPaths.has(path)) {\n          nextPaths.delete(path);\n          return false;\n        }\n        return true;\n      });\n      if (lazyPaths.length === 0) {\n        return;\n      }\n      try {\n        await fetchAndApplyManifestPatches(\n          lazyPaths,\n          null,\n          manifest,\n          routeModules,\n          ssr,\n          isSpaMode,\n          router.basename,\n          routeDiscovery.manifestPath,\n          router.patchRoutes\n        );\n      } catch (e) {\n        console.error(\"Failed to fetch manifest patches\", e);\n      }\n    }\n    let debouncedFetchPatches = debounce(fetchPatches, 100);\n    fetchPatches();\n    let observer = new MutationObserver(() => debouncedFetchPatches());\n    observer.observe(document.documentElement, {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: [\"data-discover\", \"href\", \"action\"]\n    });\n    return () => observer.disconnect();\n  }, [ssr, isSpaMode, manifest, routeModules, router, routeDiscovery]);\n}\nfunction getManifestPath(_manifestPath, basename) {\n  let manifestPath = _manifestPath || \"/__manifest\";\n  return basename == null ? manifestPath : joinPaths([basename, manifestPath]);\n}\nvar MANIFEST_VERSION_STORAGE_KEY = \"react-router-manifest-version\";\nasync function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, routeModules, ssr, isSpaMode, basename, manifestPath, patchRoutes, signal) {\n  paths = getPathsWithAncestors(paths);\n  const searchParams = new URLSearchParams();\n  searchParams.set(\"paths\", paths.sort().join(\",\"));\n  searchParams.set(\"version\", manifest.version);\n  let url = new URL(\n    getManifestPath(manifestPath, basename),\n    window.location.origin\n  );\n  url.search = searchParams.toString();\n  if (url.toString().length > URL_LIMIT) {\n    nextPaths.clear();\n    return;\n  }\n  let serverPatches;\n  try {\n    let res = await fetch(url, { signal });\n    if (!res.ok) {\n      throw new Error(`${res.status} ${res.statusText}`);\n    } else if (res.status === 204 && res.headers.has(\"X-Remix-Reload-Document\")) {\n      if (!errorReloadPath) {\n        console.warn(\n          \"Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.\"\n        );\n        return;\n      }\n      try {\n        if (sessionStorage.getItem(MANIFEST_VERSION_STORAGE_KEY) === manifest.version) {\n          console.error(\n            \"Unable to discover routes due to manifest version mismatch.\"\n          );\n          return;\n        }\n        sessionStorage.setItem(MANIFEST_VERSION_STORAGE_KEY, manifest.version);\n      } catch {\n      }\n      window.location.href = errorReloadPath;\n      console.warn(\"Detected manifest version mismatch, reloading...\");\n      await new Promise(() => {\n      });\n    } else if (res.status >= 400) {\n      throw new Error(await res.text());\n    }\n    try {\n      sessionStorage.removeItem(MANIFEST_VERSION_STORAGE_KEY);\n    } catch {\n    }\n    serverPatches = await res.json();\n  } catch (e) {\n    if (signal?.aborted) return;\n    throw e;\n  }\n  let knownRoutes = new Set(Object.keys(manifest.routes));\n  let patches = Object.values(serverPatches).reduce((acc, route) => {\n    if (route && !knownRoutes.has(route.id)) {\n      acc[route.id] = route;\n    }\n    return acc;\n  }, {});\n  Object.assign(manifest.routes, patches);\n  paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n  let parentIds = /* @__PURE__ */ new Set();\n  Object.values(patches).forEach((patch) => {\n    if (patch && (!patch.parentId || !patches[patch.parentId])) {\n      parentIds.add(patch.parentId);\n    }\n  });\n  parentIds.forEach(\n    (parentId) => patchRoutes(\n      parentId || null,\n      createClientRoutes(patches, routeModules, null, ssr, isSpaMode, parentId)\n    )\n  );\n}\nfunction addToFifoQueue(path, queue) {\n  if (queue.size >= discoveredPathsMaxSize) {\n    let first = queue.values().next().value;\n    queue.delete(first);\n  }\n  queue.add(path);\n}\nfunction debounce(callback, wait) {\n  let timeoutId;\n  return (...args) => {\n    window.clearTimeout(timeoutId);\n    timeoutId = window.setTimeout(() => callback(...args), wait);\n  };\n}\n\n// lib/dom/ssr/components.tsx\nfunction useDataRouterContext2() {\n  let context = React8.useContext(DataRouterContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <DataRouterContext.Provider> element\"\n  );\n  return context;\n}\nfunction useDataRouterStateContext() {\n  let context = React8.useContext(DataRouterStateContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <DataRouterStateContext.Provider> element\"\n  );\n  return context;\n}\nvar FrameworkContext = React8.createContext(void 0);\nFrameworkContext.displayName = \"FrameworkContext\";\nfunction useFrameworkContext() {\n  let context = React8.useContext(FrameworkContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <HydratedRouter> element\"\n  );\n  return context;\n}\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n  let frameworkContext = React8.useContext(FrameworkContext);\n  let [maybePrefetch, setMaybePrefetch] = React8.useState(false);\n  let [shouldPrefetch, setShouldPrefetch] = React8.useState(false);\n  let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;\n  let ref = React8.useRef(null);\n  React8.useEffect(() => {\n    if (prefetch === \"render\") {\n      setShouldPrefetch(true);\n    }\n    if (prefetch === \"viewport\") {\n      let callback = (entries) => {\n        entries.forEach((entry) => {\n          setShouldPrefetch(entry.isIntersecting);\n        });\n      };\n      let observer = new IntersectionObserver(callback, { threshold: 0.5 });\n      if (ref.current) observer.observe(ref.current);\n      return () => {\n        observer.disconnect();\n      };\n    }\n  }, [prefetch]);\n  React8.useEffect(() => {\n    if (maybePrefetch) {\n      let id = setTimeout(() => {\n        setShouldPrefetch(true);\n      }, 100);\n      return () => {\n        clearTimeout(id);\n      };\n    }\n  }, [maybePrefetch]);\n  let setIntent = () => {\n    setMaybePrefetch(true);\n  };\n  let cancelIntent = () => {\n    setMaybePrefetch(false);\n    setShouldPrefetch(false);\n  };\n  if (!frameworkContext) {\n    return [false, ref, {}];\n  }\n  if (prefetch !== \"intent\") {\n    return [shouldPrefetch, ref, {}];\n  }\n  return [\n    shouldPrefetch,\n    ref,\n    {\n      onFocus: composeEventHandlers(onFocus, setIntent),\n      onBlur: composeEventHandlers(onBlur, cancelIntent),\n      onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n      onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n      onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n    }\n  ];\n}\nfunction composeEventHandlers(theirHandler, ourHandler) {\n  return (event) => {\n    theirHandler && theirHandler(event);\n    if (!event.defaultPrevented) {\n      ourHandler(event);\n    }\n  };\n}\nfunction getActiveMatches(matches, errors, isSpaMode) {\n  if (isSpaMode && !isHydrated) {\n    return [matches[0]];\n  }\n  if (errors) {\n    let errorIdx = matches.findIndex((m) => errors[m.route.id] !== void 0);\n    return matches.slice(0, errorIdx + 1);\n  }\n  return matches;\n}\nvar CRITICAL_CSS_DATA_ATTRIBUTE = \"data-react-router-critical-css\";\nfunction Links({ nonce, crossOrigin }) {\n  let {\n    isSpaMode,\n    manifest,\n    routeModules,\n    criticalCss,\n    nonce: contextNonce\n  } = useFrameworkContext();\n  let { errors, matches: routerMatches } = useDataRouterStateContext();\n  let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n  let keyedLinks = React8.useMemo(\n    () => getKeyedLinksForMatches(matches, routeModules, manifest),\n    [matches, routeModules, manifest]\n  );\n  if (nonce == null && contextNonce) {\n    nonce = contextNonce;\n  }\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof criticalCss === \"string\" ? /* @__PURE__ */ React8.createElement(\n    \"style\",\n    {\n      ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n      nonce,\n      dangerouslySetInnerHTML: { __html: criticalCss }\n    }\n  ) : null, typeof criticalCss === \"object\" ? /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n      rel: \"stylesheet\",\n      href: criticalCss.href,\n      nonce,\n      crossOrigin\n    }\n  ) : null, keyedLinks.map(\n    ({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React8.createElement(\n      PrefetchPageLinks,\n      {\n        key,\n        nonce,\n        ...link,\n        crossOrigin: link.crossOrigin ?? crossOrigin\n      }\n    ) : /* @__PURE__ */ React8.createElement(\n      \"link\",\n      {\n        key,\n        nonce,\n        ...link,\n        crossOrigin: link.crossOrigin ?? crossOrigin\n      }\n    )\n  ));\n}\nfunction PrefetchPageLinks({ page, ...linkProps }) {\n  let rsc = useIsRSCRouterContext();\n  let { nonce: contextNonce } = useFrameworkContext();\n  let { router } = useDataRouterContext2();\n  let matches = React8.useMemo(\n    () => matchRoutes(router.routes, page, router.basename),\n    [router.routes, page, router.basename]\n  );\n  if (!matches) {\n    return null;\n  }\n  if (linkProps.nonce == null && contextNonce) {\n    linkProps = { ...linkProps, nonce: contextNonce };\n  }\n  if (rsc) {\n    return /* @__PURE__ */ React8.createElement(RSCPrefetchPageLinksImpl, { page, matches, ...linkProps });\n  }\n  return /* @__PURE__ */ React8.createElement(PrefetchPageLinksImpl, { page, matches, ...linkProps });\n}\nfunction useKeyedPrefetchLinks(matches) {\n  let { manifest, routeModules } = useFrameworkContext();\n  let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React8.useState([]);\n  React8.useEffect(() => {\n    let interrupted = false;\n    void getKeyedPrefetchLinks(matches, manifest, routeModules).then(\n      (links) => {\n        if (!interrupted) {\n          setKeyedPrefetchLinks(links);\n        }\n      }\n    );\n    return () => {\n      interrupted = true;\n    };\n  }, [matches, manifest, routeModules]);\n  return keyedPrefetchLinks;\n}\nfunction RSCPrefetchPageLinksImpl({\n  page,\n  matches: nextMatches,\n  ...linkProps\n}) {\n  let location = useLocation();\n  let { future } = useFrameworkContext();\n  let { basename } = useDataRouterContext2();\n  let dataHrefs = React8.useMemo(() => {\n    if (page === location.pathname + location.search + location.hash) {\n      return [];\n    }\n    let url = singleFetchUrl(\n      page,\n      basename,\n      future.v8_trailingSlashAwareDataRequests,\n      \"rsc\"\n    );\n    let hasSomeRoutesWithShouldRevalidate = false;\n    let targetRoutes = [];\n    for (let match of nextMatches) {\n      if (typeof match.route.shouldRevalidate === \"function\") {\n        hasSomeRoutesWithShouldRevalidate = true;\n      } else {\n        targetRoutes.push(match.route.id);\n      }\n    }\n    if (hasSomeRoutesWithShouldRevalidate && targetRoutes.length > 0) {\n      url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n    }\n    return [url.pathname + url.search];\n  }, [\n    basename,\n    future.v8_trailingSlashAwareDataRequests,\n    page,\n    location,\n    nextMatches\n  ]);\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })));\n}\nfunction PrefetchPageLinksImpl({\n  page,\n  matches: nextMatches,\n  ...linkProps\n}) {\n  let location = useLocation();\n  let { future, manifest, routeModules } = useFrameworkContext();\n  let { basename } = useDataRouterContext2();\n  let { loaderData, matches } = useDataRouterStateContext();\n  let newMatchesForData = React8.useMemo(\n    () => getNewMatchesForLinks(\n      page,\n      nextMatches,\n      matches,\n      manifest,\n      location,\n      \"data\"\n    ),\n    [page, nextMatches, matches, manifest, location]\n  );\n  let newMatchesForAssets = React8.useMemo(\n    () => getNewMatchesForLinks(\n      page,\n      nextMatches,\n      matches,\n      manifest,\n      location,\n      \"assets\"\n    ),\n    [page, nextMatches, matches, manifest, location]\n  );\n  let dataHrefs = React8.useMemo(() => {\n    if (page === location.pathname + location.search + location.hash) {\n      return [];\n    }\n    let routesParams = /* @__PURE__ */ new Set();\n    let foundOptOutRoute = false;\n    nextMatches.forEach((m) => {\n      let manifestRoute = manifest.routes[m.route.id];\n      if (!manifestRoute || !manifestRoute.hasLoader) {\n        return;\n      }\n      if (!newMatchesForData.some((m2) => m2.route.id === m.route.id) && m.route.id in loaderData && routeModules[m.route.id]?.shouldRevalidate) {\n        foundOptOutRoute = true;\n      } else if (manifestRoute.hasClientLoader) {\n        foundOptOutRoute = true;\n      } else {\n        routesParams.add(m.route.id);\n      }\n    });\n    if (routesParams.size === 0) {\n      return [];\n    }\n    let url = singleFetchUrl(\n      page,\n      basename,\n      future.v8_trailingSlashAwareDataRequests,\n      \"data\"\n    );\n    if (foundOptOutRoute && routesParams.size > 0) {\n      url.searchParams.set(\n        \"_routes\",\n        nextMatches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n      );\n    }\n    return [url.pathname + url.search];\n  }, [\n    basename,\n    future.v8_trailingSlashAwareDataRequests,\n    loaderData,\n    location,\n    manifest,\n    newMatchesForData,\n    nextMatches,\n    page,\n    routeModules\n  ]);\n  let moduleHrefs = React8.useMemo(\n    () => getModuleLinkHrefs(newMatchesForAssets, manifest),\n    [newMatchesForAssets, manifest]\n  );\n  let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"modulepreload\", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (\n    // these don't spread `linkProps` because they are full link descriptors\n    // already with their own props\n    /* @__PURE__ */ React8.createElement(\n      \"link\",\n      {\n        key,\n        nonce: linkProps.nonce,\n        ...link,\n        crossOrigin: link.crossOrigin ?? linkProps.crossOrigin\n      }\n    )\n  )));\n}\nfunction Meta() {\n  let { isSpaMode, routeModules } = useFrameworkContext();\n  let {\n    errors,\n    matches: routerMatches,\n    loaderData\n  } = useDataRouterStateContext();\n  let location = useLocation();\n  let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n  let error = null;\n  if (errors) {\n    error = errors[_matches[_matches.length - 1].route.id];\n  }\n  let meta = [];\n  let leafMeta = null;\n  let matches = [];\n  for (let i = 0; i < _matches.length; i++) {\n    let _match = _matches[i];\n    let routeId = _match.route.id;\n    let data2 = loaderData[routeId];\n    let params = _match.params;\n    let routeModule = routeModules[routeId];\n    let routeMeta = [];\n    let match = {\n      id: routeId,\n      data: data2,\n      loaderData: data2,\n      meta: [],\n      params: _match.params,\n      pathname: _match.pathname,\n      handle: _match.route.handle,\n      error\n    };\n    matches[i] = match;\n    if (routeModule?.meta) {\n      routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n        data: data2,\n        loaderData: data2,\n        params,\n        location,\n        matches,\n        error\n      }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n    } else if (leafMeta) {\n      routeMeta = [...leafMeta];\n    }\n    routeMeta = routeMeta || [];\n    if (!Array.isArray(routeMeta)) {\n      throw new Error(\n        \"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must return an array of meta objects.\\n\\nTo reference the meta function API, see https://reactrouter.com/start/framework/route-module#meta\"\n      );\n    }\n    match.meta = routeMeta;\n    matches[i] = match;\n    meta = [...routeMeta];\n    leafMeta = meta;\n  }\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, meta.flat().map((metaProps) => {\n    if (!metaProps) {\n      return null;\n    }\n    if (\"tagName\" in metaProps) {\n      let { tagName, ...rest } = metaProps;\n      if (!isValidMetaTag(tagName)) {\n        console.warn(\n          `A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`\n        );\n        return null;\n      }\n      let Comp = tagName;\n      return /* @__PURE__ */ React8.createElement(Comp, { key: JSON.stringify(rest), ...rest });\n    }\n    if (\"title\" in metaProps) {\n      return /* @__PURE__ */ React8.createElement(\"title\", { key: \"title\" }, String(metaProps.title));\n    }\n    if (\"charset\" in metaProps) {\n      metaProps.charSet ?? (metaProps.charSet = metaProps.charset);\n      delete metaProps.charset;\n    }\n    if (\"charSet\" in metaProps && metaProps.charSet != null) {\n      return typeof metaProps.charSet === \"string\" ? /* @__PURE__ */ React8.createElement(\"meta\", { key: \"charSet\", charSet: metaProps.charSet }) : null;\n    }\n    if (\"script:ld+json\" in metaProps) {\n      try {\n        let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n        return /* @__PURE__ */ React8.createElement(\n          \"script\",\n          {\n            key: `script:ld+json:${json}`,\n            type: \"application/ld+json\",\n            dangerouslySetInnerHTML: { __html: escapeHtml(json) }\n          }\n        );\n      } catch (e) {\n        return null;\n      }\n    }\n    return /* @__PURE__ */ React8.createElement(\"meta\", { key: JSON.stringify(metaProps), ...metaProps });\n  }));\n}\nfunction isValidMetaTag(tagName) {\n  return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nvar isHydrated = false;\nfunction setIsHydrated() {\n  isHydrated = true;\n}\nfunction Scripts(scriptProps) {\n  let {\n    manifest,\n    serverHandoffString,\n    isSpaMode,\n    renderMeta,\n    routeDiscovery,\n    ssr,\n    nonce: contextNonce\n  } = useFrameworkContext();\n  let { router, static: isStatic, staticContext } = useDataRouterContext2();\n  let { matches: routerMatches } = useDataRouterStateContext();\n  let isRSCRouterContext = useIsRSCRouterContext();\n  let enableFogOfWar = isFogOfWarEnabled(routeDiscovery, ssr);\n  if (scriptProps.nonce == null && contextNonce) {\n    scriptProps = { ...scriptProps, nonce: contextNonce };\n  }\n  if (renderMeta) {\n    renderMeta.didRenderScripts = true;\n  }\n  let matches = getActiveMatches(routerMatches, null, isSpaMode);\n  React8.useEffect(() => {\n    setIsHydrated();\n  }, []);\n  let initialScripts = React8.useMemo(() => {\n    if (isRSCRouterContext) {\n      return null;\n    }\n    let streamScript = \"window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());\";\n    let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : \" \";\n    let routeModulesScript = !isStatic ? \" \" : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : \"\"};\n${matches.map((match, routeIndex) => {\n      let routeVarName = `route${routeIndex}`;\n      let manifestEntry = manifest.routes[match.route.id];\n      invariant2(manifestEntry, `Route ${match.route.id} not found in manifest`);\n      let {\n        clientActionModule,\n        clientLoaderModule,\n        clientMiddlewareModule,\n        hydrateFallbackModule,\n        module\n      } = manifestEntry;\n      let chunks = [\n        ...clientActionModule ? [\n          {\n            module: clientActionModule,\n            varName: `${routeVarName}_clientAction`\n          }\n        ] : [],\n        ...clientLoaderModule ? [\n          {\n            module: clientLoaderModule,\n            varName: `${routeVarName}_clientLoader`\n          }\n        ] : [],\n        ...clientMiddlewareModule ? [\n          {\n            module: clientMiddlewareModule,\n            varName: `${routeVarName}_clientMiddleware`\n          }\n        ] : [],\n        ...hydrateFallbackModule ? [\n          {\n            module: hydrateFallbackModule,\n            varName: `${routeVarName}_HydrateFallback`\n          }\n        ] : [],\n        { module, varName: `${routeVarName}_main` }\n      ];\n      if (chunks.length === 1) {\n        return `import * as ${routeVarName} from ${JSON.stringify(module)};`;\n      }\n      let chunkImportsSnippet = chunks.map((chunk) => `import * as ${chunk.varName} from \"${chunk.module}\";`).join(\"\\n\");\n      let mergedChunksSnippet = `const ${routeVarName} = {${chunks.map((chunk) => `...${chunk.varName}`).join(\",\")}};`;\n      return [chunkImportsSnippet, mergedChunksSnippet].join(\"\\n\");\n    }).join(\"\\n\")}\n  ${enableFogOfWar ? (\n      // Inline a minimal manifest with the SSR matches\n      `window.__reactRouterManifest = ${JSON.stringify(\n        getPartialManifest(manifest, router),\n        null,\n        2\n      )};`\n    ) : \"\"}\n  window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n    return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(\n      \"script\",\n      {\n        ...scriptProps,\n        suppressHydrationWarning: true,\n        dangerouslySetInnerHTML: { __html: contextScript },\n        type: void 0\n      }\n    ), /* @__PURE__ */ React8.createElement(\n      \"script\",\n      {\n        ...scriptProps,\n        suppressHydrationWarning: true,\n        dangerouslySetInnerHTML: { __html: routeModulesScript },\n        type: \"module\",\n        async: true\n      }\n    ));\n  }, []);\n  let preloads = isHydrated || isRSCRouterContext ? [] : [\n    // Dedupe through a Set\n    ...new Set(\n      manifest.entry.imports.concat(\n        getModuleLinkHrefs(matches, manifest, {\n          includeHydrateFallback: true\n        })\n      )\n    )\n  ];\n  let sri = typeof manifest.sri === \"object\" ? manifest.sri : {};\n  warnOnce(\n    !isRSCRouterContext,\n    \"The <Scripts /> element is a no-op when using RSC and can be safely removed.\"\n  );\n  return isHydrated || isRSCRouterContext ? null : /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof manifest.sri === \"object\" ? /* @__PURE__ */ React8.createElement(\n    \"script\",\n    {\n      ...scriptProps,\n      \"rr-importmap\": \"\",\n      type: \"importmap\",\n      suppressHydrationWarning: true,\n      dangerouslySetInnerHTML: {\n        __html: JSON.stringify({\n          integrity: sri\n        })\n      }\n    }\n  ) : null, !enableFogOfWar ? /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      rel: \"modulepreload\",\n      href: manifest.url,\n      crossOrigin: scriptProps.crossOrigin,\n      integrity: sri[manifest.url],\n      nonce: scriptProps.nonce,\n      suppressHydrationWarning: true\n    }\n  ) : null, /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      rel: \"modulepreload\",\n      href: manifest.entry.module,\n      crossOrigin: scriptProps.crossOrigin,\n      integrity: sri[manifest.entry.module],\n      nonce: scriptProps.nonce,\n      suppressHydrationWarning: true\n    }\n  ), preloads.map((path) => /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      key: path,\n      rel: \"modulepreload\",\n      href: path,\n      crossOrigin: scriptProps.crossOrigin,\n      integrity: sri[path],\n      nonce: scriptProps.nonce,\n      suppressHydrationWarning: true\n    }\n  )), initialScripts);\n}\nfunction mergeRefs(...refs) {\n  return (value) => {\n    refs.forEach((ref) => {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        ref.current = value;\n      }\n    });\n  };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nvar RemixErrorBoundary = class extends React9.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: props.error || null, location: props.location };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location) {\n      return { error: props.error || null, location: props.location };\n    }\n    return { error: props.error || state.error, location: state.location };\n  }\n  render() {\n    if (this.state.error) {\n      return /* @__PURE__ */ React9.createElement(\n        RemixRootDefaultErrorBoundary,\n        {\n          error: this.state.error,\n          isOutsideRemixApp: true\n        }\n      );\n    } else {\n      return this.props.children;\n    }\n  }\n};\nfunction RemixRootDefaultErrorBoundary({\n  error,\n  isOutsideRemixApp\n}) {\n  let { nonce } = useFrameworkContext();\n  console.error(error);\n  let heyDeveloper = /* @__PURE__ */ React9.createElement(\n    \"script\",\n    {\n      nonce,\n      dangerouslySetInnerHTML: {\n        __html: `\n        console.log(\n          \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information.\"\n        );\n      `\n      }\n    }\n  );\n  if (isRouteErrorResponse(error)) {\n    return /* @__PURE__ */ React9.createElement(BoundaryShell, { title: \"Unhandled Thrown Response!\" }, /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText), ENABLE_DEV_WARNINGS ? heyDeveloper : null);\n  }\n  let errorInstance;\n  if (error instanceof Error) {\n    errorInstance = error;\n  } else {\n    let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n    errorInstance = new Error(errorString);\n  }\n  return /* @__PURE__ */ React9.createElement(\n    BoundaryShell,\n    {\n      title: \"Application Error!\",\n      isOutsideRemixApp\n    },\n    /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"),\n    /* @__PURE__ */ React9.createElement(\n      \"pre\",\n      {\n        style: {\n          padding: \"2rem\",\n          background: \"hsla(10, 50%, 50%, 0.1)\",\n          color: \"red\",\n          overflow: \"auto\"\n        }\n      },\n      errorInstance.stack\n    ),\n    heyDeveloper\n  );\n}\nfunction BoundaryShell({\n  title,\n  renderScripts,\n  isOutsideRemixApp,\n  children\n}) {\n  let { routeModules } = useFrameworkContext();\n  if (routeModules.root?.Layout && !isOutsideRemixApp) {\n    return children;\n  }\n  return /* @__PURE__ */ React9.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React9.createElement(\"head\", null, /* @__PURE__ */ React9.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React9.createElement(\n    \"meta\",\n    {\n      name: \"viewport\",\n      content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n    }\n  ), /* @__PURE__ */ React9.createElement(\"title\", null, title)), /* @__PURE__ */ React9.createElement(\"body\", null, /* @__PURE__ */ React9.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children, renderScripts ? /* @__PURE__ */ React9.createElement(Scripts, null) : null)));\n}\n\n// lib/dom/lib.tsx\nimport * as React10 from \"react\";\nvar isBrowser2 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\ntry {\n  if (isBrowser2) {\n    window.__reactRouterVersion = // @ts-expect-error\n    \"7.18.4\";\n  }\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    getContext: opts?.getContext,\n    future: opts?.future,\n    history: createBrowserHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    hydrationRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    window: opts?.window,\n    instrumentations: opts?.instrumentations\n  }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    getContext: opts?.getContext,\n    future: opts?.future,\n    history: createHashHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    hydrationRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    window: opts?.window,\n    instrumentations: opts?.instrumentations\n  }).initialize();\n}\nfunction parseHydrationData() {\n  let state = window?.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = {\n      ...state,\n      errors: deserializeErrors(state.errors)\n    };\n  }\n  return state;\n}\nfunction deserializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      if (typeof val.__subType === \"string\" && SUPPORTED_ERROR_TYPES.includes(val.__subType)) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            let error = new ErrorConstructor(val.message);\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nfunction BrowserRouter({\n  basename,\n  children,\n  useTransitions,\n  window: window2\n}) {\n  let historyRef = React10.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React10.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nfunction HashRouter({\n  basename,\n  children,\n  useTransitions,\n  window: window2\n}) {\n  let historyRef = React10.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({ window: window2, v5Compat: true });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React10.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nfunction HistoryRouter({\n  basename,\n  children,\n  history,\n  useTransitions\n}) {\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React10.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nHistoryRouter.displayName = \"unstable_HistoryRouter\";\nvar Link = React10.forwardRef(\n  function LinkWithRef({\n    onClick,\n    discover = \"render\",\n    prefetch = \"none\",\n    relative,\n    reloadDocument,\n    replace: replace2,\n    mask,\n    state,\n    target,\n    to,\n    preventScrollReset,\n    viewTransition,\n    defaultShouldRevalidate,\n    ...rest\n  }, forwardedRef) {\n    let { basename, navigator, useTransitions } = React10.useContext(NavigationContext);\n    let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX.test(to);\n    let parsed = parseToInfo(to, basename);\n    to = parsed.to;\n    let href = useHref(to, { relative });\n    let location = useLocation();\n    let maskedHref = null;\n    if (mask) {\n      let resolved = resolveTo(\n        mask,\n        [],\n        location.mask ? location.mask.pathname : \"/\",\n        true\n      );\n      if (basename !== \"/\") {\n        resolved.pathname = resolved.pathname === \"/\" ? basename : joinPaths([basename, resolved.pathname]);\n      }\n      maskedHref = navigator.createHref(resolved);\n    }\n    let [shouldPrefetch, prefetchRef, prefetchHandlers] = usePrefetchBehavior(\n      prefetch,\n      rest\n    );\n    let internalOnClick = useLinkClickHandler(to, {\n      replace: replace2,\n      mask,\n      state,\n      target,\n      preventScrollReset,\n      relative,\n      viewTransition,\n      defaultShouldRevalidate,\n      useTransitions\n    });\n    function handleClick(event) {\n      if (onClick) onClick(event);\n      if (!event.defaultPrevented) {\n        internalOnClick(event);\n      }\n    }\n    let isSpaLink = !(parsed.isExternal || reloadDocument);\n    let link = (\n      // eslint-disable-next-line jsx-a11y/anchor-has-content\n      /* @__PURE__ */ React10.createElement(\n        \"a\",\n        {\n          ...rest,\n          ...prefetchHandlers,\n          href: (isSpaLink ? maskedHref : void 0) || parsed.absoluteURL || href,\n          onClick: isSpaLink ? handleClick : onClick,\n          ref: mergeRefs(forwardedRef, prefetchRef),\n          target,\n          \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n        }\n      )\n    );\n    return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href })) : link;\n  }\n);\nLink.displayName = \"Link\";\nvar NavLink = React10.forwardRef(\n  function NavLinkWithRef({\n    \"aria-current\": ariaCurrentProp = \"page\",\n    caseSensitive = false,\n    className: classNameProp = \"\",\n    end = false,\n    style: styleProp,\n    to,\n    viewTransition,\n    children,\n    ...rest\n  }, ref) {\n    let path = useResolvedPath(to, { relative: rest.relative });\n    let location = useLocation();\n    let routerState = React10.useContext(DataRouterStateContext);\n    let { navigator, basename } = React10.useContext(NavigationContext);\n    let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useViewTransitionState(path) && viewTransition === true;\n    let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n    let locationPathname = location.pathname;\n    let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n    if (!caseSensitive) {\n      locationPathname = locationPathname.toLowerCase();\n      nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n      toPathname = toPathname.toLowerCase();\n    }\n    if (nextLocationPathname && basename) {\n      nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n    }\n    const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n    let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n    let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n    let renderProps = {\n      isActive,\n      isPending,\n      isTransitioning\n    };\n    let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n    let className;\n    if (typeof classNameProp === \"function\") {\n      className = classNameProp(renderProps);\n    } else {\n      className = [\n        classNameProp,\n        isActive ? \"active\" : null,\n        isPending ? \"pending\" : null,\n        isTransitioning ? \"transitioning\" : null\n      ].filter(Boolean).join(\" \");\n    }\n    let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n    return /* @__PURE__ */ React10.createElement(\n      Link,\n      {\n        ...rest,\n        \"aria-current\": ariaCurrent,\n        className,\n        ref,\n        style,\n        to,\n        viewTransition\n      },\n      typeof children === \"function\" ? children(renderProps) : children\n    );\n  }\n);\nNavLink.displayName = \"NavLink\";\nvar Form = React10.forwardRef(\n  ({\n    discover = \"render\",\n    fetcherKey,\n    navigate,\n    reloadDocument,\n    replace: replace2,\n    state,\n    method = defaultMethod,\n    action,\n    onSubmit,\n    relative,\n    preventScrollReset,\n    viewTransition,\n    defaultShouldRevalidate,\n    ...props\n  }, forwardedRef) => {\n    let { useTransitions } = React10.useContext(NavigationContext);\n    let submit = useSubmit();\n    let formAction = useFormAction(action, { relative });\n    let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n    let isAbsolute = typeof action === \"string\" && ABSOLUTE_URL_REGEX.test(action);\n    let submitHandler = (event) => {\n      onSubmit && onSubmit(event);\n      if (event.defaultPrevented) return;\n      event.preventDefault();\n      let submitter = event.nativeEvent.submitter;\n      let submitMethod = submitter?.getAttribute(\"formmethod\") || method;\n      let doSubmit = () => submit(submitter || event.currentTarget, {\n        fetcherKey,\n        method: submitMethod,\n        navigate,\n        replace: replace2,\n        state,\n        relative,\n        preventScrollReset,\n        viewTransition,\n        defaultShouldRevalidate\n      });\n      if (useTransitions && navigate !== false) {\n        React10.startTransition(() => doSubmit());\n      } else {\n        doSubmit();\n      }\n    };\n    return /* @__PURE__ */ React10.createElement(\n      \"form\",\n      {\n        ref: forwardedRef,\n        method: formMethod,\n        action: formAction,\n        onSubmit: reloadDocument ? onSubmit : submitHandler,\n        ...props,\n        \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n      }\n    );\n  }\n);\nForm.displayName = \"Form\";\nfunction ScrollRestoration({\n  getKey,\n  storageKey,\n  ...props\n}) {\n  let remixContext = React10.useContext(FrameworkContext);\n  let { basename } = React10.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  useScrollRestoration({ getKey, storageKey });\n  let ssrKey = React10.useMemo(\n    () => {\n      if (!remixContext || !getKey) return null;\n      let userKey = getScrollRestorationKey(\n        location,\n        matches,\n        basename,\n        getKey\n      );\n      return userKey !== location.key ? userKey : null;\n    },\n    // Nah, we only need this the first time for the SSR render\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n  if (!remixContext || remixContext.isSpaMode) {\n    return null;\n  }\n  let restoreScroll = ((storageKey2, restoreKey) => {\n    if (!window.history.state || !window.history.state.key) {\n      let key = Math.random().toString(32).slice(2);\n      window.history.replaceState({ key }, \"\");\n    }\n    try {\n      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n      let storedY = positions[restoreKey || window.history.state.key];\n      if (typeof storedY === \"number\") {\n        window.scrollTo(0, storedY);\n      }\n    } catch (error) {\n      console.error(error);\n      sessionStorage.removeItem(storageKey2);\n    }\n  }).toString();\n  if (props.nonce == null && remixContext?.nonce) {\n    props.nonce = remixContext.nonce;\n  }\n  return /* @__PURE__ */ React10.createElement(\n    \"script\",\n    {\n      ...props,\n      suppressHydrationWarning: true,\n      dangerouslySetInnerHTML: {\n        __html: `(${restoreScroll})(${escapeHtml(\n          JSON.stringify(storageKey || SCROLL_RESTORATION_STORAGE_KEY)\n        )}, ${escapeHtml(JSON.stringify(ssrKey))})`\n      }\n    }\n  );\n}\nScrollRestoration.displayName = \"ScrollRestoration\";\nfunction getDataRouterConsoleError2(hookName) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext3(hookName) {\n  let ctx = React10.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError2(hookName));\n  return ctx;\n}\nfunction useDataRouterState2(hookName) {\n  let state = React10.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError2(hookName));\n  return state;\n}\nfunction useLinkClickHandler(to, {\n  target,\n  replace: replaceProp,\n  mask,\n  state,\n  preventScrollReset,\n  relative,\n  viewTransition,\n  defaultShouldRevalidate,\n  useTransitions\n} = {}) {\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, { relative });\n  return React10.useCallback(\n    (event) => {\n      if (shouldProcessLinkClick(event, target)) {\n        event.preventDefault();\n        let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n        let doNavigate = () => navigate(to, {\n          replace: replace2,\n          mask,\n          state,\n          preventScrollReset,\n          relative,\n          viewTransition,\n          defaultShouldRevalidate\n        });\n        if (useTransitions) {\n          React10.startTransition(() => doNavigate());\n        } else {\n          doNavigate();\n        }\n      }\n    },\n    [\n      location,\n      navigate,\n      path,\n      replaceProp,\n      mask,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      relative,\n      viewTransition,\n      defaultShouldRevalidate,\n      useTransitions\n    ]\n  );\n}\nfunction useSearchParams(defaultInit) {\n  warning(\n    typeof URLSearchParams !== \"undefined\",\n    `You cannot use the \\`useSearchParams\\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`\n  );\n  let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React10.useRef(false);\n  let location = useLocation();\n  let searchParams = React10.useMemo(\n    () => (\n      // Only merge in the defaults if we haven't yet called setSearchParams.\n      // Once we call that we want those to take precedence, otherwise you can't\n      // remove a param with setSearchParams({}) if it has an initial value\n      getSearchParamsForLocation(\n        location.search,\n        hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n      )\n    ),\n    [location.search]\n  );\n  let navigate = useNavigate();\n  let setSearchParams = React10.useCallback(\n    (nextInit, navigateOptions) => {\n      const newSearchParams = createSearchParams(\n        typeof nextInit === \"function\" ? nextInit(new URLSearchParams(searchParams)) : nextInit\n      );\n      hasSetSearchParamsRef.current = true;\n      navigate(\"?\" + newSearchParams, navigateOptions);\n    },\n    [navigate, searchParams]\n  );\n  return [searchParams, setSearchParams];\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\nfunction useSubmit() {\n  let { router } = useDataRouterContext3(\"useSubmit\" /* UseSubmit */);\n  let { basename } = React10.useContext(NavigationContext);\n  let currentRouteId = useRouteId();\n  let routerFetch = router.fetch;\n  let routerNavigate = router.navigate;\n  return React10.useCallback(\n    async (target, options = {}) => {\n      let { action, method, encType, formData, body } = getFormSubmissionInfo(\n        target,\n        basename\n      );\n      if (options.navigate === false) {\n        let key = options.fetcherKey || getUniqueFetcherId();\n        await routerFetch(key, currentRouteId, options.action || action, {\n          defaultShouldRevalidate: options.defaultShouldRevalidate,\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || method,\n          formEncType: options.encType || encType,\n          flushSync: options.flushSync\n        });\n      } else {\n        await routerNavigate(options.action || action, {\n          defaultShouldRevalidate: options.defaultShouldRevalidate,\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || method,\n          formEncType: options.encType || encType,\n          replace: options.replace,\n          state: options.state,\n          fromRouteId: currentRouteId,\n          flushSync: options.flushSync,\n          viewTransition: options.viewTransition\n        });\n      }\n    },\n    [routerFetch, routerNavigate, basename, currentRouteId]\n  );\n}\nfunction useFormAction(action, { relative } = {}) {\n  let { basename } = React10.useContext(NavigationContext);\n  let routeContext = React10.useContext(RouteContext);\n  invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n  let [match] = routeContext.matches.slice(-1);\n  let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n  let location = useLocation();\n  if (action == null) {\n    path.search = location.search;\n    let params = new URLSearchParams(path.search);\n    let indexValues = params.getAll(\"index\");\n    let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n    if (hasNakedIndexParam) {\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? `?${qs}` : \"\";\n    }\n  }\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n  }\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\nfunction useFetcher({\n  key\n} = {}) {\n  let { router } = useDataRouterContext3(\"useFetcher\" /* UseFetcher */);\n  let state = useDataRouterState2(\"useFetcher\" /* UseFetcher */);\n  let fetcherData = React10.useContext(FetchersContext);\n  let route = React10.useContext(RouteContext);\n  let routeId = route.matches[route.matches.length - 1]?.route.id;\n  invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n  invariant(route, `useFetcher must be used inside a RouteContext`);\n  invariant(\n    routeId != null,\n    `useFetcher can only be used on routes that contain a unique \"id\"`\n  );\n  let defaultKey = React10.useId();\n  let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  }\n  let { deleteFetcher, getFetcher, resetFetcher, fetch: routerFetch } = router;\n  React10.useEffect(() => {\n    getFetcher(fetcherKey);\n    return () => deleteFetcher(fetcherKey);\n  }, [deleteFetcher, getFetcher, fetcherKey]);\n  let load = React10.useCallback(\n    async (href, opts) => {\n      invariant(routeId, \"No routeId available for fetcher.load()\");\n      await routerFetch(fetcherKey, routeId, href, opts);\n    },\n    [fetcherKey, routeId, routerFetch]\n  );\n  let submitImpl = useSubmit();\n  let submit = React10.useCallback(\n    async (target, opts) => {\n      await submitImpl(target, {\n        ...opts,\n        navigate: false,\n        fetcherKey\n      });\n    },\n    [fetcherKey, submitImpl]\n  );\n  let reset = React10.useCallback(\n    (opts) => resetFetcher(fetcherKey, opts),\n    [resetFetcher, fetcherKey]\n  );\n  let FetcherForm = React10.useMemo(() => {\n    let FetcherForm2 = React10.forwardRef(\n      (props, ref) => {\n        return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });\n      }\n    );\n    FetcherForm2.displayName = \"fetcher.Form\";\n    return FetcherForm2;\n  }, [fetcherKey]);\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data2 = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React10.useMemo(\n    () => ({\n      Form: FetcherForm,\n      submit,\n      load,\n      reset,\n      ...fetcher,\n      data: data2\n    }),\n    [FetcherForm, submit, load, reset, fetcher, data2]\n  );\n  return fetcherWithComponents;\n}\nfunction useFetchers() {\n  let state = useDataRouterState2(\"useFetchers\" /* UseFetchers */);\n  return React10.useMemo(\n    () => Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n      ...fetcher,\n      key\n    })),\n    [state.fetchers]\n  );\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction getScrollRestorationKey(location, matches, basename, getKey) {\n  let key = null;\n  if (getKey) {\n    if (basename !== \"/\") {\n      key = getKey(\n        {\n          ...location,\n          pathname: stripBasename(location.pathname, basename) || location.pathname\n        },\n        matches\n      );\n    } else {\n      key = getKey(location, matches);\n    }\n  }\n  if (key == null) {\n    key = location.key;\n  }\n  return key;\n}\nfunction useScrollRestoration({\n  getKey,\n  storageKey\n} = {}) {\n  let { router } = useDataRouterContext3(\"useScrollRestoration\" /* UseScrollRestoration */);\n  let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(\n    \"useScrollRestoration\" /* UseScrollRestoration */\n  );\n  let { basename } = React10.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n  React10.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n  usePageHide(\n    React10.useCallback(() => {\n      if (navigation.state === \"idle\") {\n        let key = getScrollRestorationKey(location, matches, basename, getKey);\n        savedScrollPositions[key] = window.scrollY;\n      }\n      try {\n        sessionStorage.setItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n          JSON.stringify(savedScrollPositions)\n        );\n      } catch (error) {\n        warning(\n          false,\n          `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n        );\n      }\n      window.history.scrollRestoration = \"auto\";\n    }, [navigation.state, getKey, basename, location, matches, storageKey])\n  );\n  if (typeof document !== \"undefined\") {\n    React10.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        );\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n      }\n    }, [storageKey]);\n    React10.useLayoutEffect(() => {\n      let disableScrollRestoration = router?.enableScrollRestoration(\n        savedScrollPositions,\n        () => window.scrollY,\n        getKey ? (location2, matches2) => getScrollRestorationKey(location2, matches2, basename, getKey) : void 0\n      );\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n    React10.useLayoutEffect(() => {\n      if (restoreScrollPosition === false) {\n        return;\n      }\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n      try {\n        if (location.hash) {\n          let el = document.getElementById(\n            decodeURIComponent(location.hash.slice(1))\n          );\n          if (el) {\n            el.scrollIntoView();\n            return;\n          }\n        }\n      } catch {\n        warning(\n          false,\n          `\"${location.hash.slice(\n            1\n          )}\" is not a decodable element ID. The view will not scroll to it.`\n        );\n      }\n      if (preventScrollReset === true) {\n        return;\n      }\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\nfunction useBeforeUnload(callback, options) {\n  let { capture } = options || {};\n  React10.useEffect(() => {\n    let opts = capture != null ? { capture } : void 0;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n  let { capture } = options || {};\n  React10.useEffect(() => {\n    let opts = capture != null ? { capture } : void 0;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePrompt({\n  when,\n  message\n}) {\n  let blocker = useBlocker(when);\n  React10.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n  React10.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\nfunction useViewTransitionState(to, { relative } = {}) {\n  let vtContext = React10.useContext(ViewTransitionContext);\n  invariant(\n    vtContext != null,\n    \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?\"\n  );\n  let { basename } = useDataRouterContext3(\n    \"useViewTransitionState\" /* useViewTransitionState */\n  );\n  let path = useResolvedPath(to, { relative });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n  let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n  let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n  return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n\n// lib/dom/server.tsx\nimport * as React11 from \"react\";\nfunction StaticRouter({\n  basename,\n  children,\n  location: locationProp = \"/\"\n}) {\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let action = \"POP\" /* Pop */;\n  let location = {\n    pathname: locationProp.pathname || \"/\",\n    search: locationProp.search || \"\",\n    hash: locationProp.hash || \"\",\n    state: locationProp.state != null ? locationProp.state : null,\n    key: locationProp.key || \"default\",\n    mask: void 0\n  };\n  let staticNavigator = getStatelessNavigator();\n  return /* @__PURE__ */ React11.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location,\n      navigationType: action,\n      navigator: staticNavigator,\n      static: true,\n      useTransitions: false\n    }\n  );\n}\nfunction StaticRouterProvider({\n  context,\n  router,\n  hydrate: hydrate2 = true,\n  nonce\n}) {\n  invariant(\n    router && context,\n    \"You must provide `router` and `context` to <StaticRouterProvider>\"\n  );\n  let dataRouterContext = {\n    router,\n    navigator: getStatelessNavigator(),\n    static: true,\n    staticContext: context,\n    basename: context.basename || \"/\"\n  };\n  let fetchersContext = /* @__PURE__ */ new Map();\n  let hydrateScript = \"\";\n  if (hydrate2 !== false) {\n    let data2 = {\n      loaderData: context.loaderData,\n      actionData: context.actionData,\n      errors: serializeErrors(context.errors)\n    };\n    let json = escapeHtml(JSON.stringify(JSON.stringify(data2)));\n    hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n  }\n  let { state } = dataRouterContext.router;\n  return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(\n    Router,\n    {\n      basename: dataRouterContext.basename,\n      location: state.location,\n      navigationType: state.historyAction,\n      navigator: dataRouterContext.navigator,\n      static: dataRouterContext.static,\n      useTransitions: false\n    },\n    /* @__PURE__ */ React11.createElement(\n      DataRoutes2,\n      {\n        manifest: router.manifest,\n        routes: router.routes,\n        future: router.future,\n        state,\n        isStatic: true\n      }\n    )\n  ))))), hydrateScript ? /* @__PURE__ */ React11.createElement(\n    \"script\",\n    {\n      suppressHydrationWarning: true,\n      nonce,\n      dangerouslySetInnerHTML: { __html: hydrateScript }\n    }\n  ) : null);\n}\nfunction serializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (isRouteErrorResponse(val)) {\n      serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n    } else if (val instanceof Error) {\n      serialized[key] = {\n        message: val.message,\n        __type: \"Error\",\n        // If this is a subclass (i.e., ReferenceError), send up the type so we\n        // can re-create the same type during hydration.\n        ...val.name !== \"Error\" ? {\n          __subType: val.name\n        } : {}\n      };\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nfunction getStatelessNavigator() {\n  return {\n    createHref,\n    encodeLocation,\n    push(to) {\n      throw new Error(\n        `You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`\n      );\n    },\n    replace(to) {\n      throw new Error(\n        `You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere in your app.`\n      );\n    },\n    go(delta) {\n      throw new Error(\n        `You cannot use navigator.go() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${delta})\\` somewhere in your app.`\n      );\n    },\n    back() {\n      throw new Error(\n        `You cannot use navigator.back() on the server because it is a stateless environment.`\n      );\n    },\n    forward() {\n      throw new Error(\n        `You cannot use navigator.forward() on the server because it is a stateless environment.`\n      );\n    }\n  };\n}\nfunction createStaticHandler2(routes, opts) {\n  return createStaticHandler(routes, {\n    ...opts,\n    mapRouteProperties\n  });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n  let manifest = {};\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties,\n    void 0,\n    manifest\n  );\n  let matches = context.matches.map((match) => {\n    let route = manifest[match.route.id] || match.route;\n    return {\n      ...match,\n      route\n    };\n  });\n  let msg = (method) => `You cannot use router.${method}() on the server because it is a stateless environment`;\n  return {\n    get basename() {\n      return context.basename;\n    },\n    get future() {\n      return {\n        v8_middleware: false,\n        v8_passThroughRequests: false,\n        v8_trailingSlashAwareDataRequests: false,\n        ...opts?.future\n      };\n    },\n    get state() {\n      return {\n        historyAction: \"POP\" /* Pop */,\n        location: context.location,\n        matches,\n        loaderData: context.loaderData,\n        actionData: context.actionData,\n        errors: context.errors,\n        initialized: true,\n        renderFallback: false,\n        navigation: IDLE_NAVIGATION,\n        restoreScrollPosition: null,\n        preventScrollReset: false,\n        revalidation: \"idle\",\n        fetchers: /* @__PURE__ */ new Map(),\n        blockers: /* @__PURE__ */ new Map()\n      };\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get branches() {\n      return opts.branches;\n    },\n    get manifest() {\n      return manifest;\n    },\n    get window() {\n      return void 0;\n    },\n    initialize() {\n      throw msg(\"initialize\");\n    },\n    subscribe() {\n      throw msg(\"subscribe\");\n    },\n    enableScrollRestoration() {\n      throw msg(\"enableScrollRestoration\");\n    },\n    navigate() {\n      throw msg(\"navigate\");\n    },\n    fetch() {\n      throw msg(\"fetch\");\n    },\n    revalidate() {\n      throw msg(\"revalidate\");\n    },\n    createHref,\n    encodeLocation,\n    getFetcher() {\n      return IDLE_FETCHER;\n    },\n    deleteFetcher() {\n      throw msg(\"deleteFetcher\");\n    },\n    resetFetcher() {\n      throw msg(\"resetFetcher\");\n    },\n    dispose() {\n      throw msg(\"dispose\");\n    },\n    getBlocker() {\n      return IDLE_BLOCKER;\n    },\n    deleteBlocker() {\n      throw msg(\"deleteBlocker\");\n    },\n    patchRoutes() {\n      throw msg(\"patchRoutes\");\n    },\n    _internalFetchControllers: /* @__PURE__ */ new Map(),\n    _internalSetRoutes() {\n      throw msg(\"_internalSetRoutes\");\n    },\n    _internalSetStateDoNotUseOrYouWillBreakYourApp() {\n      throw msg(\"_internalSetStateDoNotUseOrYouWillBreakYourApp\");\n    }\n  };\n}\nfunction createHref(to) {\n  return typeof to === \"string\" ? to : createPath(to);\n}\nfunction encodeLocation(to) {\n  let href = typeof to === \"string\" ? to : createPath(to);\n  href = href.replace(/ $/, \"%20\");\n  let encoded = ABSOLUTE_URL_REGEX.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n  return {\n    pathname: encoded.pathname,\n    search: encoded.search,\n    hash: encoded.hash\n  };\n}\n\nexport {\n  PROTOCOL_RELATIVE_URL_REGEX,\n  Action,\n  createMemoryHistory,\n  createBrowserHistory,\n  createHashHistory,\n  invariant,\n  createPath,\n  parsePath,\n  createContext,\n  RouterContextProvider,\n  convertRoutesToDataRoutes,\n  matchRoutes,\n  matchRoutesImpl,\n  generatePath,\n  matchPath,\n  stripBasename,\n  resolvePath,\n  data,\n  redirect,\n  redirectDocument,\n  replace,\n  ErrorResponseImpl,\n  isRouteErrorResponse,\n  instrumentHandler,\n  validateNavigationTarget,\n  IDLE_NAVIGATION,\n  IDLE_FETCHER,\n  IDLE_BLOCKER,\n  createRouter,\n  createStaticHandler,\n  getStaticContextFromError,\n  hasInvalidProtocol,\n  isDataWithResponseInit,\n  isResponse,\n  isRedirectStatusCode,\n  isRedirectResponse,\n  isMutationMethod,\n  DataRouterContext,\n  DataRouterStateContext,\n  RSCRouterContext,\n  ViewTransitionContext,\n  FetchersContext,\n  AwaitContextProvider,\n  NavigationContext,\n  LocationContext,\n  RouteContext,\n  ENABLE_DEV_WARNINGS,\n  decodeRedirectErrorDigest,\n  decodeRouteErrorResponseDigest,\n  useHref,\n  useInRouterContext,\n  useLocation,\n  useNavigationType,\n  useMatch,\n  useNavigate,\n  useOutletContext,\n  useOutlet,\n  useParams,\n  useResolvedPath,\n  useRoutes,\n  useNavigation,\n  useRevalidator,\n  useMatches,\n  useLoaderData,\n  useRouteLoaderData,\n  useActionData,\n  useRouteError,\n  useAsyncValue,\n  useAsyncError,\n  useBlocker,\n  useRoute,\n  useRouterState,\n  warnOnce,\n  mapRouteProperties,\n  hydrationRouteProperties,\n  createMemoryRouter,\n  RouterProvider,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  Routes,\n  Await,\n  createRoutesFromChildren,\n  createRoutesFromElements,\n  renderMatches,\n  WithComponentProps,\n  withComponentProps,\n  WithHydrateFallbackProps,\n  withHydrateFallbackProps,\n  WithErrorBoundaryProps,\n  withErrorBoundaryProps,\n  createSearchParams,\n  escapeHtml,\n  escapeAttribute,\n  encode,\n  createRequestInit,\n  SingleFetchRedirectSymbol,\n  SINGLE_FETCH_REDIRECT_STATUS,\n  NO_BODY_STATUS_CODES,\n  StreamTransfer,\n  getTurboStreamSingleFetchDataStrategy,\n  getSingleFetchDataStrategyImpl,\n  stripIndexParam,\n  singleFetchUrl,\n  decodeViaTurboStream,\n  RemixErrorBoundary,\n  createServerRoutes,\n  createClientRoutesWithHMRRevalidationOptOut,\n  noActionDefinedError,\n  createClientRoutes,\n  shouldHydrateRouteLoader,\n  URL_LIMIT,\n  getPathsWithAncestors,\n  getPatchRoutesOnNavigationFunction,\n  useFogOFWarDiscovery,\n  getManifestPath,\n  FrameworkContext,\n  CRITICAL_CSS_DATA_ATTRIBUTE,\n  Links,\n  PrefetchPageLinks,\n  Meta,\n  setIsHydrated,\n  Scripts,\n  createBrowserRouter,\n  createHashRouter,\n  BrowserRouter,\n  HashRouter,\n  HistoryRouter,\n  Link,\n  NavLink,\n  Form,\n  ScrollRestoration,\n  useLinkClickHandler,\n  useSearchParams,\n  useSubmit,\n  useFormAction,\n  useFetcher,\n  useFetchers,\n  useScrollRestoration,\n  useBeforeUnload,\n  usePrompt,\n  useViewTransitionState,\n  StaticRouter,\n  StaticRouterProvider,\n  createStaticHandler2,\n  createStaticRouter\n};\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string?.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toKebabCase } from './toKebabCase.mjs';\n\nfunction toLucideIconData(iconName, iconNode, aliases = []) {\n  if (iconNode == null) {\n    throw new Error(\"[lucide]: iconNode is required when icon name is used\");\n  }\n  return {\n    name: toKebabCase(iconName),\n    size: 24,\n    node: iconNode,\n    ...aliases.length > 0 ? { aliases } : {}\n  };\n}\n\nexport { toLucideIconData };\n//# sourceMappingURL=toLucideIconData.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => {\n  let out = \"\";\n  let upperNext = false;\n  for (const ch of string) {\n    if (ch === \"-\" || ch === \"_\" || ch <= \" \") {\n      upperNext = out.length > 0;\n      continue;\n    }\n    if (out.length === 0) {\n      out += ch.toLowerCase();\n    } else {\n      out += upperNext ? ch.toUpperCase() : ch;\n    }\n    upperNext = false;\n  }\n  return out;\n};\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n  const camelCase = toCamelCase(string);\n  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n  return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst defaultAttributes = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: 24,\n  height: 24,\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  \"stroke-width\": 2,\n  \"stroke-linecap\": \"round\",\n  \"stroke-linejoin\": \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { mergeClasses } from '../utils/mergeClasses.mjs';\n\nfunction isDefined(value) {\n  return value !== null && value !== void 0;\n}\nfunction buildLucideIconNode(icon, params = {}) {\n  const attributeNames = params.attributeNames ?? {};\n  const getAttributeName = (attributeName) => attributeNames[attributeName] ?? attributeName;\n  const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes[\"width\"];\n  const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes[\"height\"];\n  const aliasClassNames = icon.aliases?.filter((alias) => typeof alias === \"string\" && alias.trim() !== \"\").map((alias) => `lucide-${alias}`) ?? [];\n  const iconClassNames = [...icon.name ? [`lucide-${icon.name}`] : [], ...aliasClassNames];\n  const classNamesFromClassName = params.className?.split(\" \").filter(Boolean) ?? [];\n  const className = params.includeDefaultClasses === false ? mergeClasses(...classNamesFromClassName) : mergeClasses(\"lucide\", ...iconClassNames, ...classNamesFromClassName);\n  const calculatedStrokeWidth = params.absoluteStrokeWidth ? Number(params.strokeWidth ?? defaultAttributes[\"stroke-width\"]) * Number(icon.size ?? icon.width ?? defaultAttributes[\"width\"]) / Number(params.size ?? params.width ?? defaultAttributes[\"width\"]) : params.strokeWidth ?? defaultAttributes[\"stroke-width\"];\n  const attributes = {\n    ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n      attrs[getAttributeName(attrName)] = value;\n      return attrs;\n    }, {}),\n    ...\"color\" in params && params.color && {\n      [getAttributeName(\"stroke\")]: params.color\n    },\n    ...\"size\" in params && isDefined(params.size) && {\n      [getAttributeName(\"width\")]: params.size,\n      [getAttributeName(\"height\")]: params.size\n    },\n    ...\"width\" in params && isDefined(params.width) && {\n      [getAttributeName(\"width\")]: params.width\n    },\n    ...\"height\" in params && isDefined(params.height) && {\n      [getAttributeName(\"height\")]: params.height\n    },\n    [getAttributeName(\"stroke-width\")]: calculatedStrokeWidth,\n    ...className && {\n      [getAttributeName(\"class\")]: className\n    },\n    [getAttributeName(\"viewBox\")]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n    ...params.hasA11yProp === false ? {\n      [getAttributeName(\"aria-hidden\")]: \"true\"\n    } : {},\n    ...\"attributes\" in params && params.attributes\n  };\n  return [\n    \"svg\",\n    attributes,\n    icon.node.map((child) => {\n      const [name, attrs, children] = child;\n      const nextAttrs = params.nonScalingStroke ? { [getAttributeName(\"vector-effect\")]: \"non-scaling-stroke\", ...attrs } : attrs;\n      return children ? [name, nextAttrs, children] : [name, nextAttrs];\n    })\n  ];\n}\n\nexport { buildLucideIconNode as default };\n//# sourceMappingURL=buildLucideIconNode.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport buildLucideIconNode from './buildLucideIconNode.mjs';\n\nfunction buildLucideIconForReact(icon, params = {}) {\n  return buildLucideIconNode(icon, {\n    ...params,\n    attributeNames: {\n      ...params.attributeNames,\n      class: \"className\",\n      \"stroke-width\": \"strokeWidth\",\n      \"stroke-linecap\": \"strokeLinecap\",\n      \"stroke-linejoin\": \"strokeLinejoin\",\n      \"vector-effect\": \"vectorEffect\"\n    }\n  });\n}\n\nexport { buildLucideIconForReact as default };\n//# sourceMappingURL=buildLucideIconForReact.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n  for (const prop in props) {\n    if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n      return true;\n    }\n  }\n  return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n  children,\n  size,\n  color,\n  strokeWidth,\n  absoluteStrokeWidth,\n  nonScalingStroke,\n  className\n}) {\n  const value = useMemo(\n    () => ({\n      size,\n      color,\n      strokeWidth,\n      absoluteStrokeWidth,\n      nonScalingStroke,\n      className\n    }),\n    [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className]\n  );\n  return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport buildLucideIconForReact from './shared/src/build/buildLucideIconForReact.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n  ({\n    color,\n    size,\n    width,\n    height,\n    strokeWidth,\n    absoluteStrokeWidth,\n    nonScalingStroke,\n    className = \"\",\n    children,\n    iconNode = [],\n    icon = {\n      node: iconNode,\n      aliases: [],\n      size: 24\n    },\n    ...rest\n  }, ref) => {\n    const {\n      size: contextSize = 24,\n      strokeWidth: contextStrokeWidth = 2,\n      absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n      nonScalingStroke: contextNonScalingStroke = false,\n      color: contextColor = \"currentColor\",\n      className: contextClass = \"\"\n    } = useLucideContext() ?? {};\n    const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n    const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n      color: color ?? contextColor,\n      width: width ?? size ?? contextSize,\n      height: height ?? size ?? contextSize,\n      strokeWidth: strokeWidth ?? contextStrokeWidth,\n      absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n      nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n      className: mergeClasses(contextClass, className),\n      hasA11yProp: hasAccessibleProp,\n      attributes: rest\n    });\n    return createElement(\n      name,\n      {\n        ref,\n        ...svgAttributes\n      },\n      [\n        ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n        ...Array.isArray(children) ? children : [children]\n      ]\n    );\n  }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { toLucideIconData } from './shared/src/utils/toLucideIconData.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nfunction createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {\n  const iconData = typeof iconDataOrName === \"string\" ? toLucideIconData(iconDataOrName, iconNode, aliases) : iconDataOrName;\n  const Component = forwardRef(\n    ({ className, ...props }, ref) => createElement(Icon, {\n      ref,\n      icon: iconData,\n      className,\n      ...props\n    })\n  );\n  if (iconData.name) {\n    Component.displayName = toPascalCase(iconData.name);\n  }\n  return Component;\n}\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"check\",\n  size: 24,\n  node: [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]]\n};\n__iconData.node;\nconst Check = createLucideIcon(__iconData);\n\nexport { __iconData, Check as default };\n//# sourceMappingURL=check.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"chevron-down\",\n  size: 24,\n  node: [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]]\n};\n__iconData.node;\nconst ChevronDown = createLucideIcon(__iconData);\n\nexport { __iconData, ChevronDown as default };\n//# sourceMappingURL=chevron-down.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"chevron-up\",\n  size: 24,\n  node: [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]]\n};\n__iconData.node;\nconst ChevronUp = createLucideIcon(__iconData);\n\nexport { __iconData, ChevronUp as default };\n//# sourceMappingURL=chevron-up.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"circle-alert\",\n  size: 24,\n  node: [\n    [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n    [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n    [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n  ],\n  aliases: [\"alert-circle\"]\n};\n__iconData.node;\nconst CircleAlert = createLucideIcon(__iconData);\n\nexport { __iconData, CircleAlert as default };\n//# sourceMappingURL=circle-alert.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"circle-check\",\n  size: 24,\n  node: [\n    [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n    [\"path\", { d: \"m16 9-5.5 5.5L8 12\", key: \"xofnsj\" }]\n  ],\n  aliases: [\"check-circle-2\"]\n};\n__iconData.node;\nconst CircleCheck = createLucideIcon(__iconData);\n\nexport { __iconData, CircleCheck as default };\n//# sourceMappingURL=circle-check.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"copy\",\n  size: 24,\n  node: [\n    [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n    [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n  ]\n};\n__iconData.node;\nconst Copy = createLucideIcon(__iconData);\n\nexport { __iconData, Copy as default };\n//# sourceMappingURL=copy.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"credit-card\",\n  size: 24,\n  node: [\n    [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"5\", rx: \"2\", key: \"ynyp8z\" }],\n    [\"line\", { x1: \"2\", x2: \"22\", y1: \"10\", y2: \"10\", key: \"1b3vmo\" }],\n    [\"path\", { d: \"M6 14h2\", key: \"mk7k0u\" }]\n  ]\n};\n__iconData.node;\nconst CreditCard = createLucideIcon(__iconData);\n\nexport { __iconData, CreditCard as default };\n//# sourceMappingURL=credit-card.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"download\",\n  size: 24,\n  node: [\n    [\"path\", { d: \"M12 15V3\", key: \"m9g1x1\" }],\n    [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n    [\"path\", { d: \"m7 10 5 5 5-5\", key: \"brsn70\" }]\n  ]\n};\n__iconData.node;\nconst Download = createLucideIcon(__iconData);\n\nexport { __iconData, Download as default };\n//# sourceMappingURL=download.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"info\",\n  size: 24,\n  node: [\n    [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n    [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n    [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n  ]\n};\n__iconData.node;\nconst Info = createLucideIcon(__iconData);\n\nexport { __iconData, Info as default };\n//# sourceMappingURL=info.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"layout-grid\",\n  size: 24,\n  node: [\n    [\"rect\", { width: \"7\", height: \"7\", x: \"3\", y: \"3\", rx: \"1\", key: \"1g98yp\" }],\n    [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"3\", rx: \"1\", key: \"6d4xhi\" }],\n    [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"14\", rx: \"1\", key: \"nxv5o0\" }],\n    [\"rect\", { width: \"7\", height: \"7\", x: \"3\", y: \"14\", rx: \"1\", key: \"1bb6yr\" }]\n  ]\n};\n__iconData.node;\nconst LayoutGrid = createLucideIcon(__iconData);\n\nexport { __iconData, LayoutGrid as default };\n//# sourceMappingURL=layout-grid.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"life-buoy\",\n  size: 24,\n  node: [\n    [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n    [\"path\", { d: \"m4.93 4.93 4.24 4.24\", key: \"1ymg45\" }],\n    [\"path\", { d: \"m14.83 9.17 4.24-4.24\", key: \"1cb5xl\" }],\n    [\"path\", { d: \"m14.83 14.83 4.24 4.24\", key: \"q42g0n\" }],\n    [\"path\", { d: \"m9.17 14.83-4.24 4.24\", key: \"bqpfvv\" }],\n    [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }]\n  ]\n};\n__iconData.node;\nconst LifeBuoy = createLucideIcon(__iconData);\n\nexport { __iconData, LifeBuoy as default };\n//# sourceMappingURL=life-buoy.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"loader-circle\",\n  size: 24,\n  node: [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]],\n  aliases: [\"loader-2\"]\n};\n__iconData.node;\nconst LoaderCircle = createLucideIcon(__iconData);\n\nexport { __iconData, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"log-out\",\n  size: 24,\n  node: [\n    [\"path\", { d: \"m16 17 5-5-5-5\", key: \"1bji2h\" }],\n    [\"path\", { d: \"M21 12H9\", key: \"dn1m92\" }],\n    [\"path\", { d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\", key: \"1uf3rs\" }]\n  ]\n};\n__iconData.node;\nconst LogOut = createLucideIcon(__iconData);\n\nexport { __iconData, LogOut as default };\n//# sourceMappingURL=log-out.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"menu\",\n  size: 24,\n  node: [\n    [\"path\", { d: \"M4 5h16\", key: \"1tepv9\" }],\n    [\"path\", { d: \"M4 12h16\", key: \"1lakjw\" }],\n    [\"path\", { d: \"M4 19h16\", key: \"1djgab\" }]\n  ]\n};\n__iconData.node;\nconst Menu = createLucideIcon(__iconData);\n\nexport { __iconData, Menu as default };\n//# sourceMappingURL=menu.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"monitor\",\n  size: 24,\n  node: [\n    [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"3\", rx: \"2\", key: \"48i651\" }],\n    [\"line\", { x1: \"8\", x2: \"16\", y1: \"21\", y2: \"21\", key: \"1svkeh\" }],\n    [\"line\", { x1: \"12\", x2: \"12\", y1: \"17\", y2: \"21\", key: \"vw1qmm\" }]\n  ]\n};\n__iconData.node;\nconst Monitor = createLucideIcon(__iconData);\n\nexport { __iconData, Monitor as default };\n//# sourceMappingURL=monitor.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"octagon-x\",\n  size: 24,\n  node: [\n    [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n    [\n      \"path\",\n      {\n        d: \"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z\",\n        key: \"2d38gg\"\n      }\n    ],\n    [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n  ],\n  aliases: [\"x-octagon\"]\n};\n__iconData.node;\nconst OctagonX = createLucideIcon(__iconData);\n\nexport { __iconData, OctagonX as default };\n//# sourceMappingURL=octagon-x.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"shield\",\n  size: 24,\n  node: [\n    [\n      \"path\",\n      {\n        d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n        key: \"oel41y\"\n      }\n    ]\n  ]\n};\n__iconData.node;\nconst Shield = createLucideIcon(__iconData);\n\nexport { __iconData, Shield as default };\n//# sourceMappingURL=shield.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"triangle-alert\",\n  size: 24,\n  node: [\n    [\n      \"path\",\n      {\n        d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n        key: \"wmoenq\"\n      }\n    ],\n    [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n    [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n  ],\n  aliases: [\"alert-triangle\"]\n};\n__iconData.node;\nconst TriangleAlert = createLucideIcon(__iconData);\n\nexport { __iconData, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"user\",\n  size: 24,\n  node: [\n    [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n    [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n  ]\n};\n__iconData.node;\nconst User = createLucideIcon(__iconData);\n\nexport { __iconData, User as default };\n//# sourceMappingURL=user.mjs.map\n","/**\n * @license lucide-react v1.58.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n  name: \"x\",\n  size: 24,\n  node: [\n    [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n    [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n  ]\n};\n__iconData.node;\nconst X = createLucideIcon(__iconData);\n\nexport { __iconData, X as default };\n//# sourceMappingURL=x.mjs.map\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n};\nconst makeString = object => {\n  if (object == null) return '';\n  return String(object);\n};\nconst copy = (a, s, t) => {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n  const stack = !isString(path) ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper(object)) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper(object)) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n};\nconst setPath = (object, path, newValue) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n  return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (Object.prototype.hasOwnProperty.call(target, prop)) {\n        if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nconst escape = data => {\n  if (isString(data)) {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n};\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n  if (!obj) return undefined;\n  if (obj[path]) {\n    if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n    return obj[path];\n  }\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    console?.[type]?.apply?.(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger, options = {}) {\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger, options = {}) {\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log(...args) {\n    return this.forward(args, 'log', '', true);\n  }\n  warn(...args) {\n    return this.forward(args, 'warn', '', true);\n  }\n  error(...args) {\n    return this.forward(args, 'error', '');\n  }\n  deprecate(...args) {\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n    if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  once(event, listener) {\n    const wrapper = (...args) => {\n      listener(...args);\n      this.off(event, wrapper);\n    };\n    this.on(event, wrapper);\n    return this;\n  }\n  emit(event, ...args) {\n    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(([observer, numTimesAdded]) => {\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(([observer, numTimesAdded]) => {\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(event, ...args);\n        }\n      });\n    }\n  }\n}\n\nconst nonEmptyBundles = new WeakSet();\nclass ResourceStore extends EventEmitter {\n  constructor(data, options = {\n    ns: ['translation'],\n    defaultNS: 'translation'\n  }) {\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (!this.options.ns.includes(ns)) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key, options = {}) {\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.includes('.')) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (isString(key) && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.includes('.')) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || !isString(key)) return result;\n    return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value, options = {\n    silent: false\n  }) {\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.includes('.')) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources, options = {\n    silent: false\n  }) {\n    for (const m in resources) {\n      if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n    silent: false,\n    skipCopy: false\n  }) {\n    let path = [lng, ns];\n    if (lng.includes('.')) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => {\n      const bundle = data[v];\n      if (nonEmptyBundles.has(bundle)) return true;\n      if (!bundle || Object.keys(bundle).length === 0) return false;\n      if (typeof bundle === 'object') nonEmptyBundles.add(bundle);\n      return true;\n    });\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n    });\n    return value;\n  }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n  const state = [];\n  const handler = Object.create(null);\n  let proxy;\n  handler.get = (target, key) => {\n    proxy?.revoke?.();\n    if (key === PATH_KEY) return state;\n    state.push(key);\n    proxy = Proxy.revocable(target, handler);\n    return proxy.proxy;\n  };\n  return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n  const {\n    [PATH_KEY]: path\n  } = selector(createProxy());\n  const keySeparator = opts?.keySeparator ?? '.';\n  const nsSeparator = opts?.nsSeparator ?? ':';\n  const strict = opts?.enableSelector === 'strict';\n  if (path.length > 1 && nsSeparator) {\n    const ns = opts?.ns;\n    const nsList = strict ? Array.isArray(ns) ? ns : ns ? [ns] : null : Array.isArray(ns) ? ns : null;\n    if (nsList) {\n      const candidates = strict ? nsList : nsList.length > 1 ? nsList.slice(1) : [];\n      if (candidates.includes(path[0])) {\n        return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n      }\n    }\n  }\n  return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n  constructor(services, options = {}) {\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n    this.checkedLoadedFor = {};\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key, o = {\n    interpolation: {}\n  }) {\n    const opt = {\n      ...o\n    };\n    if (key == null) return false;\n    const resolved = this.resolve(key, opt);\n    if (resolved?.res === undefined) return false;\n    const isObject = shouldHandleAsObject(resolved.res);\n    if (opt.returnObjects === false && isObject) {\n      return false;\n    }\n    return true;\n  }\n  extractFromKey(key, opt) {\n    let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n    let namespaces = opt.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces: isString(namespaces) ? [namespaces] : namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    return {\n      key,\n      namespaces: isString(namespaces) ? [namespaces] : namespaces\n    };\n  }\n  translate(keys, o, lastKey) {\n    let opt = typeof o === 'object' ? {\n      ...o\n    } : o;\n    if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n      opt = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof opt === 'object') opt = {\n      ...opt\n    };\n    if (!opt) opt = {};\n    if (keys == null) return '';\n    if (typeof keys === 'function') keys = keysFromSelector(keys, {\n      ...this.options,\n      ...opt\n    });\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n      ...this.options,\n      ...opt\n    }) : String(k));\n    const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n    const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], opt);\n    const namespace = namespaces[namespaces.length - 1];\n    let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const lng = opt.lng || this.language;\n    const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng?.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(opt)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(opt)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, opt);\n    let res = resolved?.res;\n    const resUsedKey = resolved?.usedKey || key;\n    const resExactUsedKey = resolved?.exactUsedKey || key;\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n    const hasDefaultValue = Translator.hasDefaultValue(opt);\n    const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n    const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n      ordinal: false\n    }) : '';\n    const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n    const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n    let resForObjHndl = res;\n    if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n      resForObjHndl = defaultValue;\n    }\n    const handleAsObject = shouldHandleAsObject(resForObjHndl);\n    const resType = Object.prototype.toString.apply(resForObjHndl);\n    if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n      if (!opt.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n          ...opt,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(opt);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = Array.isArray(resForObjHndl);\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in resForObjHndl) {\n          if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            if (hasDefaultValue && !res) {\n              copy[m] = this.translate(deepKey, {\n                ...opt,\n                defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n                ...{\n                  joinArrays: false,\n                  ns: namespaces\n                }\n              });\n            } else {\n              copy[m] = this.translate(deepKey, {\n                ...opt,\n                ...{\n                  joinArrays: false,\n                  ns: namespaces\n                }\n              });\n            }\n            if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...opt,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n        } else {\n          lngs.push(opt.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n          } else if (this.backendConnector?.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, opt);\n              if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n        res = `${namespace}${nsSeparator}${key}`;\n      }\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(opt);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, opt, resolved, lastKey) {\n    if (this.i18nFormat?.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...opt\n      }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!opt.skipInterpolation) {\n      if (opt.interpolation) this.interpolator.init({\n        ...opt,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...opt.interpolation\n          }\n        }\n      });\n      const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) opt.nest = false;\n      }\n      if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n      if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n        if (lastKey?.[0] === args[0] && !opt.context) {\n          this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return this.translate(...args, key);\n      }, opt);\n      if (opt.interpolation) this.interpolator.reset();\n    }\n    const postProcess = opt.postProcess || this.options.postProcess;\n    const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n    if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(opt)\n        },\n        ...opt\n      } : opt, this);\n    }\n    return res;\n  }\n  resolve(keys, opt = {}) {\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (isString(keys)) keys = [keys];\n    if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n      ...this.options,\n      ...opt\n    }) : k);\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, opt);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n      const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n      const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n      const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n          this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat?.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              finalKeys.push(key + pluralSuffix);\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                finalKeys.push(contextKey + pluralSuffix);\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, opt);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key, options = {}) {\n    if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails(options = {}) {\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && !isString(options.replace);\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data = {\n        ...data,\n        count: options.count\n      };\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n    this.resolveHierarchyCache = {};\n  }\n  clearCache() {\n    this.resolveHierarchyCache = {};\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || !code.includes('-')) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || !code.includes('-')) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (isString(code) && code.includes('-')) {\n      let formattedCode;\n      try {\n        formattedCode = Intl.getCanonicalLocales(code)[0];\n      } catch (e) {}\n      if (formattedCode && this.options.lowerCaseLng) {\n        formattedCode = formattedCode.toLowerCase();\n      }\n      if (formattedCode) return formattedCode;\n      if (this.options.lowerCaseLng) {\n        return code.toLowerCase();\n      }\n      return code;\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngScOnly = this.getScriptPartFromCode(code);\n        if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return true;\n          if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n          if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n          if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n          return false;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (isString(fallbacks)) fallbacks = [fallbacks];\n    if (Array.isArray(fallbacks)) return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackLng = this.options.fallbackLng;\n    const fallbackLngKey = Array.isArray(fallbackLng) ? fallbackLng.join('|') : fallbackLng;\n    if (fallbackLngKey !== this._cachedFallbackLng) {\n      this.resolveHierarchyCache = {};\n      this._cachedFallbackLng = fallbackLngKey;\n    }\n    const hasCacheableFallback = fallbackCode === undefined || fallbackCode === false || isString(fallbackCode);\n    const usesUncacheableOptionsFallback = fallbackCode === undefined && typeof this.options.fallbackLng === 'function';\n    const cacheable = isString(code) && hasCacheableFallback && !usesUncacheableOptionsFallback;\n    let cacheKey = null;\n    if (cacheable) {\n      let fallbackCacheKey;\n      if (fallbackCode === undefined) fallbackCacheKey = 'undefined';else if (fallbackCode === false) fallbackCacheKey = 'boolean:false';else fallbackCacheKey = `string:${fallbackCode}`;\n      cacheKey = `${code.length}:${code}|${fallbackCacheKey}`;\n    }\n    if (cacheKey !== null) {\n      const cached = this.resolveHierarchyCache[cacheKey];\n      if (cached !== undefined) return cached.slice();\n    }\n    const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (isString(code) && (code.includes('-') || code.includes('_'))) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (isString(code)) {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      const formattedFc = this.formatLanguageCode(fc);\n      if (!codes.includes(formattedFc)) addCode(formattedFc);\n    });\n    if (cacheKey !== null) {\n      this.resolveHierarchyCache[cacheKey] = codes;\n      return codes.slice();\n    }\n    return codes;\n  }\n}\n\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nconst dummyRule = {\n  select: count => count === 1 ? 'one' : 'other',\n  resolvedOptions: () => ({\n    pluralCategories: ['one', 'other']\n  })\n};\nclass PluralResolver {\n  constructor(languageUtils, options = {}) {\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.pluralRulesCache = {};\n  }\n  clearCache() {\n    this.pluralRulesCache = {};\n  }\n  getRule(code, options = {}) {\n    const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n    const type = options.ordinal ? 'ordinal' : 'cardinal';\n    const cacheKey = JSON.stringify({\n      cleanedCode,\n      type\n    });\n    if (cacheKey in this.pluralRulesCache) {\n      return this.pluralRulesCache[cacheKey];\n    }\n    let rule;\n    try {\n      rule = new Intl.PluralRules(cleanedCode, {\n        type\n      });\n    } catch (err) {\n      if (typeof Intl === 'undefined') {\n        this.logger.error('No Intl support, please use an Intl polyfill!');\n        return dummyRule;\n      }\n      if (!code.match(/-|_/)) return dummyRule;\n      const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n      rule = this.getRule(lngPart, options);\n    }\n    this.pluralRulesCache[cacheKey] = rule;\n    return rule;\n  }\n  needsPlural(code, options = {}) {\n    let rule = this.getRule(code, options);\n    if (!rule) rule = this.getRule('dev', options);\n    return rule?.resolvedOptions().pluralCategories.length > 1;\n  }\n  getPluralFormsOfKey(code, key, options = {}) {\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code, options = {}) {\n    let rule = this.getRule(code, options);\n    if (!rule) rule = this.getRule('dev', options);\n    if (!rule) return [];\n    return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n  }\n  getSuffix(code, count, options = {}) {\n    const rule = this.getRule(code, options);\n    if (rule) {\n      return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return this.getSuffix('dev', count, options);\n  }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && isString(key)) {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n  constructor(options = {}) {\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options?.interpolation?.format || (value => value);\n    this.init(options);\n  }\n  init(options = {}) {\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const {\n      escape: escape$1,\n      escapeValue,\n      useRawValueToEscape,\n      prefix,\n      prefixEscaped,\n      suffix,\n      suffixEscaped,\n      formatSeparator,\n      unescapeSuffix,\n      unescapePrefix,\n      nestingPrefix,\n      nestingPrefixEscaped,\n      nestingSuffix,\n      nestingSuffixEscaped,\n      nestingOptionsSeparator,\n      maxReplaces,\n      alwaysFormat\n    } = options.interpolation;\n    this.escape = escape$1 !== undefined ? escape$1 : escape;\n    this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n    this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n    this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n    this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n    this.formatSeparator = formatSeparator || ',';\n    this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n    this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n    this.maxReplaces = maxReplaces || 1000;\n    this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp?.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']|\"[^\"]*\"|'[^']*'|\\\\((?:[^()\"']|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    const handleFormat = key => {\n      if (!key.includes(this.formatSeparator)) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n      this.logger.warn('nesting options string contains interpolated variables with escapeValue: false — ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n    }\n    const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => val\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? this.escape(val) : val\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = isString(temp) ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (!isString(value) && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], regexSafe(safeValue));\n        if (skipOnVariables) {\n          todo.regex.lastIndex += safeValue.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc, options = {}) {\n    let match;\n    let value;\n    let clonedOptions;\n    const handleHasOptions = (key, inheritedOptions) => {\n      const sep = this.nestingOptionsSeparator;\n      if (!key.includes(sep)) return key;\n      const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n      return key;\n    };\n    const nestingRegexp = new RegExp(this.nestingRegexp);\n    let out = '';\n    let lastEnd = 0;\n    while (match = nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      const keyEndIndex = /{.*}/s.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n      if (keyEndIndex !== -1) {\n        formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n        match[1] = match[1].slice(0, keyEndIndex);\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && !isString(value)) return value;\n      if (!isString(value)) value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (formatters.length) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      out += str.slice(lastEnd, match.index) + makeString(value);\n      lastEnd = nestingRegexp.lastIndex;\n      this.regexp.lastIndex = 0;\n    }\n    return lastEnd ? out + str.slice(lastEnd) : str;\n  }\n}\n\nconst parseFormatStr = formatStr => {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.includes('(')) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].slice(0, -1);\n    if (formatName === 'currency' && !optStr.includes(':')) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (opt) {\n          const [key, ...rest] = opt.split(':');\n          const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n          const trimmedKey = key.trim();\n          if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n          if (val === 'false') formatOptions[trimmedKey] = false;\n          if (val === 'true') formatOptions[trimmedKey] = true;\n          if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n        }\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n};\nconst createCachedFormatter = fn => {\n  const cache = {};\n  return (v, l, o) => {\n    let optForCache = o;\n    if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n      optForCache = {\n        ...optForCache,\n        [o.interpolationkey]: undefined\n      };\n    }\n    const key = l + JSON.stringify(optForCache);\n    let frm = cache[key];\n    if (!frm) {\n      frm = fn(getCleanedCode(l), o);\n      cache[key] = frm;\n    }\n    return frm(v);\n  };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n  constructor(options = {}) {\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.init(options);\n  }\n  init(services, options = {\n    interpolation: {}\n  }) {\n    this.formatSeparator = options.interpolation.formatSeparator || ',';\n    const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n    this.formats = {\n      number: cf((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: cf((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: cf((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: cf((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: cf((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng, options = {}) {\n    if (!format) return value;\n    if (value == null) return value;\n    const rawFormats = format.split(this.formatSeparator);\n    const formats = [];\n    for (let i = 0; i < rawFormats.length; i++) {\n      let f = rawFormats[i];\n      while (f.indexOf('(') > -1 && !f.includes(')') && i + 1 < rawFormats.length) {\n        f = `${f}${this.formatSeparator}${rawFormats[++i]}`;\n      }\n      formats.push(f);\n    }\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nconst removePending = (q, name) => {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n};\nclass Connector extends EventEmitter {\n  constructor(backend, store, services, options = {}) {\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    this.backend?.init?.(services, options.backend, options);\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (!err && data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    if (err && data) this.state[name] = 0;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces, options = {}, callback) {\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n    if (isString(namespaces)) namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name, prefix = '') {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n    if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend?.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nconst get = () => ({\n  debug: false,\n  initAsync: true,\n  ns: ['translation'],\n  defaultNS: ['translation'],\n  fallbackLng: ['dev'],\n  fallbackNS: false,\n  supportedLngs: false,\n  nonExplicitSupportedLngs: false,\n  load: 'all',\n  preload: false,\n  keySeparator: '.',\n  nsSeparator: ':',\n  pluralSeparator: '_',\n  contextSeparator: '_',\n  enableSelector: false,\n  partialBundledLanguages: false,\n  saveMissing: false,\n  updateMissing: false,\n  saveMissingTo: 'fallback',\n  saveMissingPlurals: true,\n  missingKeyHandler: false,\n  missingInterpolationHandler: false,\n  postProcess: false,\n  postProcessPassResolved: false,\n  returnNull: false,\n  returnEmptyString: true,\n  returnObjects: false,\n  joinArrays: false,\n  returnedObjectHandler: false,\n  parseMissingKeyHandler: false,\n  appendNamespaceToMissingKey: false,\n  appendNamespaceToCIMode: false,\n  overloadTranslationOptionHandler: args => {\n    let ret = {};\n    if (typeof args[1] === 'object') ret = args[1];\n    if (isString(args[1])) ret.defaultValue = args[1];\n    if (isString(args[2])) ret.tDescription = args[2];\n    if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n      const options = args[3] || args[2];\n      Object.keys(options).forEach(key => {\n        ret[key] = options[key];\n      });\n    }\n    return ret;\n  },\n  interpolation: {\n    escapeValue: true,\n    prefix: '{{',\n    suffix: '}}',\n    formatSeparator: ',',\n    unescapePrefix: '-',\n    nestingPrefix: '$t(',\n    nestingSuffix: ')',\n    nestingOptionsSeparator: ',',\n    maxReplaces: 1000,\n    skipOnVariables: true\n  },\n  cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n  if (isString(options.ns)) options.ns = [options.ns];\n  if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n  if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n};\nclass I18n extends EventEmitter {\n  constructor(options = {}, callback) {\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initAsync) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init(options = {}, callback) {\n    this.isInitializing = true;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (options.defaultNS == null && options.ns) {\n      if (isString(options.ns)) {\n        options.defaultNS = options.ns;\n      } else if (!options.ns.includes('translation')) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    this.options.interpolation = {\n      ...defOpts.interpolation,\n      ...this.options.interpolation\n    };\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n      this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n    }\n    const createClassOnDemand = ClassOrObject => {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    };\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator\n      });\n      if (formatter) {\n        s.formatter = createClassOnDemand(formatter);\n        if (s.formatter.init) s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', (event, ...args) => {\n        this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', (event, ...args) => {\n        this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = (...args) => this.store[fcName](...args);\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = (...args) => {\n        this.store[fcName](...args);\n        return this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        this.isInitializing = false;\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initAsync) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language, callback = noop) {\n    let usedCallback = callback;\n    const usedLng = isString(language) ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (!toLoad.includes(l)) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      this.options.preload?.forEach?.(l => append(l));\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'function') {\n      callback = lngs;\n      lngs = undefined;\n    }\n    if (typeof ns === 'function') {\n      callback = ns;\n      ns = undefined;\n    }\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].includes(l)) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].includes(lngInLngs)) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n    if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n      this.resolvedLanguage = l;\n      this.languages.unshift(l);\n    }\n  }\n  changeLanguage(lng, callback) {\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        if (this.isLanguageChangingTo === lng) {\n          setLngProps(l);\n          this.translator.changeLanguage(l);\n          this.isLanguageChangingTo = undefined;\n          this.emit('languageChanged', l);\n          this.logger.log('languageChanged', l);\n        }\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve((...args) => this.t(...args));\n      if (callback) callback(err, (...args) => this.t(...args));\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const fl = isString(lngs) ? lngs : lngs && lngs[0];\n      const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        this.services.languageDetector?.cacheUserLanguage?.(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix, fixedOpts) {\n    const scopeNs = fixedOpts?.scopeNs;\n    const fixedT = (key, opts, ...rest) => {\n      let o;\n      if (typeof opts !== 'object') {\n        o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        o = {\n          ...opts\n        };\n      }\n      o.lng = o.lng || fixedT.lng;\n      o.lngs = o.lngs || fixedT.lngs;\n      const explicitCallNs = o.ns !== undefined && o.ns !== null;\n      o.ns = o.ns || fixedT.ns;\n      if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const selectorOpts = {\n        ...this.options,\n        ...o\n      };\n      if (Array.isArray(scopeNs) && !explicitCallNs) selectorOpts.ns = scopeNs;\n      if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n      const keySeparator = this.options.keySeparator || '.';\n      let resultKey;\n      if (o.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => {\n          if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n          return `${o.keyPrefix}${keySeparator}${k}`;\n        });\n      } else {\n        if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n        resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return this.t(resultKey, o);\n    };\n    if (isString(lng)) {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t(...args) {\n    return this.translator?.translate(...args);\n  }\n  exists(...args) {\n    return this.translator?.exists(...args);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns, options = {}) {\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 0 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    const {\n      languageUtils\n    } = this.services;\n    const loadLng = !options.lng ? lng : languageUtils.isSupportedCode(lng) && languageUtils.toResolveHierarchy(lng, false)[0];\n    if ((!loadLng || loadNotPending(loadLng, ns)) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (isString(ns)) ns = [ns];\n    ns.forEach(n => {\n      if (!this.options.ns.includes(n)) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (isString(lngs)) lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    try {\n      const l = new Intl.Locale(lng);\n      if (l && l.getTextInfo) {\n        const ti = l.getTextInfo();\n        if (ti && ti.direction) return ti.direction;\n      }\n    } catch (e) {}\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n    if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n    return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance(options = {}, callback) {\n    const instance = new I18n(options, callback);\n    instance.createInstance = I18n.createInstance;\n    return instance;\n  }\n  cloneInstance(options = {}, callback = noop) {\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      preload: false,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n        prev[l] = {\n          ...this.store.data[l]\n        };\n        prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n          acc[n] = {\n            ...prev[l][n]\n          };\n          return acc;\n        }, prev[l]);\n        return prev;\n      }, {});\n      clone.store = new ResourceStore(clonedData, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    if (options.interpolation) {\n      const defOpts = get();\n      const mergedInterpolation = {\n        ...defOpts.interpolation,\n        ...this.options.interpolation,\n        ...options.interpolation\n      };\n      const mergedForInterpolator = {\n        ...mergedOptions,\n        interpolation: mergedInterpolation\n      };\n      clone.services.interpolator = new Interpolator(mergedForInterpolator);\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', (event, ...args) => {\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","// inlined from the former `void-elements` dependency, so the package has\n// zero runtime dependencies. `!doctype`/`!DOCTYPE` are treated as void so a\n// doctype parses as a childless node instead of swallowing the document.\nconst voidElements = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true,\n  '!doctype': true,\n  '!DOCTYPE': true,\n};\n\nconst attrRE = /\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\"[^\"]*\"|'[^']*')/g;\n\nfunction parseTag(tag) {\n  const res = {\n    type: 'tag',\n    name: '',\n    voidElement: false,\n    attrs: {},\n    children: [],\n  };\n\n  const tagMatch = tag.match(/<\\/?([^\\s]+?)[/\\s>]/);\n  if (tagMatch) {\n    res.name = tagMatch[1];\n    // void-element lookup stays case sensitive on purpose: react-i18next\n    // relies on `<Br>` NOT being treated as a void `<br>` (see 1df0f9d)\n    if (voidElements[tagMatch[1]] || tag.charAt(tag.length - 2) === '/') {\n      res.voidElement = true;\n    }\n\n    // handle comment tag\n    if (res.name.startsWith('!--')) {\n      const endIndex = tag.indexOf('-->');\n      return {\n        type: 'comment',\n        comment: endIndex !== -1 ? tag.slice(4, endIndex) : '',\n      }\n    }\n  }\n\n  const reg = new RegExp(attrRE);\n  let result = null;\n  for (;;) {\n    result = reg.exec(tag);\n\n    if (result === null) {\n      break\n    }\n\n    if (!result[0].trim()) {\n      continue\n    }\n\n    if (result[1]) {\n      const attr = result[1].trim();\n      // boolean attributes carry `null` so stringify can render them bare\n      // (`<input disabled/>` instead of `<input disabled=\"\"/>`)\n      let arr = [attr, null];\n\n      const eq = attr.indexOf('=');\n      if (eq > -1) {\n        // split at the first `=` only, so `data-x=a=b` keeps its full value\n        arr = [attr.slice(0, eq), attr.slice(eq + 1)];\n      }\n\n      res.attrs[arr[0]] = arr[1];\n      reg.lastIndex--;\n    } else if (result[2]) {\n      res.attrs[result[2]] = result[3].trim().substring(1, result[3].length - 1);\n    }\n  }\n\n  return res\n}\n\n// comments are matched as a whole (so `>` inside them is fine), everything\n// else tag-shaped is matched by the second alternative\nconst tagRE = /<!--[\\s\\S]*?-->|<[a-zA-Z0-9\\-!/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g;\nconst tagNameRE = /<\\/?([^\\s]+?)[/\\s>]/;\nconst whitespaceRE = /^\\s*$/;\n// tags whose content is raw text: nothing inside them is markup\nconst rawTextRE = /^(script|style)$/i;\n\n// placeholder for `<` of tags rejected by options.allowedTags; restored to a\n// literal `<` in text/attr/comment content after parsing (U+0000 cannot appear\n// in sane input, and a collision would merely render as an extra `<`)\nconst sentinel = '\\u0000';\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null);\n\nfunction restoreSentinels(nodes) {\n  nodes.forEach(function (node) {\n    if (node.type === 'text') {\n      node.content = node.content.split(sentinel).join('<');\n      return\n    }\n    if (node.type === 'comment') {\n      node.comment = node.comment.split(sentinel).join('<');\n      return\n    }\n    for (const key in node.attrs) {\n      const value = node.attrs[key];\n      if (typeof value === 'string' && value.indexOf(sentinel) > -1) {\n        node.attrs[key] = value.split(sentinel).join('<');\n      }\n    }\n    if (node.children.length) {\n      restoreSentinels(node.children);\n    }\n  });\n}\n\nfunction parse(html, options) {\n  const components = (options && options.components) || empty;\n  const allowedTags = options && options.allowedTags;\n  let restoreNeeded = false;\n  if (allowedTags) {\n    const isAllowed =\n      typeof allowedTags === 'function'\n        ? allowedTags\n        : function (name) {\n            return allowedTags.indexOf(name) > -1\n          };\n    // neutralize tags whose name is not allowed, so they parse as text.\n    // on a disallowed match only the leading `<` is escaped and scanning\n    // resumes right after it, so a valid tag glued into the same match\n    // (e.g. `<bold>` inside `<10, <20, and <bold>`) still gets recognized\n    let out = '';\n    let pos = 0;\n    tagRE.lastIndex = 0;\n    let am;\n    while ((am = tagRE.exec(html))) {\n      const tag = am[0];\n      out += html.slice(pos, am.index);\n      const nameMatch = tag.match(tagNameRE);\n      if (tag.startsWith('<!--') || (nameMatch && isAllowed(nameMatch[1]))) {\n        out += tag;\n        pos = am.index + tag.length;\n      } else {\n        restoreNeeded = true;\n        out += sentinel;\n        pos = am.index + 1;\n        tagRE.lastIndex = pos;\n      }\n    }\n    html = out + html.slice(pos);\n  }\n  const result = [];\n  const arr = [];\n  let current;\n  let level = -1;\n  let inComponent = false;\n  // while parsing raw-text content (script/style), tag-looking matches\n  // before this index belong to the content and must be skipped\n  let rawUntil = 0;\n  // lazily created lowercase copy for case-insensitive raw-text close-tag search\n  let htmlLower;\n\n  // handle text at top level\n  if (html.indexOf('<') !== 0) {\n    const end = html.indexOf('<');\n    result.push({\n      type: 'text',\n      content: end === -1 ? html : html.substring(0, end),\n    });\n  }\n\n  // collect matches with an exec loop instead of matchAll to keep ES5 API compat\n  const matches = [];\n  let m;\n  while ((m = tagRE.exec(html))) {\n    matches.push(m);\n  }\n  matches.forEach(function (match, i) {\n    const tag = match[0];\n    if (!tag) return\n    // comments match as a whole; their content must not trigger the\n    // mismatched-bracket split below\n    if (tag.startsWith('<!--')) return\n    // count brackets outside quoted attribute values, so `<` inside an\n    // attribute (e.g. title=\"1 < 2\") can't trigger a bogus split\n    let lts = 0;\n    let gts = 0;\n    let secondLt = -1;\n    let quote = null;\n    for (let j = 0; j < tag.length; j++) {\n      const c = tag.charAt(j);\n      if (quote) {\n        if (c === quote) quote = null;\n      } else if (c === '\"' || c === \"'\") {\n        quote = c;\n      } else if (c === '<') {\n        lts++;\n        if (lts === 2) secondLt = j;\n      } else if (c === '>') {\n        gts++;\n      }\n    }\n    // only split when the remainder is itself a valid tag start; otherwise\n    // a fragment like `< <!-->` desyncs the string-level isComment check\n    // from parseTag's name-based comment detection and crashes the walker\n    const validSplit =\n      secondLt > -1 && /[a-zA-Z0-9\\-!/]/.test(tag.charAt(secondLt + 1));\n    if (lts > gts && validSplit) {\n      const firstPart = tag.substring(0, secondLt);\n      const secondPart = tag.substring(firstPart.length);\n      matches[i][0] = secondPart;\n      matches[i].index += firstPart.length;\n    }\n  });\n  matches.forEach(function (match, i) {\n    const tag = match[0];\n    if (!tag) return\n    const index = match.index;\n    if (index < rawUntil) return\n    if (inComponent) {\n      if (tag !== '</' + current.name + '>') {\n        return\n      } else {\n        inComponent = false;\n      }\n    }\n    const isOpen = tag.charAt(1) !== '/';\n    const isComment = tag.startsWith('<!--');\n    const start = index + tag.length;\n    const nextChar = html.charAt(start);\n    const nextMatch = matches[i + 1];\n    let isText;\n    if (nextChar === '<' && nextMatch) {\n      const nextTag = html.substring(start, nextMatch.index);\n      isText = nextTag.split('<').length > nextTag.split('>').length;\n    }\n\n    let parent;\n\n    if (isComment) {\n      const comment = parseTag(tag);\n\n      // if we're at root, push new base node\n      if (level < 0) {\n        result.push(comment);\n        return result\n      }\n      parent = arr[level];\n      parent.children.push(comment);\n\n      const text = html.slice(start, nextMatch ? nextMatch.index : undefined);\n      if (text.length > 0) {\n        parent.children.push({\n          type: 'text',\n          content: text,\n        });\n      }\n      return result\n    }\n\n    if (isOpen) {\n      level++;\n\n      current = parseTag(tag);\n      if (current.type === 'tag' && components[current.name]) {\n        current.type = 'component';\n        inComponent = true;\n      }\n\n      let isRawText = false;\n      if (\n        !inComponent &&\n        !current.voidElement &&\n        rawTextRE.test(current.name)\n      ) {\n        // raw-text element: everything up to the matching close tag is one\n        // text child, regardless of what it looks like\n        isRawText = true;\n        htmlLower || (htmlLower = html.toLowerCase());\n        const closeIndex = htmlLower.indexOf(\n          '</' + current.name.toLowerCase() + '>',\n          start,\n        );\n        const contentEnd = closeIndex === -1 ? html.length : closeIndex;\n        const content = html.slice(start, contentEnd);\n        if (content) {\n          current.children.push({\n            type: 'text',\n            content,\n          });\n        }\n        rawUntil = contentEnd;\n      }\n\n      if (\n        !current.voidElement &&\n        !inComponent &&\n        !isRawText &&\n        nextChar &&\n        nextChar !== '<'\n      ) {\n        // text content runs to the next actual tag match; stray `<`\n        // characters in between are part of the text\n        current.children.push({\n          type: 'text',\n          content: html.slice(start, nextMatch ? nextMatch.index : undefined),\n        });\n      }\n\n      // if we're at root, push new base node\n      if (level === 0) {\n        result.push(current);\n      }\n\n      parent = arr[level - 1];\n\n      if (parent) {\n        parent.children.push(current);\n      }\n\n      arr[level] = current;\n    }\n\n    if (!isOpen || current.voidElement) {\n      if (\n        level > -1 &&\n        (current.voidElement || current.name === tag.slice(2, -1))\n      ) {\n        level--;\n        // move current up a level to match the end tag\n        current = level === -1 ? result : arr[level];\n      }\n      if (!inComponent && (nextChar !== '<' || isText) && nextChar) {\n        // trailing text node\n        // if we're at the root, push a base text node. otherwise add as\n        // a child to the current node.\n        parent = level === -1 ? result : arr[level].children;\n\n        // the text node runs to the next actual tag match; -1 means\n        // there's no tag after it (trailing text)\n        const end = nextMatch ? nextMatch.index : -1;\n        let content = html.slice(start, end === -1 ? undefined : end);\n        // if a node is nothing but whitespace, collapse it as the spec states:\n        // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n        if (whitespaceRE.test(content)) {\n          content = ' ';\n        }\n        // don't add whitespace-only text nodes if they would be trailing text nodes\n        // or if they would be leading whitespace-only text nodes:\n        //  * end > -1 indicates this is not a trailing text node\n        //  * leading node is when level is -1 and parent has length 0\n        if ((end > -1 && level + parent.length >= 0) || content !== ' ') {\n          parent.push({\n            type: 'text',\n            content,\n          });\n        }\n      }\n    }\n  });\n\n  if (restoreNeeded) {\n    restoreSentinels(result);\n  }\n\n  return result\n}\n\nfunction attrString(attrs) {\n  const buff = [];\n  for (const key in attrs) {\n    if (attrs[key] === null) {\n      // boolean attribute, render bare\n      buff.push(key);\n    } else {\n      // escape double quotes so values parsed from single-quoted or\n      // multiline attributes can't break out of the generated markup\n      buff.push(key + '=\"' + String(attrs[key]).replace(/\"/g, '&quot;') + '\"');\n    }\n  }\n  if (!buff.length) {\n    return ''\n  }\n  return ' ' + buff.join(' ')\n}\n\nfunction stringifyNode(buff, doc) {\n  switch (doc.type) {\n    case 'text':\n      return buff + doc.content\n    case 'tag': {\n      // a doctype is void but must not self-close: `<!DOCTYPE html>` not `<!DOCTYPE html/>`\n      const tagEnd =\n        doc.voidElement && doc.name.toLowerCase() !== '!doctype' ? '/>' : '>';\n      buff += '<' + doc.name + (doc.attrs ? attrString(doc.attrs) : '') + tagEnd;\n      if (doc.voidElement) {\n        return buff\n      }\n      return (\n        buff + doc.children.reduce(stringifyNode, '') + '</' + doc.name + '>'\n      )\n    }\n    case 'comment':\n      buff += '<!--' + doc.comment + '-->';\n      return buff\n  }\n}\n\nfunction stringify(doc) {\n  return doc.reduce(function (token, rootEl) {\n    return token + stringifyNode('', rootEl)\n  }, '')\n}\n\nvar index = {\n  parse,\n  stringify,\n};\n\nexport { index as default, parse, stringify };\n","export const warn = (i18n, code, msg, rest) => {\n  const args = [msg, {\n    code,\n    ...(rest || {})\n  }];\n  if (i18n?.services?.logger?.forward) {\n    return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n  }\n  if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n  if (i18n?.services?.logger?.warn) {\n    i18n.services.logger.warn(...args);\n  } else if (console?.warn) {\n    console.warn(...args);\n  }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n  if (isString(msg) && alreadyWarned[msg]) return;\n  if (isString(msg)) alreadyWarned[msg] = new Date();\n  warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n  if (i18n.isInitialized) {\n    cb();\n  } else {\n    const initialized = () => {\n      setTimeout(() => {\n        i18n.off('initialized', initialized);\n      }, 0);\n      cb();\n    };\n    i18n.on('initialized', initialized);\n  }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n  i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n  if (isString(ns)) ns = [ns];\n  if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n  ns.forEach(n => {\n    if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n  });\n  i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n  if (!i18n.languages || !i18n.languages.length) {\n    warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n      languages: i18n.languages\n    });\n    return true;\n  }\n  return i18n.hasLoadedNamespace(ns, {\n    lng: options.lng,\n    precheck: (i18nInstance, loadNotPending) => {\n      if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n    }\n  });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n  '&amp;': '&',\n  '&#38;': '&',\n  '&lt;': '<',\n  '&#60;': '<',\n  '&gt;': '>',\n  '&#62;': '>',\n  '&apos;': \"'\",\n  '&#39;': \"'\",\n  '&quot;': '\"',\n  '&#34;': '\"',\n  '&nbsp;': '\\u00A0',\n  '&#160;': '\\u00A0',\n  '&copy;': '©',\n  '&#169;': '©',\n  '&reg;': '®',\n  '&#174;': '®',\n  '&hellip;': '…',\n  '&#8230;': '…',\n  '&#x2F;': '/',\n  '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n  bindI18n: 'languageChanged',\n  bindI18nStore: '',\n  transEmptyNodeValue: '',\n  transSupportBasicHtmlNodes: true,\n  transWrapTextNodes: '',\n  transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n  useSuspense: true,\n  unescape,\n  transDefaultProps: undefined\n};\nexport const setDefaults = (options = {}) => {\n  defaultOptions = {\n    ...defaultOptions,\n    ...options\n  };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n  i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { Fragment, isValidElement, cloneElement, createElement, Children } from 'react';\nimport { keyFromSelector } from 'i18next';\nimport HTML from 'html-parse-stringify';\nimport { isObject, isString, warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nimport { unescape } from './unescape.js';\nconst hasChildren = (node, checkLength) => {\n  if (!node) return false;\n  const base = node.props?.children ?? node.children;\n  if (checkLength) return base.length > 0;\n  return !!base;\n};\nconst getChildren = node => {\n  if (!node) return [];\n  const children = node.props?.children ?? node.children;\n  return node.props?.i18nIsDynamicList ? getAsArray(children) : children;\n};\nconst hasValidReactChildren = children => getAsArray(children).every(isValidElement);\nconst getAsArray = data => Array.isArray(data) ? data : [data];\nconst mergeProps = (source, target) => {\n  const newTarget = {\n    ...target\n  };\n  newTarget.props = {\n    ...target.props,\n    ...source.props\n  };\n  return newTarget;\n};\nconst getValuesFromChildren = children => {\n  const values = {};\n  if (!children) return values;\n  const getData = childs => {\n    const childrenArray = getAsArray(childs);\n    childrenArray.forEach(child => {\n      if (isString(child)) return;\n      if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(values, child);\n    });\n  };\n  getData(children);\n  return values;\n};\nexport const nodesToString = (children, i18nOptions, i18n, i18nKey) => {\n  if (!children) return '';\n  let stringNode = '';\n  const childrenArray = getAsArray(children);\n  const keepArray = i18nOptions?.transSupportBasicHtmlNodes ? i18nOptions.transKeepBasicHtmlNodesFor ?? [] : [];\n  childrenArray.forEach((child, childIndex) => {\n    if (isString(child)) {\n      stringNode += `${child}`;\n      return;\n    }\n    if (isValidElement(child)) {\n      const {\n        props,\n        type\n      } = child;\n      const childPropsCount = Object.keys(props).length;\n      const shouldKeepChild = keepArray.indexOf(type) > -1;\n      const childChildren = props.children;\n      if (!childChildren && shouldKeepChild && !childPropsCount) {\n        stringNode += `<${type}/>`;\n        return;\n      }\n      if (!childChildren && (!shouldKeepChild || childPropsCount) || props.i18nIsDynamicList) {\n        stringNode += `<${childIndex}></${childIndex}>`;\n        return;\n      }\n      if (shouldKeepChild && childPropsCount <= 1) {\n        const cnt = isString(childChildren) ? childChildren : nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n        stringNode += `<${type}>${cnt}</${type}>`;\n        return;\n      }\n      const content = nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n      stringNode += `<${childIndex}>${content}</${childIndex}>`;\n      return;\n    }\n    if (child === null) {\n      warn(i18n, 'TRANS_NULL_VALUE', `Passed in a null value as child`, {\n        i18nKey\n      });\n      return;\n    }\n    if (isObject(child)) {\n      const {\n        format,\n        ...clone\n      } = child;\n      const keys = Object.keys(clone);\n      if (keys.length === 1) {\n        const value = format ? `${keys[0]}, ${format}` : keys[0];\n        stringNode += `{{${value}}}`;\n        return;\n      }\n      warn(i18n, 'TRANS_INVALID_OBJ', `Invalid child - Object should only have keys {{ value, format }} (format is optional).`, {\n        i18nKey,\n        child\n      });\n      return;\n    }\n    warn(i18n, 'TRANS_INVALID_VAR', `Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`, {\n      i18nKey,\n      child\n    });\n  });\n  return stringNode;\n};\nconst renderNodes = (children, knownComponentsMap, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {\n  if (targetString === '') return [];\n  const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n  const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n  if (!children && !knownComponentsMap && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n  const data = knownComponentsMap ?? {};\n  const getData = childs => {\n    const childrenArray = getAsArray(childs);\n    childrenArray.forEach(child => {\n      if (isString(child)) return;\n      if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(data, child);\n    });\n  };\n  getData(children);\n  const knownNames = Object.keys(data);\n  const allowedTags = name => /^\\d+$/.test(name) || keepArray.indexOf(name) > -1 || knownNames.indexOf(name) > -1;\n  const ast = HTML.parse(`<0>${targetString}</0>`, {\n    allowedTags\n  });\n  const opts = {\n    ...data,\n    ...combinedTOpts\n  };\n  const renderInner = (child, node, rootReactNode) => {\n    const childs = getChildren(child);\n    const mappedChildren = mapAST(childs, node.children, rootReactNode);\n    return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props?.i18nIsDynamicList ? childs : mappedChildren;\n  };\n  const pushTranslatedJSX = (child, inner, mem, i, isVoid) => {\n    if (child.dummy) {\n      child.children = inner;\n      mem.push(cloneElement(child, {\n        key: i\n      }, isVoid ? undefined : inner));\n    } else {\n      mem.push(...Children.map([child], c => {\n        if (c.type === Fragment || c.props?.i18nIsDynamicList !== undefined) {\n          const freshProps = {\n            key: i\n          };\n          if (c && c.props) {\n            Object.keys(c.props).forEach(k => {\n              if (k === 'children' || k === 'i18nIsDynamicList') return;\n              freshProps[k] = c.props[k];\n            });\n          }\n          return createElement(c.type, freshProps, isVoid ? null : inner);\n        }\n        const override = {\n          key: i\n        };\n        if (c && c.props) {\n          Object.keys(c.props).forEach(k => {\n            if (k === 'ref' || k === 'children') return;\n            override[k] = c.props[k];\n          });\n        }\n        return cloneElement(c, override, isVoid ? null : inner);\n      }));\n    }\n  };\n  const mapAST = (reactNode, astNode, rootReactNode) => {\n    const reactNodes = getAsArray(reactNode);\n    const astNodes = getAsArray(astNode);\n    const keepTagOccurrence = {};\n    return astNodes.reduce((mem, node, i) => {\n      const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n      if (node.type === 'tag') {\n        let tmp = reactNodes[parseInt(node.name, 10)];\n        if (!tmp && knownComponentsMap) tmp = knownComponentsMap[node.name];\n        if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n        if (!tmp) tmp = {};\n        const props = {\n          ...node.attrs\n        };\n        if (shouldUnescape) {\n          Object.keys(props).forEach(p => {\n            const val = props[p];\n            if (isString(val)) {\n              props[p] = unescape(val);\n            }\n          });\n        }\n        const child = Object.keys(props).length !== 0 ? mergeProps({\n          props\n        }, tmp) : tmp;\n        const isElement = isValidElement(child);\n        const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n        const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && isObject(child) && child.dummy && !isElement;\n        const isKnownComponent = isObject(knownComponentsMap) && Object.hasOwnProperty.call(knownComponentsMap, node.name);\n        if (isString(child)) {\n          const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n          mem.push(value);\n        } else if (hasChildren(child) || isValidTranslationWithChildren) {\n          const inner = renderInner(child, node, rootReactNode);\n          pushTranslatedJSX(child, inner, mem, i);\n        } else if (isEmptyTransWithHTML) {\n          const inner = mapAST(reactNodes, node.children, rootReactNode);\n          pushTranslatedJSX(child, inner, mem, i);\n        } else if (Number.isNaN(parseFloat(node.name))) {\n          if (isKnownComponent) {\n            const inner = renderInner(child, node, rootReactNode);\n            pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n          } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n            if (node.voidElement) {\n              mem.push(createElement(node.name, {\n                key: `${node.name}-${i}`\n              }));\n            } else {\n              const occurrence = keepTagOccurrence[node.name] || 0;\n              keepTagOccurrence[node.name] = occurrence + 1;\n              let matched;\n              let seen = 0;\n              for (let r = 0; r < reactNodes.length; r += 1) {\n                const rn = reactNodes[r];\n                if (isValidElement(rn) && rn.type === node.name) {\n                  if (seen === occurrence) {\n                    matched = rn;\n                    break;\n                  }\n                  seen += 1;\n                }\n              }\n              const innerScope = matched ? getAsArray(getChildren(matched)) : reactNodes;\n              const inner = mapAST(innerScope, node.children, rootReactNode);\n              mem.push(createElement(node.name, {\n                key: `${node.name}-${i}`\n              }, inner));\n            }\n          } else if (node.voidElement) {\n            mem.push(`<${node.name} />`);\n          } else {\n            const inner = mapAST(reactNodes, node.children, rootReactNode);\n            mem.push(`<${node.name}>${inner}</${node.name}>`);\n          }\n        } else if (isObject(child) && !isElement) {\n          const content = node.children[0] ? translationContent : null;\n          if (content) mem.push(content);\n        } else {\n          pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n        }\n      } else if (node.type === 'text') {\n        const wrapTextNodes = i18nOptions.transWrapTextNodes;\n        const unescapeFn = typeof i18nOptions.unescape === 'function' ? i18nOptions.unescape : getDefaults().unescape;\n        const content = shouldUnescape ? unescapeFn(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n        if (wrapTextNodes) {\n          mem.push(createElement(wrapTextNodes, {\n            key: `${node.name}-${i}`\n          }, content));\n        } else {\n          mem.push(content);\n        }\n      }\n      return mem;\n    }, []);\n  };\n  const result = mapAST([{\n    dummy: true,\n    children: children || []\n  }], ast, getAsArray(children || []));\n  return getChildren(result[0]);\n};\nconst fixComponentProps = (component, index, translation) => {\n  const componentKey = component.key || index;\n  const comp = cloneElement(component, {\n    key: componentKey\n  });\n  if (!comp.props || !comp.props.children || translation.indexOf(`${index}/>`) < 0 && translation.indexOf(`${index} />`) < 0) {\n    return comp;\n  }\n  function Componentized() {\n    return createElement(Fragment, null, comp);\n  }\n  return createElement(Componentized, {\n    key: componentKey\n  });\n};\nconst generateArrayComponents = (components, translation) => components.map((c, index) => fixComponentProps(c, index, translation));\nconst generateObjectComponents = (components, translation) => {\n  const componentMap = {};\n  Object.keys(components).forEach(c => {\n    Object.assign(componentMap, {\n      [c]: fixComponentProps(components[c], c, translation)\n    });\n  });\n  return componentMap;\n};\nconst generateComponents = (components, translation, i18n, i18nKey) => {\n  if (!components) return null;\n  if (Array.isArray(components)) {\n    return generateArrayComponents(components, translation);\n  }\n  if (isObject(components)) {\n    return generateObjectComponents(components, translation);\n  }\n  warnOnce(i18n, 'TRANS_INVALID_COMPONENTS', `<Trans /> \"components\" prop expects an object or array`, {\n    i18nKey\n  });\n  return null;\n};\nconst isComponentsMap = object => {\n  if (!isObject(object)) return false;\n  if (Array.isArray(object)) return false;\n  return Object.keys(object).reduce((acc, key) => acc && Number.isNaN(Number.parseFloat(key)), true);\n};\nexport function Trans({\n  children,\n  count,\n  parent,\n  i18nKey,\n  context,\n  tOptions = {},\n  values,\n  defaults,\n  components,\n  ns,\n  i18n: i18nFromProps,\n  t: tFromProps,\n  shouldUnescape,\n  ...additionalProps\n}) {\n  const i18n = i18nFromProps || getI18n();\n  if (!i18n) {\n    warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`, {\n      i18nKey\n    });\n    return children;\n  }\n  const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n  const reactI18nextOptions = {\n    ...getDefaults(),\n    ...i18n.options?.react\n  };\n  let namespaces = ns || (t.ns ? undefined : i18n.options?.defaultNS || 'translation');\n  if (isString(namespaces)) namespaces = [namespaces];\n  const {\n    transDefaultProps\n  } = reactI18nextOptions;\n  const mergedTOptions = transDefaultProps?.tOptions ? {\n    ...transDefaultProps.tOptions,\n    ...tOptions\n  } : tOptions;\n  const mergedShouldUnescape = shouldUnescape ?? transDefaultProps?.shouldUnescape;\n  const mergedValues = transDefaultProps?.values ? {\n    ...transDefaultProps.values,\n    ...values\n  } : values;\n  const mergedComponents = transDefaultProps?.components ? {\n    ...transDefaultProps.components,\n    ...components\n  } : components;\n  const nodeAsString = nodesToString(children, reactI18nextOptions, i18n, i18nKey);\n  const defaultValue = defaults || mergedTOptions?.defaultValue || nodeAsString || reactI18nextOptions.transEmptyNodeValue || (typeof i18nKey === 'function' ? keyFromSelector(i18nKey) : i18nKey);\n  const {\n    hashTransKey\n  } = reactI18nextOptions;\n  const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n  if (i18n.options?.interpolation?.defaultVariables) {\n    values = mergedValues && Object.keys(mergedValues).length > 0 ? {\n      ...mergedValues,\n      ...i18n.options.interpolation.defaultVariables\n    } : {\n      ...i18n.options.interpolation.defaultVariables\n    };\n  } else {\n    values = mergedValues;\n  }\n  const valuesFromChildren = getValuesFromChildren(children);\n  if (valuesFromChildren && typeof valuesFromChildren.count === 'number' && count === undefined) {\n    count = valuesFromChildren.count;\n  }\n  const interpolationOverride = values || count !== undefined && !i18n.options?.interpolation?.alwaysFormat || !children ? mergedTOptions.interpolation : {\n    interpolation: {\n      ...mergedTOptions.interpolation,\n      prefix: '#$?',\n      suffix: '?$#'\n    }\n  };\n  const combinedTOpts = {\n    ...mergedTOptions,\n    context: context || mergedTOptions.context,\n    count,\n    ...values,\n    ...interpolationOverride,\n    defaultValue,\n    ns: namespaces\n  };\n  let translation = key ? t(key, combinedTOpts) : defaultValue;\n  if (translation === key && defaultValue) translation = defaultValue;\n  const generatedComponents = generateComponents(mergedComponents, translation, i18n, i18nKey);\n  let indexedChildren = generatedComponents || children;\n  let componentsMap = null;\n  if (isComponentsMap(generatedComponents)) {\n    componentsMap = generatedComponents;\n    indexedChildren = children;\n  }\n  const content = renderNodes(indexedChildren, componentsMap, translation, i18n, reactI18nextOptions, combinedTOpts, mergedShouldUnescape);\n  const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;\n  return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n  type: '3rdParty',\n  init(instance) {\n    setDefaults(instance.options.react);\n    setI18n(instance);\n  }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n  constructor() {\n    this.usedNamespaces = {};\n  }\n  addUsedNamespaces(namespaces) {\n    namespaces.forEach(ns => {\n      if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n    });\n  }\n  getUsedNamespaces() {\n    return Object.keys(this.usedNamespaces);\n  }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n  const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n  const i18nInitialProps = getInitialProps();\n  return {\n    ...componentsInitialProps,\n    ...i18nInitialProps\n  };\n};\nexport const getInitialProps = () => {\n  const i18n = getI18n();\n  if (!i18n) {\n    console.warn('react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next');\n    return {};\n  }\n  const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n  const ret = {};\n  const initialI18nStore = {};\n  i18n.languages.forEach(l => {\n    initialI18nStore[l] = {};\n    namespaces.forEach(ns => {\n      initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n    });\n  });\n  ret.initialI18nStore = initialI18nStore;\n  ret.initialLanguage = i18n.language;\n  return ret;\n};","import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans({\n  children,\n  count,\n  parent,\n  i18nKey,\n  context,\n  tOptions = {},\n  values,\n  defaults,\n  components,\n  ns,\n  i18n: i18nFromProps,\n  t: tFromProps,\n  shouldUnescape,\n  ...additionalProps\n}) {\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  const t = tFromProps || i18n?.t.bind(i18n);\n  return TransWithoutContext({\n    children,\n    count,\n    parent,\n    i18nKey,\n    context,\n    tOptions,\n    values,\n    defaults,\n    components,\n    ns: ns || (t?.ns ? undefined : defaultNSFromContext || i18n?.options?.defaultNS),\n    i18n,\n    t: tFromProps,\n    shouldUnescape,\n    ...additionalProps\n  });\n}","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useState = React.useState,\n  useEffect = React.useEffect,\n  useLayoutEffect = React.useLayoutEffect,\n  useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n  var value = getSnapshot(),\n    _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n    inst = _useState[0].inst,\n    forceUpdate = _useState[1];\n  useLayoutEffect(\n    function () {\n      inst.value = value;\n      inst.getSnapshot = getSnapshot;\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n    },\n    [subscribe, value, getSnapshot]\n  );\n  useEffect(\n    function () {\n      checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      return subscribe(function () {\n        checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n      });\n    },\n    [subscribe]\n  );\n  useDebugValue(value);\n  return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n  return getSnapshot();\n}\nvar shim =\n  \"undefined\" === typeof window ||\n  \"undefined\" === typeof window.document ||\n  \"undefined\" === typeof window.document.createElement\n    ? useSyncExternalStore$1\n    : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n  void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","import { useContext, useCallback, useMemo, useEffect, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { keyFromSelector } from 'i18next';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst notReadyT = (k, optsOrDefaultValue) => {\n  if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n  if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n  if (typeof k === 'function') return '';\n  if (Array.isArray(k)) {\n    const last = k[k.length - 1];\n    return typeof last === 'function' ? '' : last;\n  }\n  return k;\n};\nconst notReadySnapshot = {\n  t: notReadyT,\n  ready: false\n};\nconst dummySubscribe = () => () => {};\nexport const useTranslation = (ns, props = {}) => {\n  const {\n    i18n: i18nFromProps\n  } = props;\n  const {\n    i18n: i18nFromContext,\n    defaultNS: defaultNSFromContext\n  } = useContext(I18nContext) || {};\n  const i18n = i18nFromProps || i18nFromContext || getI18n();\n  if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n  if (!i18n) {\n    warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.');\n  }\n  const i18nOptions = useMemo(() => ({\n    ...getDefaults(),\n    ...i18n?.options?.react,\n    ...props\n  }), [i18n, props]);\n  const {\n    useSuspense,\n    keyPrefix,\n    bindI18n,\n    bindI18nStore\n  } = i18nOptions;\n  const nsOrContext = ns || defaultNSFromContext || i18n?.options?.defaultNS;\n  const unstableNamespaces = isString(nsOrContext) ? [nsOrContext] : nsOrContext || ['translation'];\n  const namespaces = useMemo(() => unstableNamespaces, unstableNamespaces);\n  i18n?.reportNamespaces?.addUsedNamespaces?.(namespaces);\n  const revisionRef = useRef(0);\n  const subscribe = useCallback(callback => {\n    if (!i18n) return dummySubscribe;\n    const wrappedCallback = () => {\n      revisionRef.current += 1;\n      callback();\n    };\n    if (bindI18n) i18n.on(bindI18n, wrappedCallback);\n    if (bindI18nStore) i18n.store.on(bindI18nStore, wrappedCallback);\n    return () => {\n      if (bindI18n) bindI18n.split(' ').forEach(e => i18n.off(e, wrappedCallback));\n      if (bindI18nStore) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, wrappedCallback));\n    };\n  }, [i18n, bindI18n, bindI18nStore]);\n  const snapshotRef = useRef();\n  const getSnapshot = useCallback(() => {\n    if (!i18n) {\n      return notReadySnapshot;\n    }\n    const calculatedReady = !!(i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n    const currentLng = props.lng || i18n.language;\n    const currentRevision = revisionRef.current;\n    const keyPrefixKey = typeof keyPrefix === 'function' ? keyFromSelector(keyPrefix, {\n      ...i18n.options,\n      ns: namespaces\n    }) : keyPrefix;\n    const lastSnapshot = snapshotRef.current;\n    if (lastSnapshot && lastSnapshot.i18n === i18n && lastSnapshot.ready === calculatedReady && lastSnapshot.lng === currentLng && lastSnapshot.namespaces === namespaces && lastSnapshot.keyPrefix === keyPrefixKey && lastSnapshot.revision === currentRevision) {\n      return lastSnapshot;\n    }\n    const calculatedT = i18n.getFixedT(currentLng, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix, {\n      scopeNs: namespaces\n    });\n    const newSnapshot = {\n      t: calculatedT,\n      i18n,\n      ready: calculatedReady,\n      lng: currentLng,\n      namespaces,\n      keyPrefix: keyPrefixKey,\n      revision: currentRevision\n    };\n    snapshotRef.current = newSnapshot;\n    return newSnapshot;\n  }, [i18n, namespaces, keyPrefix, i18nOptions, props.lng]);\n  const [loadCount, setLoadCount] = useState(0);\n  let {\n    t,\n    ready\n  } = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n  let pendingTranslationLoad;\n  if (i18n && useSuspense && !ready) {\n    pendingTranslationLoad = new Promise(resolve => {\n      const onLoaded = () => resolve();\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, onLoaded);\n      } else {\n        loadNamespaces(i18n, namespaces, onLoaded);\n      }\n    });\n    ({\n      t,\n      ready\n    } = getSnapshot());\n  }\n  useEffect(() => {\n    if (i18n && !ready && !useSuspense) {\n      const onLoaded = () => setLoadCount(c => c + 1);\n      if (props.lng) {\n        loadLanguages(i18n, props.lng, namespaces, onLoaded);\n      } else {\n        loadNamespaces(i18n, namespaces, onLoaded);\n      }\n    }\n  }, [i18n, props.lng, namespaces, ready, useSuspense, loadCount]);\n  const finalI18n = i18n || {};\n  const wrapperRef = useRef(null);\n  const wrapperLangRef = useRef();\n  const languageKey = inst => `${inst.language}|${inst.resolvedLanguage}|${inst.languages?.join(',')}`;\n  const createI18nWrapper = original => {\n    const descriptors = Object.getOwnPropertyDescriptors(original);\n    if (descriptors.__original) delete descriptors.__original;\n    const wrapper = Object.create(Object.getPrototypeOf(original), descriptors);\n    if (!Object.prototype.hasOwnProperty.call(wrapper, '__original')) {\n      try {\n        Object.defineProperty(wrapper, '__original', {\n          value: original,\n          writable: false,\n          enumerable: false,\n          configurable: false\n        });\n      } catch (_) {}\n    }\n    return wrapper;\n  };\n  const ret = useMemo(() => {\n    const original = finalI18n;\n    const lang = original && languageKey(original);\n    let i18nWrapper = original;\n    if (original) {\n      if (wrapperRef.current && wrapperRef.current.__original === original) {\n        if (wrapperLangRef.current !== lang) {\n          i18nWrapper = createI18nWrapper(original);\n          wrapperRef.current = i18nWrapper;\n          wrapperLangRef.current = lang;\n        } else {\n          i18nWrapper = wrapperRef.current;\n        }\n      } else {\n        i18nWrapper = createI18nWrapper(original);\n        wrapperRef.current = i18nWrapper;\n        wrapperLangRef.current = lang;\n      }\n    }\n    const effectiveT = !ready && !useSuspense ? (...args) => {\n      warnOnce(i18n, 'USE_T_BEFORE_READY', 'useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.');\n      return t(...args);\n    } : t;\n    const arr = [effectiveT, i18nWrapper, ready];\n    arr.t = effectiveT;\n    arr.i18n = i18nWrapper;\n    arr.ready = ready;\n    return arr;\n  }, [t, finalI18n, ready, finalI18n.resolvedLanguage, finalI18n.language, finalI18n.languages]);\n  if (i18n && useSuspense && !ready) {\n    let inDevelopment = false;\n    try {\n      inDevelopment = process.env.NODE_ENV !== 'production';\n    } catch (e) {}\n    if (inDevelopment) {\n      warnOnce(i18n, 'SUSPENDED_WHILE_LOADING', 'useTranslation: suspended while translations are loading (useSuspense is true by default). Add a <Suspense> boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook');\n    }\n    throw pendingTranslationLoad;\n  }\n  return ret;\n};","'use client';\nfunction __insertCSS(code) {\n  if (!code || typeof document == 'undefined') return\n  let head = document.head || document.getElementsByTagName('head')[0]\n  let style = document.createElement('style')\n  style.type = 'text/css'\n  head.appendChild(style)\n  ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst getAsset = (type)=>{\n    switch(type){\n        case 'success':\n            return SuccessIcon;\n        case 'info':\n            return InfoIcon;\n        case 'warning':\n            return WarningIcon;\n        case 'error':\n            return ErrorIcon;\n        default:\n            return null;\n    }\n};\nconst bars = Array(12).fill(0);\nconst Loader = ({ visible, className })=>{\n    return /*#__PURE__*/ React.createElement(\"div\", {\n        className: [\n            'sonner-loading-wrapper',\n            className\n        ].filter(Boolean).join(' '),\n        \"data-visible\": visible\n    }, /*#__PURE__*/ React.createElement(\"div\", {\n        className: \"sonner-spinner\"\n    }, bars.map((_, i)=>/*#__PURE__*/ React.createElement(\"div\", {\n            className: \"sonner-loading-bar\",\n            key: `spinner-bar-${i}`\n        }))));\n};\nconst SuccessIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 20 20\",\n    fill: \"currentColor\",\n    height: \"20\",\n    width: \"20\",\n    \"aria-hidden\": \"true\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n    clipRule: \"evenodd\"\n}));\nconst WarningIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 24\",\n    fill: \"currentColor\",\n    height: \"20\",\n    width: \"20\",\n    \"aria-hidden\": \"true\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n    clipRule: \"evenodd\"\n}));\nconst InfoIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 20 20\",\n    fill: \"currentColor\",\n    height: \"20\",\n    width: \"20\",\n    \"aria-hidden\": \"true\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n    clipRule: \"evenodd\"\n}));\nconst ErrorIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 20 20\",\n    fill: \"currentColor\",\n    height: \"20\",\n    width: \"20\",\n    \"aria-hidden\": \"true\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n    clipRule: \"evenodd\"\n}));\nconst CloseIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 24 24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"1.5\",\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\",\n    \"aria-hidden\": \"true\"\n}, /*#__PURE__*/ React.createElement(\"line\", {\n    x1: \"18\",\n    y1: \"6\",\n    x2: \"6\",\n    y2: \"18\"\n}), /*#__PURE__*/ React.createElement(\"line\", {\n    x1: \"6\",\n    y1: \"6\",\n    x2: \"18\",\n    y2: \"18\"\n}));\n\nconst useIsDocumentHidden = ()=>{\n    const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n    React.useEffect(()=>{\n        const callback = ()=>{\n            setIsDocumentHidden(document.hidden);\n        };\n        document.addEventListener('visibilitychange', callback);\n        return ()=>document.removeEventListener('visibilitychange', callback);\n    }, []);\n    return isDocumentHidden;\n};\n\nlet toastsCounter = 1;\n// Amount of toasts kept in `toast.getHistory()`. Dismissed toasts above this limit are\n// dropped so long-running apps don't hold on to them (and their JSX) forever.\nconst MAX_HISTORY_SIZE = 100;\n// A toast keeps the id it was given, otherwise it gets the next one from the counter.\n// `custom` needs the same id `create` would pick, as it hands it to the JSX callback.\nconst getToastId = (data)=>{\n    var _data_id;\n    return typeof (data == null ? void 0 : data.id) === 'number' || (data == null ? void 0 : (_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;\n};\nclass Observer {\n    constructor(){\n        // We use arrow functions to maintain the correct `this` reference\n        this.subscribe = (subscriber)=>{\n            this.subscribers.push(subscriber);\n            // A toast can be created before the `Toaster` had a chance to subscribe, e.g. when it's\n            // called in an effect of a component rendered above the `Toaster`. Replay whatever is\n            // still active so it doesn't get lost.\n            this.getActiveToasts().forEach((toast)=>subscriber(toast));\n            return ()=>{\n                const index = this.subscribers.indexOf(subscriber);\n                this.subscribers.splice(index, 1);\n            };\n        };\n        this.publish = (data)=>{\n            this.subscribers.forEach((subscriber)=>subscriber(data));\n        };\n        this.addToast = (data)=>{\n            this.publish(data);\n            this.toasts = [\n                ...this.toasts,\n                data\n            ];\n            this.trimHistory();\n        };\n        // Keeps the history bounded without ever dropping a toast that's still on screen.\n        this.trimHistory = ()=>{\n            let toRemove = this.toasts.length - MAX_HISTORY_SIZE;\n            if (toRemove <= 0) return;\n            this.toasts = this.toasts.filter((toast)=>{\n                if (toRemove > 0 && this.dismissedToasts.has(toast.id)) {\n                    this.dismissedToasts.delete(toast.id);\n                    toRemove--;\n                    return false;\n                }\n                return true;\n            });\n        };\n        this.create = (data)=>{\n            const { message, ...rest } = data;\n            const id = getToastId(data);\n            // A dismissal that hasn't reached the subscribers yet gets cancelled: the toast is still\n            // on screen, so this is an update of it rather than a new toast. Without this, creating a\n            // toast right after dismissing the same id (React's double effect in StrictMode does\n            // exactly that) would have the pending dismissal remove the toast that just got created.\n            const pendingDismissal = this.pendingDismissals.get(id);\n            if (pendingDismissal !== undefined) {\n                cancelAnimationFrame(pendingDismissal);\n                this.pendingDismissals.delete(id);\n                this.dismissedToasts.delete(id);\n            }\n            const wasDismissed = this.dismissedToasts.has(id);\n            const dismissible = data.dismissible === undefined ? true : data.dismissible;\n            if (wasDismissed) {\n                this.dismissedToasts.delete(id);\n                // The previous toast with this id is gone, so this is a brand new toast. Drop the old\n                // one instead of merging into it, otherwise its props (e.g. `action`) leak into the new one.\n                this.toasts = this.toasts.filter((toast)=>toast.id !== id);\n            }\n            const alreadyExists = wasDismissed ? undefined : this.toasts.find((toast)=>{\n                return toast.id === id;\n            });\n            if (alreadyExists) {\n                this.toasts = this.toasts.map((toast)=>{\n                    if (toast.id === id) {\n                        this.publish({\n                            ...toast,\n                            ...data,\n                            id,\n                            title: message\n                        });\n                        return {\n                            ...toast,\n                            ...data,\n                            id,\n                            dismissible,\n                            title: message\n                        };\n                    }\n                    return toast;\n                });\n            } else {\n                this.addToast({\n                    title: message,\n                    ...rest,\n                    dismissible,\n                    id\n                });\n            }\n            return id;\n        };\n        this.dismiss = (id)=>{\n            if (id === undefined || id === null) {\n                this.getActiveToasts().forEach((toast)=>{\n                    this.dismissedToasts.add(toast.id);\n                    this.subscribers.forEach((subscriber)=>subscriber({\n                            id: toast.id,\n                            dismiss: true\n                        }));\n                });\n                return id;\n            }\n            this.dismissedToasts.add(id);\n            const alreadyPending = this.pendingDismissals.get(id);\n            if (alreadyPending !== undefined) {\n                cancelAnimationFrame(alreadyPending);\n            }\n            this.pendingDismissals.set(id, requestAnimationFrame(()=>{\n                this.pendingDismissals.delete(id);\n                this.subscribers.forEach((subscriber)=>subscriber({\n                        id,\n                        dismiss: true\n                    }));\n            }));\n            return id;\n        };\n        this.message = (message, data)=>{\n            // `type: undefined` resets the type when this updates a toast that had one, e.g. turning\n            // a loading toast into a plain one.\n            return this.create({\n                ...data,\n                message,\n                type: undefined\n            });\n        };\n        this.error = (message, data)=>{\n            return this.create({\n                ...data,\n                message,\n                type: 'error'\n            });\n        };\n        this.success = (message, data)=>{\n            return this.create({\n                ...data,\n                type: 'success',\n                message\n            });\n        };\n        this.info = (message, data)=>{\n            return this.create({\n                ...data,\n                type: 'info',\n                message\n            });\n        };\n        this.warning = (message, data)=>{\n            return this.create({\n                ...data,\n                type: 'warning',\n                message\n            });\n        };\n        this.loading = (message, data)=>{\n            return this.create({\n                ...data,\n                type: 'loading',\n                message\n            });\n        };\n        this.promise = (promise, data)=>{\n            if (!data) {\n                // Nothing to show\n                return;\n            }\n            let id = undefined;\n            if (data.loading !== undefined) {\n                id = this.create({\n                    ...data,\n                    promise,\n                    type: 'loading',\n                    message: data.loading,\n                    description: typeof data.description !== 'function' ? data.description : undefined\n                });\n            }\n            const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n            let shouldDismiss = id !== undefined;\n            let result;\n            const originalPromise = p.then(async (response)=>{\n                result = [\n                    'resolve',\n                    response\n                ];\n                const isReactElementResponse = React.isValidElement(response);\n                if (isReactElementResponse) {\n                    shouldDismiss = false;\n                    this.create({\n                        id,\n                        type: 'default',\n                        message: response\n                    });\n                } else if (isHttpResponse(response) && !response.ok) {\n                    shouldDismiss = false;\n                    const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n                    const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n                    const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n                    const toastSettings = isExtendedResult ? promiseData : {\n                        message: promiseData\n                    };\n                    this.create({\n                        id,\n                        type: 'error',\n                        description,\n                        ...toastSettings\n                    });\n                } else if (response instanceof Error) {\n                    shouldDismiss = false;\n                    const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;\n                    const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n                    const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n                    const toastSettings = isExtendedResult ? promiseData : {\n                        message: promiseData\n                    };\n                    this.create({\n                        id,\n                        type: 'error',\n                        description,\n                        ...toastSettings\n                    });\n                } else if (data.success !== undefined) {\n                    shouldDismiss = false;\n                    const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;\n                    const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n                    const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n                    const toastSettings = isExtendedResult ? promiseData : {\n                        message: promiseData\n                    };\n                    this.create({\n                        id,\n                        type: 'success',\n                        description,\n                        ...toastSettings\n                    });\n                }\n            }).catch(async (error)=>{\n                result = [\n                    'reject',\n                    error\n                ];\n                if (data.error !== undefined) {\n                    shouldDismiss = false;\n                    const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;\n                    const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n                    const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n                    const toastSettings = isExtendedResult ? promiseData : {\n                        message: promiseData\n                    };\n                    this.create({\n                        id,\n                        type: 'error',\n                        description,\n                        ...toastSettings\n                    });\n                }\n            }).finally(()=>{\n                if (shouldDismiss) {\n                    // Toast is still in load state (and will be indefinitely — dismiss it)\n                    this.dismiss(id);\n                    id = undefined;\n                }\n                data.finally == null ? void 0 : data.finally.call(data);\n            });\n            const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));\n            if (typeof id !== 'string' && typeof id !== 'number') {\n                // cannot Object.assign on undefined\n                return {\n                    unwrap\n                };\n            } else {\n                return Object.assign(id, {\n                    unwrap\n                });\n            }\n        };\n        this.custom = (jsx, data)=>{\n            const id = getToastId(data);\n            // A custom toast has no type, so it resets the one of the toast it replaces\n            this.create({\n                ...data,\n                jsx: jsx(id),\n                id,\n                type: undefined\n            });\n            return id;\n        };\n        this.getActiveToasts = ()=>{\n            return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));\n        };\n        this.subscribers = [];\n        this.toasts = [];\n        this.dismissedToasts = new Set();\n        this.pendingDismissals = new Map();\n    }\n}\nconst ToastState = new Observer();\n// bind this to the toast function\nconst toastFunction = (message, data)=>{\n    return ToastState.message(message, data);\n};\nconst isHttpResponse = (data)=>{\n    return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';\n};\nconst basicToast = toastFunction;\nconst getHistory = ()=>ToastState.toasts;\nconst getToasts = ()=>ToastState.getActiveToasts();\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nconst toast = Object.assign(basicToast, {\n    success: ToastState.success,\n    info: ToastState.info,\n    warning: ToastState.warning,\n    error: ToastState.error,\n    custom: ToastState.custom,\n    message: ToastState.message,\n    promise: ToastState.promise,\n    dismiss: ToastState.dismiss,\n    loading: ToastState.loading\n}, {\n    getHistory,\n    getToasts\n});\n\n__insertCSS(\"[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--normal-text);background:var(--normal-bg);border:1px solid var(--normal-border);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{-webkit-user-select:none;user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\n\nfunction isAction(action) {\n    return action.label !== undefined;\n}\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n// Viewport padding\nconst VIEWPORT_OFFSET = '24px';\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n// Default toast width\nconst TOAST_WIDTH = 356;\n// Default gap between toasts\nconst GAP = 14;\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 45;\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\nfunction cn(...classes) {\n    return classes.filter(Boolean).join(' ');\n}\nfunction getDefaultSwipeDirections(position) {\n    const [y, x] = position.split('-');\n    const directions = [];\n    if (y) {\n        directions.push(y);\n    }\n    if (x) {\n        directions.push(x);\n    }\n    return directions;\n}\nconst Toast = (props)=>{\n    var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;\n    const { invert: ToasterInvert, toast, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = '', descriptionClassName = '', duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = 'Close toast' } = props;\n    const [swipeDirection, setSwipeDirection] = React.useState(null);\n    const [swipeOutDirection, setSwipeOutDirection] = React.useState(null);\n    const [mounted, setMounted] = React.useState(false);\n    const [removed, setRemoved] = React.useState(false);\n    const [swiping, setSwiping] = React.useState(false);\n    const [swipeOut, setSwipeOut] = React.useState(false);\n    const [isSwiped, setIsSwiped] = React.useState(false);\n    const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n    const [initialHeight, setInitialHeight] = React.useState(0);\n    const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n    const dragStartTime = React.useRef(null);\n    const toastRef = React.useRef(null);\n    const isFront = index === 0;\n    const isVisible = index + 1 <= visibleToasts;\n    const toastType = toast.type;\n    // Toasts created with `toast()` have no type, `classNames.default` is the key for those.\n    const toastTypeKey = toastType != null ? toastType : 'default';\n    const dismissible = toast.dismissible !== false;\n    const toastClassname = toast.className || '';\n    const toastDescriptionClassname = toast.descriptionClassName || '';\n    // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n    const heightIndex = React.useMemo(()=>heights.findIndex((height)=>height.toastId === toast.id) || 0, [\n        heights,\n        toast.id\n    ]);\n    const closeButton = React.useMemo(()=>{\n        var _toast_closeButton;\n        return (_toast_closeButton = toast.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;\n    }, [\n        toast.closeButton,\n        closeButtonFromToaster\n    ]);\n    const duration = React.useMemo(()=>toast.duration || durationFromToaster || TOAST_LIFETIME, [\n        toast.duration,\n        durationFromToaster\n    ]);\n    const closeTimerStartTimeRef = React.useRef(0);\n    const offset = React.useRef(0);\n    const lastCloseTimerStartTimeRef = React.useRef(0);\n    const pointerStartRef = React.useRef(null);\n    const [y, x] = position.split('-');\n    const toastsHeightBefore = React.useMemo(()=>{\n        return heights.reduce((prev, curr, reducerIndex)=>{\n            // Calculate offset up until current toast\n            if (reducerIndex >= heightIndex) {\n                return prev;\n            }\n            return prev + curr.height;\n        }, 0);\n    }, [\n        heights,\n        heightIndex\n    ]);\n    const isDocumentHidden = useIsDocumentHidden();\n    const swipeDirections = React.useMemo(()=>{\n        var _props_swipeDirections;\n        return (_props_swipeDirections = props.swipeDirections) != null ? _props_swipeDirections : getDefaultSwipeDirections(position);\n    }, [\n        props.swipeDirections,\n        position\n    ]);\n    const invert = toast.invert || ToasterInvert;\n    const disabled = toastType === 'loading';\n    offset.current = React.useMemo(()=>heightIndex * gap + toastsHeightBefore, [\n        heightIndex,\n        toastsHeightBefore\n    ]);\n    React.useEffect(()=>{\n        remainingTime.current = duration;\n    }, [\n        duration\n    ]);\n    React.useEffect(()=>{\n        // Trigger enter animation without using CSS animation\n        setMounted(true);\n    }, []);\n    React.useEffect(()=>{\n        const toastNode = toastRef.current;\n        if (toastNode) {\n            const height = toastNode.getBoundingClientRect().height;\n            // Add toast height to heights array after the toast is mounted\n            setInitialHeight(height);\n            setHeights((h)=>[\n                    {\n                        toastId: toast.id,\n                        height,\n                        position: toast.position\n                    },\n                    ...h\n                ]);\n            return ()=>setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n        }\n    }, [\n        setHeights,\n        toast.id\n    ]);\n    React.useLayoutEffect(()=>{\n        // Keep height up to date with the content in case it updates\n        if (!mounted) return;\n        const toastNode = toastRef.current;\n        const originalHeight = toastNode.style.height;\n        toastNode.style.height = 'auto';\n        const newHeight = toastNode.getBoundingClientRect().height;\n        toastNode.style.height = originalHeight;\n        setInitialHeight(newHeight);\n        setHeights((heights)=>{\n            const alreadyExists = heights.find((height)=>height.toastId === toast.id);\n            if (!alreadyExists) {\n                return [\n                    {\n                        toastId: toast.id,\n                        height: newHeight,\n                        position: toast.position\n                    },\n                    ...heights\n                ];\n            } else {\n                return heights.map((height)=>height.toastId === toast.id ? {\n                        ...height,\n                        height: newHeight\n                    } : height);\n            }\n        });\n    }, [\n        mounted,\n        toast.title,\n        toast.description,\n        setHeights,\n        toast.id,\n        toast.jsx,\n        toast.action,\n        toast.cancel\n    ]);\n    const deleteToast = React.useCallback(()=>{\n        // Save the offset for the exit swipe animation\n        setRemoved(true);\n        setOffsetBeforeRemove(offset.current);\n        setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n        setTimeout(()=>{\n            removeToast(toast);\n        }, TIME_BEFORE_UNMOUNT);\n    }, [\n        toast,\n        removeToast,\n        setHeights,\n        offset\n    ]);\n    React.useEffect(()=>{\n        if (toast.promise && toastType === 'loading' || toast.duration === Infinity || toast.type === 'loading') return;\n        let timeoutId;\n        // Pause the timer on each hover\n        const pauseTimer = ()=>{\n            if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n                // Get the elapsed time since the timer started\n                const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n                remainingTime.current = remainingTime.current - elapsedTime;\n            }\n            lastCloseTimerStartTimeRef.current = new Date().getTime();\n        };\n        const startTimer = ()=>{\n            // setTimeout(, Infinity) behaves as if the delay is 0.\n            // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n            // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n            if (remainingTime.current === Infinity) return;\n            closeTimerStartTimeRef.current = new Date().getTime();\n            // Let the toast know it has started\n            timeoutId = setTimeout(()=>{\n                toast.onAutoClose == null ? void 0 : toast.onAutoClose.call(toast, toast);\n                deleteToast();\n            }, remainingTime.current);\n        };\n        if (expanded || interacting || isDocumentHidden) {\n            pauseTimer();\n        } else {\n            startTimer();\n        }\n        return ()=>clearTimeout(timeoutId);\n    }, [\n        expanded,\n        interacting,\n        toast,\n        toastType,\n        isDocumentHidden,\n        deleteToast\n    ]);\n    React.useEffect(()=>{\n        if (toast.delete) {\n            deleteToast();\n            toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n        }\n    }, [\n        deleteToast,\n        toast.delete\n    ]);\n    function getLoadingIcon() {\n        var _toast_classNames;\n        if (icons == null ? void 0 : icons.loading) {\n            var _toast_classNames1;\n            return /*#__PURE__*/ React.createElement(\"div\", {\n                className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1.loader, 'sonner-loader'),\n                \"data-visible\": toastType === 'loading'\n            }, icons.loading);\n        }\n        return /*#__PURE__*/ React.createElement(Loader, {\n            className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.loader),\n            visible: toastType === 'loading'\n        });\n    }\n    const icon = toast.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);\n    var _toast_richColors, _icons_close;\n    return /*#__PURE__*/ React.createElement(\"li\", {\n        tabIndex: 0,\n        ref: toastRef,\n        className: cn(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames[toastTypeKey], toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1[toastTypeKey]),\n        \"data-sonner-toast\": \"\",\n        \"data-rich-colors\": (_toast_richColors = toast.richColors) != null ? _toast_richColors : defaultRichColors,\n        \"data-styled\": !Boolean(toast.jsx || toast.unstyled || unstyled),\n        \"data-mounted\": mounted,\n        \"data-promise\": Boolean(toast.promise),\n        \"data-swiped\": isSwiped,\n        \"data-removed\": removed,\n        \"data-visible\": isVisible,\n        \"data-y-position\": y,\n        \"data-x-position\": x,\n        \"data-index\": index,\n        \"data-front\": isFront,\n        \"data-swiping\": swiping,\n        \"data-dismissible\": dismissible,\n        \"data-type\": toastType,\n        \"data-invert\": invert,\n        \"data-swipe-out\": swipeOut,\n        \"data-swipe-direction\": swipeOutDirection,\n        \"data-expanded\": Boolean(expanded || expandByDefault && mounted),\n        \"data-testid\": toast.testId,\n        style: {\n            '--index': index,\n            '--toasts-before': index,\n            '--z-index': toasts.length - index,\n            '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n            '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n            ...style,\n            ...toast.style\n        },\n        onDragEnd: ()=>{\n            setSwiping(false);\n            setSwipeDirection(null);\n            pointerStartRef.current = null;\n        },\n        onPointerDown: (event)=>{\n            if (event.button === 2) return; // Return early on right click\n            if (disabled || !dismissible) return;\n            dragStartTime.current = new Date();\n            setOffsetBeforeRemove(offset.current);\n            // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n            event.target.setPointerCapture(event.pointerId);\n            if (event.target.tagName === 'BUTTON') return;\n            setSwiping(true);\n            pointerStartRef.current = {\n                x: event.clientX,\n                y: event.clientY\n            };\n        },\n        onPointerUp: ()=>{\n            var _toastRef_current, _toastRef_current1, _dragStartTime_current;\n            if (swipeOut || !dismissible) return;\n            pointerStartRef.current = null;\n            const swipeAmountX = Number(((_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.getPropertyValue('--swipe-amount-x').replace('px', '')) || 0);\n            const swipeAmountY = Number(((_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.getPropertyValue('--swipe-amount-y').replace('px', '')) || 0);\n            const timeTaken = new Date().getTime() - ((_dragStartTime_current = dragStartTime.current) == null ? void 0 : _dragStartTime_current.getTime());\n            const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n            const velocity = Math.abs(swipeAmount) / timeTaken;\n            // Movement towards a direction that isn't allowed is dampened, not blocked, so a fast\n            // flick can still pass the velocity check. Only dismiss if the direction is allowed.\n            const isAllowedDirection = swipeDirection === 'x' ? swipeDirections.includes(swipeAmountX > 0 ? 'right' : 'left') : swipeDirections.includes(swipeAmountY > 0 ? 'bottom' : 'top');\n            if (isAllowedDirection && (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11)) {\n                setOffsetBeforeRemove(offset.current);\n                toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n                if (swipeDirection === 'x') {\n                    setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n                } else {\n                    setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n                }\n                deleteToast();\n                setSwipeOut(true);\n                return;\n            } else {\n                var _toastRef_current2, _toastRef_current3;\n                (_toastRef_current2 = toastRef.current) == null ? void 0 : _toastRef_current2.style.setProperty('--swipe-amount-x', `0px`);\n                (_toastRef_current3 = toastRef.current) == null ? void 0 : _toastRef_current3.style.setProperty('--swipe-amount-y', `0px`);\n            }\n            setIsSwiped(false);\n            setSwiping(false);\n            setSwipeDirection(null);\n        },\n        onPointerMove: (event)=>{\n            var _window_getSelection, // Apply transform using both x and y values\n            _toastRef_current, _toastRef_current1;\n            if (!pointerStartRef.current || !dismissible) return;\n            const isHighlighted = ((_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString().length) > 0;\n            if (isHighlighted) return;\n            const yDelta = event.clientY - pointerStartRef.current.y;\n            const xDelta = event.clientX - pointerStartRef.current.x;\n            // Determine swipe direction if not already locked\n            if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n                setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n            }\n            let swipeAmount = {\n                x: 0,\n                y: 0\n            };\n            const getDampening = (delta)=>{\n                const factor = Math.abs(delta) / 20;\n                return 1 / (1.5 + factor);\n            };\n            // Only apply swipe in the locked direction\n            if (swipeDirection === 'y') {\n                // Handle vertical swipes\n                if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n                    if (swipeDirections.includes('top') && yDelta < 0 || swipeDirections.includes('bottom') && yDelta > 0) {\n                        swipeAmount.y = yDelta;\n                    } else {\n                        // Smoothly transition to dampened movement\n                        const dampenedDelta = yDelta * getDampening(yDelta);\n                        // Ensure we don't jump when transitioning to dampened movement\n                        swipeAmount.y = Math.abs(dampenedDelta) < Math.abs(yDelta) ? dampenedDelta : yDelta;\n                    }\n                }\n            } else if (swipeDirection === 'x') {\n                // Handle horizontal swipes\n                if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n                    if (swipeDirections.includes('left') && xDelta < 0 || swipeDirections.includes('right') && xDelta > 0) {\n                        swipeAmount.x = xDelta;\n                    } else {\n                        // Smoothly transition to dampened movement\n                        const dampenedDelta = xDelta * getDampening(xDelta);\n                        // Ensure we don't jump when transitioning to dampened movement\n                        swipeAmount.x = Math.abs(dampenedDelta) < Math.abs(xDelta) ? dampenedDelta : xDelta;\n                    }\n                }\n            }\n            if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n                setIsSwiped(true);\n            }\n            (_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n            (_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n        }\n    }, closeButton && !toast.jsx && toastType !== 'loading' ? /*#__PURE__*/ React.createElement(\"button\", {\n        \"aria-label\": closeButtonAriaLabel,\n        \"data-disabled\": disabled,\n        \"data-close-button\": true,\n        onClick: disabled || !dismissible ? ()=>{} : ()=>{\n            deleteToast();\n            toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n        },\n        className: cn(classNames == null ? void 0 : classNames.closeButton, toast == null ? void 0 : (_toast_classNames2 = toast.classNames) == null ? void 0 : _toast_classNames2.closeButton)\n    }, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast.icon || toast.promise) && toast.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast.icon) ? /*#__PURE__*/ React.createElement(\"div\", {\n        \"data-icon\": \"\",\n        className: cn(classNames == null ? void 0 : classNames.icon, toast == null ? void 0 : (_toast_classNames3 = toast.classNames) == null ? void 0 : _toast_classNames3.icon)\n    }, toastType === 'loading' ? toast.icon || getLoadingIcon() : toast.promise ? getLoadingIcon() : null, toastType !== 'loading' ? icon : null) : null, /*#__PURE__*/ React.createElement(\"div\", {\n        \"data-content\": \"\",\n        className: cn(classNames == null ? void 0 : classNames.content, toast == null ? void 0 : (_toast_classNames4 = toast.classNames) == null ? void 0 : _toast_classNames4.content)\n    }, /*#__PURE__*/ React.createElement(\"div\", {\n        \"data-title\": \"\",\n        className: cn(classNames == null ? void 0 : classNames.title, toast == null ? void 0 : (_toast_classNames5 = toast.classNames) == null ? void 0 : _toast_classNames5.title)\n    }, toast.jsx ? toast.jsx : typeof toast.title === 'function' ? toast.title() : toast.title), toast.description ? /*#__PURE__*/ React.createElement(\"div\", {\n        \"data-description\": \"\",\n        className: cn(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast == null ? void 0 : (_toast_classNames6 = toast.classNames) == null ? void 0 : _toast_classNames6.description)\n    }, typeof toast.description === 'function' ? toast.description() : toast.description) : null), /*#__PURE__*/ React.isValidElement(toast.cancel) ? toast.cancel : toast.cancel && isAction(toast.cancel) ? /*#__PURE__*/ React.createElement(\"button\", {\n        \"data-button\": true,\n        \"data-cancel\": true,\n        style: toast.cancelButtonStyle || cancelButtonStyle,\n        onClick: (event)=>{\n            // We need to check twice because typescript\n            if (!isAction(toast.cancel)) return;\n            if (!dismissible) return;\n            toast.cancel.onClick == null ? void 0 : toast.cancel.onClick.call(toast.cancel, event);\n            deleteToast();\n        },\n        className: cn(classNames == null ? void 0 : classNames.cancelButton, toast == null ? void 0 : (_toast_classNames7 = toast.classNames) == null ? void 0 : _toast_classNames7.cancelButton)\n    }, toast.cancel.label) : null, /*#__PURE__*/ React.isValidElement(toast.action) ? toast.action : toast.action && isAction(toast.action) ? /*#__PURE__*/ React.createElement(\"button\", {\n        \"data-button\": true,\n        \"data-action\": true,\n        style: toast.actionButtonStyle || actionButtonStyle,\n        onClick: (event)=>{\n            // We need to check twice because typescript\n            if (!isAction(toast.action)) return;\n            toast.action.onClick == null ? void 0 : toast.action.onClick.call(toast.action, event);\n            if (event.defaultPrevented) return;\n            deleteToast();\n        },\n        className: cn(classNames == null ? void 0 : classNames.actionButton, toast == null ? void 0 : (_toast_classNames8 = toast.classNames) == null ? void 0 : _toast_classNames8.actionButton)\n    }, toast.action.label) : null);\n};\nfunction getDocumentDirection() {\n    if (typeof window === 'undefined') return 'ltr';\n    if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n    const dirAttribute = document.documentElement.getAttribute('dir');\n    if (dirAttribute === 'auto' || !dirAttribute) {\n        return window.getComputedStyle(document.documentElement).direction;\n    }\n    return dirAttribute;\n}\nfunction assignOffset(defaultOffset, mobileOffset) {\n    const styles = {};\n    [\n        defaultOffset,\n        mobileOffset\n    ].forEach((offset, index)=>{\n        const isMobile = index === 1;\n        const prefix = isMobile ? '--mobile-offset' : '--offset';\n        const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n        function assignAll(offset) {\n            [\n                'top',\n                'right',\n                'bottom',\n                'left'\n            ].forEach((key)=>{\n                styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n            });\n        }\n        if (typeof offset === 'number' || typeof offset === 'string') {\n            assignAll(offset);\n        } else if (typeof offset === 'object') {\n            [\n                'top',\n                'right',\n                'bottom',\n                'left'\n            ].forEach((key)=>{\n                if (offset[key] === undefined) {\n                    styles[`${prefix}-${key}`] = defaultValue;\n                } else {\n                    styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n                }\n            });\n        } else {\n            assignAll(defaultValue);\n        }\n    });\n    return styles;\n}\nfunction useSonner() {\n    const [activeToasts, setActiveToasts] = React.useState([]);\n    React.useEffect(()=>{\n        return ToastState.subscribe((toast)=>{\n            if (toast.dismiss) {\n                setTimeout(()=>{\n                    ReactDOM.flushSync(()=>{\n                        setActiveToasts((toasts)=>toasts.filter((t)=>t.id !== toast.id));\n                    });\n                });\n                return;\n            }\n            // Prevent batching, temp solution.\n            setTimeout(()=>{\n                ReactDOM.flushSync(()=>{\n                    setActiveToasts((toasts)=>{\n                        const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n                        // Update the toast if it already exists\n                        if (indexOfExistingToast !== -1) {\n                            return [\n                                ...toasts.slice(0, indexOfExistingToast),\n                                {\n                                    ...toasts[indexOfExistingToast],\n                                    ...toast\n                                },\n                                ...toasts.slice(indexOfExistingToast + 1)\n                            ];\n                        }\n                        return [\n                            toast,\n                            ...toasts\n                        ];\n                    });\n                });\n            });\n        });\n    }, []);\n    return {\n        toasts: activeToasts\n    };\n}\nconst Toaster = /*#__PURE__*/ React.forwardRef(function Toaster(props, ref) {\n    const { id, invert, position = 'bottom-right', hotkey = [\n        'altKey',\n        'KeyT'\n    ], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, customAriaLabel, containerAriaLabel = 'Notifications' } = props;\n    const [toasts, setToasts] = React.useState([]);\n    const filteredToasts = React.useMemo(()=>{\n        if (id) {\n            return toasts.filter((toast)=>toast.toasterId === id);\n        }\n        return toasts.filter((toast)=>!toast.toasterId);\n    }, [\n        toasts,\n        id\n    ]);\n    const possiblePositions = React.useMemo(()=>{\n        return Array.from(new Set([\n            position\n        ].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));\n    }, [\n        filteredToasts,\n        position\n    ]);\n    const [heights, setHeights] = React.useState([]);\n    const [expanded, setExpanded] = React.useState(false);\n    const [interacting, setInteracting] = React.useState(false);\n    const [actualTheme, setActualTheme] = React.useState(theme !== 'system' ? theme : typeof window !== 'undefined' ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light');\n    const listRef = React.useRef(null);\n    const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n    const lastFocusedElementRef = React.useRef(null);\n    const isFocusWithinRef = React.useRef(false);\n    const removeToast = React.useCallback((toastToRemove)=>{\n        setToasts((toasts)=>{\n            var _toasts_find;\n            if (!((_toasts_find = toasts.find((toast)=>toast.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {\n                ToastState.dismiss(toastToRemove.id);\n            }\n            return toasts.filter(({ id })=>id !== toastToRemove.id);\n        });\n    }, []);\n    React.useEffect(()=>{\n        return ToastState.subscribe((toast)=>{\n            if (toast.dismiss) {\n                // Prevent batching of other state updates\n                requestAnimationFrame(()=>{\n                    setToasts((toasts)=>toasts.map((t)=>t.id === toast.id ? {\n                                ...t,\n                                delete: true\n                            } : t));\n                });\n                return;\n            }\n            // Prevent batching, temp solution.\n            setTimeout(()=>{\n                ReactDOM.flushSync(()=>{\n                    setToasts((toasts)=>{\n                        const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n                        // Update the toast if it already exists\n                        if (indexOfExistingToast !== -1) {\n                            return [\n                                ...toasts.slice(0, indexOfExistingToast),\n                                {\n                                    ...toasts[indexOfExistingToast],\n                                    ...toast\n                                },\n                                ...toasts.slice(indexOfExistingToast + 1)\n                            ];\n                        }\n                        return [\n                            toast,\n                            ...toasts\n                        ];\n                    });\n                });\n            });\n        });\n    }, []);\n    React.useEffect(()=>{\n        if (theme !== 'system') {\n            setActualTheme(theme);\n            return;\n        }\n        if (theme === 'system') {\n            // check if current preference is dark\n            if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n                // it's currently dark\n                setActualTheme('dark');\n            } else {\n                // it's not dark\n                setActualTheme('light');\n            }\n        }\n        if (typeof window === 'undefined') return;\n        const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n        try {\n            // Chrome & Firefox\n            darkMediaQuery.addEventListener('change', ({ matches })=>{\n                if (matches) {\n                    setActualTheme('dark');\n                } else {\n                    setActualTheme('light');\n                }\n            });\n        } catch (error) {\n            // Safari < 14\n            darkMediaQuery.addListener(({ matches })=>{\n                try {\n                    if (matches) {\n                        setActualTheme('dark');\n                    } else {\n                        setActualTheme('light');\n                    }\n                } catch (e) {\n                    console.error(e);\n                }\n            });\n        }\n    }, [\n        theme\n    ]);\n    React.useEffect(()=>{\n        // Ensure expanded is always false when no toasts are present / only one left\n        if (toasts.length <= 1) {\n            setExpanded(false);\n        }\n    }, [\n        toasts\n    ]);\n    React.useEffect(()=>{\n        const handleKeyDown = (event)=>{\n            var _listRef_current;\n            const isHotkeyPressed = hotkey.length > 0 && hotkey.every((key)=>event[key] || event.code === key);\n            if (isHotkeyPressed) {\n                var _listRef_current1;\n                setExpanded(true);\n                (_listRef_current1 = listRef.current) == null ? void 0 : _listRef_current1.focus();\n            }\n            if (event.code === 'Escape' && (document.activeElement === listRef.current || ((_listRef_current = listRef.current) == null ? void 0 : _listRef_current.contains(document.activeElement)))) {\n                setExpanded(false);\n            }\n        };\n        document.addEventListener('keydown', handleKeyDown);\n        return ()=>document.removeEventListener('keydown', handleKeyDown);\n    }, [\n        hotkey\n    ]);\n    React.useEffect(()=>{\n        if (listRef.current) {\n            return ()=>{\n                if (lastFocusedElementRef.current) {\n                    lastFocusedElementRef.current.focus({\n                        preventScroll: true\n                    });\n                    lastFocusedElementRef.current = null;\n                    isFocusWithinRef.current = false;\n                }\n            };\n        }\n    }, [\n        listRef.current\n    ]);\n    return(// Remove item from normal navigation flow, only available via hotkey\n    /*#__PURE__*/ React.createElement(\"section\", {\n        ref: ref,\n        \"aria-label\": customAriaLabel != null ? customAriaLabel : `${containerAriaLabel} ${hotkeyLabel}`,\n        tabIndex: -1,\n        \"aria-live\": \"polite\",\n        \"aria-relevant\": \"additions text\",\n        \"aria-atomic\": \"false\",\n        suppressHydrationWarning: true,\n        \"data-react-aria-top-layer\": true\n    }, possiblePositions.map((position, index)=>{\n        var _heights_;\n        const [y, x] = position.split('-');\n        if (!filteredToasts.length) return null;\n        return /*#__PURE__*/ React.createElement(\"ol\", {\n            key: position,\n            dir: dir === 'auto' ? getDocumentDirection() : dir,\n            tabIndex: -1,\n            ref: listRef,\n            className: className,\n            \"data-sonner-toaster\": true,\n            \"data-sonner-theme\": actualTheme,\n            \"data-y-position\": y,\n            \"data-x-position\": x,\n            style: {\n                '--front-toast-height': `${((_heights_ = heights[0]) == null ? void 0 : _heights_.height) || 0}px`,\n                '--width': `${TOAST_WIDTH}px`,\n                '--gap': `${gap}px`,\n                ...style,\n                ...assignOffset(offset, mobileOffset)\n            },\n            onBlur: (event)=>{\n                if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n                    isFocusWithinRef.current = false;\n                    if (lastFocusedElementRef.current) {\n                        lastFocusedElementRef.current.focus({\n                            preventScroll: true\n                        });\n                        lastFocusedElementRef.current = null;\n                    }\n                }\n            },\n            onFocus: (event)=>{\n                const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n                if (isNotDismissible) return;\n                if (!isFocusWithinRef.current) {\n                    isFocusWithinRef.current = true;\n                    lastFocusedElementRef.current = event.relatedTarget;\n                }\n            },\n            onMouseEnter: ()=>setExpanded(true),\n            onMouseMove: ()=>setExpanded(true),\n            onMouseLeave: ()=>{\n                // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n                if (!interacting) {\n                    setExpanded(false);\n                }\n            },\n            onDragEnd: ()=>setExpanded(false),\n            onPointerDown: (event)=>{\n                const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n                if (isNotDismissible) return;\n                setInteracting(true);\n            },\n            onPointerUp: ()=>setInteracting(false)\n        }, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{\n            var _toastOptions_duration, _toastOptions_closeButton;\n            return /*#__PURE__*/ React.createElement(Toast, {\n                key: toast.id,\n                icons: icons,\n                index: index,\n                toast: toast,\n                defaultRichColors: richColors,\n                duration: (_toastOptions_duration = toastOptions == null ? void 0 : toastOptions.duration) != null ? _toastOptions_duration : duration,\n                className: toastOptions == null ? void 0 : toastOptions.className,\n                descriptionClassName: toastOptions == null ? void 0 : toastOptions.descriptionClassName,\n                invert: invert,\n                visibleToasts: visibleToasts,\n                closeButton: (_toastOptions_closeButton = toastOptions == null ? void 0 : toastOptions.closeButton) != null ? _toastOptions_closeButton : closeButton,\n                interacting: interacting,\n                position: position,\n                style: toastOptions == null ? void 0 : toastOptions.style,\n                unstyled: toastOptions == null ? void 0 : toastOptions.unstyled,\n                classNames: toastOptions == null ? void 0 : toastOptions.classNames,\n                cancelButtonStyle: toastOptions == null ? void 0 : toastOptions.cancelButtonStyle,\n                actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,\n                closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,\n                removeToast: removeToast,\n                toasts: filteredToasts.filter((t)=>t.position == toast.position),\n                heights: heights.filter((h)=>h.position == toast.position),\n                setHeights: setHeights,\n                expandByDefault: expand,\n                gap: gap,\n                expanded: expanded,\n                swipeDirections: props.swipeDirections\n            });\n        }));\n    })));\n});\n\nexport { Toaster, toast, useSonner };\n","export default \"__VITE_ASSET__Bh5hR8He__\"","//#region src/tables.generated.ts\nconst P = 48;\nconst U = (s, o = 0) => {\n\tconst out = new Int32Array(s.length);\n\tfor (let i = 0; i < s.length; i++) out[i] = s.charCodeAt(i) - P - o;\n\treturn out;\n};\nconst PS = (counts) => {\n\tconst out = new Int32Array(counts.length + 1);\n\tfor (let i = 0; i < counts.length; i++) out[i + 1] = out[i] + counts[i];\n\treturn out;\n};\nconst DZ = (s) => {\n\tconst out = new Int32Array(s.length);\n\tlet a = 0;\n\tfor (let i = 0; i < s.length; i++) {\n\t\tconst z = s.charCodeAt(i) - P;\n\t\ta += z >>> 1 ^ -(z & 1);\n\t\tout[i] = a;\n\t}\n\treturn out;\n};\nconst GROUP_COUNT = 384;\nconst customValidatorNames = [];\nconst edgeStart = PS(U(\"E0500002005282000000002000150000020021820000011200000003022202000300004200120000200420001200021200301200010400162000010000220021010:2192001200220012000220012000200200200400010200040000000000400200108200110100000022010313000162002000020020012020080213000228200000000082000000000120002000120020020040101020300130001001010\"));\nconst labelStart = PS(U(\":11111111211111119311546544411119731869:671397415686432441111111111161114151214313433415:78311132233313187211117221449443411141111151152226611131111112212518142224214215421421542142424242516171151615616347111111111197911327451111111111111111111113134714133513411111311111111111111111111112444411111342312715245411117:3\"));\nconst labelText = \"@containerabcdefghinlmoprstunderlineviawzccentlignnimatespectuto-colsrowsaglorightnessckdrop-sisbcontrastfiltergrayscalehue-rotateinvertopacityslurrightnessaturateepia-coniclinearpositionradialsizeockurrderttom-belrstxyespacing-xyaretoursorlnt-umnsendspantartainentrasteividerop-shadowurationcorationlay-xyasendillexontromlter-featuresstretchapr-xyayscaleidow-colsrowsue-rotatedentlinesetvert-beringsxyeshadoweiadingftnest-clamp-imageabein-lrstxyskx--b-coniclpositionrsizet-x-y-fromto-fromto-inearfromto-fromto-adialfromto-fromtofromtofromtofromtoblockhinlinew-screenesblockhinlinewbjectpacityrutlinederigin-offsetbelrstxyesrspective-originaceholderioghtng-offsettateundedw-xyz-belrstlreseslr-endspantartaturatecepiahizekewpace-taleroll-xyz-barmpbelrstxyesbelrstxyes-thumbrackadowrink-xyxyartrokeabextora-shadowpckingnsformitionlate-xyz-offsetill-changeoom\";\nconst edgeTarget = (() => {\n\tconst N = edgeStart.length - 1;\n\tconst sizes = new Int32Array(N);\n\tfor (let i = N - 1; i >= 0; i--) {\n\t\tlet s = 1;\n\t\tlet c = i + 1;\n\t\tfor (let k = edgeStart[i]; k < edgeStart[i + 1]; k++) {\n\t\t\ts += sizes[c];\n\t\t\tc += sizes[c];\n\t\t}\n\t\tsizes[i] = s;\n\t}\n\tconst out = new Int32Array(edgeStart[N]);\n\tlet e = 0;\n\tfor (let i = 0; i < N; i++) {\n\t\tlet c = i + 1;\n\t\tfor (let k = edgeStart[i]; k < edgeStart[i + 1]; k++) {\n\t\t\tout[e++] = c;\n\t\t\tc += sizes[c];\n\t\t}\n\t}\n\treturn out;\n})();\nconst nodeGroup = U(\"02000000000000900<=0?000B000F00F00ŏI0J0LNPRTVX0000]_a00000000000000000000000rst0000000zŏ00000000000ŏ0000000ŏ00000000000000000000000000000000000000000000000000000000000000Ë000000000000000000000Þ000000000000000000ð0000000ø0ùúûüýþÿĀāĂăĄąĆ000000000000000000000000000000000000000000ħ0ĨĪ00000000000000000000ļĽ00000Ŭ000000\", 1);\nconst vlistPat = PS(U(\"123333359346463635126536711576\"));\nconst vlistOps = U(\"93203242332583253248325D>E?F@03263243255B:032523853:0325B:8GA032542H<C=12727B:0328432553;D>E?3257D>032585:0325B:;0328B:032\");\nconst vlistRef = U(\"012113445661666666789111:5;;;;;;;;444;;;:62999<1161=62>>?61:21@ABCD4446996:64E:::;:?::64:F114GHHIHHHHIHH1HH1HH1HHHHHH::EEJ4444::EE4444441691;644444114244444:;K6666555555555555555999666664444444444444444444444226?6:66644L9M?D:111::::6DE199\");\nconst vlistGroup = DZ(\"020200202020020020020020020020200200200200200200200002020202001003040106000200200200200200200200200200200200200200200200200200200200200200200200200200200200020020020020020020002020200202002002002002002002002002002020002002020020200220200200200200200200200200200200020020020000200020002000200200200020020020002000200200200020020202002020202000200200020022000200200020020002002000200220002002000200W0Z00020020002002020002002000200g0j0002002000200200020020002002000200200020020002000200002000002002002002002000200020000200002002002002002002002020020020200200200200200200200200202020020020020020020020020002002002020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020002002002002002002000200200200200200200200200200020202020002000200020002002002002000020200200\");\nconst nodeVlist = (() => {\n\tconst out = (/* @__PURE__ */ new Int32Array(319)).fill(-1);\n\tconst A = DZ(\"02422242:222222242224222242442222222422222244442242226224222426222422442462222422622222222626222462242622422622422424242422222222422222222242422222222222222222622442224222222222222224424442262222222222222222222226224222424242422224422422422222\");\n\tconst V = DZ(\"02222222222222222222202222222222222222222222221422222222222222222222222222222222222Y\\\\222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221422222222222222222222222222222222222222Ŀł222222222222222222\");\n\tfor (let i = 0; i < A.length; i++) out[A[i]] = V[i];\n\treturn out;\n})();\nconst SETS = \"container |break-after- all auto avoid avoid-page column left page right|break-before- all auto avoid avoid-page column left page right|break-inside-a uto void void-column void-page|box-decoration- clone slice|box- border content| contents flow-root hidden table table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group| not-sr-only sr-only|float- end left none right start|clear- both end left none right start|isolat e ion-auto|overflow- auto clip hidden scroll visible|overflow-x- auto clip hidden scroll visible|overflow-y- auto clip hidden scroll visible|overscroll- auto contain none|overscroll-x- auto contain none|overscroll-y- auto contain none| absolute fixed relative static sticky| collapse invisible visible|justify- around baseline between center center-safe end end-safe evenly normal start stretch|justify-items- center center-safe end end-safe normal start stretch|justify-self- auto center center-safe end end-safe start stretch|items- baseline baseline-last center center-safe end end-safe start stretch|self- auto baseline baseline-last center center-safe end end-safe start stretch|place-content- around baseline between center center-safe end end-safe evenly start stretch|place-items- baseline center center-safe end end-safe start stretch|place-self- auto center center-safe end end-safe start stretch| antialiased subpixel-antialiased| italic not-italic|normal-nums |ordinal |slashed-zero | lining-nums oldstyle-nums| proportional-nums tabular-nums| diagonal-fractions stacked-fractions| no-underline overline| capitalize lowercase normal-case uppercase|truncate |whitespace- break-spaces normal nowrap pre pre-line pre-wrap|break- all keep normal words|wrap- anywhere break-word normal|hyphens- auto manual none|mix-blend- color color-burn color-dodge darken difference exclusion hard-light hue lighten luminosity multiply normal overlay plus-darker plus-lighter saturation screen soft-light|table- auto fixed|caption- bottom top|backface- hidden visible|appearance- auto none|scheme- dark light light-dark normal only-dark only-light|field-sizing- content fixed|pointer-events- auto none|resize  -none -x -y|snap- align-none center end start|snap- always normal|snap- both none x y|snap- mandatory proximity|touch- auto manipulation none|touch-pan- left right x|touch-pan- down up y|touch-pinch-zoom |select- all auto none text|forced-color-adjust- auto none| normal size| baseline bottom middle sub super text-bottom text-top top| bounce none ping pulse spin| auto square video| auto fr max min px|none | auto full px| fixed local scroll|clip- border content padding text|origin- border content padding| bottom bottom-left bottom-right center left left-bottom left-top right right-bottom right-top top top-left top-right| no-repeat repeat repeat-round repeat-space repeat-x repeat-y| auto contain cover| gradient-to-b gradient-to-bl gradient-to-br gradient-to-l gradient-to-r gradient-to-t gradient-to-tl gradient-to-tr none|blend- color color-burn color-dodge darken difference exclusion hard-light hue lighten luminosity multiply normal overlay saturation screen soft-light|to- b bl br l r t tl tr| auto dvh fit full lh lvh max min px screen svh| dashed dotted double hidden none solid| collapse separate|px |auto |full | content none strict| inline-size size|layout |paint |style | around baseline between center center-safe end end-safe evenly normal start stretch| alias all-scroll auto cell col-resize context-menu copy crosshair default e-resize ew-resize grab grabbing help move n-resize ne-resize nesw-resize no-drop none not-allowed ns-resize nw-resize nwse-resize pointer progress row-resize s-resize se-resize sw-resize text vertical-text w-resize wait zoom-in zoom-out| dashed dotted double solid wavy| auto from-font|reverse |initial | in in-out initial linear out| col col-reverse row row-reverse| nowrap wrap wrap-reverse| auto initial none| black bold extrabold extralight light medium normal semibold thin| condensed expanded extra-condensed extra-expanded normal semi-condensed semi-expanded ultra-condensed ultra-expanded|flow- col col-dense dense row row-dense| none subgrid| auto dvh dvw fit full lh lvh lvw max min px screen svh svw| block flex grid table| auto dvw fit full lvw max min px screen svw| loose none normal px relaxed snug tight|through |item | inside outside| decimal disc none| auto px| clip-border clip-content clip-fill clip-padding clip-stroke clip-view no-clip| add exclude intersect subtract| alpha luminance match|origin- border content fill padding stroke view|type- alpha luminance| circle ellipse| closest-corner closest-side farthest-corner farthest-side|at- bottom bottom-left bottom-right center left left-bottom left-top right right-bottom right-top top top-left top-right| dvh fit full lh lvh max min none px screen svh| auto dvh dvw fit full lh lvh lvw max min none px screen svh svw| dvw fit full lvw max min none px screen svw| auto dvh dvw fit full lvh lvw max min none prose px svh svw| auto dvh dvw fit full lvh lvw max min none px screen svh svw| contain cover fill none scale-down| first last none| distant dramatic midrange near none normal|inset | full none|3d | auto smooth|gutter- auto both stable| auto none thin| inner none| auto dvh dvw fit full lvh lvw max min px svh svw|base | center end justify left right start| clip ellipsis| balance nowrap pretty wrap| normal tight tighter wide wider widest| cpu gpu none| 3d flat| all colors none opacity shadow transform| discrete normal| full px| auto dvh dvw fit full lvh lvw max min px screen svh svw| auto contents scroll transform\".split(\"|\").map((s) => {\n\tconst tails = s.split(\" \");\n\tconst prefix = tails.shift();\n\tfor (let i = 0; i < tails.length; i++) tails[i] = prefix + tails[i];\n\treturn tails;\n});\nconst AA = DZ(\"0000000000000000000000000000000000000000000000000000000000000262242:6@200000006:240B428:4422400002046044222426220026642642462026224222824220022400000000\\\\00N222422242222222224062242222222422226264222422222222222222442804222422222222222222222222220<4<0204260002444020204224422\");\nconst AG = DZ(\"ɠ222222222222222222222222222222222222222222222222222222222222˕4222226>ʶ22ʷʺʷ2ʸʷ42ʴ2ʓ22>621422ɶ222ɹɼɷɺɷɺ22ɱ42222ɨ2ɧ26622ɘɓ244ƸƵ222]d24242ǖǓƚÄȫ2263ȨȥȨ2222222ǣ222222222222222222ǂƽ2ƾƵ2222222422222ƜƑ22222222222222222222144Ŧţ22Ţş222222222222222222222ĸ2ı68ĦģĦɡŰ4Ġ«®ĝ822ĔđĔ2ē2222622\");\nconst AS = DZ(\"02222222222222222222222222222222222222222222222222222222222222222202022222222222EH2200IL021042222Y\\\\222IL0cf2e10j2222U00X202[^2y0000120|{~22:22|22222222222G000qOVI00000}2>40000B00000I¨©000¬00000000000000021M®­00°000000000000000000000222HGHa1º222¿2À2222ÉÌ000­°2±\");\nconst litAnchor = /* @__PURE__ */ new Int32Array(995);\nconst litGroup = /* @__PURE__ */ new Int32Array(995);\nconst litPool = /* @__PURE__ */ new Int32Array(995);\nlet poolText = \"\";\nconst poolOffsets = /* @__PURE__ */ new Int32Array(1038);\n{\n\tconst tailRef = /* @__PURE__ */ new Map();\n\tlet nextRef = 0;\n\tlet e = 0;\n\tfor (let i = 0; i < AA.length; i++) for (const tail of SETS[AS[i]]) {\n\t\tlet r = tailRef.get(tail);\n\t\tif (r === void 0) {\n\t\t\tr = nextRef++;\n\t\t\ttailRef.set(tail, r);\n\t\t\tpoolOffsets[r * 2] = poolText.length;\n\t\t\tpoolOffsets[r * 2 + 1] = tail.length;\n\t\t\tpoolText += tail;\n\t\t}\n\t\tlitAnchor[e] = AA[i];\n\t\tlitGroup[e] = AG[i];\n\t\tlitPool[e] = r;\n\t\te++;\n\t}\n}\nconst adjGid = DZ(\"0b2N:222@R>F@286¦2@H2D266226FB22B2>BD\\\\6N22222Z222D222p\");\nconst adjStart = PS(U(\"1::24444432:442:44:44>222222:44:4421322511111311111114\"));\nconst adjTgt = DZ(\"24A;33N=C@H4A;33N=C@<27;83:;8393NQ:3NQʰ222ˉºŴŽ2R2=18cƴÅŇ=cĞÛC1ƈǝȈ:ħ25=11D3A@4=<1;1DEr25;11B3?<6;:371BCn9@7=<8192>2E121@9@EHE@9>2T25511<398454131<=V25511<398454131<=ƧNž2Đå242L222290000f22500ɛ000ǘ222\");\nconst patGid = U(\"ĳ\");\nconst patTgt = U(\"\");\nconst postfixLookupGroups = U(\"1\");\nconst orderSensitiveModifiers = \"* ** after backdrop before details-content file first-letter first-line marker placeholder selection\";\nvar tables_generated_default = {\n\tGROUP_COUNT,\n\tcustomValidatorNames,\n\tedgeStart,\n\tlabelStart,\n\tlabelText,\n\tedgeTarget,\n\tnodeGroup,\n\tnodeVlist,\n\tvlistPat,\n\tvlistOps,\n\tvlistRef,\n\tvlistGroup,\n\tlitAnchor,\n\tlitGroup,\n\tlitPool,\n\tpoolOffsets,\n\tpoolText,\n\tadjGid,\n\tadjStart,\n\tadjTgt,\n\tpatGid,\n\tpatTgt,\n\tpostfixLookupGroups,\n\torderSensitiveModifiers\n};\n\n//#endregion\nexport { tables_generated_default as default };","//#region src/engine.ts\nconst IS_JSC = \"line\" in /* @__PURE__ */ new Error();\nconst EXTERNAL = -1;\nconst DEAD = -1;\nconst fnv = (str, s, e) => {\n\tlet h = 2166136261;\n\tfor (let p = s; p < e; p++) h = Math.imul(h ^ str.charCodeAt(p), 16777619);\n\treturn h;\n};\nconst spanHash = (str, s, e) => {\n\tconst len = e - s;\n\tlet h = Math.imul(len, 2654435761) ^ str.charCodeAt(s);\n\tif (len > 3) {\n\t\tconst q = len >> 2;\n\t\tconst m = len >> 1;\n\t\th = Math.imul(h ^ str.charCodeAt(s + 1) << 8 ^ str.charCodeAt(s + 2) << 16 ^ str.charCodeAt(s + q), 2246822507);\n\t\th = Math.imul(h ^ str.charCodeAt(s + m) << 8 ^ str.charCodeAt(s + m + q) << 16 ^ str.charCodeAt(e - 3), 3266489909);\n\t\th ^= str.charCodeAt(e - 2) << 8 ^ str.charCodeAt(e - 1) << 16;\n\t\tfor (let p = s + 3, q = e - 4; p < s + 8 && p < q; p++, q--) h = Math.imul(h ^ str.charCodeAt(p) ^ str.charCodeAt(q) << 8, 16777619);\n\t}\n\treturn h ^ h >>> 15 | 0;\n};\nconst createEngine = (T, validatorImpls, options = {}) => {\n\tconst { GROUP_COUNT, edgeStart, labelStart, labelText, edgeTarget, nodeGroup, nodeVlist, vlistPat, vlistOps, vlistRef, vlistGroup, litAnchor, litGroup, litPool, poolOffsets, poolText, adjGid, adjStart, adjTgt, patGid, patTgt, postfixLookupGroups, customValidatorNames, orderSensitiveModifiers } = T;\n\tconst adjRow = new Int32Array(GROUP_COUNT).fill(-1);\n\tfor (let i = 0; i < adjGid.length; i++) adjRow[adjGid[i]] = i;\n\tlet maxAdj = 0;\n\tfor (let r = 0; r + 1 < adjStart.length; r++) {\n\t\tconst n = adjStart[r + 1] - adjStart[r];\n\t\tif (n > maxAdj) maxAdj = n;\n\t}\n\tlet CLAIM_PER_TOKEN = 32;\n\twhile (CLAIM_PER_TOKEN < 2 * (1 + maxAdj + patGid.length)) CLAIM_PER_TOKEN <<= 1;\n\tconst vgStart = new Int32Array(vlistRef.length + 1);\n\tfor (let l = 0; l < vlistRef.length; l++) vgStart[l + 1] = vgStart[l] + vlistPat[vlistRef[l] + 1] - vlistPat[vlistRef[l]];\n\tconst postfixLookupSet = new Uint8Array(GROUP_COUNT);\n\tfor (let i = 0; i < postfixLookupGroups.length; i++) postfixLookupSet[postfixLookupGroups[i]] = 1;\n\tconst nodeCount = edgeStart.length - 1;\n\tconst nodeHasLit = new Uint8Array(nodeCount);\n\tlet litMaxLen = 0;\n\tlet litNoArb = true;\n\tfor (let i = 0; i < litAnchor.length; i++) {\n\t\tnodeHasLit[litAnchor[i]] = 1;\n\t\tconst len = poolOffsets[litPool[i] * 2 + 1];\n\t\tif (len > litMaxLen) litMaxLen = len;\n\t\tconst c0 = poolText.charCodeAt(poolOffsets[litPool[i] * 2]);\n\t\tif (c0 === 91 || c0 === 40) litNoArb = false;\n\t}\n\tlet LIT_SIZE = 1;\n\twhile (LIT_SIZE < litAnchor.length * 2) LIT_SIZE <<= 1;\n\tconst litTable = new Int32Array(LIT_SIZE).fill(-1);\n\tfor (let i = 0; i < litAnchor.length; i++) {\n\t\tconst off = poolOffsets[litPool[i] * 2];\n\t\tlet idx = (fnv(poolText, off, off + poolOffsets[litPool[i] * 2 + 1]) ^ Math.imul(litAnchor[i], 2654435761) | 0) & LIT_SIZE - 1;\n\t\twhile (litTable[idx] !== -1) idx = idx + 1 & LIT_SIZE - 1;\n\t\tlitTable[idx] = i;\n\t}\n\tconst litProbe = (anchor, input, s, e) => {\n\t\tlet idx = (fnv(input, s, e) ^ Math.imul(anchor, 2654435761) | 0) & LIT_SIZE - 1;\n\t\tconst len = e - s;\n\t\tfor (;;) {\n\t\t\tconst entry = litTable[idx];\n\t\t\tif (entry === -1) return -1;\n\t\t\tif (litAnchor[entry] === anchor && poolOffsets[litPool[entry] * 2 + 1] === len) {\n\t\t\t\tconst off = poolOffsets[litPool[entry] * 2];\n\t\t\t\tlet ok = true;\n\t\t\t\tfor (let k = 0; k < len; k++) if (poolText.charCodeAt(off + k) !== input.charCodeAt(s + k)) {\n\t\t\t\t\tok = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (ok) return litGroup[entry];\n\t\t\t}\n\t\t\tidx = idx + 1 & LIT_SIZE - 1;\n\t\t}\n\t};\n\tconst cacheSize = options.cacheSize ?? 8192;\n\tconst RAW_PREFIX = options.prefix ?? T.prefix ?? \"\";\n\tconst FULL_PREFIX = RAW_PREFIX === \"\" ? \"\" : RAW_PREFIX + \":\";\n\tconst FPL = FULL_PREFIX.length;\n\tconst vCustom = (customValidatorNames ?? []).map((name) => {\n\t\tconst fn = validatorImpls && validatorImpls[name];\n\t\tif (!fn) throw new Error(\"cn: missing validator \" + name);\n\t\treturn fn;\n\t});\n\tconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\n\tconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n\tconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\n\tconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\n\tlet aKind = 0;\n\tlet aLabelS = -1;\n\tlet aLabelE = -1;\n\tlet aValS = -1;\n\tlet aValE = -1;\n\tconst isWordCode = (c) => c >= 97 && c <= 122 || c >= 65 && c <= 90 || c >= 48 && c <= 57 || c === 95;\n\tconst isUniWS = (c) => /\\s/.test(String.fromCharCode(c));\n\tconst analyzeArb = (input, s, e) => {\n\t\taKind = 0;\n\t\taLabelS = -1;\n\t\tif (e - s < 3) return;\n\t\tconst c0 = input.charCodeAt(s);\n\t\tconst cl = input.charCodeAt(e - 1);\n\t\tif (c0 === 91 && cl === 93) aKind = 1;\n\t\telse if (c0 === 40 && cl === 41) aKind = 2;\n\t\telse return;\n\t\taValS = s + 1;\n\t\taValE = e - 1;\n\t\tlet p = s + 1;\n\t\tif (isWordCode(input.charCodeAt(p))) {\n\t\t\tp++;\n\t\t\twhile (p < e - 1) {\n\t\t\t\tconst c = input.charCodeAt(p);\n\t\t\t\tif (!isWordCode(c) && c !== 45) break;\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif (p < e - 2 && input.charCodeAt(p) === 58) {\n\t\t\t\taLabelS = s + 1;\n\t\t\t\taLabelE = p;\n\t\t\t\taValS = p + 1;\n\t\t\t}\n\t\t}\n\t};\n\tconst spanEq = (input, s, e, str) => {\n\t\tif (e - s !== str.length) return false;\n\t\tfor (let i = 0; i < str.length; i++) if (input.charCodeAt(s + i) !== str.charCodeAt(i)) return false;\n\t\treturn true;\n\t};\n\tconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\n\tconst tshirtRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\n\tconst isNumStr = (v) => !!v && !Number.isNaN(Number(v));\n\tconst spanIsNamedContainerQuery = (input, s, e) => {\n\t\tif (e - s < 11 || !spanEq(input, s, s + 10, \"@container\")) return false;\n\t\tif (input.charCodeAt(s + 10) === 47) return e - s >= 12;\n\t\tconst c11 = input.charCodeAt(s + 11);\n\t\treturn c11 === 115 && e - s >= 17 && spanEq(input, s + 10, s + 16, \"-size/\") || c11 === 110 && e - s >= 19 && spanEq(input, s + 10, s + 18, \"-normal/\");\n\t};\n\tconst VKIND = [\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t2\n\t];\n\tconst VLABELS = \"length|number|number weight|family-name|position percentage|length size bg-size|image url|shadow|length|family-name|position percentage|length size bg-size|image url|shadow|number weight\".split(\"|\").map((s) => s.split(\" \"));\n\tconst VFALL = [\n\t\t2,\n\t\t3,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t4,\n\t\t5,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t1\n\t];\n\tconst runValidator = (op, input, s, e) => {\n\t\tif (op >= 10) {\n\t\t\tif (op >= 25) return vCustom[op - 25](input.slice(s, e));\n\t\t\tconst i = op - 10;\n\t\t\tif (aKind !== VKIND[i]) return false;\n\t\t\tif (aLabelS >= 0) {\n\t\t\t\tfor (const L of VLABELS[i]) if (spanEq(input, aLabelS, aLabelE, L)) return true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tswitch (VFALL[i]) {\n\t\t\t\tcase 0: return false;\n\t\t\t\tcase 1: return true;\n\t\t\t\tcase 2: {\n\t\t\t\t\tconst v = input.slice(aValS, aValE);\n\t\t\t\t\treturn lengthUnitRegex.test(v) && !colorFunctionRegex.test(v);\n\t\t\t\t}\n\t\t\t\tcase 3: return isNumStr(input.slice(aValS, aValE));\n\t\t\t\tcase 4: return imageRegex.test(input.slice(aValS, aValE));\n\t\t\t\tdefault: return shadowRegex.test(input.slice(aValS, aValE));\n\t\t\t}\n\t\t}\n\t\tswitch (op) {\n\t\t\tcase 0: return true;\n\t\t\tcase 1: return aKind === 0;\n\t\t\tcase 2: return aKind === 1;\n\t\t\tcase 3: return aKind === 2;\n\t\t\tcase 4: return fractionRegex.test(input.slice(s, e));\n\t\t\tcase 5: return isNumStr(input.slice(s, e));\n\t\t\tcase 6: {\n\t\t\t\tconst v = input.slice(s, e);\n\t\t\t\treturn !!v && Number.isInteger(Number(v));\n\t\t\t}\n\t\t\tcase 7: return e > s && input.charCodeAt(e - 1) === 37 && isNumStr(input.slice(s, e - 1));\n\t\t\tcase 8: return tshirtRegex.test(input.slice(s, e));\n\t\t\tdefault: return spanIsNamedContainerQuery(input, s, e);\n\t\t}\n\t};\n\tconst orderSensitive = new Set(typeof orderSensitiveModifiers === \"string\" ? orderSensitiveModifiers.split(\" \") : orderSensitiveModifiers);\n\tconst internSpan = (map, input, s, e, imp, make) => {\n\t\tconst h = fnv(input, s, e) ^ (imp ? 2654435769 : 0) | 0;\n\t\tlet bucket = map.get(h);\n\t\tif (bucket !== void 0) outer: for (let b = 0; b < bucket.length; b++) {\n\t\t\tconst en = bucket[b];\n\t\t\tif (en.imp !== imp || en.k.length !== e - s) continue;\n\t\t\tfor (let i = 0; i < en.k.length; i++) if (en.k.charCodeAt(i) !== input.charCodeAt(s + i)) continue outer;\n\t\t\treturn en.id;\n\t\t}\n\t\telse map.set(h, bucket = []);\n\t\tconst k = input.slice(s, e);\n\t\tconst id = make(k);\n\t\tbucket.push({\n\t\t\tk,\n\t\t\timp,\n\t\t\tid\n\t\t});\n\t\treturn id;\n\t};\n\tlet ctxByHash = /* @__PURE__ */ new Map();\n\tlet ctxByCanon = /* @__PURE__ */ new Map();\n\tlet nextCtxId = 2;\n\tconst MAX_CTX = 4096;\n\tconst canonicalizeContext = (raw, important) => {\n\t\tconst mods = [];\n\t\tlet dB = 0, dP = 0, start = 0;\n\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\tconst c = raw.charCodeAt(i);\n\t\t\tif (dB === 0 && dP === 0 && c === 58) {\n\t\t\t\tmods.push(raw.slice(start, i));\n\t\t\t\tstart = i + 1;\n\t\t\t} else if (c === 91) dB++;\n\t\t\telse if (c === 93) dB--;\n\t\t\telse if (c === 40) dP++;\n\t\t\telse if (c === 41) dP--;\n\t\t}\n\t\tmods.push(raw.slice(start));\n\t\tlet canonical = mods[0];\n\t\tif (mods.length > 1) {\n\t\t\tconst result = [];\n\t\t\tlet segment = [];\n\t\t\tfor (const mod of mods) if (mod.charCodeAt(0) === 91 || orderSensitive.has(mod)) {\n\t\t\t\tif (segment.length) {\n\t\t\t\t\tresult.push(...segment.sort());\n\t\t\t\t\tsegment = [];\n\t\t\t\t}\n\t\t\t\tresult.push(mod);\n\t\t\t} else segment.push(mod);\n\t\t\tif (segment.length) result.push(...segment.sort());\n\t\t\tcanonical = result.join(\":\");\n\t\t}\n\t\tconst key = important ? canonical + \" !\" : canonical;\n\t\tlet id = ctxByCanon.get(key);\n\t\tif (id === void 0) ctxByCanon.set(key, id = nextCtxId++);\n\t\treturn id;\n\t};\n\tlet dynByHash = /* @__PURE__ */ new Map();\n\tlet nextDynId = GROUP_COUNT;\n\tconst MAX_DYN = GROUP_COUNT + 4096;\n\tconst newDynId = () => nextDynId++;\n\tconst ID_LIMIT = 2097152;\n\tconst TOKEN_TABLE = 8192;\n\tconst memoHash = new Int32Array(TOKEN_TABLE);\n\tconst memoStr = new Array(TOKEN_TABLE).fill(null);\n\tconst memoGid = new Int32Array(TOKEN_TABLE);\n\tconst memoCtx = new Int32Array(TOKEN_TABLE);\n\tconst memoFlags = new Uint8Array(TOKEN_TABLE);\n\tlet memoTick = 0;\n\tconst memoPut = (way0, input, ts, te, h, gid, ctxId, flags) => {\n\t\tlet slot = way0;\n\t\tif (memoStr[way0] !== null) {\n\t\t\tif (memoStr[way0 | 1] === null) slot = way0 | 1;\n\t\t\telse if ((memoTick++ & 3) === 0) slot = way0 | memoTick >> 2 & 1;\n\t\t\telse return;\n\t\t}\n\t\tmemoStr[slot] = input.slice(ts, te);\n\t\tmemoHash[slot] = h;\n\t\tmemoGid[slot] = gid;\n\t\tmemoCtx[slot] = ctxId;\n\t\tmemoFlags[slot] = flags;\n\t};\n\tconst memoReset = () => memoStr.fill(null);\n\tlet cap = 256;\n\tlet tokI32 = [\n\t\tnew Int32Array(cap),\n\t\tnew Int32Array(cap),\n\t\tnew Int32Array(cap),\n\t\tnew Int32Array(cap)\n\t];\n\tlet [tokStart, tokEnd, tokGid, tokCtx] = tokI32;\n\tlet tokFlags = new Uint8Array(cap);\n\tlet keep = new Uint8Array(cap);\n\tconst growTokens = () => {\n\t\tcap *= 2;\n\t\ttokI32 = tokI32.map((a) => {\n\t\t\tconst n = new Int32Array(cap);\n\t\t\tn.set(a);\n\t\t\treturn n;\n\t\t});\n\t\t[tokStart, tokEnd, tokGid, tokCtx] = tokI32;\n\t\tconst nf = new Uint8Array(cap);\n\t\tnf.set(tokFlags);\n\t\ttokFlags = nf;\n\t\tkeep = new Uint8Array(cap);\n\t};\n\tlet ckptCap = 64;\n\tlet ckptNode = new Int32Array(ckptCap);\n\tlet ckptTail = new Int32Array(ckptCap);\n\tconst claim0 = new Int32Array(GROUP_COUNT);\n\tlet CLAIM_TABLE = 2048;\n\tlet claimShift = 21;\n\tlet claimKeys = new Float64Array(CLAIM_TABLE);\n\tlet claimEpochs = new Int32Array(CLAIM_TABLE);\n\tlet epoch = 0;\n\tconst claimTest = (ctx, gid) => {\n\t\tif (ctx === 0 && gid < GROUP_COUNT) {\n\t\t\tif (claim0[gid] === epoch) return 1;\n\t\t\tclaim0[gid] = epoch;\n\t\t\treturn 0;\n\t\t}\n\t\tconst key = ctx * 2097152 + gid + 1;\n\t\tlet idx = Math.imul(key, 2654435761) >>> claimShift;\n\t\tfor (;;) {\n\t\t\tif (claimEpochs[idx] !== epoch) break;\n\t\t\tif (claimKeys[idx] === key) return 1;\n\t\t\tidx = idx + 1 & CLAIM_TABLE - 1;\n\t\t}\n\t\tclaimKeys[idx] = key;\n\t\tclaimEpochs[idx] = epoch;\n\t\treturn 0;\n\t};\n\tconst resolveAt = (input, bs, endPos, nodeAt, ckptAt) => {\n\t\tif (endPos - bs >= 2 && input.charCodeAt(bs) === 91 && input.charCodeAt(endPos - 1) === 93) {\n\t\t\tlet colon = -1;\n\t\t\tfor (let p = bs + 1; p < endPos - 1; p++) if (input.charCodeAt(p) === 58) {\n\t\t\t\tcolon = p;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (colon === -1 || colon === bs + 1) return EXTERNAL;\n\t\t\treturn internSpan(dynByHash, input, bs + 1, colon, 0, newDynId);\n\t\t}\n\t\tif (nodeAt >= 0 && nodeGroup[nodeAt] >= 0) return nodeGroup[nodeAt];\n\t\tfor (let k = ckptAt - 1; k >= 0; k--) {\n\t\t\tconst tailStart = ckptTail[k];\n\t\t\tif (tailStart > endPos) continue;\n\t\t\tconst nodeId = ckptNode[k];\n\t\t\tconst tlen = endPos - tailStart;\n\t\t\tif (nodeHasLit[nodeId] === 1 && tlen > 0 && tlen <= litMaxLen) {\n\t\t\t\tconst c0 = input.charCodeAt(tailStart);\n\t\t\t\tif (litNoArb === false || c0 !== 91 && c0 !== 40) {\n\t\t\t\t\tconst g = litProbe(nodeId, input, tailStart, endPos);\n\t\t\t\t\tif (g >= 0) return g;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst vl = nodeVlist[nodeId];\n\t\t\tif (vl < 0) continue;\n\t\t\tconst pat = vlistRef[vl];\n\t\t\tconst vs = vlistPat[pat];\n\t\t\tconst ve = vlistPat[pat + 1];\n\t\t\tif (vs === ve) continue;\n\t\t\tanalyzeArb(input, tailStart, endPos);\n\t\t\tconst g0 = vgStart[vl] - vs;\n\t\t\tfor (let v = vs; v < ve; v++) if (runValidator(vlistOps[v], input, tailStart, endPos)) return vlistGroup[g0 + v];\n\t\t}\n\t\treturn EXTERNAL;\n\t};\n\tconst mergeClassList = (input) => {\n\t\tconst n = input.length;\n\t\tlet tokenCount = 0;\n\t\tlet totalTokenChars = 0;\n\t\tlet sawNonSpaceWS = false;\n\t\tif (nextCtxId > MAX_CTX || ctxByHash.size > MAX_CTX) {\n\t\t\tctxByHash = /* @__PURE__ */ new Map();\n\t\t\tctxByCanon = /* @__PURE__ */ new Map();\n\t\t\tnextCtxId = 2;\n\t\t\tmemoReset();\n\t\t}\n\t\tif (nextDynId > MAX_DYN) {\n\t\t\tdynByHash = /* @__PURE__ */ new Map();\n\t\t\tnextDynId = GROUP_COUNT;\n\t\t\tmemoReset();\n\t\t}\n\t\tlet i = 0;\n\t\twhile (i < n) {\n\t\t\tlet c = input.charCodeAt(i);\n\t\t\tif (c === 32 || c >= 9 && c <= 13 || c >= 160 && isUniWS(c)) {\n\t\t\t\tif (c !== 32) sawNonSpaceWS = true;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst ts = i;\n\t\t\tlet th = 0;\n\t\t\twhile (i < n) {\n\t\t\t\tc = input.charCodeAt(i);\n\t\t\t\tif (c <= 32) {\n\t\t\t\t\tif (c === 32) break;\n\t\t\t\t\tif (c >= 9 && c <= 13) {\n\t\t\t\t\t\tsawNonSpaceWS = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else if (c >= 160 && isUniWS(c)) {\n\t\t\t\t\tsawNonSpaceWS = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tth = Math.imul(th ^ c, 16777619);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tconst te = i;\n\t\t\tconst len = te - ts;\n\t\t\tif (tokenCount === cap) growTokens();\n\t\t\tconst t = tokenCount++;\n\t\t\ttokStart[t] = ts;\n\t\t\ttokEnd[t] = te;\n\t\t\ttotalTokenChars += len;\n\t\t\tth ^= Math.imul(len, 2654435761);\n\t\t\tconst h = th ^ th >>> 15 | 0;\n\t\t\tconst way0 = h & 8190;\n\t\t\t{\n\t\t\t\tlet hitAt = -1;\n\t\t\t\tif (memoHash[way0] === h && memoStr[way0] !== null && memoStr[way0].length === len) hitAt = way0;\n\t\t\t\telse if (memoHash[way0 | 1] === h && memoStr[way0 | 1] !== null && memoStr[way0 | 1].length === len) hitAt = way0 | 1;\n\t\t\t\tif (hitAt >= 0) {\n\t\t\t\t\tconst s = memoStr[hitAt];\n\t\t\t\t\tlet ok = true;\n\t\t\t\t\tfor (let k = 0; k < len; k++) if (s.charCodeAt(k) !== input.charCodeAt(ts + k)) {\n\t\t\t\t\t\tok = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (ok) {\n\t\t\t\t\t\ttokGid[t] = memoGid[hitAt];\n\t\t\t\t\t\ttokCtx[t] = memoCtx[hitAt];\n\t\t\t\t\t\ttokFlags[t] = memoFlags[hitAt];\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet pts = ts;\n\t\t\tif (FPL !== 0) {\n\t\t\t\tif (te - ts <= FPL || !input.startsWith(FULL_PREFIX, ts)) {\n\t\t\t\t\ttokGid[t] = EXTERNAL;\n\t\t\t\t\tmemoPut(way0, input, ts, te, h, EXTERNAL, 0, 0);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tpts = ts + FPL;\n\t\t\t}\n\t\t\tlet depthB = 0, depthP = 0;\n\t\t\tlet lastColon = -1, lastSlash = -1;\n\t\t\tfor (let p = pts; p < te; p++) {\n\t\t\t\tconst pc = input.charCodeAt(p);\n\t\t\t\tif (depthB === 0 && depthP === 0) {\n\t\t\t\t\tif (pc === 58) {\n\t\t\t\t\t\tlastColon = p;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (pc === 47) {\n\t\t\t\t\t\tlastSlash = p;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pc === 91) depthB++;\n\t\t\t\telse if (pc === 93) depthB--;\n\t\t\t\telse if (pc === 40) depthP++;\n\t\t\t\telse if (pc === 41) depthP--;\n\t\t\t}\n\t\t\tconst modStart = lastColon >= pts ? lastColon + 1 : pts;\n\t\t\tlet bs = modStart;\n\t\t\tlet be = te;\n\t\t\tlet important = false;\n\t\t\tlet prefixShift = 0;\n\t\t\tif (be > bs && input.charCodeAt(be - 1) === 33) {\n\t\t\t\timportant = true;\n\t\t\t\tbe--;\n\t\t\t} else if (be > bs && input.charCodeAt(bs) === 33) {\n\t\t\t\timportant = true;\n\t\t\t\tbs++;\n\t\t\t\tprefixShift = 1;\n\t\t\t}\n\t\t\tlet postfixEnd = -1;\n\t\t\tif (lastSlash > modStart) {\n\t\t\t\tpostfixEnd = lastSlash + prefixShift;\n\t\t\t\tif (postfixEnd >= be) postfixEnd = -1;\n\t\t\t}\n\t\t\tlet feedStart = bs;\n\t\t\tif (be - bs > 1 && input.charCodeAt(bs) === 45) feedStart = bs + 1;\n\t\t\tlet node = 0;\n\t\t\tlet lp = 0;\n\t\t\tlet le = 0;\n\t\t\tlet pending = -1;\n\t\t\tlet ckptTop = 0;\n\t\t\tif (nodeVlist[0] >= 0 || nodeHasLit[0] === 1) {\n\t\t\t\tckptNode[0] = 0;\n\t\t\t\tckptTail[0] = feedStart;\n\t\t\t\tckptTop = 1;\n\t\t\t}\n\t\t\tlet slashNode = DEAD;\n\t\t\tlet slashCkpt = 0;\n\t\t\tfor (let p = feedStart; p < be; p++) {\n\t\t\t\tif (p === postfixEnd) {\n\t\t\t\t\tslashNode = lp < le ? DEAD : node;\n\t\t\t\t\tslashCkpt = ckptTop;\n\t\t\t\t}\n\t\t\t\tif (node !== DEAD) {\n\t\t\t\t\tconst cc = input.charCodeAt(p);\n\t\t\t\t\tlet arrived = -1;\n\t\t\t\t\tif (lp < le) {\n\t\t\t\t\t\tif (labelText.charCodeAt(lp) === cc) {\n\t\t\t\t\t\t\tlp++;\n\t\t\t\t\t\t\tif (lp === le) arrived = node = pending;\n\t\t\t\t\t\t} else node = DEAD;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst es = edgeStart[node];\n\t\t\t\t\t\tconst ee = edgeStart[node + 1];\n\t\t\t\t\t\tlet next = DEAD;\n\t\t\t\t\t\tfor (let e = es; e < ee; e++) {\n\t\t\t\t\t\t\tconst ls = labelStart[e];\n\t\t\t\t\t\t\tif (labelText.charCodeAt(ls) === cc) {\n\t\t\t\t\t\t\t\tif (labelStart[e + 1] - ls === 1) arrived = next = edgeTarget[e];\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tlp = ls + 1;\n\t\t\t\t\t\t\t\t\tle = labelStart[e + 1];\n\t\t\t\t\t\t\t\t\tpending = edgeTarget[e];\n\t\t\t\t\t\t\t\t\tnext = node;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode = next;\n\t\t\t\t\t}\n\t\t\t\t\tif (arrived >= 0 && (nodeVlist[arrived] >= 0 || nodeHasLit[arrived] === 1) && p + 1 < be && input.charCodeAt(p + 1) === 45) {\n\t\t\t\t\t\tif (ckptTop === ckptCap) {\n\t\t\t\t\t\t\tckptCap *= 2;\n\t\t\t\t\t\t\tconst nv = new Int32Array(ckptCap);\n\t\t\t\t\t\t\tnv.set(ckptNode);\n\t\t\t\t\t\t\tckptNode = nv;\n\t\t\t\t\t\t\tconst nt = new Int32Array(ckptCap);\n\t\t\t\t\t\t\tnt.set(ckptTail);\n\t\t\t\t\t\t\tckptTail = nt;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tckptNode[ckptTop] = arrived;\n\t\t\t\t\t\tckptTail[ckptTop] = p + 2;\n\t\t\t\t\t\tckptTop++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (postfixEnd === be) {\n\t\t\t\tslashNode = lp < le ? DEAD : node;\n\t\t\t\tslashCkpt = ckptTop;\n\t\t\t}\n\t\t\tconst endNode = lp < le ? DEAD : node;\n\t\t\tlet gid;\n\t\t\tlet hasPostfix = false;\n\t\t\tif (postfixEnd >= 0) {\n\t\t\t\thasPostfix = true;\n\t\t\t\tgid = resolveAt(input, bs, postfixEnd, slashNode, slashCkpt);\n\t\t\t\tif (gid !== EXTERNAL && gid < GROUP_COUNT && postfixLookupSet[gid]) {\n\t\t\t\t\tconst gidFull = resolveAt(input, bs, be, endNode, ckptTop);\n\t\t\t\t\tif (gidFull !== EXTERNAL && gidFull !== gid) {\n\t\t\t\t\t\tgid = gidFull;\n\t\t\t\t\t\thasPostfix = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (gid === EXTERNAL) {\n\t\t\t\t\tgid = resolveAt(input, bs, be, endNode, ckptTop);\n\t\t\t\t\thasPostfix = false;\n\t\t\t\t}\n\t\t\t} else gid = resolveAt(input, bs, be, endNode, ckptTop);\n\t\t\tlet ctxId = 0;\n\t\t\tlet flags = 0;\n\t\t\tif (gid === EXTERNAL) tokGid[t] = EXTERNAL;\n\t\t\telse {\n\t\t\t\tflags = hasPostfix ? 1 : 0;\n\t\t\t\tctxId = pts >= lastColon ? important ? 1 : 0 : internSpan(ctxByHash, input, pts, lastColon, important ? 1 : 0, (k) => canonicalizeContext(k, important));\n\t\t\t\ttokGid[t] = gid;\n\t\t\t\ttokFlags[t] = flags;\n\t\t\t\ttokCtx[t] = ctxId;\n\t\t\t}\n\t\t\tmemoPut(way0, input, ts, te, h, gid, ctxId, flags);\n\t\t}\n\t\tif (tokenCount === 0) return \"\";\n\t\tif (tokenCount === 1) return tokStart[0] === 0 && tokEnd[0] === n ? input : input.slice(tokStart[0], tokEnd[0]);\n\t\tif (tokenCount * CLAIM_PER_TOKEN > CLAIM_TABLE) {\n\t\t\twhile (tokenCount * CLAIM_PER_TOKEN > CLAIM_TABLE) {\n\t\t\t\tCLAIM_TABLE <<= 1;\n\t\t\t\tclaimShift--;\n\t\t\t}\n\t\t\tclaimKeys = new Float64Array(CLAIM_TABLE);\n\t\t\tclaimEpochs = new Int32Array(CLAIM_TABLE);\n\t\t}\n\t\tif (nextCtxId >= ID_LIMIT || nextDynId >= ID_LIMIT) throw new Error(\"cn: too many distinct classes in one merge\");\n\t\tepoch = epoch + 1 | 0;\n\t\tif (epoch === 0) {\n\t\t\tclaim0.fill(0);\n\t\t\tclaimEpochs.fill(0);\n\t\t\tepoch = 1;\n\t\t}\n\t\tlet didDrop = false;\n\t\tfor (let t = tokenCount - 1; t >= 0; t--) {\n\t\t\tconst gid = tokGid[t];\n\t\t\tif (gid === EXTERNAL) {\n\t\t\t\tkeep[t] = 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst ctxId = tokCtx[t];\n\t\t\tif (claimTest(ctxId, gid) === 1) {\n\t\t\t\tkeep[t] = 0;\n\t\t\t\tdidDrop = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tkeep[t] = 1;\n\t\t\tif (gid < GROUP_COUNT) {\n\t\t\t\tconst r = adjRow[gid];\n\t\t\t\tif (r >= 0) for (let k = adjStart[r]; k < adjStart[r + 1]; k++) claimTest(ctxId, adjTgt[k]);\n\t\t\t\tif (tokFlags[t] & 1) {\n\t\t\t\t\tfor (let k = 0; k < patGid.length; k++) if (patGid[k] === gid) claimTest(ctxId, patTgt[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!didDrop && !sawNonSpaceWS && n === totalTokenChars + tokenCount - 1) return input;\n\t\tlet out = \"\";\n\t\tlet t = 0;\n\t\twhile (t < tokenCount) {\n\t\t\tif (!keep[t]) {\n\t\t\t\tt++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst runStart = tokStart[t];\n\t\t\tlet runEnd = tokEnd[t];\n\t\t\tlet u = t + 1;\n\t\t\twhile (u < tokenCount && keep[u] && tokStart[u] === runEnd + 1 && input.charCodeAt(runEnd) === 32) {\n\t\t\t\trunEnd = tokEnd[u];\n\t\t\t\tu++;\n\t\t\t}\n\t\t\tif (out.length > 0) out += \" \";\n\t\t\tout += input.slice(runStart, runEnd);\n\t\t\tt = u;\n\t\t}\n\t\treturn out;\n\t};\n\tconst DOOR_SIZE = 16384;\n\tconst door = new Int32Array(DOOR_SIZE * 2);\n\tlet doorBase = 0;\n\tlet doorEpoch = 1;\n\tlet cache = Object.create(null);\n\tlet prevCache = Object.create(null);\n\tlet cacheMap = /* @__PURE__ */ new Map();\n\tlet prevCacheMap = /* @__PURE__ */ new Map();\n\tlet cacheCount = 0;\n\tlet doorMarks = 0;\n\tconst rotateDoor = () => {\n\t\tdoorBase ^= DOOR_SIZE;\n\t\tdoorEpoch = doorEpoch + 1 | 0;\n\t\tdoorMarks = 0;\n\t};\n\tconst mergeCached = (input) => {\n\t\tlet merged = cache[input];\n\t\tif (merged !== void 0) return merged;\n\t\tconst hash = spanHash(input, 0, input.length);\n\t\tconst slot = (hash & 16383) + doorBase;\n\t\tconst wasSeen = door[slot] === (hash ^ doorEpoch) || door[slot ^ DOOR_SIZE] === (hash ^ doorEpoch - 1);\n\t\tif (wasSeen) {\n\t\t\tmerged = prevCache[input];\n\t\t\tif (merged !== void 0) {\n\t\t\t\tcache[input] = merged;\n\t\t\t\treturn merged;\n\t\t\t}\n\t\t}\n\t\tmerged = mergeClassList(input);\n\t\tif (wasSeen) {\n\t\t\tcache[input] = merged;\n\t\t\tif (++cacheCount > cacheSize) {\n\t\t\t\tcacheCount = 0;\n\t\t\t\tprevCache = cache;\n\t\t\t\tcache = Object.create(null);\n\t\t\t\trotateDoor();\n\t\t\t}\n\t\t} else {\n\t\t\tdoor[slot] = hash ^ doorEpoch;\n\t\t\tif (++doorMarks > DOOR_SIZE) rotateDoor();\n\t\t}\n\t\treturn merged;\n\t};\n\tconst mergeCachedMap = (input) => {\n\t\tlet merged = cacheMap.get(input);\n\t\tif (merged !== void 0) return merged;\n\t\tconst hash = spanHash(input, 0, input.length);\n\t\tconst slot = (hash & 16383) + doorBase;\n\t\tconst wasSeen = door[slot] === (hash ^ doorEpoch) || door[slot ^ DOOR_SIZE] === (hash ^ doorEpoch - 1);\n\t\tif (wasSeen) {\n\t\t\tmerged = prevCacheMap.get(input);\n\t\t\tif (merged !== void 0) {\n\t\t\t\tcacheMap.set(input, merged);\n\t\t\t\treturn merged;\n\t\t\t}\n\t\t}\n\t\tmerged = mergeClassList(input);\n\t\tif (wasSeen) {\n\t\t\tcacheMap.set(input, merged);\n\t\t\tif (++cacheCount > cacheSize) {\n\t\t\t\tcacheCount = 0;\n\t\t\t\tprevCacheMap = cacheMap;\n\t\t\t\tcacheMap = /* @__PURE__ */ new Map();\n\t\t\t\trotateDoor();\n\t\t\t}\n\t\t} else {\n\t\t\tdoor[slot] = hash ^ doorEpoch;\n\t\t\tif (++doorMarks > DOOR_SIZE) rotateDoor();\n\t\t}\n\t\treturn merged;\n\t};\n\tconst seenBefore = (input) => {\n\t\tconst hash = spanHash(input, 0, input.length);\n\t\tconst slot = (hash & 16383) + doorBase;\n\t\tif (door[slot] === (hash ^ doorEpoch) || door[slot ^ DOOR_SIZE] === (hash ^ doorEpoch - 1)) return true;\n\t\tdoor[slot] = hash ^ doorEpoch;\n\t\tif (++doorMarks > DOOR_SIZE) rotateDoor();\n\t\treturn false;\n\t};\n\tconst mergeString = cacheSize === 0 ? mergeClassList : IS_JSC ? (input) => {\n\t\tconst merged = cacheMap.get(input);\n\t\treturn merged !== void 0 ? merged : mergeCachedMap(input);\n\t} : mergeCached;\n\tconst merge = function() {\n\t\treturn arguments.length === 1 && typeof arguments[0] === \"string\" ? mergeString(arguments[0]) : mergeString(twJoin.apply(null, arguments));\n\t};\n\treturn {\n\t\tmerge,\n\t\tmergeString,\n\t\tseenBefore: cacheSize === 0 ? () => false : seenBefore,\n\t\tmergeUncached: mergeClassList\n\t};\n};\nconst resolveValue = (v, clsxMode) => {\n\tif (!v) return \"\";\n\tif (typeof v === \"string\") return v;\n\tlet out = \"\";\n\tif (typeof v.length === \"number\" && (clsxMode ? Array.isArray(v) : true)) {\n\t\tconst arr = v;\n\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\tconst item = arr[i];\n\t\t\tif (!item) continue;\n\t\t\tconst r = typeof item === \"string\" ? item : resolveValue(item, clsxMode);\n\t\t\tif (r) {\n\t\t\t\tif (out) out += \" \";\n\t\t\t\tout += r;\n\t\t\t}\n\t\t}\n\t\treturn out;\n\t}\n\tif (clsxMode) {\n\t\tif (typeof v === \"number\") return \"\" + v;\n\t\tif (typeof v === \"object\") {\n\t\t\tfor (const k in v) if (v[k]) {\n\t\t\t\tif (out) out += \" \";\n\t\t\t\tout += k;\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n};\nconst joinArgs = (args, clsxMode) => {\n\tlet s = \"\";\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst a = args[i];\n\t\tif (!a) continue;\n\t\tconst r = typeof a === \"string\" ? a : resolveValue(a, clsxMode);\n\t\tif (r) {\n\t\t\tif (s) s += \" \";\n\t\t\ts += r;\n\t\t}\n\t}\n\treturn s;\n};\n/** join-only, `twJoin`-compatible (strings + nested arrays, falsy skipped) */\nconst twJoin = function() {\n\treturn joinArgs(arguments, false);\n};\n/** join-only, `clsx`-compatible (no merging) */\nconst clsx = function() {\n\treturn joinArgs(arguments, true);\n};\nconst BUCKET_CAP = 256;\nconst BUCKET_MISS_CAP = 16;\nconst BUCKET_SKIP = 1024;\nconst CHURN_SIZE = 4096;\nconst wrapClsx = (mergeString, fresh) => {\n\tconst seenBefore = fresh === void 0 ? () => true : fresh.seenBefore;\n\tconst mergeUncached = fresh === void 0 ? mergeString : fresh.mergeUncached;\n\tlet argCache = /* @__PURE__ */ new Map();\n\tlet prevArgCache = /* @__PURE__ */ new Map();\n\tlet argCount = 0;\n\tlet lastHit = null;\n\tlet churnKey = null;\n\tlet churnOwn = [];\n\tlet churnVal = [];\n\tlet churnTick = 0;\n\tconst churnLookup = (key, own, join) => {\n\t\tif (churnKey === null) {\n\t\t\tchurnKey = new Array(CHURN_SIZE).fill(\"\");\n\t\t\tchurnOwn = new Array(CHURN_SIZE).fill(\"\");\n\t\t\tchurnVal = new Array(CHURN_SIZE).fill(\"\");\n\t\t}\n\t\tconst way0 = spanHash(key, 0, key.length) & 4094;\n\t\tif (churnKey[way0] === key && churnOwn[way0] === own) return churnVal[way0];\n\t\tif (churnKey[way0 | 1] === key && churnOwn[way0 | 1] === own) return churnVal[way0 | 1];\n\t\tconst merged = mergeString(join ? own + \" \" + key : key);\n\t\tconst slot = churnKey[way0] === \"\" ? way0 : way0 | (churnKey[way0 | 1] === \"\" ? 1 : churnTick++ & 1);\n\t\tchurnKey[slot] = key;\n\t\tchurnOwn[slot] = own;\n\t\tchurnVal[slot] = merged;\n\t\treturn merged;\n\t};\n\tconst match3 = (e, v0, v1, v2) => {\n\t\tlet k = 0;\n\t\tif (v0) {\n\t\t\tif (v0 !== e.a0) return false;\n\t\t\tk = 1;\n\t\t}\n\t\tif (v1) {\n\t\t\tif (v1 !== (k === 0 ? e.a0 : e.a1)) return false;\n\t\t\tk++;\n\t\t}\n\t\tif (v2) {\n\t\t\tif (v2 !== (k === 0 ? e.a0 : k === 1 ? e.a1 : e.a2)) return false;\n\t\t\tk++;\n\t\t}\n\t\treturn k === e.t;\n\t};\n\tconst matchN = (e, vals) => {\n\t\tconst ea = e.a;\n\t\tlet k = 0;\n\t\tfor (let i = 0; i < vals.length; i++) {\n\t\t\tconst v = vals[i];\n\t\t\tif (!v) continue;\n\t\t\tif (v !== ea[k]) return false;\n\t\t\tk++;\n\t\t}\n\t\treturn k === e.t;\n\t};\n\tconst resolveArgs = (vals, probed) => {\n\t\tconst nArgs = vals.length;\n\t\tconst pred = lastHit === null ? null : lastHit.n;\n\t\tif (!probed) {\n\t\t\tif (pred !== null && matchN(pred, vals)) {\n\t\t\t\tlastHit = pred;\n\t\t\t\treturn pred.r;\n\t\t\t}\n\t\t\tif (lastHit !== null && lastHit !== pred && matchN(lastHit, vals)) return lastHit.r;\n\t\t}\n\t\tlet first = \"\";\n\t\tlet firstIdx = -1;\n\t\tlet truthy = 0;\n\t\tlet hasResolvedValue = false;\n\t\tfor (let i = 0; i < nArgs; i++) {\n\t\t\tlet v = vals[i];\n\t\t\tif (!v) continue;\n\t\t\tif (typeof v !== \"string\") {\n\t\t\t\tv = vals[i] = resolveValue(v, true);\n\t\t\t\tif (!v) continue;\n\t\t\t\thasResolvedValue = true;\n\t\t\t}\n\t\t\tif (firstIdx < 0) {\n\t\t\t\tfirst = v;\n\t\t\t\tfirstIdx = i;\n\t\t\t}\n\t\t\ttruthy++;\n\t\t}\n\t\tif (truthy === 0) return \"\";\n\t\tif (truthy === 1) return mergeString(first);\n\t\tif (hasResolvedValue) {\n\t\t\tif (pred !== null && matchN(pred, vals)) {\n\t\t\t\tlastHit = pred;\n\t\t\t\treturn pred.r;\n\t\t\t}\n\t\t\tif (lastHit !== null && lastHit !== pred && matchN(lastHit, vals)) return lastHit.r;\n\t\t}\n\t\tlet bucket = argCache.get(first);\n\t\tif (bucket === void 0) {\n\t\t\tbucket = prevArgCache.get(first);\n\t\t\tif (bucket !== void 0) argCache.set(first, bucket);\n\t\t}\n\t\tlet hit = null;\n\t\tif (bucket !== void 0) {\n\t\t\tif (bucket.skip > 0) {\n\t\t\t\tbucket.skip--;\n\t\t\t\tlastHit = null;\n\t\t\t\tlet joined = first;\n\t\t\t\tfor (let i = firstIdx + 1; i < nArgs; i++) {\n\t\t\t\t\tconst v = vals[i];\n\t\t\t\t\tif (v) joined += \" \" + v;\n\t\t\t\t}\n\t\t\t\treturn churnLookup(joined, \"\", false);\n\t\t\t}\n\t\t\tconst entries = bucket.e;\n\t\t\touter: for (let b = 0; b < entries.length; b++) {\n\t\t\t\tconst e = entries[b];\n\t\t\t\tif (e.t !== truthy) continue;\n\t\t\t\tconst ea = e.a;\n\t\t\t\tlet k = 1;\n\t\t\t\tfor (let i = firstIdx + 1; i < nArgs; i++) {\n\t\t\t\t\tconst v = vals[i];\n\t\t\t\t\tif (v && v !== ea[k++]) continue outer;\n\t\t\t\t}\n\t\t\t\thit = e;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (hit !== null) bucket.miss = 0;\n\t\t}\n\t\tif (hit === null) {\n\t\t\tlet joined = first;\n\t\t\tconst a = [first];\n\t\t\tfor (let i = firstIdx + 1; i < nArgs; i++) {\n\t\t\t\tconst v = vals[i];\n\t\t\t\tif (!v) continue;\n\t\t\t\tjoined += \" \" + v;\n\t\t\t\ta.push(v);\n\t\t\t}\n\t\t\tif (!seenBefore(joined)) return mergeUncached(joined);\n\t\t\thit = {\n\t\t\t\tr: mergeString(joined),\n\t\t\t\tt: a.length,\n\t\t\t\ta0: a[0],\n\t\t\t\ta1: a[1],\n\t\t\t\ta2: a[2] ?? \"\",\n\t\t\t\ta,\n\t\t\t\tn: null\n\t\t\t};\n\t\t\tif (bucket === void 0) argCache.set(first, bucket = {\n\t\t\t\te: [],\n\t\t\t\tmiss: 0,\n\t\t\t\tskip: 0,\n\t\t\t\tat: 0\n\t\t\t});\n\t\t\telse if (++bucket.miss > BUCKET_MISS_CAP) {\n\t\t\t\tbucket.miss = BUCKET_MISS_CAP;\n\t\t\t\tbucket.skip = BUCKET_SKIP;\n\t\t\t\tbucket.e.length = 0;\n\t\t\t\tbucket.at = 0;\n\t\t\t}\n\t\t\tconst entries = bucket.e;\n\t\t\tif (entries.length < BUCKET_CAP) entries.push(hit);\n\t\t\telse {\n\t\t\t\tentries[bucket.at] = hit;\n\t\t\t\tbucket.at = bucket.at + 1 & 255;\n\t\t\t}\n\t\t\tif (++argCount > 1e3) {\n\t\t\t\targCount = 0;\n\t\t\t\tprevArgCache = argCache;\n\t\t\t\targCache = /* @__PURE__ */ new Map();\n\t\t\t}\n\t\t}\n\t\tif (lastHit !== null && lastHit !== hit) lastHit.n = hit;\n\t\tlastHit = hit;\n\t\treturn hit.r;\n\t};\n\tconst mergeSingleValue = (value) => Array.isArray(value) ? resolveArgs(value.slice(), false) : mergeString(resolveValue(value, true));\n\treturn function(v0, v1, v2) {\n\t\tconst nArgs = arguments.length;\n\t\tif ((nArgs | 1) === 3) {\n\t\t\tconst lh = lastHit;\n\t\t\tif (lh !== null) {\n\t\t\t\tconst pred = lh.n;\n\t\t\t\tif (pred !== null && match3(pred, v0, v1, v2)) {\n\t\t\t\t\tlastHit = pred;\n\t\t\t\t\treturn pred.r;\n\t\t\t\t}\n\t\t\t\tif (lh !== pred && match3(lh, v0, v1, v2)) return lh.r;\n\t\t\t}\n\t\t\tif (nArgs === 2 && typeof v1 === \"string\" && v1 !== \"\") {\n\t\t\t\tconst bucket = argCache.get(v0);\n\t\t\t\tif (bucket !== void 0 && bucket.skip > 0) {\n\t\t\t\t\tbucket.skip--;\n\t\t\t\t\tlastHit = null;\n\t\t\t\t\treturn churnLookup(v1, v0, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn resolveArgs([\n\t\t\t\tv0,\n\t\t\t\tv1,\n\t\t\t\tv2\n\t\t\t], true);\n\t\t}\n\t\tif (nArgs === 1) return typeof v0 === \"string\" ? mergeString(v0) : mergeSingleValue(v0);\n\t\tconst lh = lastHit;\n\t\tif (lh !== null) {\n\t\t\tconst pred = lh.n;\n\t\t\tif (pred !== null) {\n\t\t\t\tconst pa = pred.a;\n\t\t\t\tlet k = 0;\n\t\t\t\tlet ok = true;\n\t\t\t\tfor (let i = 0; i < nArgs; i++) {\n\t\t\t\t\tconst v = arguments[i];\n\t\t\t\t\tif (!v) continue;\n\t\t\t\t\tif (v !== pa[k]) {\n\t\t\t\t\t\tok = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (ok && k === pred.t) {\n\t\t\t\t\tlastHit = pred;\n\t\t\t\t\treturn pred.r;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (lh !== pred) {\n\t\t\t\tconst la = lh.a;\n\t\t\t\tlet k = 0;\n\t\t\t\tlet ok = true;\n\t\t\t\tfor (let i = 0; i < nArgs; i++) {\n\t\t\t\t\tconst v = arguments[i];\n\t\t\t\t\tif (!v) continue;\n\t\t\t\t\tif (v !== la[k]) {\n\t\t\t\t\t\tok = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (ok && k === lh.t) return lh.r;\n\t\t\t}\n\t\t}\n\t\tconst vals = [];\n\t\tfor (let i = 0; i < nArgs; i++) vals.push(arguments[i]);\n\t\treturn resolveArgs(vals, true);\n\t};\n};\n/**\n* Create a `cn` function bound to compiled tables — the entry point for\n* project-compiled (`cn build`) tables:\n*\n* ```ts\n* import tables from \"./cn-tables.js\"\n* import { createCn } from \"cn/engine\"\n* export const cn = createCn(tables)\n* ```\n*/\nconst createCn = (tables, validatorImpls, options) => {\n\tconst engine = createEngine(tables, validatorImpls, options);\n\treturn wrapClsx(engine.mergeString, engine);\n};\n\n//#endregion\nexport { clsx, createCn, createEngine, twJoin, wrapClsx };","import tables_generated_default from \"./tables.js\";\nimport { clsx, createEngine, twJoin, wrapClsx } from \"./engine.js\";\n\n//#region src/index.ts\nconst instance = /* @__PURE__ */ createEngine(tables_generated_default);\n/**\n* Merge Tailwind CSS classes with clsx-style arguments (strings, arrays,\n* objects, conditionals). Drop-in replacement for `twMerge(clsx(...))`.\n*/\nconst cn = /* @__PURE__ */ wrapClsx(instance.mergeString, instance);\n/** tailwind-merge–compatible variadic merge (strings + nested arrays). */\nconst twMerge = instance.merge;\n\n//#endregion\nexport { clsx, cn, createEngine, twJoin, twMerge };","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\n__name(setRef, \"setRef\");\nfunction composeRefs(...refs) {\n  return (node) => {\n    let hasCleanup = false;\n    const cleanups = refs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup == \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup == \"function\") {\n            cleanup();\n          } else {\n            setRef(refs[i], null);\n          }\n        }\n      };\n    }\n  };\n}\n__name(composeRefs, \"composeRefs\");\nfunction useComposedRefs(...refs) {\n  return React.useCallback(composeRefs(...refs), refs);\n}\n__name(useComposedRefs, \"useComposedRefs\");\nexport {\n  composeRefs,\n  useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n  const Slot2 = React.forwardRef((props, forwardedRef) => {\n    let { children, ...slotProps } = props;\n    let slottableElement = null;\n    let hasSlottable = false;\n    const newChildren = [];\n    children = useUnwrappedLazy(children);\n    React.Children.forEach(children, (maybeSlottable) => {\n      if (isSlottable(maybeSlottable)) {\n        hasSlottable = true;\n        const slottable = maybeSlottable;\n        let child = \"child\" in slottable.props ? slottable.props.child : slottable.props.children;\n        while (isLazyComponent(child) && typeof use === \"function\") {\n          child = use(child._payload);\n        }\n        slottableElement = getSlottableElementFromSlottable(slottable, child);\n        newChildren.push(slottableElement?.props?.children);\n      } else {\n        newChildren.push(maybeSlottable);\n      }\n    });\n    if (slottableElement) {\n      slottableElement = React.cloneElement(slottableElement, void 0, newChildren);\n    } else if (\n      // A `Slottable` was found but it didn't resolve to a single element (e.g.\n      // it wrapped multiple elements, text, or a render-prop `child` that\n      // wasn't an element). Don't fall back to treating the `Slottable` wrapper\n      // itself as the slot target — throw a descriptive error below instead.\n      !hasSlottable && React.Children.count(children) === 1 && React.isValidElement(children)\n    ) {\n      slottableElement = children;\n    }\n    const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0;\n    const composedRef = useComposedRefs(forwardedRef, slottableElementRef);\n    if (!slottableElement) {\n      if (children || children === 0) {\n        throw new Error(\n          hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName)\n        );\n      }\n      return children;\n    }\n    const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});\n    if (slottableElement.type !== React.Fragment) {\n      mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;\n    }\n    return React.cloneElement(slottableElement, mergedProps);\n  });\n  Slot2.displayName = `${ownerName}.Slot`;\n  return Slot2;\n}\n__name(createSlot, \"createSlot\");\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\nvar SLOTTABLE_IDENTIFIER = Symbol.for(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n  const Slottable2 = /* @__PURE__ */ __name((props) => \"child\" in props ? props.children(props.child) : props.children, \"Slottable\");\n  Slottable2.displayName = `${ownerName}.Slottable`;\n  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n  return Slottable2;\n}\n__name(createSlottable, \"createSlottable\");\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nvar getSlottableElementFromSlottable = /* @__PURE__ */ __name((slottable, child) => {\n  if (\"child\" in slottable.props) {\n    if (!React.isValidElement(child)) return null;\n    return React.cloneElement(child, void 0, slottable.props.children(child.props.children));\n  }\n  return React.isValidElement(child) ? child : null;\n}, \"getSlottableElementFromSlottable\");\nfunction mergeProps(slotProps, childProps) {\n  const overrideProps = { ...childProps };\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args) => {\n          const result = childPropValue(...args);\n          slotPropValue(...args);\n          return result;\n        };\n      } else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    } else if (propName === \"style\") {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === \"className\") {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n    } else if (propName === \"aria-describedby\") {\n      overrideProps[propName] = concatAriaDescribedby(childPropValue, slotPropValue);\n    }\n  }\n  return { ...slotProps, ...overrideProps };\n}\n__name(mergeProps, \"mergeProps\");\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\n__name(getElementRef, \"getElementRef\");\nfunction isSlottable(child) {\n  return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\n__name(isSlottable, \"isSlottable\");\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nfunction isLazyComponent(element) {\n  return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n__name(isLazyComponent, \"isLazyComponent\");\nfunction isPromiseLike(value) {\n  return typeof value === \"object\" && value !== null && \"then\" in value;\n}\n__name(isPromiseLike, \"isPromiseLike\");\nfunction useUnwrappedLazy(value) {\n  let unwrapped = value;\n  while (isLazyComponent(unwrapped) && typeof use === \"function\") {\n    unwrapped = use(unwrapped._payload);\n  }\n  return unwrapped;\n}\n__name(useUnwrappedLazy, \"useUnwrappedLazy\");\nfunction concatAriaDescribedby(...values) {\n  const ids = /* @__PURE__ */ new Set();\n  for (const value of values) {\n    if (typeof value !== \"string\") continue;\n    for (const id of String(value).trim().split(/\\s+/)) {\n      if (id) ids.add(id);\n    }\n  }\n  return ids.size > 0 ? Array.from(ids).join(\" \") : void 0;\n}\n__name(concatAriaDescribedby, \"concatAriaDescribedby\");\nvar createSlotError = /* @__PURE__ */ __name((ownerName) => {\n  return `${ownerName} failed to slot onto its children. Expected a single React element child or \\`Slottable\\`.`;\n}, \"createSlotError\");\nvar createSlottableError = /* @__PURE__ */ __name((ownerName) => {\n  return `${ownerName} failed to slot onto its \\`Slottable\\`. Expected \\`Slottable\\` to receive a single React element child.`;\n}, \"createSlottableError\");\nvar use = React[\" use \".trim().toString()];\nexport {\n  Slot as Root,\n  Slot,\n  Slottable,\n  createSlot,\n  createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n  \"a\",\n  \"button\",\n  \"div\",\n  \"form\",\n  \"h2\",\n  \"h3\",\n  \"img\",\n  \"input\",\n  \"label\",\n  \"li\",\n  \"nav\",\n  \"ol\",\n  \"p\",\n  \"select\",\n  \"span\",\n  \"svg\",\n  \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n  const Slot = createSlot(`Primitive.${node}`);\n  const Node = React.forwardRef((props, forwardedRef) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp = asChild ? Slot : node;\n    if (typeof window !== \"undefined\") {\n      window[Symbol.for(\"radix-ui\")] = true;\n    }\n    return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n  });\n  Node.displayName = `Primitive.${node}`;\n  return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n__name(dispatchDiscreteCustomEvent, \"dispatchDiscreteCustomEvent\");\nexport {\n  Primitive,\n  Primitive as Root,\n  dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n  position: \"absolute\",\n  border: 0,\n  width: 1,\n  height: 1,\n  padding: 0,\n  margin: -1,\n  overflow: \"hidden\",\n  clip: \"rect(0, 0, 0, 0)\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n});\nvar VisuallyHidden = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function VisuallyHidden2(props, forwardedRef) {\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n      }\n    );\n  }, \"VisuallyHidden\")\n);\nexport {\n  VisuallyHidden as Root,\n  VISUALLY_HIDDEN_STYLES,\n  VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createContext2(rootComponentName, defaultContext) {\n  const Context = React.createContext(defaultContext);\n  Context.displayName = rootComponentName + \"Context\";\n  const Provider = /* @__PURE__ */ __name((props) => {\n    const { children, ...context } = props;\n    const value = React.useMemo(() => context, Object.values(context));\n    return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n  }, \"Provider\");\n  Provider.displayName = rootComponentName + \"Provider\";\n  function useContext2(consumerName, options = {}) {\n    const { optional = false } = options;\n    const context = React.useContext(Context);\n    if (context) return context;\n    if (defaultContext !== void 0) return defaultContext;\n    if (optional) return void 0;\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n  __name(useContext2, \"useContext\");\n  return [Provider, useContext2];\n}\n__name(createContext2, \"createContext\");\n// @__NO_SIDE_EFFECTS__\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n  let defaultContexts = [];\n  function createContext3(rootComponentName, defaultContext) {\n    const BaseContext = React.createContext(defaultContext);\n    BaseContext.displayName = rootComponentName + \"Context\";\n    const index = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n    const Provider = /* @__PURE__ */ __name((props) => {\n      const { scope, children, ...context } = props;\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const value = React.useMemo(() => context, Object.values(context));\n      return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n    }, \"Provider\");\n    Provider.displayName = rootComponentName + \"Provider\";\n    function useContext2(consumerName, scope, options = {}) {\n      const { optional = false } = options;\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const context = React.useContext(Context);\n      if (context) return context;\n      if (defaultContext !== void 0) return defaultContext;\n      if (optional) return void 0;\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    __name(useContext2, \"useContext\");\n    return [Provider, useContext2];\n  }\n  __name(createContext3, \"createContext\");\n  const createScope = /* @__PURE__ */ __name(() => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React.createContext(defaultContext);\n    });\n    return /* @__PURE__ */ __name(function useScope(scope) {\n      const contexts = scope?.[scopeName] || scopeContexts;\n      return React.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    }, \"useScope\");\n  }, \"createScope\");\n  createScope.scopeName = scopeName;\n  return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\n__name(createContextScope, \"createContextScope\");\nfunction composeContextScopes(...scopes) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1) return baseScope;\n  const createScope = /* @__PURE__ */ __name(() => {\n    const scopeHooks = scopes.map((createScope2) => ({\n      useScope: createScope2(),\n      scopeName: createScope2.scopeName\n    }));\n    return /* @__PURE__ */ __name(function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes2, ...currentScope };\n      }, {});\n      return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    }, \"useComposedScopes\");\n  }, \"createScope\");\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\n__name(composeContextScopes, \"composeContextScopes\");\nexport {\n  createContext2 as createContext,\n  createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n  useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/collection-legacy.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createCollection(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n    PROVIDER_NAME,\n    { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n  );\n  const CollectionProvider = /* @__PURE__ */ __name((props) => {\n    const { scope, children } = props;\n    const ref = React.useRef(null);\n    const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n    return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n  }, \"CollectionProvider\");\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n  const CollectionSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n      return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n  const CollectionItemSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React.useRef(null);\n      const composedRefs = useComposedRefs(forwardedRef, ref);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n      React.useEffect(() => {\n        context.itemMap.set(ref, { ref, ...itemData });\n        return () => void context.itemMap.delete(ref);\n      });\n      return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useCollection(scope) {\n    const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n    const getItems = React.useCallback(() => {\n      const collectionNode = context.collectionRef.current;\n      if (!collectionNode) return [];\n      const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n      const items = Array.from(context.itemMap.values());\n      const orderedItems = items.sort(\n        (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n      );\n      return orderedItems;\n    }, [context.collectionRef, context.itemMap]);\n    return getItems;\n  }\n  __name(useCollection, \"useCollection\");\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    useCollection,\n    createCollectionScope\n  ];\n}\n__name(createCollection, \"createCollection\");\n\n// src/collection.tsx\nimport * as React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n  static {\n    __name(this, \"OrderedDict\");\n  }\n  #keys;\n  constructor(entries) {\n    super(entries);\n    this.#keys = [...super.keys()];\n    __instanciated.set(this, true);\n  }\n  set(key, value) {\n    if (__instanciated.get(this) && !this.has(key)) {\n      this.#keys.push(key);\n    }\n    super.set(key, value);\n    return this;\n  }\n  /**\n   * Sets a key-value pair so that it ends up at the given index.\n   * - Existing keys are moved\n   * - Negative indices count from the end of the resulting dictionary, so\n   *   inserting at -1 makes the item the last one, -2 the second to last, etc.\n   * - Out-of-range indices are clamped\n   */\n  insert(index, key, value) {\n    const has = this.has(key);\n    const finalSize = has ? this.size : this.size + 1;\n    const relativeIndex = toSafeInteger(index);\n    const targetIndex = relativeIndex >= 0 ? Math.min(relativeIndex, finalSize - 1) : Math.max(finalSize + relativeIndex, 0);\n    if (has ? this.#keys.indexOf(key) === targetIndex : targetIndex === this.size) {\n      this.set(key, value);\n      return this;\n    }\n    const keys = this.#keys.filter((existingKey) => existingKey !== key);\n    keys.splice(targetIndex, 0, key);\n    const entries = keys.map((entryKey) => [\n      entryKey,\n      entryKey === key ? value : this.get(entryKey)\n    ]);\n    this.clear();\n    for (const [entryKey, entryValue] of entries) {\n      this.set(entryKey, entryValue);\n    }\n    return this;\n  }\n  with(index, key, value) {\n    const copy = new _OrderedDict(this);\n    copy.insert(index, key, value);\n    return copy;\n  }\n  before(key) {\n    const index = this.#keys.indexOf(key) - 1;\n    if (index < 0) {\n      return void 0;\n    }\n    return this.entryAt(index);\n  }\n  /**\n   * Sets a new key-value pair at the position before the given key.\n   */\n  setBefore(key, newKey, value) {\n    const index = this.#keys.indexOf(key);\n    if (index === -1) {\n      return this;\n    }\n    const currentIndex = this.#keys.indexOf(newKey);\n    const targetIndex = currentIndex !== -1 && currentIndex < index ? index - 1 : index;\n    return this.insert(targetIndex, newKey, value);\n  }\n  after(key) {\n    let index = this.#keys.indexOf(key);\n    index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n    if (index === -1) {\n      return void 0;\n    }\n    return this.entryAt(index);\n  }\n  /**\n   * Sets a new key-value pair at the position after the given key.\n   */\n  setAfter(key, newKey, value) {\n    const index = this.#keys.indexOf(key);\n    if (index === -1) {\n      return this;\n    }\n    const currentIndex = this.#keys.indexOf(newKey);\n    const targetIndex = currentIndex !== -1 && currentIndex <= index ? index : index + 1;\n    return this.insert(targetIndex, newKey, value);\n  }\n  first() {\n    return this.entryAt(0);\n  }\n  last() {\n    return this.entryAt(-1);\n  }\n  clear() {\n    this.#keys = [];\n    return super.clear();\n  }\n  delete(key) {\n    const deleted = super.delete(key);\n    if (deleted) {\n      this.#keys.splice(this.#keys.indexOf(key), 1);\n    }\n    return deleted;\n  }\n  deleteAt(index) {\n    const key = this.keyAt(index);\n    if (key !== void 0) {\n      return this.delete(key);\n    }\n    return false;\n  }\n  at(index) {\n    const key = at(this.#keys, index);\n    if (key !== void 0) {\n      return this.get(key);\n    }\n  }\n  entryAt(index) {\n    const key = at(this.#keys, index);\n    if (key !== void 0) {\n      return [key, this.get(key)];\n    }\n  }\n  indexOf(key) {\n    return this.#keys.indexOf(key);\n  }\n  keyAt(index) {\n    return at(this.#keys, index);\n  }\n  from(key, offset) {\n    const index = this.indexOf(key);\n    if (index === -1) {\n      return void 0;\n    }\n    let dest = index + offset;\n    if (dest < 0) dest = 0;\n    if (dest >= this.size) dest = this.size - 1;\n    return this.at(dest);\n  }\n  keyFrom(key, offset) {\n    const index = this.indexOf(key);\n    if (index === -1) {\n      return void 0;\n    }\n    let dest = index + offset;\n    if (dest < 0) dest = 0;\n    if (dest >= this.size) dest = this.size - 1;\n    return this.keyAt(dest);\n  }\n  find(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return entry;\n      }\n      index++;\n    }\n    return void 0;\n  }\n  findIndex(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return index;\n      }\n      index++;\n    }\n    return -1;\n  }\n  filter(predicate, thisArg) {\n    const entries = [];\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        entries.push(entry);\n      }\n      index++;\n    }\n    return new _OrderedDict(entries);\n  }\n  map(callbackfn, thisArg) {\n    const entries = [];\n    let index = 0;\n    for (const entry of this) {\n      entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n      index++;\n    }\n    return new _OrderedDict(entries);\n  }\n  reduce(...args) {\n    const [callbackfn, initialValue] = args;\n    const hasInitialValue = args.length > 1;\n    if (!hasInitialValue && this.size === 0) {\n      throw new TypeError(\"Reduce of empty OrderedDict with no initial value\");\n    }\n    let index = 0;\n    let accumulator = initialValue;\n    for (const entry of this) {\n      if (index === 0 && !hasInitialValue) {\n        accumulator = entry;\n      } else {\n        accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n      }\n      index++;\n    }\n    return accumulator;\n  }\n  reduceRight(...args) {\n    const [callbackfn, initialValue] = args;\n    const hasInitialValue = args.length > 1;\n    if (!hasInitialValue && this.size === 0) {\n      throw new TypeError(\"Reduce of empty OrderedDict with no initial value\");\n    }\n    let accumulator = initialValue;\n    for (let index = this.size - 1; index >= 0; index--) {\n      const entry = this.entryAt(index);\n      if (index === this.size - 1 && !hasInitialValue) {\n        accumulator = entry;\n      } else {\n        accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n      }\n    }\n    return accumulator;\n  }\n  /**\n   * Sorts the dictionary in place. This method mutates the dictionary and\n   * returns a reference to the same object\n   *\n   * @param compareFn Function used to determine the order of the elements. It\n   * is expected to return a negative value if the first argument is less than\n   * the second argument, zero if they're equal, and a positive value otherwise.\n   */\n  sort(compareFn) {\n    if (typeof compareFn !== \"function\") {\n      throw new TypeError(`OrderedDict.sort requires a compare function`);\n    }\n    const entries = [...this.entries()].sort(compareFn);\n    this.clear();\n    for (const [key, value] of entries) {\n      this.set(key, value);\n    }\n    return this;\n  }\n  /**\n   * Returns a copy of the dictionary with its elements sorted.\n   *\n   * @param compareFn Function used to determine the order of the elements. It\n   * is expected to return a negative value if the first argument is less than\n   * the second argument, zero if they're equal, and a positive value otherwise.\n   */\n  toSorted(compareFn) {\n    if (typeof compareFn !== \"function\") {\n      throw new TypeError(`OrderedDict.toSorted requires a compare function`);\n    }\n    const entries = [...this.entries()].sort(compareFn);\n    return new _OrderedDict(entries);\n  }\n  toReversed() {\n    const reversed = new _OrderedDict();\n    for (let index = this.size - 1; index >= 0; index--) {\n      const key = this.keyAt(index);\n      const element = this.get(key);\n      reversed.set(key, element);\n    }\n    return reversed;\n  }\n  toSpliced(...args) {\n    const entries = [...this.entries()];\n    entries.splice(...args);\n    return new _OrderedDict(entries);\n  }\n  slice(start, end) {\n    const result = new _OrderedDict();\n    for (const key of this.#keys.slice(start, end)) {\n      result.set(key, this.get(key));\n    }\n    return result;\n  }\n  every(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return false;\n      }\n      index++;\n    }\n    return true;\n  }\n  some(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return true;\n      }\n      index++;\n    }\n    return false;\n  }\n};\nfunction at(array, index) {\n  if (\"at\" in Array.prototype) {\n    return Array.prototype.at.call(array, index);\n  }\n  const actualIndex = toSafeIndex(array, index);\n  return actualIndex === -1 ? void 0 : array[actualIndex];\n}\n__name(at, \"at\");\nfunction toSafeIndex(array, index) {\n  const length = array.length;\n  const relativeIndex = toSafeInteger(index);\n  const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n  return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\n__name(toSafeIndex, \"toSafeIndex\");\nfunction toSafeInteger(number) {\n  return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n__name(toSafeInteger, \"toSafeInteger\");\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createCollection2(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n  const [CollectionStableContextProvider, useStableCollectionContext] = createCollectionContext(PROVIDER_NAME);\n  CollectionStableContextProvider.displayName = name + \"CollectionStableContextProvider\";\n  const [CollectionStatefulContextProvider, useStatefulCollectionContext] = createCollectionContext(PROVIDER_NAME);\n  CollectionStatefulContextProvider.displayName = name + \"CollectionStatefulContextProvider\";\n  const CollectionProvider = /* @__PURE__ */ __name(({ state, ...props }) => {\n    return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n  }, \"CollectionProvider\");\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const CollectionInit = /* @__PURE__ */ __name((props) => {\n    const state = useInitCollection();\n    return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n  }, \"CollectionInit\");\n  CollectionInit.displayName = name + \"CollectionInit\";\n  const CollectionProviderImpl = /* @__PURE__ */ __name((props) => {\n    const { scope, children, state } = props;\n    const ref = React2.useRef(null);\n    const [collectionElement, setCollectionElement] = React2.useState(\n      null\n    );\n    const composeRefs = useComposedRefs2(ref, setCollectionElement);\n    const [collection, setCollection] = state;\n    const registryRef = React2.useRef(\n      new OrderedDict()\n    );\n    const getCollection = React2.useCallback(() => {\n      const registry = registryRef.current;\n      if (!isInDocumentOrder(registry)) {\n        registry.sort(sortByDocumentPosition);\n      }\n      return registry;\n    }, []);\n    React2.useEffect(() => {\n      if (!collectionElement) {\n        return;\n      }\n      const observer = getChildListObserver(() => {\n        setCollection((map) => {\n          const sorted = map.toSorted(sortByDocumentPosition);\n          const orderChanged = sorted.some(([key], index) => map.keyAt(index) !== key);\n          return orderChanged ? sorted : map;\n        });\n      });\n      observer.observe(collectionElement, {\n        childList: true,\n        subtree: true\n      });\n      return () => {\n        observer.disconnect();\n      };\n    }, [collectionElement, setCollection]);\n    return /* @__PURE__ */ jsx2(\n      CollectionStableContextProvider,\n      {\n        scope,\n        collectionElementRef: composeRefs,\n        collectionElementRefObject: ref,\n        getCollection,\n        setCollection,\n        registryRef,\n        children: /* @__PURE__ */ jsx2(\n          CollectionStatefulContextProvider,\n          {\n            scope,\n            collectionElement,\n            collection,\n            children\n          }\n        )\n      }\n    );\n  }, \"CollectionProviderImpl\");\n  CollectionProviderImpl.displayName = name + \"CollectionProviderImpl\";\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n  const CollectionSlot = React2.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useStableCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs2(forwardedRef, context.collectionElementRef);\n      return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n  const CollectionItemSlot = React2.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React2.useRef(null);\n      const context = useStableCollectionContext(ITEM_SLOT_NAME, scope);\n      const { setCollection, registryRef } = context;\n      const itemDataRef = React2.useRef(itemData);\n      if (!shallowEqual(itemDataRef.current, itemData)) {\n        itemDataRef.current = itemData;\n      }\n      const memoizedItemData = itemDataRef.current;\n      const registerElement = React2.useCallback(\n        (node) => {\n          const registry = registryRef.current;\n          if (node) {\n            registry.set(node, {\n              ...itemDataRef.current,\n              element: node\n            });\n          } else if (ref.current) {\n            registry.delete(ref.current);\n          }\n        },\n        [registryRef]\n      );\n      const composedRefs = useComposedRefs2(forwardedRef, registerElement, ref);\n      useLayoutEffect(() => {\n        const node = ref.current;\n        const registry = registryRef.current;\n        if (node && registry.has(node)) {\n          registry.set(node, { ...memoizedItemData, element: node });\n        }\n      }, [memoizedItemData, registryRef]);\n      const registeredRef = React2.useRef(null);\n      React2.useEffect(() => {\n        const element = ref.current;\n        const registered = registeredRef.current;\n        if ((registered?.element ?? null) === element && (!element || registered?.itemData === memoizedItemData)) {\n          return;\n        }\n        registeredRef.current = element ? { element, itemData: memoizedItemData } : null;\n        setCollection((map) => {\n          const next = new OrderedDict(map);\n          if (registered && registered.element !== element) {\n            next.delete(registered.element);\n          }\n          if (element) {\n            next.set(element, { ...memoizedItemData, element });\n          }\n          return next.sort(sortByDocumentPosition);\n        });\n      });\n      React2.useEffect(() => {\n        return () => {\n          const registered = registeredRef.current;\n          registeredRef.current = null;\n          if (!registered) {\n            return;\n          }\n          setCollection((map) => {\n            if (!map.has(registered.element)) {\n              return map;\n            }\n            const next = new OrderedDict(map);\n            next.delete(registered.element);\n            return next;\n          });\n        };\n      }, [setCollection]);\n      return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useInitCollection() {\n    return React2.useState(new OrderedDict());\n  }\n  __name(useInitCollection, \"useInitCollection\");\n  function useCollection(scope) {\n    const { collection } = useStatefulCollectionContext(name + \"CollectionConsumer\", scope);\n    return collection;\n  }\n  __name(useCollection, \"useCollection\");\n  function useGetCollection(scope) {\n    const { getCollection } = useStableCollectionContext(name + \"CollectionConsumer\", scope);\n    return getCollection;\n  }\n  __name(useGetCollection, \"useGetCollection\");\n  const functions = {\n    createCollectionScope,\n    useCollection,\n    useGetCollection,\n    useInitCollection\n  };\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    functions\n  ];\n}\n__name(createCollection2, \"createCollection\");\nfunction shallowEqual(a, b) {\n  if (a === b) return true;\n  if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n  if (a == null || b == null) return false;\n  const keysA = Object.keys(a);\n  const keysB = Object.keys(b);\n  if (keysA.length !== keysB.length) return false;\n  for (const key of keysA) {\n    if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n    if (a[key] !== b[key]) return false;\n  }\n  return true;\n}\n__name(shallowEqual, \"shallowEqual\");\nfunction isElementPreceding(a, b) {\n  return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\n__name(isElementPreceding, \"isElementPreceding\");\nfunction isInDocumentOrder(dict) {\n  let previous;\n  for (const element of dict.keys()) {\n    if (previous) {\n      const position = previous.compareDocumentPosition(element);\n      if (!(position & Node.DOCUMENT_POSITION_DISCONNECTED) && position & Node.DOCUMENT_POSITION_PRECEDING) {\n        return false;\n      }\n    }\n    previous = element;\n  }\n  return true;\n}\n__name(isInDocumentOrder, \"isInDocumentOrder\");\nfunction sortByDocumentPosition(a, b) {\n  return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\n__name(sortByDocumentPosition, \"sortByDocumentPosition\");\nfunction getChildListObserver(callback) {\n  const observer = new MutationObserver((mutationsList) => {\n    for (const mutation of mutationsList) {\n      if (mutation.type === \"childList\") {\n        callback();\n        return;\n      }\n    }\n  });\n  return observer;\n}\n__name(getChildListObserver, \"getChildListObserver\");\nexport {\n  createCollection,\n  createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n  return /* @__PURE__ */ __name(function handleEvent(event) {\n    originalEventHandler?.(event);\n    if (checkForDefaultPrevented === false || !event || !event.defaultPrevented) {\n      return ourEventHandler?.(event);\n    }\n  }, \"handleEvent\");\n}\n__name(composeEventHandlers, \"composeEventHandlers\");\nfunction getOwnerWindow(element) {\n  if (!canUseDOM) {\n    throw new Error(\"Cannot access window outside of the DOM\");\n  }\n  return element?.ownerDocument?.defaultView ?? window;\n}\n__name(getOwnerWindow, \"getOwnerWindow\");\nfunction getOwnerDocument(element) {\n  if (!canUseDOM) {\n    throw new Error(\"Cannot access document outside of the DOM\");\n  }\n  return element?.ownerDocument ?? document;\n}\n__name(getOwnerDocument, \"getOwnerDocument\");\nfunction getActiveElement(node, activeDescendant = false) {\n  const { activeElement } = getOwnerDocument(node);\n  if (!activeElement?.nodeName) {\n    return null;\n  }\n  if (isFrame(activeElement) && activeElement.contentDocument) {\n    return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n  }\n  if (activeDescendant) {\n    const id = activeElement.getAttribute(\"aria-activedescendant\");\n    if (id) {\n      const element = getOwnerDocument(activeElement).getElementById(id);\n      if (element) {\n        return element;\n      }\n    }\n  }\n  return activeElement;\n}\n__name(getActiveElement, \"getActiveElement\");\nfunction isFrame(element) {\n  return element.tagName === \"IFRAME\";\n}\n__name(isFrame, \"isFrame\");\nexport {\n  canUseDOM,\n  composeEventHandlers,\n  getActiveElement,\n  getOwnerDocument,\n  getOwnerWindow,\n  isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-effect-event.tsx\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport * as React from \"react\";\nvar useReactEffectEvent = React[\" useEffectEvent \".trim().toString()];\nvar useReactInsertionEffect = React[\" useInsertionEffect \".trim().toString()];\nfunction useEffectEvent(callback) {\n  if (typeof useReactEffectEvent === \"function\") {\n    return useReactEffectEvent(callback);\n  }\n  const ref = React.useRef(() => {\n    throw new Error(\"Cannot call an event handler while rendering.\");\n  });\n  if (typeof useReactInsertionEffect === \"function\") {\n    useReactInsertionEffect(() => {\n      ref.current = callback;\n    });\n  } else {\n    useLayoutEffect(() => {\n      ref.current = callback;\n    });\n  }\n  return React.useMemo(() => ((...args) => ref.current?.(...args)), []);\n}\n__name(useEffectEvent, \"useEffectEvent\");\nexport {\n  useEffectEvent\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n  prop,\n  defaultProp,\n  onChange = /* @__PURE__ */ __name(() => {\n  }, \"onChange\"),\n  caller\n}) {\n  const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n    defaultProp,\n    onChange\n  });\n  const isControlled = prop !== void 0;\n  const value = isControlled ? prop : uncontrolledProp;\n  if (IS_DEVELOPMENT) {\n    const isControlledRef = React.useRef(prop !== void 0);\n    React.useEffect(() => {\n      const wasControlled = isControlledRef.current;\n      if (wasControlled !== isControlled) {\n        const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n        const to = isControlled ? \"controlled\" : \"uncontrolled\";\n        console.warn(\n          `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n        );\n      }\n      isControlledRef.current = isControlled;\n    }, [isControlled, caller]);\n  }\n  const setValue = React.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n        if (value2 !== prop) {\n          onChangeRef.current?.(value2);\n        }\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, onChangeRef]\n  );\n  return [value, setValue];\n}\n__name(useControllableState, \"useControllableState\");\nfunction useUncontrolledState({\n  defaultProp,\n  onChange\n}) {\n  const [value, setValue] = React.useState(defaultProp);\n  const prevValueRef = React.useRef(value);\n  const onChangeRef = React.useRef(onChange);\n  useInsertionEffect(() => {\n    onChangeRef.current = onChange;\n  }, [onChange]);\n  React.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      onChangeRef.current?.(value);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef]);\n  return [value, setValue, onChangeRef];\n}\n__name(useUncontrolledState, \"useUncontrolledState\");\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n__name(isFunction, \"isFunction\");\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { IS_DEVELOPMENT as IS_DEVELOPMENT2 } from \"@radix-ui/primitive/is-development\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n  const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n  const isControlled = controlledState !== void 0;\n  const onChange = useEffectEvent(onChangeProp);\n  if (IS_DEVELOPMENT2) {\n    const isControlledRef = React2.useRef(controlledState !== void 0);\n    React2.useEffect(() => {\n      const wasControlled = isControlledRef.current;\n      if (wasControlled !== isControlled) {\n        const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n        const to = isControlled ? \"controlled\" : \"uncontrolled\";\n        console.warn(\n          `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n        );\n      }\n      isControlledRef.current = isControlled;\n    }, [isControlled, caller]);\n  }\n  const args = [{ ...initialArg, state: defaultProp }];\n  if (init) {\n    args.push(init);\n  }\n  const [internalState, dispatch] = React2.useReducer(\n    (state2, action) => {\n      if (action.type === SYNC_STATE) {\n        return { ...state2, state: action.state };\n      }\n      const next = reducer(state2, action);\n      if (isControlled && !Object.is(next.state, state2.state)) {\n        onChange(next.state);\n      }\n      return next;\n    },\n    ...args\n  );\n  const uncontrolledState = internalState.state;\n  const prevValueRef = React2.useRef(uncontrolledState);\n  React2.useEffect(() => {\n    if (prevValueRef.current !== uncontrolledState) {\n      prevValueRef.current = uncontrolledState;\n      if (!isControlled) {\n        onChange(uncontrolledState);\n      }\n    }\n  }, [uncontrolledState, prevValueRef, isControlled]);\n  const state = React2.useMemo(() => {\n    const isControlled2 = controlledState !== void 0;\n    if (isControlled2) {\n      return { ...internalState, state: controlledState };\n    }\n    return internalState;\n  }, [internalState, controlledState]);\n  React2.useEffect(() => {\n    if (isControlled && !Object.is(controlledState, internalState.state)) {\n      dispatch({ type: SYNC_STATE, state: controlledState });\n    }\n  }, [controlledState, internalState.state, isControlled]);\n  return [state, dispatch];\n}\n__name(useControllableStateReducer, \"useControllableStateReducer\");\nexport {\n  useControllableState,\n  useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n  return React.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\n__name(useStateMachine, \"useStateMachine\");\n\n// src/presence.tsx\nvar Presence = /* @__PURE__ */ __name((props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n  const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n  const ref = useStableComposedRefs(presence.ref, getElementRef(child));\n  const forceMount = typeof children === \"function\";\n  return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n}, \"Presence\");\nfunction usePresence(present) {\n  const [node, setNode] = React2.useState();\n  const stylesRef = React2.useRef(null);\n  const prevPresentRef = React2.useRef(present);\n  const prevAnimationNameRef = React2.useRef(\"none\");\n  const mountAnimationNameRef = React2.useRef(void 0);\n  const initialState = present ? \"mounted\" : \"unmounted\";\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: \"unmounted\",\n      ANIMATION_OUT: \"unmountSuspended\"\n    },\n    unmountSuspended: {\n      MOUNT: \"mounted\",\n      ANIMATION_END: \"unmounted\"\n    },\n    unmounted: {\n      MOUNT: \"mounted\"\n    }\n  });\n  React2.useEffect(() => {\n    if (state === \"mounted\") {\n      prevAnimationNameRef.current = mountAnimationNameRef.current ?? getAnimationName(stylesRef.current);\n      mountAnimationNameRef.current = void 0;\n    } else {\n      prevAnimationNameRef.current = \"none\";\n    }\n  }, [state]);\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n      if (present) {\n        mountAnimationNameRef.current = currentAnimationName;\n        send(\"MOUNT\");\n      } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n        send(\"UNMOUNT\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (wasPresent && isAnimating) {\n          send(\"ANIMATION_OUT\");\n        } else {\n          send(\"UNMOUNT\");\n        }\n      }\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n  useLayoutEffect(() => {\n    if (node) {\n      let timeoutId;\n      const ownerWindow = node.ownerDocument.defaultView ?? window;\n      const handleAnimationEnd = /* @__PURE__ */ __name((event) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n        if (event.target === node && isCurrentAnimation) {\n          send(\"ANIMATION_END\");\n          if (!prevPresentRef.current) {\n            const currentFillMode = node.style.animationFillMode;\n            node.style.animationFillMode = \"forwards\";\n            timeoutId = ownerWindow.setTimeout(() => {\n              if (node.style.animationFillMode === \"forwards\") {\n                node.style.animationFillMode = currentFillMode;\n              }\n            });\n          }\n        }\n      }, \"handleAnimationEnd\");\n      const handleAnimationStart = /* @__PURE__ */ __name((event) => {\n        if (event.target === node) {\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      }, \"handleAnimationStart\");\n      node.addEventListener(\"animationstart\", handleAnimationStart);\n      node.addEventListener(\"animationcancel\", handleAnimationEnd);\n      node.addEventListener(\"animationend\", handleAnimationEnd);\n      return () => {\n        ownerWindow.clearTimeout(timeoutId);\n        node.removeEventListener(\"animationstart\", handleAnimationStart);\n        node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n        node.removeEventListener(\"animationend\", handleAnimationEnd);\n      };\n    } else {\n      send(\"ANIMATION_END\");\n    }\n  }, [node, send]);\n  return {\n    isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n    ref: React2.useCallback((node2) => {\n      if (node2) {\n        const styles = getComputedStyle(node2);\n        stylesRef.current = styles;\n        mountAnimationNameRef.current = getAnimationName(styles);\n      } else {\n        stylesRef.current = null;\n      }\n      setNode(node2);\n    }, [])\n  };\n}\n__name(usePresence, \"usePresence\");\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\n__name(setRef, \"setRef\");\nfunction useStableComposedRefs(...refs) {\n  const refsRef = React2.useRef(refs);\n  refsRef.current = refs;\n  return React2.useCallback((node) => {\n    const currentRefs = refsRef.current;\n    let hasCleanup = false;\n    const cleanups = currentRefs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup === \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup === \"function\") {\n            cleanup();\n          } else {\n            setRef(currentRefs[i], null);\n          }\n        }\n      };\n    }\n  }, []);\n}\n__name(useStableComposedRefs, \"useStableComposedRefs\");\nfunction getAnimationName(styles) {\n  return styles?.animationName || \"none\";\n}\n__name(getAnimationName, \"getAnimationName\");\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\n__name(getElementRef, \"getElementRef\");\nexport {\n  Presence,\n  Presence as Root\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n  const [id, setId] = React.useState(useReactId());\n  useLayoutEffect(() => {\n    if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n  }, [deterministicId]);\n  return deterministicId || (id ? `radix-${id}` : \"\");\n}\n__name(useId, \"useId\");\nexport {\n  useId\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Direction = {\n  LTR: \"ltr\",\n  RTL: \"rtl\"\n};\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = /* @__PURE__ */ __name((props) => {\n  const { dir, children } = props;\n  return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n}, \"DirectionProvider\");\nfunction useDirection(localDir) {\n  const globalDir = React.useContext(DirectionContext);\n  return localDir || globalDir || Direction.LTR;\n}\n__name(useDirection, \"useDirection\");\nexport {\n  DirectionProvider,\n  DirectionProvider as Provider,\n  useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-callback-ref.tsx\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport * as React from \"react\";\nvar useReactInsertionEffect = React[\" useInsertionEffect \".trim().toString()];\nfunction useCallbackRef(callback) {\n  const callbackRef = React.useRef(callback);\n  if (typeof useReactInsertionEffect === \"function\") {\n    useReactInsertionEffect(() => {\n      callbackRef.current = callback;\n    });\n  } else {\n    useLayoutEffect(() => {\n      callbackRef.current = callback;\n    });\n  }\n  return React.useMemo(() => ((...args) => callbackRef.current?.(...args)), []);\n}\n__name(useCallbackRef, \"useCallbackRef\");\nexport {\n  useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n  layers: /* @__PURE__ */ new Set(),\n  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n  branches: /* @__PURE__ */ new Set(),\n  // Outside elements that belong to a layer's own dismiss affordance (eg, a\n  // dialog overlay). Pressing them should dismiss the layer regardless of\n  // whether or not they stop propagation.\n  //\n  // See https://github.com/radix-ui/primitives/issues/3346\n  dismissableSurfaces: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DismissableLayer2(props, forwardedRef) {\n    const {\n      disableOutsidePointerEvents = false,\n      deferPointerDownOutside = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      ...layerProps\n    } = props;\n    const context = React.useContext(DismissableLayerContext);\n    const [node, setNode] = React.useState(null);\n    const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n    const [, force] = React.useState({});\n    const composedRefs = useComposedRefs(forwardedRef, setNode);\n    const layers = Array.from(context.layers);\n    const [highestLayerWithOutsidePointerEventsDisabled] = [\n      ...context.layersWithOutsidePointerEventsDisabled\n    ].slice(-1);\n    const highestLayerWithOutsidePointerEventsDisabledIndex = highestLayerWithOutsidePointerEventsDisabled ? layers.indexOf(highestLayerWithOutsidePointerEventsDisabled) : -1;\n    const index = node ? layers.indexOf(node) : -1;\n    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n    const isDeferredPointerDownOutsideRef = React.useRef(false);\n    const pointerDownOutside = usePointerDownOutside(\n      (event) => {\n        onPointerDownOutside?.(event);\n        onInteractOutside?.(event);\n        if (!event.defaultPrevented) onDismiss?.();\n      },\n      {\n        ownerDocument,\n        deferPointerDownOutside,\n        isDeferredPointerDownOutsideRef,\n        dismissableSurfaces: context.dismissableSurfaces,\n        shouldHandlePointerDownOutside: React.useCallback(\n          (target) => {\n            if (!(target instanceof Node)) {\n              return false;\n            }\n            const isPointerDownOnBranch = [...context.branches].some(\n              (branch) => branch.contains(target)\n            );\n            return isPointerEventsEnabled && !isPointerDownOnBranch;\n          },\n          [context.branches, isPointerEventsEnabled]\n        )\n      }\n    );\n    const focusOutside = useFocusOutside((event) => {\n      if (deferPointerDownOutside && isDeferredPointerDownOutsideRef.current) {\n        return;\n      }\n      const target = event.target;\n      const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (isFocusInBranch) return;\n      onFocusOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    const isHighestLayer = node ? index === layers.length - 1 : false;\n    const handleKeyDown = useCallbackRef((event) => {\n      if (event.key !== \"Escape\") {\n        return;\n      }\n      onEscapeKeyDown?.(event);\n      if (!event.defaultPrevented && onDismiss) {\n        event.preventDefault();\n        onDismiss();\n      }\n    });\n    React.useEffect(() => {\n      if (!isHighestLayer) {\n        return;\n      }\n      ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n      return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n    }, [ownerDocument, isHighestLayer, handleKeyDown]);\n    React.useEffect(() => {\n      if (!node) return;\n      if (disableOutsidePointerEvents) {\n        if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n          originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n          ownerDocument.body.style.pointerEvents = \"none\";\n        }\n        context.layersWithOutsidePointerEventsDisabled.add(node);\n      }\n      context.layers.add(node);\n      dispatchUpdate();\n      return () => {\n        if (disableOutsidePointerEvents) {\n          context.layersWithOutsidePointerEventsDisabled.delete(node);\n          if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n            ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n          }\n        }\n      };\n    }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n    React.useEffect(() => {\n      return () => {\n        if (!node) return;\n        context.layers.delete(node);\n        context.layersWithOutsidePointerEventsDisabled.delete(node);\n        dispatchUpdate();\n      };\n    }, [node, context]);\n    React.useEffect(() => {\n      const handleUpdate = /* @__PURE__ */ __name(() => force({}), \"handleUpdate\");\n      document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n      return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        ...layerProps,\n        ref: composedRefs,\n        style: {\n          pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n          ...props.style\n        },\n        onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n        onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n        onPointerDownCapture: composeEventHandlers(\n          props.onPointerDownCapture,\n          pointerDownOutside.onPointerDownCapture\n        )\n      }\n    );\n  }, \"DismissableLayer\")\n);\nvar DismissableLayerBranch = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DismissableLayerBranch2(props, forwardedRef) {\n  const context = React.useContext(DismissableLayerContext);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      context.branches.add(node);\n      return () => {\n        context.branches.delete(node);\n      };\n    }\n  }, [context.branches]);\n  return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n}, \"DismissableLayerBranch\"));\nfunction useDismissableLayerSurface() {\n  const context = React.useContext(DismissableLayerContext);\n  const [node, setNode] = React.useState(null);\n  React.useEffect(() => {\n    if (!node) {\n      return;\n    }\n    context.dismissableSurfaces.add(node);\n    return () => {\n      context.dismissableSurfaces.delete(node);\n    };\n  }, [node, context.dismissableSurfaces]);\n  return setNode;\n}\n__name(useDismissableLayerSurface, \"useDismissableLayerSurface\");\nvar IS_TRUE = /* @__PURE__ */ __name(() => true, \"IS_TRUE\");\nfunction usePointerDownOutside(onPointerDownOutside, args) {\n  const {\n    ownerDocument = globalThis?.document,\n    deferPointerDownOutside = false,\n    isDeferredPointerDownOutsideRef,\n    dismissableSurfaces,\n    shouldHandlePointerDownOutside = IS_TRUE\n  } = args;\n  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n  const isPointerInsideReactTreeRef = React.useRef(false);\n  const isPointerDownOutsideRef = React.useRef(false);\n  const interceptedOutsideInteractionEventsRef = React.useRef(/* @__PURE__ */ new Map());\n  const handleClickRef = React.useRef(() => {\n  });\n  React.useEffect(() => {\n    function resetOutsideInteraction() {\n      isPointerDownOutsideRef.current = false;\n      isDeferredPointerDownOutsideRef.current = false;\n      interceptedOutsideInteractionEventsRef.current.clear();\n    }\n    __name(resetOutsideInteraction, \"resetOutsideInteraction\");\n    function isOutsideInteractionIntercepted() {\n      return Array.from(interceptedOutsideInteractionEventsRef.current.values()).some(Boolean);\n    }\n    __name(isOutsideInteractionIntercepted, \"isOutsideInteractionIntercepted\");\n    function handleInteractionCapture(event) {\n      if (!isPointerDownOutsideRef.current) {\n        return;\n      }\n      const target = event.target;\n      const isDismissableSurface = target instanceof Node && [...dismissableSurfaces].some((surface) => surface.contains(target));\n      if (!isDismissableSurface) {\n        interceptedOutsideInteractionEventsRef.current.set(event.type, true);\n      }\n      if (event.type === \"click\") {\n        window.setTimeout(() => {\n          if (isPointerDownOutsideRef.current) {\n            handleClickRef.current();\n          }\n        }, 0);\n      }\n    }\n    __name(handleInteractionCapture, \"handleInteractionCapture\");\n    function handleInteractionBubble(event) {\n      if (isPointerDownOutsideRef.current) {\n        interceptedOutsideInteractionEventsRef.current.set(event.type, false);\n      }\n    }\n    __name(handleInteractionBubble, \"handleInteractionBubble\");\n    const handlePointerDown = /* @__PURE__ */ __name((event) => {\n      if (event.target && !isPointerInsideReactTreeRef.current) {\n        let handleAndDispatchPointerDownOutsideEvent2 = function() {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          const wasOutsideInteractionIntercepted = isOutsideInteractionIntercepted();\n          resetOutsideInteraction();\n          if (!wasOutsideInteractionIntercepted) {\n            handleAndDispatchCustomEvent(\n              POINTER_DOWN_OUTSIDE,\n              handlePointerDownOutside,\n              eventDetail,\n              { discrete: true }\n            );\n          }\n        };\n        var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n        __name(handleAndDispatchPointerDownOutsideEvent2, \"handleAndDispatchPointerDownOutsideEvent\");\n        if (!shouldHandlePointerDownOutside(event.target)) {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          resetOutsideInteraction();\n          isPointerInsideReactTreeRef.current = false;\n          return;\n        }\n        const eventDetail = { originalEvent: event };\n        isPointerDownOutsideRef.current = true;\n        isDeferredPointerDownOutsideRef.current = deferPointerDownOutside && event.button === 0;\n        interceptedOutsideInteractionEventsRef.current.clear();\n        if (!deferPointerDownOutside || event.button !== 0) {\n          handleAndDispatchPointerDownOutsideEvent2();\n        } else {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n          ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n        }\n      } else {\n        ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n        resetOutsideInteraction();\n      }\n      isPointerInsideReactTreeRef.current = false;\n    }, \"handlePointerDown\");\n    const outsideInteractionEvents = [\n      \"pointerup\",\n      \"mousedown\",\n      \"mouseup\",\n      \"touchstart\",\n      \"touchend\",\n      \"click\"\n    ];\n    for (const eventName of outsideInteractionEvents) {\n      ownerDocument.addEventListener(eventName, handleInteractionCapture, true);\n      ownerDocument.addEventListener(eventName, handleInteractionBubble);\n    }\n    const timerId = window.setTimeout(() => {\n      ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n    }, 0);\n    return () => {\n      window.clearTimeout(timerId);\n      ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n      ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n      for (const eventName of outsideInteractionEvents) {\n        ownerDocument.removeEventListener(eventName, handleInteractionCapture, true);\n        ownerDocument.removeEventListener(eventName, handleInteractionBubble);\n      }\n    };\n  }, [\n    ownerDocument,\n    handlePointerDownOutside,\n    deferPointerDownOutside,\n    isDeferredPointerDownOutsideRef,\n    dismissableSurfaces,\n    shouldHandlePointerDownOutside\n  ]);\n  return {\n    // ensures we check React component tree (not just DOM tree)\n    onPointerDownCapture: /* @__PURE__ */ __name(() => isPointerInsideReactTreeRef.current = true, \"onPointerDownCapture\")\n  };\n}\n__name(usePointerDownOutside, \"usePointerDownOutside\");\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n  const handleFocusOutside = useCallbackRef(onFocusOutside);\n  const isFocusInsideReactTreeRef = React.useRef(false);\n  React.useEffect(() => {\n    const handleFocus = /* @__PURE__ */ __name((event) => {\n      if (event.target && !isFocusInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n        handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n          discrete: false\n        });\n      }\n    }, \"handleFocus\");\n    ownerDocument.addEventListener(\"focusin\", handleFocus);\n    return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n  }, [ownerDocument, handleFocusOutside]);\n  return {\n    onFocusCapture: /* @__PURE__ */ __name(() => isFocusInsideReactTreeRef.current = true, \"onFocusCapture\"),\n    onBlurCapture: /* @__PURE__ */ __name(() => isFocusInsideReactTreeRef.current = false, \"onBlurCapture\")\n  };\n}\n__name(useFocusOutside, \"useFocusOutside\");\nfunction dispatchUpdate() {\n  const event = new CustomEvent(CONTEXT_UPDATE);\n  document.dispatchEvent(event);\n}\n__name(dispatchUpdate, \"dispatchUpdate\");\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n  const target = detail.originalEvent.target;\n  const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n  if (handler) target.addEventListener(name, handler, { once: true });\n  if (discrete) {\n    dispatchDiscreteCustomEvent(target, event);\n  } else {\n    target.dispatchEvent(event);\n  }\n}\n__name(handleAndDispatchCustomEvent, \"handleAndDispatchCustomEvent\");\nexport {\n  DismissableLayerBranch as Branch,\n  DismissableLayer,\n  DismissableLayerBranch,\n  DismissableLayer as Root,\n  useDismissableLayerSurface\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FocusScope = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function FocusScope2(props, forwardedRef) {\n    const {\n      loop = false,\n      trapped = false,\n      branches,\n      onMountAutoFocus: onMountAutoFocusProp,\n      onUnmountAutoFocus: onUnmountAutoFocusProp,\n      ...scopeProps\n    } = props;\n    const [container, setContainer] = React.useState(null);\n    const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n    const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n    const lastFocusedElementRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, setContainer);\n    const branchesRef = React.useRef(branches);\n    React.useEffect(() => {\n      branchesRef.current = branches;\n    });\n    const isTargetInScope = React.useCallback(\n      (target) => {\n        if (!target) return false;\n        if (container?.contains(target)) return true;\n        return Boolean(branchesRef.current?.some((branch) => branch.contains(target)));\n      },\n      [container]\n    );\n    const focusScope = React.useRef({\n      paused: false,\n      pause() {\n        this.paused = true;\n      },\n      resume() {\n        this.paused = false;\n      }\n    }).current;\n    React.useEffect(() => {\n      if (trapped) {\n        let handleFocusIn2 = function(event) {\n          if (focusScope.paused || !container) return;\n          const target = event.target;\n          if (isTargetInScope(target)) {\n            lastFocusedElementRef.current = target;\n          } else {\n            focus(lastFocusedElementRef.current, { select: true });\n          }\n        }, handleFocusOut2 = function(event) {\n          if (focusScope.paused || !container) return;\n          const relatedTarget = event.relatedTarget;\n          if (relatedTarget === null) return;\n          if (!isTargetInScope(relatedTarget)) {\n            focus(lastFocusedElementRef.current, { select: true });\n          }\n        }, handleMutations2 = function(mutations) {\n          const focusedElement = document.activeElement;\n          if (focusedElement !== document.body) return;\n          for (const mutation of mutations) {\n            if (mutation.removedNodes.length > 0) focus(container);\n          }\n        };\n        var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n        __name(handleFocusIn2, \"handleFocusIn\");\n        __name(handleFocusOut2, \"handleFocusOut\");\n        __name(handleMutations2, \"handleMutations\");\n        document.addEventListener(\"focusin\", handleFocusIn2);\n        document.addEventListener(\"focusout\", handleFocusOut2);\n        const mutationObserver = new MutationObserver(handleMutations2);\n        if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n        return () => {\n          document.removeEventListener(\"focusin\", handleFocusIn2);\n          document.removeEventListener(\"focusout\", handleFocusOut2);\n          mutationObserver.disconnect();\n        };\n      }\n    }, [trapped, container, focusScope.paused, isTargetInScope]);\n    React.useEffect(() => {\n      if (container) {\n        focusScopesStack.add(focusScope);\n        const previouslyFocusedElement = document.activeElement;\n        const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n        if (!hasFocusedCandidate) {\n          const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n          container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n          container.dispatchEvent(mountEvent);\n          if (!mountEvent.defaultPrevented) {\n            focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n            if (document.activeElement === previouslyFocusedElement) {\n              focus(container);\n            }\n          }\n        }\n        return () => {\n          container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n          const ownerDocument = container.ownerDocument;\n          const UnmountEvent = CustomEvent;\n          setTimeout(() => {\n            const unmountEvent = new UnmountEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n            container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n            container.dispatchEvent(unmountEvent);\n            if (!unmountEvent.defaultPrevented) {\n              focus(previouslyFocusedElement ?? ownerDocument.body, { select: true });\n            }\n            container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n            focusScopesStack.remove(focusScope);\n          }, 0);\n        };\n      }\n    }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n    const handleKeyDown = React.useCallback(\n      (event) => {\n        if (!loop && !trapped) return;\n        if (focusScope.paused) return;\n        const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n        const focusedElement = document.activeElement;\n        if (isTabKey && focusedElement) {\n          const container2 = event.currentTarget;\n          const [first, last] = getTabbableEdges(container2);\n          const hasTabbableElementsInside = first && last;\n          if (!hasTabbableElementsInside) {\n            if (focusedElement === container2) event.preventDefault();\n          } else {\n            if (!event.shiftKey && focusedElement === last) {\n              event.preventDefault();\n              if (loop) focus(first, { select: true });\n            } else if (event.shiftKey && focusedElement === first) {\n              event.preventDefault();\n              if (loop) focus(last, { select: true });\n            }\n          }\n        }\n      },\n      [loop, trapped, focusScope.paused]\n    );\n    return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n  }, \"FocusScope\")\n);\nvar FocusScopeBranchContext = React.createContext(null);\nfunction FocusScopeBranchProvider({ registry, children }) {\n  if (!registry) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx(FocusScopeBranchContext.Provider, { value: registry, children });\n}\n__name(FocusScopeBranchProvider, \"FocusScopeBranchProvider\");\nfunction useFocusScopeBranchRegistry() {\n  const [nodes, setNodes] = React.useState([]);\n  const registry = React.useMemo(\n    () => ({\n      add: /* @__PURE__ */ __name((node) => setNodes((prev) => prev.includes(node) ? prev : [...prev, node]), \"add\"),\n      remove: /* @__PURE__ */ __name((node) => setNodes((prev) => prev.filter((current) => current !== node)), \"remove\")\n    }),\n    []\n  );\n  return { nodes, registry };\n}\n__name(useFocusScopeBranchRegistry, \"useFocusScopeBranchRegistry\");\nfunction useFocusScopeBranch(node) {\n  const registry = React.useContext(FocusScopeBranchContext);\n  React.useEffect(() => {\n    if (!node || !registry) return;\n    registry.add(node);\n    return () => registry.remove(node);\n  }, [node, registry]);\n}\n__name(useFocusScopeBranch, \"useFocusScopeBranch\");\nfunction focusFirst(candidates, { select = false } = {}) {\n  const previouslyFocusedElement = document.activeElement;\n  for (const candidate of candidates) {\n    focus(candidate, { select });\n    if (document.activeElement !== previouslyFocusedElement) return;\n  }\n}\n__name(focusFirst, \"focusFirst\");\nfunction getTabbableEdges(container) {\n  const candidates = getTabbableCandidates(container);\n  const first = findVisible(candidates, container);\n  const last = findVisible(candidates.reverse(), container);\n  return [first, last];\n}\n__name(getTabbableEdges, \"getTabbableEdges\");\nfunction getTabbableCandidates(container) {\n  const nodes = [];\n  const document2 = container.ownerDocument;\n  const walker = document2.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: /* @__PURE__ */ __name((node) => {\n      const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n      if (node.disabled || node.hidden || isHiddenInput) {\n        return NodeFilter.FILTER_SKIP;\n      }\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }, \"acceptNode\")\n  });\n  while (walker.nextNode()) {\n    nodes.push(walker.currentNode);\n  }\n  return nodes;\n}\n__name(getTabbableCandidates, \"getTabbableCandidates\");\nfunction findVisible(elements, container) {\n  const canUseCheckVisibility = typeof container.checkVisibility === \"function\" && container.checkVisibility({ checkVisibilityCSS: true });\n  for (const element of elements) {\n    const hidden = canUseCheckVisibility ? !element.checkVisibility({ checkVisibilityCSS: true }) : isHidden(element, { upTo: container });\n    if (!hidden) {\n      return element;\n    }\n  }\n}\n__name(findVisible, \"findVisible\");\nfunction isHidden(node, { upTo }) {\n  if (getComputedStyle(node).visibility === \"hidden\") return true;\n  while (node) {\n    if (upTo !== void 0 && node === upTo) return false;\n    if (getComputedStyle(node).display === \"none\") return true;\n    node = node.parentElement;\n  }\n  return false;\n}\n__name(isHidden, \"isHidden\");\nfunction isSelectableInput(element) {\n  return element.tagName === \"INPUT\" && typeof element.select === \"function\";\n}\n__name(isSelectableInput, \"isSelectableInput\");\nfunction focus(element, { select = false } = {}) {\n  if (element && element.focus) {\n    const ownerDocument = element.ownerDocument ?? document;\n    const previouslyFocusedElement = ownerDocument.activeElement;\n    element.focus({ preventScroll: true });\n    if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n      element.select();\n  }\n}\n__name(focus, \"focus\");\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n  let stack = [];\n  return {\n    add(focusScope) {\n      const activeFocusScope = stack[0];\n      if (focusScope !== activeFocusScope) {\n        activeFocusScope?.pause();\n      }\n      stack = arrayRemove(stack, focusScope);\n      stack.unshift(focusScope);\n    },\n    remove(focusScope) {\n      stack = arrayRemove(stack, focusScope);\n      stack[0]?.resume();\n    }\n  };\n}\n__name(createFocusScopesStack, \"createFocusScopesStack\");\nfunction arrayRemove(array, item) {\n  const updatedArray = [...array];\n  const index = updatedArray.indexOf(item);\n  if (index !== -1) {\n    updatedArray.splice(index, 1);\n  }\n  return updatedArray;\n}\n__name(arrayRemove, \"arrayRemove\");\nfunction removeLinks(items) {\n  return items.filter((item) => item.tagName !== \"A\");\n}\n__name(removeLinks, \"removeLinks\");\nexport {\n  FocusScope,\n  FocusScopeBranchProvider,\n  FocusScope as Root,\n  useFocusScopeBranch,\n  useFocusScopeBranchRegistry\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Portal = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function Portal2(props, forwardedRef) {\n    const { container: containerProp, ...portalProps } = props;\n    const [mounted, setMounted] = React.useState(false);\n    useLayoutEffect(() => setMounted(true), []);\n    const container = containerProp || mounted && globalThis?.document?.body;\n    return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n  }, \"Portal\")\n);\nexport {\n  Portal,\n  Portal as Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nvar guards = null;\nfunction FocusGuards(props) {\n  useFocusGuards();\n  return props.children;\n}\n__name(FocusGuards, \"FocusGuards\");\nfunction useFocusGuards() {\n  React.useEffect(() => {\n    if (!guards) {\n      guards = { start: createFocusGuard(), end: createFocusGuard() };\n    }\n    const { start, end } = guards;\n    if (document.body.firstElementChild !== start) {\n      document.body.insertAdjacentElement(\"afterbegin\", start);\n    }\n    if (document.body.lastElementChild !== end) {\n      document.body.insertAdjacentElement(\"beforeend\", end);\n    }\n    count++;\n    return () => {\n      if (count === 1) {\n        guards?.start.remove();\n        guards?.end.remove();\n        guards = null;\n      }\n      count = Math.max(0, count - 1);\n    };\n  }, []);\n}\n__name(useFocusGuards, \"useFocusGuards\");\nfunction createFocusGuard() {\n  const element = document.createElement(\"span\");\n  element.setAttribute(\"data-radix-focus-guard\", \"\");\n  element.tabIndex = 0;\n  element.style.outline = \"none\";\n  element.style.opacity = \"0\";\n  element.style.position = \"fixed\";\n  element.style.pointerEvents = \"none\";\n  return element;\n}\n__name(createFocusGuard, \"createFocusGuard\");\nexport {\n  FocusGuards,\n  FocusGuards as Root,\n  useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    }\n    else if (ref) {\n        ref.current = value;\n    }\n    return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n    var ref = useState(function () { return ({\n        // value\n        value: initialValue,\n        // last callback\n        callback: callback,\n        // \"memoized\" public interface\n        facade: {\n            get current() {\n                return ref.value;\n            },\n            set current(value) {\n                var last = ref.value;\n                if (last !== value) {\n                    ref.value = value;\n                    ref.callback(value, last);\n                }\n            },\n        },\n    }); })[0];\n    // update callback\n    ref.callback = callback;\n    return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n    var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n        return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n    });\n    // handle refs changes - added or removed\n    useIsomorphicLayoutEffect(function () {\n        var oldValue = currentValues.get(callbackRef);\n        if (oldValue) {\n            var prevRefs_1 = new Set(oldValue);\n            var nextRefs_1 = new Set(refs);\n            var current_1 = callbackRef.current;\n            prevRefs_1.forEach(function (ref) {\n                if (!nextRefs_1.has(ref)) {\n                    assignRef(ref, null);\n                }\n            });\n            nextRefs_1.forEach(function (ref) {\n                if (!prevRefs_1.has(ref)) {\n                    assignRef(ref, current_1);\n                }\n            });\n        }\n        currentValues.set(callbackRef, refs);\n    }, [refs]);\n    return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nexport function createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = __assign({ async: true, ssr: false }, options);\n    return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n    var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n    if (!sideCar) {\n        throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n    }\n    var Target = sideCar.read();\n    if (!Target) {\n        throw new Error('Sidecar medium not found');\n    }\n    return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n    medium.useMedium(exported);\n    return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n    return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n    var ref = React.useRef(null);\n    var _a = React.useState({\n        onScrollCapture: nothing,\n        onWheelCapture: nothing,\n        onTouchMoveCapture: nothing,\n    }), callbacks = _a[0], setCallbacks = _a[1];\n    var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n    var SideCar = sideCar;\n    var containerRef = useMergeRefs([ref, parentRef]);\n    var containerProps = __assign(__assign({}, rest), callbacks);\n    return (React.createElement(React.Fragment, null,\n        enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n        forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n    enabled: true,\n    removeScrollBar: true,\n    inert: false,\n};\nRemoveScroll.classNames = {\n    fullWidth: fullWidthClassName,\n    zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n    currentNonce = nonce;\n};\nexport var getNonce = function () {\n    if (currentNonce) {\n        return currentNonce;\n    }\n    if (typeof __webpack_nonce__ !== 'undefined') {\n        return __webpack_nonce__;\n    }\n    return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n    if (!document)\n        return null;\n    var tag = document.createElement('style');\n    tag.type = 'text/css';\n    var nonce = getNonce();\n    if (nonce) {\n        tag.setAttribute('nonce', nonce);\n    }\n    return tag;\n}\nfunction injectStyles(tag, css) {\n    // @ts-ignore\n    if (tag.styleSheet) {\n        // @ts-ignore\n        tag.styleSheet.cssText = css;\n    }\n    else {\n        tag.appendChild(document.createTextNode(css));\n    }\n}\nfunction insertStyleTag(tag) {\n    var head = document.head || document.getElementsByTagName('head')[0];\n    head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n    var counter = 0;\n    var stylesheet = null;\n    return {\n        add: function (style) {\n            if (counter == 0) {\n                if ((stylesheet = makeStyleTag())) {\n                    injectStyles(stylesheet, style);\n                    insertStyleTag(stylesheet);\n                }\n            }\n            counter++;\n        },\n        remove: function () {\n            counter--;\n            if (!counter && stylesheet) {\n                stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n                stylesheet = null;\n            }\n        },\n    };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n    var sheet = stylesheetSingleton();\n    return function (styles, isDynamic) {\n        React.useEffect(function () {\n            sheet.add(styles);\n            return function () {\n                sheet.remove();\n            };\n        }, [styles && isDynamic]);\n    };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n    var useStyle = styleHookSingleton();\n    var Sheet = function (_a) {\n        var styles = _a.styles, dynamic = _a.dynamic;\n        useStyle(styles, dynamic);\n        return null;\n    };\n    return Sheet;\n};\n","export var zeroGap = {\n    left: 0,\n    top: 0,\n    right: 0,\n    gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n    var cs = window.getComputedStyle(document.body);\n    var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n    var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n    var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n    return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    if (typeof window === 'undefined') {\n        return zeroGap;\n    }\n    var offsets = getOffset(gapMode);\n    var documentWidth = document.documentElement.clientWidth;\n    var windowWidth = window.innerWidth;\n    return {\n        left: offsets[0],\n        top: offsets[1],\n        right: offsets[2],\n        gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n    };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n    var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    return \"\\n  .\".concat(noScrollbarsClassName, \" {\\n   overflow: hidden \").concat(important, \";\\n   padding-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  body[\").concat(lockAttribute, \"] {\\n    overflow: hidden \").concat(important, \";\\n    overscroll-behavior: contain;\\n    \").concat([\n        allowRelative && \"position: relative \".concat(important, \";\"),\n        gapMode === 'margin' &&\n            \"\\n    padding-left: \".concat(left, \"px;\\n    padding-top: \").concat(top, \"px;\\n    padding-right: \").concat(right, \"px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n    \"),\n        gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n    ]\n        .filter(Boolean)\n        .join(''), \"\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" {\\n    right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" {\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n    right: 0 \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n    margin-right: 0 \").concat(important, \";\\n  }\\n  \\n  body[\").concat(lockAttribute, \"] {\\n    \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n  }\\n\");\n};\nvar getCurrentUseCounter = function () {\n    var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n    return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n    React.useEffect(function () {\n        document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n        return function () {\n            var newCounter = getCurrentUseCounter() - 1;\n            if (newCounter <= 0) {\n                document.body.removeAttribute(lockAttribute);\n            }\n            else {\n                document.body.setAttribute(lockAttribute, newCounter.toString());\n            }\n        };\n    }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n    var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n    useLockAttribute();\n    /*\n     gap will be measured on every component mount\n     however it will be used only by the \"first\" invocation\n     due to singleton nature of <Style\n     */\n    var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n    return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n    try {\n        var options = Object.defineProperty({}, 'passive', {\n            get: function () {\n                passiveSupported = true;\n                return true;\n            },\n        });\n        // @ts-ignore\n        window.addEventListener('test', options, options);\n        // @ts-ignore\n        window.removeEventListener('test', options, options);\n    }\n    catch (err) {\n        passiveSupported = false;\n    }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n    // textarea will always _contain_ scroll inside self. It only can be hidden\n    return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n    if (!(node instanceof Element)) {\n        return false;\n    }\n    var styles = window.getComputedStyle(node);\n    return (\n    // not-not-scrollable\n    styles[overflow] !== 'hidden' &&\n        // contains scroll inside self\n        !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n    var ownerDocument = node.ownerDocument;\n    var current = node;\n    do {\n        // Skip over shadow root\n        if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n            current = current.host;\n        }\n        var isScrollable = elementCouldBeScrolled(axis, current);\n        if (isScrollable) {\n            var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n            if (scrollHeight > clientHeight) {\n                return true;\n            }\n        }\n        current = current.parentNode;\n    } while (current && current !== ownerDocument.body);\n    return false;\n};\nvar getVScrollVariables = function (_a) {\n    var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n    return [\n        scrollTop,\n        scrollHeight,\n        clientHeight,\n    ];\n};\nvar getHScrollVariables = function (_a) {\n    var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n    return [\n        scrollLeft,\n        scrollWidth,\n        clientWidth,\n    ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n    return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n    return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n    /**\n     * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n     * and then increasingly negative as you scroll towards the end of the content.\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n     */\n    return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n    var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n    var delta = directionFactor * sourceDelta;\n    // find scrollable target\n    var target = event.target;\n    var targetInLock = endTarget.contains(target);\n    var shouldCancelScroll = false;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = 0;\n    var availableScrollTop = 0;\n    do {\n        if (!target) {\n            break;\n        }\n        var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n        var elementScroll = scroll_1 - capacity - directionFactor * position;\n        if (position || elementScroll) {\n            if (elementCouldBeScrolled(axis, target)) {\n                availableScroll += elementScroll;\n                availableScrollTop += position;\n            }\n        }\n        var parent_1 = target.parentNode;\n        // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n        // this is the same logic used in focus-lock\n        target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n    } while (\n    // portaled content\n    (!targetInLock && target !== document.body) ||\n        // self content\n        (targetInLock && (endTarget.contains(target) || endTarget === target)));\n    // handle epsilon around 0 (non standard zoom levels)\n    if (isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n        shouldCancelScroll = true;\n    }\n    else if (!isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n        shouldCancelScroll = true;\n    }\n    return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n    return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n    return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n  .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n  .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n    var shouldPreventQueue = React.useRef([]);\n    var touchStartRef = React.useRef([0, 0]);\n    var activeAxis = React.useRef();\n    var id = React.useState(idCounter++)[0];\n    var Style = React.useState(styleSingleton)[0];\n    var lastProps = React.useRef(props);\n    React.useEffect(function () {\n        lastProps.current = props;\n    }, [props]);\n    React.useEffect(function () {\n        if (props.inert) {\n            document.body.classList.add(\"block-interactivity-\".concat(id));\n            var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n            allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n            return function () {\n                document.body.classList.remove(\"block-interactivity-\".concat(id));\n                allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n            };\n        }\n        return;\n    }, [props.inert, props.lockRef.current, props.shards]);\n    var shouldCancelEvent = React.useCallback(function (event, parent) {\n        if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n            return !lastProps.current.allowPinchZoom;\n        }\n        var touch = getTouchXY(event);\n        var touchStart = touchStartRef.current;\n        var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n        var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n        var currentAxis;\n        var target = event.target;\n        var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n        // allow horizontal touch move on Range inputs. They will not cause any scroll\n        if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n            return false;\n        }\n        // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n        var selection = window.getSelection();\n        var anchorNode = selection && selection.anchorNode;\n        var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n        if (isTouchingSelection) {\n            return false;\n        }\n        var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n        if (!canBeScrolledInMainDirection) {\n            return true;\n        }\n        if (canBeScrolledInMainDirection) {\n            currentAxis = moveDirection;\n        }\n        else {\n            currentAxis = moveDirection === 'v' ? 'h' : 'v';\n            canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n            // other axis might be not scrollable\n        }\n        if (!canBeScrolledInMainDirection) {\n            return false;\n        }\n        if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n            activeAxis.current = currentAxis;\n        }\n        if (!currentAxis) {\n            return true;\n        }\n        var cancelingAxis = activeAxis.current || currentAxis;\n        return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n    }, []);\n    var shouldPrevent = React.useCallback(function (_event) {\n        var event = _event;\n        if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n            // not the last active\n            return;\n        }\n        var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n        var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n        // self event, and should be canceled\n        if (sourceEvent && sourceEvent.should) {\n            if (event.cancelable) {\n                event.preventDefault();\n            }\n            return;\n        }\n        // outside or shard event\n        if (!sourceEvent) {\n            var shardNodes = (lastProps.current.shards || [])\n                .map(extractRef)\n                .filter(Boolean)\n                .filter(function (node) { return node.contains(event.target); });\n            var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n            if (shouldStop) {\n                if (event.cancelable) {\n                    event.preventDefault();\n                }\n            }\n        }\n    }, []);\n    var shouldCancel = React.useCallback(function (name, delta, target, should) {\n        var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n        shouldPreventQueue.current.push(event);\n        setTimeout(function () {\n            shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n        }, 1);\n    }, []);\n    var scrollTouchStart = React.useCallback(function (event) {\n        touchStartRef.current = getTouchXY(event);\n        activeAxis.current = undefined;\n    }, []);\n    var scrollWheel = React.useCallback(function (event) {\n        shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    var scrollTouchMove = React.useCallback(function (event) {\n        shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    React.useEffect(function () {\n        lockStack.push(Style);\n        props.setCallbacks({\n            onScrollCapture: scrollWheel,\n            onWheelCapture: scrollWheel,\n            onTouchMoveCapture: scrollTouchMove,\n        });\n        document.addEventListener('wheel', shouldPrevent, nonPassive);\n        document.addEventListener('touchmove', shouldPrevent, nonPassive);\n        document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n        return function () {\n            lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n            document.removeEventListener('wheel', shouldPrevent, nonPassive);\n            document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n            document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n        };\n    }, []);\n    var removeScrollBar = props.removeScrollBar, inert = props.inert;\n    return (React.createElement(React.Fragment, null,\n        inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n        removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n    var shadowParent = null;\n    while (node !== null) {\n        if (node instanceof ShadowRoot) {\n            shadowParent = node.host;\n            node = node.host;\n        }\n        node = node.parentNode;\n    }\n    return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n    if (typeof document === 'undefined') {\n        return null;\n    }\n    var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n    return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n    return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n    return targets\n        .map(function (target) {\n        if (parent.contains(target)) {\n            return target;\n        }\n        var correctedTarget = unwrapHost(target);\n        if (correctedTarget && parent.contains(correctedTarget)) {\n            return correctedTarget;\n        }\n        console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n        return null;\n    })\n        .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n    var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    if (!markerMap[markerName]) {\n        markerMap[markerName] = new WeakMap();\n    }\n    var markerCounter = markerMap[markerName];\n    var hiddenNodes = [];\n    var elementsToKeep = new Set();\n    var elementsToStop = new Set(targets);\n    var keep = function (el) {\n        if (!el || elementsToKeep.has(el)) {\n            return;\n        }\n        elementsToKeep.add(el);\n        keep(el.parentNode);\n    };\n    targets.forEach(keep);\n    var deep = function (parent) {\n        if (!parent || elementsToStop.has(parent)) {\n            return;\n        }\n        Array.prototype.forEach.call(parent.children, function (node) {\n            if (elementsToKeep.has(node)) {\n                deep(node);\n            }\n            else {\n                try {\n                    var attr = node.getAttribute(controlAttribute);\n                    var alreadyHidden = attr !== null && attr !== 'false';\n                    var counterValue = (counterMap.get(node) || 0) + 1;\n                    var markerValue = (markerCounter.get(node) || 0) + 1;\n                    counterMap.set(node, counterValue);\n                    markerCounter.set(node, markerValue);\n                    hiddenNodes.push(node);\n                    if (counterValue === 1 && alreadyHidden) {\n                        uncontrolledNodes.set(node, true);\n                    }\n                    if (markerValue === 1) {\n                        node.setAttribute(markerName, 'true');\n                    }\n                    if (!alreadyHidden) {\n                        node.setAttribute(controlAttribute, 'true');\n                    }\n                }\n                catch (e) {\n                    console.error('aria-hidden: cannot operate on ', node, e);\n                }\n            }\n        });\n    };\n    deep(parentNode);\n    elementsToKeep.clear();\n    lockCount++;\n    return function () {\n        hiddenNodes.forEach(function (node) {\n            var counterValue = counterMap.get(node) - 1;\n            var markerValue = markerCounter.get(node) - 1;\n            counterMap.set(node, counterValue);\n            markerCounter.set(node, markerValue);\n            if (!counterValue) {\n                if (!uncontrolledNodes.has(node)) {\n                    node.removeAttribute(controlAttribute);\n                }\n                uncontrolledNodes.delete(node);\n            }\n            if (!markerValue) {\n                node.removeAttribute(markerName);\n            }\n        });\n        lockCount--;\n        if (!lockCount) {\n            // clear\n            counterMap = new WeakMap();\n            counterMap = new WeakMap();\n            uncontrolledNodes = new WeakMap();\n            markerMap = {};\n        }\n    };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n    var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n    // and script elements, as they have no impact on accessibility.\n    targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n    return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-inert-ed'; }\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n    return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-suppressed'; }\n    return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer, useDismissableLayerSurface } from \"@radix-ui/react-dismissable-layer\";\nimport {\n  FocusScope,\n  FocusScopeBranchProvider,\n  useFocusScopeBranchRegistry\n} from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = /* @__PURE__ */ __name((props) => {\n  const {\n    __scopeDialog,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const triggerRef = React.useRef(null);\n  const contentRef = React.useRef(null);\n  const { nodes: branchNodes, registry: branchRegistry } = useFocusScopeBranchRegistry();\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: DIALOG_NAME\n  });\n  const [titleCount, setTitleCount] = React.useState(0);\n  const [descriptionCount, setDescriptionCount] = React.useState(0);\n  return /* @__PURE__ */ jsx(\n    DialogProvider,\n    {\n      scope: __scopeDialog,\n      triggerRef,\n      contentRef,\n      contentId: useId(),\n      titleId: useId(),\n      descriptionId: useId(),\n      titlePresent: titleCount > 0,\n      descriptionPresent: descriptionCount > 0,\n      setTitleCount,\n      setDescriptionCount,\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      branchNodes,\n      branchRegistry,\n      children\n    }\n  );\n}, \"Dialog\");\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function DialogTrigger2(props, forwardedRef) {\n    const { __scopeDialog, ...triggerProps } = props;\n    const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }, \"DialogTrigger\")\n);\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar DialogPortal = /* @__PURE__ */ __name((props) => {\n  const { __scopeDialog, forceMount, children, container } = props;\n  const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n}, \"DialogPortal\");\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function DialogOverlay2(props, forwardedRef) {\n    const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n    return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n  }, \"DialogOverlay\")\n);\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DialogOverlayImpl2(props, forwardedRef) {\n    const { __scopeDialog, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n    const registerDismissableSurface = useDismissableLayerSurface();\n    const composedRefs = useComposedRefs(forwardedRef, registerDismissableSurface);\n    return (\n      // Make sure `Content` is scrollable even when it doesn't live inside\n      // `RemoveScroll` (eg. when `Overlay` and `Content` are siblings). Nested\n      // layers are registered as branches and added as shards so they remain\n      // scrollable too. See https://github.com/radix-ui/primitives/issues/3423\n      /* @__PURE__ */ jsx(\n        RemoveScroll,\n        {\n          as: Slot,\n          allowPinchZoom: true,\n          shards: React.useMemo(\n            () => [context.contentRef, ...context.branchNodes.map((node) => ({ current: node }))],\n            [context.contentRef, context.branchNodes]\n          ),\n          children: /* @__PURE__ */ jsx(\n            Primitive.div,\n            {\n              \"data-state\": getState(context.open),\n              ...overlayProps,\n              ref: composedRefs,\n              style: { pointerEvents: \"auto\", ...overlayProps.style }\n            }\n          )\n        }\n      )\n    );\n  }, \"DialogOverlayImpl\")\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function DialogContent2(props, forwardedRef) {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }, \"DialogContent\")\n);\nvar DialogContentModal = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DialogContentModal2(props, forwardedRef) {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: context.open,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (isRightClick) event.preventDefault();\n        }),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault()\n        )\n      }\n    );\n  }, \"DialogContentModal\")\n);\nvar DialogContentNonModal = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DialogContentNonModal2(props, forwardedRef) {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }, \"DialogContentNonModal\")\n);\nvar DialogContentImpl = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DialogContentImpl2(props, forwardedRef) {\n    const {\n      __scopeDialog,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      \"aria-describedby\": ariaDescribedby,\n      children,\n      ...contentProps\n    } = props;\n    const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n    useFocusGuards();\n    return /* @__PURE__ */ jsx(FocusScopeBranchProvider, { registry: context.branchRegistry, children: /* @__PURE__ */ jsx(\n      FocusScope,\n      {\n        asChild: true,\n        loop: true,\n        trapped: trapFocus,\n        branches: context.branchNodes,\n        onMountAutoFocus: onOpenAutoFocus,\n        onUnmountAutoFocus: onCloseAutoFocus,\n        children: /* @__PURE__ */ jsx(\n          DismissableLayer,\n          {\n            role: \"dialog\",\n            id: context.contentId,\n            \"aria-labelledby\": context.titlePresent ? context.titleId : void 0,\n            \"aria-describedby\": context.descriptionPresent ? concatAriaDescribedby(ariaDescribedby, context.descriptionId) : ariaDescribedby,\n            \"data-state\": getState(context.open),\n            ...contentProps,\n            ref: forwardedRef,\n            deferPointerDownOutside: true,\n            onDismiss: () => context.onOpenChange(false),\n            children\n          }\n        )\n      }\n    ) });\n  }, \"DialogContentImpl\")\n);\nvar DialogTitle = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function DialogTitle2(props, forwardedRef) {\n    const { __scopeDialog, ...titleProps } = props;\n    const context = useDialogContext(\"DialogTitle\", __scopeDialog);\n    const { setTitleCount } = context;\n    useLayoutEffect(() => {\n      setTitleCount((count) => count + 1);\n      return () => setTitleCount((count) => count - 1);\n    }, [setTitleCount]);\n    return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n  }, \"DialogTitle\")\n);\nvar DialogDescription = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DialogDescription2(props, forwardedRef) {\n    const { __scopeDialog, ...descriptionProps } = props;\n    const context = useDialogContext(\"DialogDescription\", __scopeDialog);\n    const { setDescriptionCount } = context;\n    useLayoutEffect(() => {\n      setDescriptionCount((count) => count + 1);\n      return () => setDescriptionCount((count) => count - 1);\n    }, [setDescriptionCount]);\n    return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n  }, \"DialogDescription\")\n);\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function DialogClose2(props, forwardedRef) {\n    const { __scopeDialog, ...closeProps } = props;\n    const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }, \"DialogClose\")\n);\nvar WarningProvider = /* @__PURE__ */ __name((props) => {\n  return props.children;\n}, \"WarningProvider\");\nfunction concatAriaDescribedby(...values) {\n  const ids = /* @__PURE__ */ new Set();\n  for (const value of values) {\n    if (typeof value !== \"string\") continue;\n    for (const id of String(value).trim().split(/\\s+/)) {\n      if (id) ids.add(id);\n    }\n  }\n  return ids.size > 0 ? Array.from(ids).join(\" \") : void 0;\n}\n__name(concatAriaDescribedby, \"concatAriaDescribedby\");\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\n__name(getState, \"getState\");\nexport {\n  DialogClose as Close,\n  DialogContent as Content,\n  DialogDescription as Description,\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n  DialogOverlay as Overlay,\n  DialogPortal as Portal,\n  Dialog as Root,\n  DialogTitle as Title,\n  DialogTrigger as Trigger,\n  WarningProvider,\n  createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/alert-dialog.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { createDialogScope } from \"@radix-ui/react-dialog\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ROOT_NAME = \"AlertDialog\";\nvar [createAlertDialogContext, createAlertDialogScope] = createContextScope(ROOT_NAME, [\n  createDialogScope\n]);\nvar useDialogScope = createDialogScope();\nvar AlertDialog = /* @__PURE__ */ __name((props) => {\n  const { __scopeAlertDialog, ...alertDialogProps } = props;\n  const dialogScope = useDialogScope(__scopeAlertDialog);\n  return /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...dialogScope, ...alertDialogProps, modal: true });\n}, \"AlertDialog\");\nvar AlertDialogTrigger = React.forwardRef(\n  /* @__PURE__ */ __name(function AlertDialogTrigger2(props, forwardedRef) {\n    const { __scopeAlertDialog, ...triggerProps } = props;\n    const dialogScope = useDialogScope(__scopeAlertDialog);\n    return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ...dialogScope, ...triggerProps, ref: forwardedRef });\n  }, \"AlertDialogTrigger\")\n);\nvar AlertDialogPortal = /* @__PURE__ */ __name((props) => {\n  const { __scopeAlertDialog, ...portalProps } = props;\n  const dialogScope = useDialogScope(__scopeAlertDialog);\n  return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { ...dialogScope, ...portalProps });\n}, \"AlertDialogPortal\");\nvar AlertDialogOverlay = React.forwardRef(\n  /* @__PURE__ */ __name(function AlertDialogOverlay2(props, forwardedRef) {\n    const { __scopeAlertDialog, ...overlayProps } = props;\n    const dialogScope = useDialogScope(__scopeAlertDialog);\n    return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { ...dialogScope, ...overlayProps, ref: forwardedRef });\n  }, \"AlertDialogOverlay\")\n);\nvar CONTENT_NAME = \"AlertDialogContent\";\nvar [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME);\nvar AlertDialogContent = React.forwardRef(\n  /* @__PURE__ */ __name(function AlertDialogContent2(props, forwardedRef) {\n    const { __scopeAlertDialog, children, ...contentProps } = props;\n    const dialogScope = useDialogScope(__scopeAlertDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    const cancelRef = React.useRef(null);\n    return /* @__PURE__ */ jsx(AlertDialogContentProvider, { scope: __scopeAlertDialog, cancelRef, children: /* @__PURE__ */ jsx(\n      DialogPrimitive.Content,\n      {\n        role: \"alertdialog\",\n        ...dialogScope,\n        ...contentProps,\n        ref: composedRefs,\n        onOpenAutoFocus: composeEventHandlers(contentProps.onOpenAutoFocus, (event) => {\n          event.preventDefault();\n          cancelRef.current?.focus({ preventScroll: true });\n        }),\n        onPointerDownOutside: (event) => event.preventDefault(),\n        onInteractOutside: (event) => event.preventDefault(),\n        children\n      }\n    ) });\n  }, \"AlertDialogContent\")\n);\nvar AlertDialogTitle = React.forwardRef(\n  /* @__PURE__ */ __name(function AlertDialogTitle2(props, forwardedRef) {\n    const { __scopeAlertDialog, ...titleProps } = props;\n    const dialogScope = useDialogScope(__scopeAlertDialog);\n    return /* @__PURE__ */ jsx(DialogPrimitive.Title, { ...dialogScope, ...titleProps, ref: forwardedRef });\n  }, \"AlertDialogTitle\")\n);\nvar AlertDialogDescription = React.forwardRef(/* @__PURE__ */ __name(function AlertDialogDescription2(props, forwardedRef) {\n  const { __scopeAlertDialog, ...descriptionProps } = props;\n  const dialogScope = useDialogScope(__scopeAlertDialog);\n  return /* @__PURE__ */ jsx(DialogPrimitive.Description, { ...dialogScope, ...descriptionProps, ref: forwardedRef });\n}, \"AlertDialogDescription\"));\nvar AlertDialogAction = React.forwardRef(\n  /* @__PURE__ */ __name(function AlertDialogAction2(props, forwardedRef) {\n    const { __scopeAlertDialog, ...actionProps } = props;\n    const dialogScope = useDialogScope(__scopeAlertDialog);\n    return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...actionProps, ref: forwardedRef });\n  }, \"AlertDialogAction\")\n);\nvar CANCEL_NAME = \"AlertDialogCancel\";\nvar AlertDialogCancel = React.forwardRef(\n  /* @__PURE__ */ __name(function AlertDialogCancel2(props, forwardedRef) {\n    const { __scopeAlertDialog, ...cancelProps } = props;\n    const { cancelRef } = useAlertDialogContentContext(CANCEL_NAME, __scopeAlertDialog);\n    const dialogScope = useDialogScope(__scopeAlertDialog);\n    const ref = useComposedRefs(forwardedRef, cancelRef);\n    return /* @__PURE__ */ jsx(DialogPrimitive.Close, { ...dialogScope, ...cancelProps, ref });\n  }, \"AlertDialogCancel\")\n);\nexport {\n  AlertDialogAction as Action,\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n  AlertDialogCancel as Cancel,\n  AlertDialogContent as Content,\n  AlertDialogDescription as Description,\n  AlertDialogOverlay as Overlay,\n  AlertDialogPortal as Portal,\n  AlertDialog as Root,\n  AlertDialogTitle as Title,\n  AlertDialogTrigger as Trigger,\n  createAlertDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar ImageLoadingStatus = {\n  Idle: \"idle\",\n  Loading: \"loading\",\n  Loaded: \"loaded\",\n  Error: \"error\"\n};\nvar STATIC_IMAGE_COUNT_STATE = [\n  0,\n  () => void 0\n];\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function Avatar2(props, forwardedRef) {\n    const { __scopeAvatar, ...avatarProps } = props;\n    const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\n      ImageLoadingStatus.Idle\n    );\n    const [imageCount, setImageCount] = useImageCount();\n    return /* @__PURE__ */ jsx(\n      AvatarProvider,\n      {\n        scope: __scopeAvatar,\n        imageLoadingStatus,\n        setImageLoadingStatus,\n        imageCount,\n        setImageCount,\n        children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n      }\n    );\n  }, \"Avatar\")\n);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function AvatarImage2(props, forwardedRef) {\n    const { __scopeAvatar, src, onLoadingStatusChange, ...imageProps } = props;\n    const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n    useUpdateImageCount(context.setImageCount);\n    const imageLoadingStatus = useImageLoadingStatus(src, {\n      referrerPolicy: imageProps.referrerPolicy,\n      crossOrigin: imageProps.crossOrigin,\n      loadingStatus: context.imageLoadingStatus,\n      setLoadingStatus: context.setImageLoadingStatus\n    });\n    const handleLoadingStatusChange = useCallbackRef((status) => {\n      onLoadingStatusChange?.(status);\n    });\n    const loadingStatusRef = React.useRef(imageLoadingStatus);\n    useLayoutEffect(() => {\n      const previousLoadingStatus = loadingStatusRef.current;\n      loadingStatusRef.current = imageLoadingStatus;\n      if (imageLoadingStatus !== previousLoadingStatus) {\n        handleLoadingStatusChange(imageLoadingStatus);\n      }\n    }, [imageLoadingStatus, handleLoadingStatusChange]);\n    return imageLoadingStatus === ImageLoadingStatus.Loaded ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n  }, \"AvatarImage\")\n);\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function AvatarFallback2(props, forwardedRef) {\n    const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n    const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n    const [canRender, setCanRender] = React.useState(delayMs === void 0);\n    React.useEffect(() => {\n      if (delayMs !== void 0) {\n        const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n        return () => window.clearTimeout(timerId);\n      }\n    }, [delayMs]);\n    return canRender && context.imageLoadingStatus !== ImageLoadingStatus.Loaded ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n  }, \"AvatarFallback\")\n);\nfunction useImageLoadingStatus(src, {\n  loadingStatus,\n  setLoadingStatus,\n  referrerPolicy,\n  crossOrigin\n}) {\n  useLayoutEffect(() => {\n    if (!src) {\n      setLoadingStatus(ImageLoadingStatus.Error);\n      return;\n    }\n    const image = new window.Image();\n    const handleLoad = /* @__PURE__ */ __name((event) => {\n      const image2 = event.currentTarget;\n      setLoadingStatus(getImageLoadingStatus(image2));\n    }, \"handleLoad\");\n    const handleError = /* @__PURE__ */ __name(() => setLoadingStatus(ImageLoadingStatus.Error), \"handleError\");\n    image.addEventListener(\"load\", handleLoad);\n    image.addEventListener(\"error\", handleError);\n    if (referrerPolicy) {\n      image.referrerPolicy = referrerPolicy;\n    }\n    image.crossOrigin = crossOrigin ?? null;\n    image.src = src;\n    setLoadingStatus(getImageLoadingStatus(image));\n    return () => {\n      image.removeEventListener(\"load\", handleLoad);\n      image.removeEventListener(\"error\", handleError);\n      setLoadingStatus(ImageLoadingStatus.Idle);\n    };\n  }, [src, crossOrigin, referrerPolicy, setLoadingStatus]);\n  return loadingStatus;\n}\n__name(useImageLoadingStatus, \"useImageLoadingStatus\");\nfunction getImageLoadingStatus(image) {\n  return image.complete ? image.naturalWidth > 0 ? ImageLoadingStatus.Loaded : ImageLoadingStatus.Error : ImageLoadingStatus.Loading;\n}\n__name(getImageLoadingStatus, \"getImageLoadingStatus\");\nfunction useImageCount() {\n  let state = STATIC_IMAGE_COUNT_STATE;\n  if (IS_DEVELOPMENT) {\n    state = React.useState(0);\n    const [imageCount] = state;\n    const hasWarnedRef = React.useRef(false);\n    React.useEffect(() => {\n      if (imageCount > 1 && !hasWarnedRef.current) {\n        hasWarnedRef.current = true;\n        console.warn(\n          \"Avatar: Only one `Avatar.Image` component should be rendered per `Avatar.Root`, but multiple were detected. This will lead to unexpected behavior.\"\n        );\n      }\n    }, [imageCount]);\n  }\n  return state;\n}\n__name(useImageCount, \"useImageCount\");\nfunction useUpdateImageCount(setImageCount) {\n  if (IS_DEVELOPMENT) {\n    React.useEffect(() => {\n      setImageCount((imageCount) => imageCount + 1);\n      return () => {\n        setImageCount((imageCount) => imageCount - 1);\n      };\n    }, [setImageCount]);\n  }\n}\n__name(useUpdateImageCount, \"useUpdateImageCount\");\nexport {\n  Avatar,\n  AvatarFallback,\n  AvatarImage,\n  AvatarFallback as Fallback,\n  AvatarImage as Image,\n  Avatar as Root,\n  createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n  const [size, setSize] = React.useState(void 0);\n  useLayoutEffect(() => {\n    if (element) {\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n      let rAF = 0;\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n        if (!entries.length) {\n          return;\n        }\n        const entry = entries[0];\n        window.cancelAnimationFrame(rAF);\n        rAF = window.requestAnimationFrame(() => {\n          let width;\n          let height;\n          if (\"borderBoxSize\" in entry) {\n            const borderSizeEntry = entry[\"borderBoxSize\"];\n            const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n            width = borderSize[\"inlineSize\"];\n            height = borderSize[\"blockSize\"];\n          } else {\n            width = element.offsetWidth;\n            height = element.offsetHeight;\n          }\n          setSize({ width, height });\n        });\n      });\n      resizeObserver.observe(element, { box: \"border-box\" });\n      return () => {\n        window.cancelAnimationFrame(rAF);\n        resizeObserver.unobserve(element);\n      };\n    } else {\n      setSize(void 0);\n    }\n  }, [element]);\n  return size;\n}\n__name(useSize, \"useSize\");\nexport {\n  useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n  const {\n    __scopeCheckbox,\n    checked: checkedProp,\n    children,\n    defaultChecked,\n    disabled,\n    form,\n    name,\n    onCheckedChange,\n    required,\n    value = \"on\",\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const [checked, setChecked] = useControllableState({\n    prop: checkedProp,\n    defaultProp: defaultChecked ?? false,\n    onChange: onCheckedChange,\n    caller: CHECKBOX_NAME\n  });\n  const [control, setControl] = React.useState(null);\n  const [bubbleInput, setBubbleInput] = React.useState(null);\n  const [userClick, setUserClick] = React.useState(null);\n  const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    true\n  );\n  const context = {\n    checked,\n    disabled,\n    setChecked,\n    control,\n    setControl,\n    name,\n    form,\n    value,\n    userClick,\n    onUserClick: setUserClick,\n    required,\n    defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n    isFormControl,\n    bubbleInput,\n    setBubbleInput\n  };\n  return /* @__PURE__ */ jsx(\n    CheckboxProviderImpl,\n    {\n      scope: __scopeCheckbox,\n      ...context,\n      children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n    }\n  );\n}\n__name(CheckboxProvider, \"CheckboxProvider\");\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function CheckboxTrigger2({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) {\n    const {\n      control,\n      value,\n      disabled,\n      checked,\n      required,\n      setControl,\n      setChecked,\n      onUserClick,\n      isFormControl,\n      bubbleInput\n    } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n    const composedRefs = useComposedRefs(forwardedRef, setControl);\n    const initialCheckedStateRef = React.useRef(checked);\n    React.useEffect(() => {\n      const form = control?.form;\n      if (form) {\n        const reset = /* @__PURE__ */ __name(() => setChecked(initialCheckedStateRef.current), \"reset\");\n        form.addEventListener(\"reset\", reset);\n        return () => form.removeEventListener(\"reset\", reset);\n      }\n    }, [control, setChecked]);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"checkbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        \"aria-required\": required,\n        \"data-state\": getState(checked),\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        value,\n        ...checkboxProps,\n        ref: composedRefs,\n        onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n          if (event.key === \"Enter\") event.preventDefault();\n        }),\n        onClick: composeEventHandlers(onClick, (event) => {\n          const hasConsumerStoppedPropagation = event.isPropagationStopped();\n          onUserClick({\n            requestedChecked: isIndeterminate(checked) ? true : !checked,\n            hasConsumerStoppedPropagation\n          });\n          setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n          if (bubbleInput && isFormControl) {\n            if (!hasConsumerStoppedPropagation) event.stopPropagation();\n          }\n        })\n      }\n    );\n  }, \"CheckboxTrigger\")\n);\nvar Checkbox = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function Checkbox2(props, forwardedRef) {\n    const {\n      __scopeCheckbox,\n      name,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      value,\n      onCheckedChange,\n      form,\n      ...checkboxProps\n    } = props;\n    return /* @__PURE__ */ jsx(\n      CheckboxProvider,\n      {\n        __scopeCheckbox,\n        checked,\n        defaultChecked,\n        disabled,\n        required,\n        onCheckedChange,\n        name,\n        form,\n        value,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n          /* @__PURE__ */ jsx(\n            CheckboxTrigger,\n            {\n              ...checkboxProps,\n              ref: forwardedRef,\n              __scopeCheckbox\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx(\n            CheckboxBubbleInput,\n            {\n              __scopeCheckbox\n            }\n          )\n        ] })\n      }\n    );\n  }, \"Checkbox\")\n);\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function CheckboxIndicator2(props, forwardedRef) {\n    const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n    const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            \"data-state\": getState(context.checked),\n            \"data-disabled\": context.disabled ? \"\" : void 0,\n            ...indicatorProps,\n            ref: forwardedRef,\n            style: { pointerEvents: \"none\", ...props.style }\n          }\n        )\n      }\n    );\n  }, \"CheckboxIndicator\")\n);\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function CheckboxBubbleInput2({ __scopeCheckbox, onClick, ...props }, forwardedRef) {\n    const {\n      control,\n      userClick,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      name,\n      value,\n      form,\n      bubbleInput,\n      setBubbleInput\n    } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n    const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n    const controlSize = useSize(control);\n    const shouldStopClickPropagationRef = React.useRef(false);\n    const prevCheckedRef = React.useRef(checked);\n    const handledUserClickRef = React.useRef(userClick);\n    const pendingUserClickRef = React.useRef(null);\n    React.useEffect(() => {\n      const input = bubbleInput;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      if (!setChecked) return;\n      const checkedChanged = prevCheckedRef.current !== checked;\n      prevCheckedRef.current = checked;\n      const isNewUserClick = userClick !== null && userClick !== handledUserClickRef.current;\n      handledUserClickRef.current = userClick;\n      if (isNewUserClick) {\n        pendingUserClickRef.current = checkedChanged ? null : userClick;\n        if (checkedChanged) {\n          input.indeterminate = isIndeterminate(checked);\n          setChecked.call(input, isIndeterminate(checked) ? false : checked);\n        }\n        input.dispatchEvent(\n          new Event(\"click\", { bubbles: !userClick.hasConsumerStoppedPropagation })\n        );\n      } else if (checkedChanged) {\n        const pendingUserClick = pendingUserClickRef.current;\n        pendingUserClickRef.current = null;\n        const isPendingUserChange = pendingUserClick?.requestedChecked === checked;\n        shouldStopClickPropagationRef.current = true;\n        input.indeterminate = isIndeterminate(checked);\n        setChecked.call(input, isIndeterminate(checked) ? false : checked);\n        input.dispatchEvent(\n          new Event(\"click\", {\n            bubbles: !(isPendingUserChange && pendingUserClick.hasConsumerStoppedPropagation)\n          })\n        );\n        shouldStopClickPropagationRef.current = false;\n      }\n    }, [bubbleInput, checked, userClick]);\n    const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"checkbox\",\n        \"aria-hidden\": true,\n        defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n        required,\n        disabled,\n        name,\n        value,\n        form,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        onClick: composeEventHandlers(onClick, (event) => {\n          if (shouldStopClickPropagationRef.current) {\n            event.stopPropagation();\n          }\n        }),\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0,\n          // We transform because the input is absolutely positioned but we have\n          // rendered it **after** the button. This pulls it back to sit on top\n          // of the button.\n          transform: \"translateX(-100%)\"\n        }\n      }\n    );\n  }, \"CheckboxBubbleInput\")\n);\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n__name(isFunction, \"isFunction\");\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\n__name(isIndeterminate, \"isIndeterminate\");\nfunction getState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\n__name(getState, \"getState\");\nexport {\n  Checkbox,\n  CheckboxIndicator,\n  CheckboxIndicator as Indicator,\n  Checkbox as Root,\n  createCheckboxScope,\n  CheckboxBubbleInput as unstable_BubbleInput,\n  CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n  CheckboxProvider as unstable_CheckboxProvider,\n  CheckboxTrigger as unstable_CheckboxTrigger,\n  CheckboxProvider as unstable_Provider,\n  CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  var _padding$top, _padding$right, _padding$bottom, _padding$left;\n  return {\n    top: (_padding$top = padding.top) != null ? _padding$top : 0,\n    right: (_padding$right = padding.right) != null ? _padding$right : 0,\n    bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,\n    left: (_padding$left = padding.left) != null ? _padding$left : 0\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  const alignment = getAlignment(placement);\n  if (alignment) {\n    coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(minPadding, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n\n      // No rects (e.g. a hidden or detached reference, or a collapsed range) —\n      // keep the existing reference rect rather than resetting to an invalid\n      // one with non-finite values.\n      if (!nativeClientRects.length) {\n        return {};\n      }\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            return rectToClientRect({\n              x: left,\n              y: top,\n              width: right - left,\n              height: bottom - top\n            });\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          return rectToClientRect({\n            x: minLeft,\n            y: top,\n            width: maxRight - minLeft,\n            height: bottom - top\n          });\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);\n      if (checkMainAxis) {\n        mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);\n      }\n      if (checkCrossAxis) {\n        crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      var _rawOffset$mainAxis, _rawOffset$crossAxis;\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,\n        crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n// Method syntax keeps callback parameters bivariant, but expressing the\n// explicit `| undefined` required by `exactOptionalPropertyTypes` needs\n// property syntax, which is contravariant under `strictFunctionTypes`.\n// Extracting the function from a method position restores that bivariance so\n// consumers can still assign callbacks with narrower parameter types.\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const shiftData = state.middlewareData.shift;\n      const noShift = !shiftData;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (shiftData != null && shiftData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if (shiftData != null && shiftData.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        if (isYAxis) {\n          availableWidth = width - 2 * max(overflow.left, overflow.right);\n        } else {\n          availableHeight = height - 2 * max(overflow.top, overflow.bottom);\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return (node.ownerDocument || node).body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement && offsetParent) {\n    const win = getWindow(domElement);\n    const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return element.getClientRects ? Array.from(element.getClientRects()) : [];\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(html) {\n  const scroll = getNodeScroll(html);\n  const body = html.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(html);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy, rootBoundary) {\n  if (rootBoundary === void 0) {\n    rootBoundary = 'viewport';\n  }\n  const isLayoutViewport = rootBoundary === 'layoutViewport';\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    // Client coordinates are relative to the layout viewport, except in\n    // WebKit with an `absolute` strategy, where they are relative to the\n    // visual viewport.\n    const layoutRelativeClientCoords = !isWebKit() || strategy === 'fixed';\n    if (isLayoutViewport) {\n      if (!layoutRelativeClientCoords) {\n        x = -visualViewport.offsetLeft;\n        y = -visualViewport.offsetTop;\n      }\n    } else {\n      width = visualViewport.width;\n      height = visualViewport.height;\n      if (layoutRelativeClientCoords) {\n        x = visualViewport.offsetLeft;\n        y = visualViewport.offsetTop;\n      }\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // `scrollbar-gutter: stable` on the <html> reserves gutter space that shrinks\n  // the visual width but isn't reflected in `html.clientWidth`, so subtract it.\n  // Only the inline-end (right) gutter can hold the scrollbar; `both-edges` also\n  // reserves an empty inline-start gutter that clips nothing, so exclude just\n  // the one scrollbar-side gutter — halve the measured (two-gutter) total. A\n  // left-side scrollbar (`windowScrollbarX > 0`) is already handled by\n  // `getHTMLOffset`/`visualViewport.width`; skip it here.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    const gutter = getComputedStyle(html).scrollbarGutter === 'stable both-edges' ? reservedWidth / 2 : reservedWidth;\n    if (gutter <= SCROLLBAR_MAX) {\n      width -= gutter;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = getScale(element);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport' || clippingAncestor === 'layoutViewport') {\n    rect = getViewportRect(element, strategy, clippingAncestor);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let lastKeptComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    // Position of the containing block chain below the current node. A fixed\n    // element whose containing block hasn't been found yet is a fixed chain.\n    const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? 'fixed' : '';\n\n    // A non-containing ancestor does not clip the element when the chain\n    // below it escapes it: a fixed chain escapes all ancestors up to the\n    // next containing block, an absolute chain escapes static ancestors.\n    const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === 'fixed' || lastPosition === 'absolute' && computedStyle.position === 'static');\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // The kept node carries the chain position for the next iteration.\n      lastKeptComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  if (!isOffsetParentAnElement && documentElement) {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove, ancestorResize) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n\n      // The entry is a snapshot, so the reference may have moved since the\n      // intersection was computed (under performance constraints, or between\n      // consecutive frames of a multi-frame layout shift). The reported ratio\n      // and the observed area are stale in that case and cannot be trusted to\n      // detect subsequent movement, so refresh regardless of the ratio.\n      if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        return refresh();\n      }\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped in place, the ratio is 0. Throttle\n          // the refresh to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  const win = getWindow(element);\n  // The window is a resize ancestor, so when `ancestorResize` is enabled its\n  // listener already runs the update on resize. Here we only need to rebuild\n  // the `IntersectionObserver` for the new root size, skipping a redundant\n  // update. When `ancestorResize` is disabled, this becomes the sole update.\n  const handleResize = () => refresh(ancestorResize);\n  win.addEventListener('resize', handleResize);\n  refresh(true);\n  return () => {\n    win.removeEventListener('resize', handleResize);\n    cleanup();\n  };\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update);\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update, ancestorResize) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = options != null ? options : {};\n  const platformWithCache = {\n    ...platform,\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n  const result = offset$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n  const result = shift$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n  const result = limitShift$1(options);\n  return {\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n  const result = flip$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n  const result = size$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n  const result = autoPlacement$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n  const result = hide$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n  const result = inline$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n  const result = arrow$1(options);\n  return {\n    name: result.name,\n    fn: result.fn,\n    options: [options, deps]\n  };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n  useFloating,\n  autoUpdate,\n  offset,\n  shift,\n  limitShift,\n  hide,\n  arrow as floatingUIarrow,\n  flip,\n  size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar Sticky = {\n  Partial: \"partial\",\n  Always: \"always\"\n};\nvar UpdatePositionStrategy = {\n  Optimized: \"optimized\",\n  Always: \"always\"\n};\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = /* @__PURE__ */ __name((props) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React.useState(null);\n  const [placementState, setPlacementState] = React.useState(void 0);\n  return /* @__PURE__ */ jsx(\n    PopperProvider,\n    {\n      scope: __scopePopper,\n      anchor,\n      onAnchorChange: setAnchor,\n      placementState,\n      setPlacementState,\n      children\n    }\n  );\n}, \"Popper\");\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function PopperAnchor2(props, forwardedRef) {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React.useRef(null);\n    const onAnchorChange = context.onAnchorChange;\n    const callbackRef = React.useCallback(\n      (node) => {\n        ref.current = node;\n        if (node) {\n          onAnchorChange(node);\n        }\n      },\n      [onAnchorChange]\n    );\n    const composedRefs = useComposedRefs(forwardedRef, callbackRef);\n    const anchorRef = React.useRef(null);\n    React.useEffect(() => {\n      if (!virtualRef) {\n        return;\n      }\n      const previousAnchor = anchorRef.current;\n      anchorRef.current = virtualRef.current;\n      if (previousAnchor !== anchorRef.current) {\n        onAnchorChange(anchorRef.current);\n      }\n    });\n    const sideAndAlign = context.placementState && getSideAndAlignFromPlacement(context.placementState);\n    const placedSide = sideAndAlign?.[0];\n    const placedAlign = sideAndAlign?.[1];\n    return virtualRef ? null : /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-radix-popper-side\": placedSide,\n        \"data-radix-popper-align\": placedAlign,\n        ...anchorProps,\n        ref: composedRefs\n      }\n    );\n  }, \"PopperAnchor\")\n);\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function PopperContent2(props, forwardedRef) {\n    const {\n      __scopePopper,\n      side = \"bottom\",\n      sideOffset = 0,\n      align = \"center\",\n      alignOffset = 0,\n      arrowPadding = 0,\n      avoidCollisions = true,\n      collisionBoundary = [],\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = Sticky.Partial,\n      hideWhenDetached = false,\n      updatePositionStrategy = UpdatePositionStrategy.Optimized,\n      onPlaced,\n      ...contentProps\n    } = props;\n    const context = usePopperContext(CONTENT_NAME, __scopePopper);\n    const [content, setContent] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, setContent);\n    const [arrow, setArrow] = React.useState(null);\n    const arrowSize = useSize(arrow);\n    const arrowWidth = arrowSize?.width ?? 0;\n    const arrowHeight = arrowSize?.height ?? 0;\n    const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n    const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n    const hasExplicitBoundaries = boundary.length > 0;\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries\n    };\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: \"fixed\",\n      placement: desiredPlacement,\n      whileElementsMounted: /* @__PURE__ */ __name((...args) => {\n        const cleanup = autoUpdate(...args, {\n          animationFrame: updatePositionStrategy === UpdatePositionStrategy.Always\n        });\n        return cleanup;\n      }, \"whileElementsMounted\"),\n      elements: {\n        reference: context.anchor\n      },\n      middleware: [\n        offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions && shift({\n          mainAxis: true,\n          crossAxis: false,\n          // Spread rather than passing `limiter: undefined`, which\n          // `exactOptionalPropertyTypes` rejects for Floating UI's optional option.\n          ...sticky === Sticky.Partial ? { limiter: limitShift() } : {},\n          ...detectOverflowOptions\n        }),\n        avoidCollisions && flip({ ...detectOverflowOptions }),\n        size({\n          ...detectOverflowOptions,\n          apply: /* @__PURE__ */ __name(({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n          }, \"apply\")\n        }),\n        arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && // `hide` detects whether the anchor (reference) is clipped, so when\n        // no explicit `collisionBoundary` is set we omit `boundary` entirely\n        // and fall back to Floating UI's default clipping ancestors (e.g. a\n        // scrollable menu). This lets an occluded submenu hide once its anchor\n        // scrolls out of view (#3237). The collision/size middlewares\n        // deliberately keep the viewport-based default to avoid clamping\n        // content rendered inside transformed or overflow-clipping portal\n        // containers. The key is omitted rather than set to `undefined`\n        // because `exactOptionalPropertyTypes` rejects the explicit value.\n        hide(\n          hasExplicitBoundaries ? { strategy: \"referenceHidden\", ...detectOverflowOptions } : {\n            strategy: \"referenceHidden\",\n            padding: detectOverflowOptions.padding,\n            altBoundary: detectOverflowOptions.altBoundary\n          }\n        )\n      ]\n    });\n    const setPlacementState = context.setPlacementState;\n    useLayoutEffect(() => {\n      setPlacementState(placement);\n      return () => {\n        setPlacementState(void 0);\n      };\n    }, [placement, setPlacementState]);\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect(() => {\n      if (isPositioned) {\n        handlePlaced?.();\n      }\n    }, [isPositioned, handlePlaced]);\n    const arrowX = middlewareData.arrow?.x;\n    const arrowY = middlewareData.arrow?.y;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const [contentZIndex, setContentZIndex] = React.useState();\n    useLayoutEffect(() => {\n      if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        ref: refs.setFloating,\n        \"data-radix-popper-content-wrapper\": \"\",\n        style: {\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n          // keep off the page when measuring\n          minWidth: \"max-content\",\n          zIndex: contentZIndex,\n          \"--radix-popper-transform-origin\": [\n            middlewareData.transformOrigin?.x,\n            middlewareData.transformOrigin?.y\n          ].join(\" \"),\n          // hide the content if using the hide middleware and should be hidden\n          // set visibility to hidden and disable pointer events so the UI behaves\n          // as if the PopperContent isn't there at all\n          ...middlewareData.hide?.referenceHidden && {\n            visibility: \"hidden\",\n            pointerEvents: \"none\"\n          }\n        },\n        dir: props.dir,\n        children: /* @__PURE__ */ jsx(\n          PopperContentProvider,\n          {\n            scope: __scopePopper,\n            placedSide,\n            placedAlign,\n            onArrowChange: setArrow,\n            arrowX,\n            arrowY,\n            shouldHideArrow: cannotCenterArrow,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                \"data-side\": placedSide,\n                \"data-align\": placedAlign,\n                ...contentProps,\n                ref: composedRefs,\n                style: {\n                  ...contentProps.style,\n                  // if the PopperContent hasn't been placed yet (not all\n                  // measurements done) we prevent animations so that users'\n                  // animations don't kick in too early from the wrong sides.\n                  animation: !isPositioned ? \"none\" : contentProps.style?.animation\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }, \"PopperContent\")\n);\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nvar PopperArrow = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function PopperArrow2(props, forwardedRef) {\n    const { __scopePopper, ...arrowProps } = props;\n    const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n    const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n    return (\n      // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n      // doesn't report size as we'd expect on SVG elements.\n      // it reports their bounding box which is effectively the largest path inside the SVG.\n      /* @__PURE__ */ jsx(\n        \"span\",\n        {\n          ref: contentContext.onArrowChange,\n          style: {\n            position: \"absolute\",\n            left: contentContext.arrowX,\n            top: contentContext.arrowY,\n            [baseSide]: 0,\n            transformOrigin: {\n              top: \"\",\n              right: \"0 0\",\n              bottom: \"center 0\",\n              left: \"100% 0\"\n            }[contentContext.placedSide],\n            transform: {\n              top: \"translateY(100%)\",\n              right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n              bottom: `rotate(180deg)`,\n              left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n            }[contentContext.placedSide],\n            visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n          },\n          children: /* @__PURE__ */ jsx(\n            ArrowPrimitive.Root,\n            {\n              ...arrowProps,\n              ref: forwardedRef,\n              style: {\n                ...arrowProps.style,\n                // ensures the element can be measured correctly (mostly for if SVG)\n                display: \"block\"\n              }\n            }\n          )\n        }\n      )\n    );\n  }, \"PopperArrow\")\n);\nfunction isNotNull(value) {\n  return value !== null;\n}\n__name(isNotNull, \"isNotNull\");\nvar transformOrigin = /* @__PURE__ */ __name((options) => ({\n  name: \"transformOrigin\",\n  options,\n  fn(data) {\n    const { placement, rects, middlewareData } = data;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n    const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n    let x = \"\";\n    let y = \"\";\n    if (placedSide === \"bottom\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === \"top\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === \"right\") {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === \"left\") {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  }\n}), \"transformOrigin\");\nfunction getSideAndAlignFromPlacement(placement) {\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return [side, align];\n}\n__name(getSideAndAlignFromPlacement, \"getSideAndAlignFromPlacement\");\nexport {\n  ALIGN_OPTIONS,\n  PopperAnchor as Anchor,\n  PopperArrow as Arrow,\n  PopperContent as Content,\n  Popper,\n  PopperAnchor,\n  PopperArrow,\n  PopperContent,\n  Popper as Root,\n  SIDE_OPTIONS,\n  createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-is-hydrated.tsx\nimport * as React2 from \"react\";\n\n// src/use-is-hydrated-legacy.ts\nimport * as React from \"react\";\nvar _isHydrated = false;\nfunction useIsHydrated() {\n  const [isHydrated, setIsHydrated] = React.useState(_isHydrated);\n  React.useEffect(() => {\n    if (!_isHydrated) {\n      _isHydrated = true;\n      setIsHydrated(true);\n    }\n  }, []);\n  return isHydrated;\n}\n__name(useIsHydrated, \"useIsHydrated\");\n\n// src/use-is-hydrated.tsx\nvar useReactSyncExternalStore = React2[\" useSyncExternalStore \".trim().toString()];\nfunction subscribe() {\n  return () => {\n  };\n}\n__name(subscribe, \"subscribe\");\nfunction useIsHydratedModern() {\n  return useReactSyncExternalStore(\n    subscribe,\n    () => true,\n    () => false\n  );\n}\n__name(useIsHydratedModern, \"useIsHydratedModern\");\nvar useIsHydrated2 = typeof useReactSyncExternalStore === \"function\" ? useIsHydratedModern : useIsHydrated;\nexport {\n  useIsHydrated2 as useIsHydrated\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useIsHydrated } from \"@radix-ui/react-use-is-hydrated\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n  GROUP_NAME,\n  [createCollectionScope]\n);\nvar Orientation = {\n  Vertical: \"vertical\",\n  Horizontal: \"horizontal\"\n};\nvar Direction = {\n  LTR: \"ltr\",\n  RTL: \"rtl\"\n};\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function RovingFocusGroup2(props, forwardedRef) {\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n  }, \"RovingFocusGroup\")\n);\nvar RovingFocusGroupImpl = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function RovingFocusGroupImpl2(props, forwardedRef) {\n  const {\n    __scopeRovingFocusGroup,\n    orientation,\n    loop = false,\n    dir,\n    currentTabStopId: currentTabStopIdProp,\n    defaultCurrentTabStopId,\n    onCurrentTabStopIdChange,\n    onEntryFocus,\n    preventScrollOnEntryFocus = false,\n    ...groupProps\n  } = props;\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const direction = useDirection(dir);\n  const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n    prop: currentTabStopIdProp,\n    defaultProp: defaultCurrentTabStopId ?? null,\n    onChange: onCurrentTabStopIdChange,\n    caller: GROUP_NAME\n  });\n  const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n  const handleEntryFocus = useCallbackRef(onEntryFocus);\n  const getItems = useCollection(__scopeRovingFocusGroup);\n  const isClickFocusRef = React.useRef(false);\n  const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n      return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n    }\n  }, [handleEntryFocus]);\n  return /* @__PURE__ */ jsx(\n    RovingFocusProvider,\n    {\n      scope: __scopeRovingFocusGroup,\n      orientation,\n      dir: direction,\n      loop,\n      currentTabStopId,\n      onItemFocus: React.useCallback(\n        (tabStopId) => setCurrentTabStopId(tabStopId),\n        [setCurrentTabStopId]\n      ),\n      onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n      onFocusableItemAdd: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount + 1),\n        []\n      ),\n      onFocusableItemRemove: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount - 1),\n        []\n      ),\n      children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n          \"data-orientation\": orientation,\n          ...groupProps,\n          ref: composedRefs,\n          style: { outline: \"none\", ...props.style },\n          onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n            isClickFocusRef.current = true;\n          }),\n          onFocus: composeEventHandlers(props.onFocus, (event) => {\n            const isKeyboardFocus = !isClickFocusRef.current;\n            if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n              const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n              event.currentTarget.dispatchEvent(entryFocusEvent);\n              if (!entryFocusEvent.defaultPrevented) {\n                const items = getItems().filter((item) => item.focusable);\n                const activeItem = items.find((item) => item.active);\n                const currentItem = items.find((item) => item.id === currentTabStopId);\n                const candidateItems = [activeItem, currentItem, ...items].filter(\n                  Boolean\n                );\n                const candidateNodes = candidateItems.map((item) => item.ref.current);\n                focusFirst(candidateNodes, preventScrollOnEntryFocus);\n              }\n            }\n            isClickFocusRef.current = false;\n          }),\n          onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n        }\n      )\n    }\n  );\n}, \"RovingFocusGroupImpl\"));\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function RovingFocusGroupItem2(props, forwardedRef) {\n    const {\n      __scopeRovingFocusGroup,\n      focusable = true,\n      active = false,\n      tabStopId,\n      children,\n      ...itemProps\n    } = props;\n    const autoId = useId();\n    const id = tabStopId || autoId;\n    const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n    const isCurrentTabStop = context.currentTabStopId === id;\n    const getItems = useCollection(__scopeRovingFocusGroup);\n    const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n    const isHydrated = useIsHydrated();\n    useLayoutEffect(() => {\n      if (!isHydrated || !focusable) {\n        return;\n      }\n      onFocusableItemAdd();\n      return () => onFocusableItemRemove();\n    }, [isHydrated, focusable, onFocusableItemAdd, onFocusableItemRemove]);\n    React.useEffect(() => {\n      if (isHydrated || !focusable) {\n        return;\n      }\n      onFocusableItemAdd();\n      return () => onFocusableItemRemove();\n    }, [isHydrated, focusable, onFocusableItemAdd, onFocusableItemRemove]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeRovingFocusGroup,\n        id,\n        focusable,\n        active,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            tabIndex: isCurrentTabStop ? 0 : -1,\n            \"data-orientation\": context.orientation,\n            ...itemProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!focusable) event.preventDefault();\n              else context.onItemFocus(id);\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if (event.key === \"Tab\" && event.shiftKey) {\n                context.onItemShiftTab();\n                return;\n              }\n              if (event.target !== event.currentTarget) return;\n              const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n              if (focusIntent !== void 0) {\n                if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n                event.preventDefault();\n                const items = getItems().filter((item) => item.focusable);\n                let candidateNodes = items.map((item) => item.ref.current);\n                if (focusIntent === \"last\") candidateNodes.reverse();\n                else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n                  if (focusIntent === \"prev\") candidateNodes.reverse();\n                  const currentIndex = candidateNodes.indexOf(event.currentTarget);\n                  candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n                }\n                setTimeout(() => focusFirst(candidateNodes));\n              }\n            }),\n            children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n          }\n        )\n      }\n    );\n  }, \"RovingFocusGroupItem\")\n);\nvar MAP_KEY_TO_FOCUS_INTENT = {\n  ArrowLeft: \"prev\",\n  ArrowUp: \"prev\",\n  ArrowRight: \"next\",\n  ArrowDown: \"next\",\n  PageUp: \"first\",\n  Home: \"first\",\n  PageDown: \"last\",\n  End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n  if (dir !== Direction.RTL) return key;\n  return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\n__name(getDirectionAwareKey, \"getDirectionAwareKey\");\nfunction getFocusIntent(event, orientation, dir) {\n  const key = getDirectionAwareKey(event.key, dir);\n  if (orientation === Orientation.Vertical && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) {\n    return void 0;\n  }\n  if (orientation === Orientation.Horizontal && [\"ArrowUp\", \"ArrowDown\"].includes(key)) {\n    return void 0;\n  }\n  return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n__name(getFocusIntent, \"getFocusIntent\");\nfunction focusFirst(candidates, preventScroll = false) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus({ preventScroll });\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\n__name(focusFirst, \"focusFirst\");\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n__name(wrapArray, \"wrapArray\");\nexport {\n  RovingFocusGroupItem as Item,\n  RovingFocusGroup as Root,\n  RovingFocusGroup,\n  RovingFocusGroupItem,\n  createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport {\n  FocusScope,\n  FocusScopeBranchProvider,\n  useFocusScopeBranch,\n  useFocusScopeBranchRegistry\n} from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Direction = {\n  LTR: \"ltr\",\n  RTL: \"rtl\"\n};\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n  ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n  rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n  ltr: [\"ArrowLeft\"],\n  rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n  createCollectionScope,\n  createPopperScope,\n  createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = /* @__PURE__ */ __name((props) => {\n  const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n  const popperScope = usePopperScope(__scopeMenu);\n  const [content, setContent] = React.useState(null);\n  const isUsingKeyboardRef = React.useRef(false);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  const direction = useDirection(dir);\n  React.useEffect(() => {\n    const handleKeyDown = /* @__PURE__ */ __name(() => {\n      isUsingKeyboardRef.current = true;\n      document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n      document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n    }, \"handleKeyDown\");\n    const handlePointer = /* @__PURE__ */ __name(() => isUsingKeyboardRef.current = false, \"handlePointer\");\n    document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n      document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n      document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n    };\n  }, []);\n  React.useEffect(() => {\n    if (!open) {\n      return;\n    }\n    const handleBlur = /* @__PURE__ */ __name(() => handleOpenChange(false), \"handleBlur\");\n    window.addEventListener(\"blur\", handleBlur);\n    return () => window.removeEventListener(\"blur\", handleBlur);\n  }, [open, handleOpenChange]);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuRootProvider,\n        {\n          scope: __scopeMenu,\n          onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n          isUsingKeyboardRef,\n          dir: direction,\n          modal,\n          children\n        }\n      )\n    }\n  ) });\n}, \"Menu\");\nvar MenuAnchor = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuAnchor2(props, forwardedRef) {\n    const { __scopeMenu, ...anchorProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }, \"MenuAnchor\")\n);\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar MenuPortal = /* @__PURE__ */ __name((props) => {\n  const { __scopeMenu, forceMount, children, container } = props;\n  const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n}, \"MenuPortal\");\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuContent2(props, forwardedRef) {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n  }, \"MenuContent\")\n);\nvar MenuRootContentModal = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function MenuRootContentModal2(props, forwardedRef) {\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React.useEffect(() => {\n      const content = ref.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: context.open,\n        disableOutsideScroll: true,\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        ),\n        onDismiss: () => context.onOpenChange(false)\n      }\n    );\n  }, \"MenuRootContentModal\")\n);\nvar MenuRootContentNonModal = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function MenuRootContentNonModal2(props, forwardedRef) {\n  const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n  return /* @__PURE__ */ jsx(\n    MenuContentImpl,\n    {\n      ...props,\n      ref: forwardedRef,\n      trapFocus: false,\n      disableOutsidePointerEvents: false,\n      disableOutsideScroll: false,\n      onDismiss: () => context.onOpenChange(false)\n    }\n  );\n}, \"MenuRootContentNonModal\"));\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function MenuContentImpl2(props, forwardedRef) {\n    const {\n      __scopeMenu,\n      loop = false,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEntryFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      disableOutsideScroll,\n      ...contentProps\n    } = props;\n    const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n    const popperScope = usePopperScope(__scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const getItems = useCollection(__scopeMenu);\n    const [currentItemId, setCurrentItemId] = React.useState(null);\n    const contentRef = React.useRef(null);\n    const [branchNode, setBranchNode] = React.useState(null);\n    useFocusScopeBranch(branchNode);\n    const { nodes: branchNodes, registry: branchRegistry } = useFocusScopeBranchRegistry();\n    const isModal = Boolean(trapFocus || disableOutsideScroll);\n    const composedRefs = useComposedRefs(\n      forwardedRef,\n      contentRef,\n      context.onContentChange,\n      setBranchNode\n    );\n    const timerRef = React.useRef(0);\n    const searchRef = React.useRef(\"\");\n    const pointerGraceTimerRef = React.useRef(0);\n    const pointerGraceIntentRef = React.useRef(null);\n    const pointerDirRef = React.useRef(\"right\");\n    const lastPointerXRef = React.useRef(0);\n    const shards = React.useMemo(\n      () => disableOutsideScroll ? [contentRef, ...branchNodes.map((node) => ({ current: node }))] : [],\n      [contentRef, branchNodes, disableOutsideScroll]\n    );\n    const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n    const scrollLockWrapperProps = disableOutsideScroll ? {\n      as: Slot,\n      allowPinchZoom: true,\n      shards\n    } : void 0;\n    const handleTypeaheadSearch = /* @__PURE__ */ __name((key) => {\n      const search = searchRef.current + key;\n      const items = getItems().filter((item) => !item.disabled);\n      const currentItem = document.activeElement;\n      const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n      const values = items.map((item) => item.textValue);\n      const nextMatch = getNextMatch(values, search, currentMatch);\n      const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n      function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      }\n      __name(updateSearch, \"updateSearch\");\n      updateSearch(search);\n      if (newItem) {\n        setTimeout(() => newItem.focus());\n      }\n    }, \"handleTypeaheadSearch\");\n    React.useEffect(() => {\n      return () => window.clearTimeout(timerRef.current);\n    }, []);\n    useFocusGuards();\n    const isPointerMovingToSubmenu = React.useCallback((event) => {\n      const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n      return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      MenuContentProvider,\n      {\n        scope: __scopeMenu,\n        searchRef,\n        onItemEnter: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onItemLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) return;\n            contentRef.current?.focus();\n            setCurrentItemId(null);\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        onTriggerLeave: React.useCallback(\n          (event) => {\n            if (isPointerMovingToSubmenu(event)) event.preventDefault();\n          },\n          [isPointerMovingToSubmenu]\n        ),\n        pointerGraceTimerRef,\n        onPointerGraceIntentChange: React.useCallback((intent) => {\n          pointerGraceIntentRef.current = intent;\n        }, []),\n        children: /* @__PURE__ */ jsx(FocusScopeBranchProvider, { registry: isModal ? branchRegistry : null, children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: trapFocus,\n            branches: branchNodes,\n            onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n              event.preventDefault();\n              contentRef.current?.focus({ preventScroll: true });\n            }),\n            onUnmountAutoFocus: onCloseAutoFocus,\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside,\n                onInteractOutside,\n                onDismiss,\n                children: /* @__PURE__ */ jsx(\n                  RovingFocusGroup.Root,\n                  {\n                    asChild: true,\n                    ...rovingFocusGroupScope,\n                    dir: rootContext.dir,\n                    orientation: \"vertical\",\n                    loop,\n                    currentTabStopId: currentItemId,\n                    onCurrentTabStopIdChange: setCurrentItemId,\n                    onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n                      if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n                    }),\n                    preventScrollOnEntryFocus: true,\n                    children: /* @__PURE__ */ jsx(\n                      PopperPrimitive.Content,\n                      {\n                        role: \"menu\",\n                        \"aria-orientation\": \"vertical\",\n                        \"data-state\": getOpenState(context.open),\n                        \"data-radix-menu-content\": \"\",\n                        dir: rootContext.dir,\n                        ...popperScope,\n                        ...contentProps,\n                        ref: composedRefs,\n                        style: { outline: \"none\", ...contentProps.style },\n                        onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                          const target = event.target;\n                          const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n                          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                          const isCharacterKey = event.key.length === 1;\n                          if (isKeyDownInside) {\n                            if (event.key === \"Tab\") event.preventDefault();\n                            if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n                          }\n                          const content = contentRef.current;\n                          if (event.target !== content) return;\n                          if (!FIRST_LAST_KEYS.includes(event.key)) return;\n                          event.preventDefault();\n                          const items = getItems().filter((item) => !item.disabled);\n                          const candidateNodes = items.map((item) => item.ref.current);\n                          if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n                          focusFirst(candidateNodes);\n                        }),\n                        onBlur: composeEventHandlers(props.onBlur, (event) => {\n                          if (!event.currentTarget.contains(event.target)) {\n                            window.clearTimeout(timerRef.current);\n                            searchRef.current = \"\";\n                          }\n                        }),\n                        onPointerMove: composeEventHandlers(\n                          props.onPointerMove,\n                          whenMouse((event) => {\n                            const target = event.target;\n                            const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n                            if (event.currentTarget.contains(target) && pointerXHasChanged) {\n                              const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n                              pointerDirRef.current = newDir;\n                              lastPointerXRef.current = event.clientX;\n                            }\n                          })\n                        )\n                      }\n                    )\n                  }\n                )\n              }\n            )\n          }\n        ) }) })\n      }\n    );\n  }, \"MenuContentImpl\")\n);\nvar MenuGroup = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuGroup2(props, forwardedRef) {\n    const { __scopeMenu, ...groupProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n  }, \"MenuGroup\")\n);\nvar MenuLabel = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuLabel2(props, forwardedRef) {\n    const { __scopeMenu, ...labelProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n  }, \"MenuLabel\")\n);\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function MenuItem2(props, forwardedRef) {\n    const { disabled = false, onSelect, ...itemProps } = props;\n    const ref = React.useRef(null);\n    const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const isPointerDownRef = React.useRef(false);\n    const handleSelect = /* @__PURE__ */ __name(() => {\n      const menuItem = ref.current;\n      if (!disabled && menuItem) {\n        const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n        menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n        dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n        if (itemSelectEvent.defaultPrevented) {\n          isPointerDownRef.current = false;\n        } else {\n          rootContext.onClose();\n        }\n      }\n    }, \"handleSelect\");\n    return /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        ...itemProps,\n        ref: composedRefs,\n        disabled,\n        onClick: composeEventHandlers(props.onClick, handleSelect),\n        onPointerDown: (event) => {\n          props.onPointerDown?.(event);\n          isPointerDownRef.current = true;\n        },\n        onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n          if (!isPointerDownRef.current) event.currentTarget?.click();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (disabled || event.target !== event.currentTarget) {\n            return;\n          }\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (isTypingAhead && event.key === \" \") {\n            return;\n          }\n          if (SELECTION_KEYS.includes(event.key)) {\n            event.currentTarget.click();\n            event.preventDefault();\n          }\n        })\n      }\n    );\n  }, \"MenuItem\")\n);\nvar MenuItemImpl = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuItemImpl2(props, forwardedRef) {\n    const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n    const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const [isFocused, setIsFocused] = React.useState(false);\n    const [textContent, setTextContent] = React.useState(\"\");\n    React.useEffect(() => {\n      const menuItem = ref.current;\n      if (menuItem) {\n        setTextContent((menuItem.textContent ?? \"\").trim());\n      }\n    }, [itemProps.children]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeMenu,\n        disabled,\n        textValue: textValue ?? textContent,\n        children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"menuitem\",\n            \"data-highlighted\": isFocused ? \"\" : void 0,\n            \"aria-disabled\": disabled || void 0,\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...itemProps,\n            ref: composedRefs,\n            onPointerMove: composeEventHandlers(\n              props.onPointerMove,\n              whenMouse((event) => {\n                if (disabled) {\n                  contentContext.onItemLeave(event);\n                } else {\n                  contentContext.onItemEnter(event);\n                  if (!event.defaultPrevented) {\n                    const item = event.currentTarget;\n                    item.focus({ preventScroll: true });\n                  }\n                }\n              })\n            ),\n            onPointerLeave: composeEventHandlers(\n              props.onPointerLeave,\n              whenMouse((event) => contentContext.onItemLeave(event))\n            ),\n            onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n            onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n          }\n        ) })\n      }\n    );\n  }, \"MenuItemImpl\")\n);\nvar MenuCheckboxItem = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function MenuCheckboxItem2(props, forwardedRef) {\n    const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemcheckbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        ...checkboxItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          checkboxItemProps.onSelect,\n          () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }, \"MenuCheckboxItem\")\n);\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n  RADIO_GROUP_NAME,\n  { value: void 0, onValueChange: /* @__PURE__ */ __name(() => {\n  }, \"onValueChange\") }\n);\nvar MenuRadioGroup = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuRadioGroup2(props, forwardedRef) {\n    const { value, onValueChange, ...groupProps } = props;\n    const handleValueChange = useCallbackRef(onValueChange);\n    return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n  }, \"MenuRadioGroup\")\n);\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuRadioItem2(props, forwardedRef) {\n    const { value, ...radioItemProps } = props;\n    const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n    const checked = value === context.value;\n    return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n      MenuItem,\n      {\n        role: \"menuitemradio\",\n        \"aria-checked\": checked,\n        ...radioItemProps,\n        ref: forwardedRef,\n        \"data-state\": getCheckedState(checked),\n        onSelect: composeEventHandlers(\n          radioItemProps.onSelect,\n          () => context.onValueChange?.(value),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }, \"MenuRadioItem\")\n);\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n  ITEM_INDICATOR_NAME,\n  { checked: false }\n);\nvar MenuItemIndicator = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function MenuItemIndicator2(props, forwardedRef) {\n    const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n    const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            ...itemIndicatorProps,\n            ref: forwardedRef,\n            \"data-state\": getCheckedState(indicatorContext.checked)\n          }\n        )\n      }\n    );\n  }, \"MenuItemIndicator\")\n);\nvar MenuSeparator = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuSeparator2(props, forwardedRef) {\n    const { __scopeMenu, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        role: \"separator\",\n        \"aria-orientation\": \"horizontal\",\n        ...separatorProps,\n        ref: forwardedRef\n      }\n    );\n  }, \"MenuSeparator\")\n);\nvar MenuArrow = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuArrow2(props, forwardedRef) {\n    const { __scopeMenu, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeMenu);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }, \"MenuArrow\")\n);\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = /* @__PURE__ */ __name((props) => {\n  const { __scopeMenu, children, open = false, onOpenChange } = props;\n  const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n  const popperScope = usePopperScope(__scopeMenu);\n  const [trigger, setTrigger] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const handleOpenChange = useCallbackRef(onOpenChange);\n  React.useEffect(() => {\n    if (parentMenuContext.open === false) handleOpenChange(false);\n    return () => handleOpenChange(false);\n  }, [parentMenuContext.open, handleOpenChange]);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    MenuProvider,\n    {\n      scope: __scopeMenu,\n      open,\n      onOpenChange: handleOpenChange,\n      content,\n      onContentChange: setContent,\n      children: /* @__PURE__ */ jsx(\n        MenuSubProvider,\n        {\n          scope: __scopeMenu,\n          contentId: useId(),\n          triggerId: useId(),\n          trigger,\n          onTriggerChange: setTrigger,\n          children\n        }\n      )\n    }\n  ) });\n}, \"MenuSub\");\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuSubTrigger2(props, forwardedRef) {\n    const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n    const openTimerRef = React.useRef(null);\n    const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n    const scope = { __scopeMenu: props.__scopeMenu };\n    const clearOpenTimer = React.useCallback(() => {\n      if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n      openTimerRef.current = null;\n    }, []);\n    React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n    React.useEffect(() => {\n      const pointerGraceTimer = pointerGraceTimerRef.current;\n      return () => {\n        window.clearTimeout(pointerGraceTimer);\n        onPointerGraceIntentChange(null);\n      };\n    }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n    const composedRefs = useComposedRefs(forwardedRef, subContext.onTriggerChange);\n    return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n      MenuItemImpl,\n      {\n        id: subContext.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? subContext.contentId : void 0,\n        \"data-state\": getOpenState(context.open),\n        ...props,\n        ref: composedRefs,\n        onClick: (event) => {\n          props.onClick?.(event);\n          if (props.disabled || event.defaultPrevented) return;\n          event.currentTarget.focus();\n          if (!context.open) context.onOpenChange(true);\n        },\n        onPointerMove: composeEventHandlers(\n          props.onPointerMove,\n          whenMouse((event) => {\n            contentContext.onItemEnter(event);\n            if (event.defaultPrevented) return;\n            if (!props.disabled && !context.open && !openTimerRef.current) {\n              contentContext.onPointerGraceIntentChange(null);\n              openTimerRef.current = window.setTimeout(() => {\n                context.onOpenChange(true);\n                clearOpenTimer();\n              }, 100);\n            }\n          })\n        ),\n        onPointerLeave: composeEventHandlers(\n          props.onPointerLeave,\n          whenMouse((event) => {\n            clearOpenTimer();\n            const contentRect = context.content?.getBoundingClientRect();\n            if (contentRect) {\n              const side = context.content?.dataset.side;\n              const rightSide = side === \"right\";\n              const bleed = rightSide ? -5 : 5;\n              const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n              const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n              contentContext.onPointerGraceIntentChange({\n                area: [\n                  // Apply a bleed on clientX to ensure that our exit point is\n                  // consistently within polygon bounds\n                  { x: event.clientX + bleed, y: event.clientY },\n                  { x: contentNearEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.top },\n                  { x: contentFarEdge, y: contentRect.bottom },\n                  { x: contentNearEdge, y: contentRect.bottom }\n                ],\n                side\n              });\n              window.clearTimeout(pointerGraceTimerRef.current);\n              pointerGraceTimerRef.current = window.setTimeout(\n                () => contentContext.onPointerGraceIntentChange(null),\n                300\n              );\n            } else {\n              contentContext.onTriggerLeave(event);\n              if (event.defaultPrevented) return;\n              contentContext.onPointerGraceIntentChange(null);\n            }\n          })\n        ),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (props.disabled || event.target !== event.currentTarget) {\n            return;\n          }\n          const isTypingAhead = contentContext.searchRef.current !== \"\";\n          if (isTypingAhead && event.key === \" \") {\n            return;\n          }\n          if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n            context.onOpenChange(true);\n            context.content?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }, \"MenuSubTrigger\")\n);\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function MenuSubContent2(props, forwardedRef) {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n    const { forceMount = portalContext.forceMount, align = \"start\", ...subContentProps } = props;\n    const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n    const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n    const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n      MenuContentImpl,\n      {\n        id: subContext.contentId,\n        \"aria-labelledby\": subContext.triggerId,\n        ...subContentProps,\n        ref: composedRefs,\n        align,\n        side: rootContext.dir === Direction.RTL ? \"left\" : \"right\",\n        disableOutsidePointerEvents: false,\n        disableOutsideScroll: false,\n        trapFocus: false,\n        onOpenAutoFocus: (event) => {\n          if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n          event.preventDefault();\n        },\n        onCloseAutoFocus: (event) => event.preventDefault(),\n        onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n          if (event.target !== subContext.trigger) context.onOpenChange(false);\n        }),\n        onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n          rootContext.onClose();\n          event.preventDefault();\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          const isKeyDownInside = event.currentTarget.contains(event.target);\n          const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n          if (isKeyDownInside && isCloseKey) {\n            context.onOpenChange(false);\n            subContext.trigger?.focus();\n            event.preventDefault();\n          }\n        })\n      }\n    ) }) }) });\n  }, \"MenuSubContent\")\n);\nfunction getOpenState(open) {\n  return open ? \"open\" : \"closed\";\n}\n__name(getOpenState, \"getOpenState\");\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\n__name(isIndeterminate, \"isIndeterminate\");\nfunction getCheckedState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\n__name(getCheckedState, \"getCheckedState\");\nfunction focusFirst(candidates) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus();\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\n__name(focusFirst, \"focusFirst\");\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n__name(wrapArray, \"wrapArray\");\nfunction getNextMatch(values, search, currentMatch) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n  let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n  const excludeCurrentMatch = normalizedSearch.length === 1;\n  if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n  const nextMatch = wrappedValues.find(\n    (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextMatch !== currentMatch ? nextMatch : void 0;\n}\n__name(getNextMatch, \"getNextMatch\");\nfunction isPointInPolygon(point, polygon) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const ii = polygon[i];\n    const jj = polygon[j];\n    const xi = ii.x;\n    const yi = ii.y;\n    const xj = jj.x;\n    const yj = jj.y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) inside = !inside;\n  }\n  return inside;\n}\n__name(isPointInPolygon, \"isPointInPolygon\");\nfunction isPointerInGraceArea(event, area) {\n  if (!area) return false;\n  const cursorPos = { x: event.clientX, y: event.clientY };\n  return isPointInPolygon(cursorPos, area);\n}\n__name(isPointerInGraceArea, \"isPointerInGraceArea\");\nfunction whenMouse(handler) {\n  return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\n__name(whenMouse, \"whenMouse\");\nexport {\n  MenuAnchor as Anchor,\n  MenuArrow as Arrow,\n  MenuCheckboxItem as CheckboxItem,\n  MenuContent as Content,\n  MenuGroup as Group,\n  MenuItem as Item,\n  MenuItemIndicator as ItemIndicator,\n  MenuLabel as Label,\n  Menu,\n  MenuAnchor,\n  MenuArrow,\n  MenuCheckboxItem,\n  MenuContent,\n  MenuGroup,\n  MenuItem,\n  MenuItemIndicator,\n  MenuLabel,\n  MenuPortal,\n  MenuRadioGroup,\n  MenuRadioItem,\n  MenuSeparator,\n  MenuSub,\n  MenuSubContent,\n  MenuSubTrigger,\n  MenuPortal as Portal,\n  MenuRadioGroup as RadioGroup,\n  MenuRadioItem as RadioItem,\n  Menu as Root,\n  MenuSeparator as Separator,\n  MenuSub as Sub,\n  MenuSubContent as SubContent,\n  MenuSubTrigger as SubTrigger,\n  createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n  DROPDOWN_MENU_NAME,\n  [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = /* @__PURE__ */ __name((props) => {\n  const {\n    __scopeDropdownMenu,\n    children,\n    dir,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  const triggerRef = React.useRef(null);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: DROPDOWN_MENU_NAME\n  });\n  return /* @__PURE__ */ jsx(\n    DropdownMenuProvider,\n    {\n      scope: __scopeDropdownMenu,\n      triggerId: useId(),\n      triggerRef,\n      contentId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n    }\n  );\n}, \"DropdownMenu\");\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DropdownMenuTrigger2(props, forwardedRef) {\n    const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n    const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    const composedRefs = useComposedRefs(forwardedRef, context.triggerRef);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        id: context.triggerId,\n        \"aria-haspopup\": \"menu\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        ...triggerProps,\n        ref: composedRefs,\n        onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n          if (!disabled && event.button === 0 && event.ctrlKey === false) {\n            context.onOpenToggle();\n            if (!context.open) event.preventDefault();\n          }\n        }),\n        onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n          if (disabled) return;\n          if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n          if (event.key === \"ArrowDown\") context.onOpenChange(true);\n          if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n        })\n      }\n    ) });\n  }, \"DropdownMenuTrigger\")\n);\nvar DropdownMenuPortal = /* @__PURE__ */ __name((props) => {\n  const { __scopeDropdownMenu, ...portalProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n}, \"DropdownMenuPortal\");\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DropdownMenuContent2(props, forwardedRef) {\n    const { __scopeDropdownMenu, ...contentProps } = props;\n    const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    const hasInteractedOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      MenuPrimitive.Content,\n      {\n        id: context.contentId,\n        \"aria-labelledby\": context.triggerId,\n        ...menuScope,\n        ...contentProps,\n        ref: forwardedRef,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n          hasInteractedOutsideRef.current = false;\n          event.preventDefault();\n        }),\n        onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n        }),\n        style: {\n          ...props.style,\n          // re-namespace exposed content custom properties\n          ...{\n            \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n            \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n            \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n            \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n            \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n          }\n        }\n      }\n    );\n  }, \"DropdownMenuContent\")\n);\nvar DropdownMenuGroup = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DropdownMenuGroup2(props, forwardedRef) {\n    const { __scopeDropdownMenu, ...groupProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n  }, \"DropdownMenuGroup\")\n);\nvar DropdownMenuLabel = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DropdownMenuLabel2(props, forwardedRef) {\n    const { __scopeDropdownMenu, ...labelProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n  }, \"DropdownMenuLabel\")\n);\nvar DropdownMenuItem = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DropdownMenuItem2(props, forwardedRef) {\n    const { __scopeDropdownMenu, ...itemProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n  }, \"DropdownMenuItem\")\n);\nvar DropdownMenuCheckboxItem = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuCheckboxItem2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n}, \"DropdownMenuCheckboxItem\"));\nvar DropdownMenuRadioGroup = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuRadioGroup2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...radioGroupProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n}, \"DropdownMenuRadioGroup\"));\nvar DropdownMenuRadioItem = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuRadioItem2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...radioItemProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n}, \"DropdownMenuRadioItem\"));\nvar DropdownMenuItemIndicator = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuItemIndicator2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n}, \"DropdownMenuItemIndicator\"));\nvar DropdownMenuSeparator = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuSeparator2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...separatorProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n}, \"DropdownMenuSeparator\"));\nvar DropdownMenuArrow = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function DropdownMenuArrow2(props, forwardedRef) {\n    const { __scopeDropdownMenu, ...arrowProps } = props;\n    const menuScope = useMenuScope(__scopeDropdownMenu);\n    return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n  }, \"DropdownMenuArrow\")\n);\nvar DropdownMenuSub = /* @__PURE__ */ __name((props) => {\n  const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: \"DropdownMenuSub\"\n  });\n  return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n}, \"DropdownMenuSub\");\nvar DropdownMenuSubTrigger = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuSubTrigger2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...subTriggerProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n}, \"DropdownMenuSubTrigger\"));\nvar DropdownMenuSubContent = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DropdownMenuSubContent2(props, forwardedRef) {\n  const { __scopeDropdownMenu, ...subContentProps } = props;\n  const menuScope = useMenuScope(__scopeDropdownMenu);\n  return /* @__PURE__ */ jsx(\n    MenuPrimitive.SubContent,\n    {\n      ...menuScope,\n      ...subContentProps,\n      ref: forwardedRef,\n      style: {\n        ...props.style,\n        // re-namespace exposed content custom properties\n        ...{\n          \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n          \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n          \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n          \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n          \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n        }\n      }\n    }\n  );\n}, \"DropdownMenuSubContent\"));\nexport {\n  DropdownMenuArrow as Arrow,\n  DropdownMenuCheckboxItem as CheckboxItem,\n  DropdownMenuContent as Content,\n  DropdownMenu,\n  DropdownMenuArrow,\n  DropdownMenuCheckboxItem,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuItemIndicator,\n  DropdownMenuLabel,\n  DropdownMenuPortal,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuTrigger,\n  DropdownMenuGroup as Group,\n  DropdownMenuItem as Item,\n  DropdownMenuItemIndicator as ItemIndicator,\n  DropdownMenuLabel as Label,\n  DropdownMenuPortal as Portal,\n  DropdownMenuRadioGroup as RadioGroup,\n  DropdownMenuRadioItem as RadioItem,\n  DropdownMenu as Root,\n  DropdownMenuSeparator as Separator,\n  DropdownMenuSub as Sub,\n  DropdownMenuSubContent as SubContent,\n  DropdownMenuSubTrigger as SubTrigger,\n  DropdownMenuTrigger as Trigger,\n  createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Label = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function Label2(props, forwardedRef) {\n    return /* @__PURE__ */ jsx(\n      Primitive.label,\n      {\n        ...props,\n        ref: forwardedRef,\n        onMouseDown: (event) => {\n          const target = event.target;\n          if (target.closest(\"button, input, select, textarea\")) return;\n          props.onMouseDown?.(event);\n          if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n        }\n      }\n    );\n  }, \"Label\")\n);\nexport {\n  Label,\n  Label as Root\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/number.ts\nfunction clamp(value, [min, max]) {\n  return Math.min(max, Math.max(min, value));\n}\n__name(clamp, \"clamp\");\nexport {\n  clamp\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/progress.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PROGRESS_NAME = \"Progress\";\nvar DEFAULT_MAX = 100;\nvar [createProgressContext, createProgressScope] = createContextScope(PROGRESS_NAME);\nvar [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME);\nvar Progress = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function Progress2(props, forwardedRef) {\n    const {\n      __scopeProgress,\n      value: valueProp = null,\n      max: maxProp,\n      getValueLabel = defaultGetValueLabel,\n      ...progressProps\n    } = props;\n    if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) {\n      console.error(getInvalidMaxError(`${maxProp}`, \"Progress\"));\n    }\n    const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;\n    if (valueProp !== null && !isValidValueNumber(valueProp, max)) {\n      console.error(getInvalidValueError(`${valueProp}`, \"Progress\"));\n    }\n    const value = isValidValueNumber(valueProp, max) ? valueProp : null;\n    const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0;\n    return /* @__PURE__ */ jsx(ProgressProvider, { scope: __scopeProgress, value, max, children: /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"aria-valuemax\": max,\n        \"aria-valuemin\": 0,\n        \"aria-valuenow\": isNumber(value) ? value : void 0,\n        \"aria-valuetext\": valueLabel,\n        role: \"progressbar\",\n        \"data-state\": getProgressState(value, max),\n        \"data-value\": value ?? void 0,\n        \"data-max\": max,\n        ...progressProps,\n        ref: forwardedRef\n      }\n    ) });\n  }, \"Progress\")\n);\nvar INDICATOR_NAME = \"ProgressIndicator\";\nvar ProgressIndicator = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function ProgressIndicator2(props, forwardedRef) {\n    const { __scopeProgress, ...indicatorProps } = props;\n    const context = useProgressContext(INDICATOR_NAME, __scopeProgress);\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-state\": getProgressState(context.value, context.max),\n        \"data-value\": context.value ?? void 0,\n        \"data-max\": context.max,\n        ...indicatorProps,\n        ref: forwardedRef\n      }\n    );\n  }, \"ProgressIndicator\")\n);\nfunction defaultGetValueLabel(value, max) {\n  return `${Math.round(value / max * 100)}%`;\n}\n__name(defaultGetValueLabel, \"defaultGetValueLabel\");\nfunction getProgressState(value, maxValue) {\n  return value == null ? \"indeterminate\" : value === maxValue ? \"complete\" : \"loading\";\n}\n__name(getProgressState, \"getProgressState\");\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\n__name(isNumber, \"isNumber\");\nfunction isValidMaxNumber(max) {\n  return isNumber(max) && !isNaN(max) && max > 0;\n}\n__name(isValidMaxNumber, \"isValidMaxNumber\");\nfunction isValidValueNumber(value, max) {\n  return isNumber(value) && !isNaN(value) && value <= max && value >= 0;\n}\n__name(isValidValueNumber, \"isValidValueNumber\");\nfunction getInvalidMaxError(propValue, componentName) {\n  return `Invalid prop \\`max\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. Only numbers greater than 0 are valid max values. Defaulting to \\`${DEFAULT_MAX}\\`.`;\n}\n__name(getInvalidMaxError, \"getInvalidMaxError\");\nfunction getInvalidValueError(propValue, componentName) {\n  return `Invalid prop \\`value\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. The \\`value\\` prop must be:\n  - a positive number\n  - less than the value passed to \\`max\\` (or ${DEFAULT_MAX} if no \\`max\\` prop is set)\n  - \\`null\\` or \\`undefined\\` if the progress is indeterminate.\n\nDefaulting to \\`null\\`.`;\n}\n__name(getInvalidValueError, \"getInvalidValueError\");\nexport {\n  ProgressIndicator as Indicator,\n  Progress,\n  ProgressIndicator,\n  Progress as Root,\n  createProgressScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProviderImpl, useRadioContext] = createRadioContext(RADIO_NAME);\nfunction RadioProvider(props) {\n  const {\n    __scopeRadio,\n    checked = false,\n    children,\n    disabled,\n    form,\n    name,\n    onCheck,\n    required,\n    value = \"on\",\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const [control, setControl] = React.useState(null);\n  const [bubbleInput, setBubbleInput] = React.useState(null);\n  const [userClick, setUserClick] = React.useState(null);\n  const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    true\n  );\n  const context = {\n    checked,\n    disabled,\n    required,\n    name,\n    form,\n    value,\n    control,\n    setControl,\n    userClick,\n    onUserClick: setUserClick,\n    isFormControl,\n    bubbleInput,\n    setBubbleInput,\n    onCheck: /* @__PURE__ */ __name(() => onCheck?.(), \"onCheck\")\n  };\n  return /* @__PURE__ */ jsx(RadioProviderImpl, { scope: __scopeRadio, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\n__name(RadioProvider, \"RadioProvider\");\nvar TRIGGER_NAME = \"RadioTrigger\";\nvar RadioTrigger = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function RadioTrigger2({ __scopeRadio, onClick, ...radioProps }, forwardedRef) {\n    const {\n      checked,\n      disabled,\n      value,\n      setControl,\n      onCheck,\n      onUserClick,\n      isFormControl,\n      bubbleInput\n    } = useRadioContext(TRIGGER_NAME, __scopeRadio);\n    const composedRefs = useComposedRefs(forwardedRef, setControl);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"radio\",\n        \"aria-checked\": checked,\n        \"data-state\": getState(checked),\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        value,\n        ...radioProps,\n        ref: composedRefs,\n        onClick: composeEventHandlers(onClick, (event) => {\n          const hasConsumerStoppedPropagation = event.isPropagationStopped();\n          if (!checked) {\n            onUserClick({ hasConsumerStoppedPropagation });\n            onCheck();\n          }\n          if (bubbleInput && isFormControl) {\n            if (!hasConsumerStoppedPropagation) {\n              event.stopPropagation();\n            }\n          }\n        })\n      }\n    );\n  }, \"RadioTrigger\")\n);\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function RadioIndicator2(props, forwardedRef) {\n    const { __scopeRadio, forceMount, ...indicatorProps } = props;\n    const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-state\": getState(context.checked),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...indicatorProps,\n        ref: forwardedRef\n      }\n    ) });\n  }, \"RadioIndicator\")\n);\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function RadioBubbleInput2({ __scopeRadio, onClick, ...props }, forwardedRef) {\n    const {\n      control,\n      checked,\n      required,\n      disabled,\n      name,\n      value,\n      form,\n      bubbleInput,\n      setBubbleInput,\n      userClick\n    } = useRadioContext(BUBBLE_INPUT_NAME, __scopeRadio);\n    const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n    const controlSize = useSize(control);\n    const shouldStopClickPropagationRef = React.useRef(false);\n    const prevCheckedRef = React.useRef(checked);\n    const handledUserClickRef = React.useRef(userClick);\n    const pendingUserClickRef = React.useRef(null);\n    React.useEffect(() => {\n      const input = bubbleInput;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      if (!setChecked) return;\n      const checkedChanged = prevCheckedRef.current !== checked;\n      prevCheckedRef.current = checked;\n      const isNewUserClick = userClick !== null && userClick !== handledUserClickRef.current;\n      handledUserClickRef.current = userClick;\n      if (isNewUserClick) {\n        pendingUserClickRef.current = checkedChanged ? null : userClick;\n        if (checkedChanged) {\n          setChecked.call(input, checked);\n        }\n        input.dispatchEvent(\n          new Event(\"click\", { bubbles: !userClick.hasConsumerStoppedPropagation })\n        );\n      } else if (checkedChanged) {\n        const pendingUserClick = pendingUserClickRef.current;\n        pendingUserClickRef.current = null;\n        const isPendingUserChange = checked && pendingUserClick !== null;\n        shouldStopClickPropagationRef.current = true;\n        setChecked.call(input, checked);\n        input.dispatchEvent(\n          new Event(\"click\", {\n            bubbles: !(isPendingUserChange && pendingUserClick.hasConsumerStoppedPropagation)\n          })\n        );\n        shouldStopClickPropagationRef.current = false;\n      }\n    }, [bubbleInput, checked, userClick]);\n    const defaultCheckedRef = React.useRef(checked);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"radio\",\n        \"aria-hidden\": true,\n        defaultChecked: defaultCheckedRef.current,\n        required,\n        disabled,\n        name,\n        value,\n        form,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        onClick: composeEventHandlers(onClick, (event) => {\n          if (shouldStopClickPropagationRef.current) {\n            event.stopPropagation();\n          }\n        }),\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0,\n          // We transform because the input is absolutely positioned but we have\n          // rendered it **after** the button. This pulls it back to sit on top\n          // of the button.\n          transform: \"translateX(-100%)\"\n        }\n      }\n    );\n  }, \"RadioBubbleInput\")\n);\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n__name(isFunction, \"isFunction\");\nfunction getState(checked) {\n  return checked ? \"checked\" : \"unchecked\";\n}\n__name(getState, \"getState\");\n\n// src/radio-group.tsx\nimport { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n  createRovingFocusGroupScope,\n  createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = /* @__PURE__ */ React2.forwardRef(\n  /* @__PURE__ */ __name(function RadioGroup2(props, forwardedRef) {\n    const {\n      __scopeRadioGroup,\n      name,\n      form,\n      defaultValue,\n      value: valueProp,\n      required = false,\n      disabled = false,\n      orientation,\n      dir,\n      loop = true,\n      onValueChange,\n      ...groupProps\n    } = props;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue ?? null,\n      onChange: onValueChange,\n      caller: RADIO_GROUP_NAME\n    });\n    const [control, setControl] = React2.useState(null);\n    const composedRefs = useComposedRefs2(forwardedRef, setControl);\n    const initialValueRef = React2.useRef(value);\n    React2.useEffect(() => {\n      const associatedForm = form ? control?.ownerDocument.getElementById(form) : control?.closest(\"form\");\n      if (associatedForm instanceof HTMLFormElement) {\n        const reset = /* @__PURE__ */ __name(() => setValue(initialValueRef.current), \"reset\");\n        associatedForm.addEventListener(\"reset\", reset);\n        return () => associatedForm.removeEventListener(\"reset\", reset);\n      }\n    }, [control, form, setValue]);\n    return /* @__PURE__ */ jsx2(\n      RadioGroupProvider,\n      {\n        scope: __scopeRadioGroup,\n        name,\n        form,\n        required,\n        disabled,\n        value,\n        onValueChange: setValue,\n        children: /* @__PURE__ */ jsx2(\n          RovingFocusGroup.Root,\n          {\n            asChild: true,\n            ...rovingFocusGroupScope,\n            orientation,\n            dir: direction,\n            loop,\n            children: /* @__PURE__ */ jsx2(\n              Primitive2.div,\n              {\n                role: \"radiogroup\",\n                \"aria-required\": required,\n                \"aria-orientation\": orientation,\n                \"data-disabled\": disabled ? \"\" : void 0,\n                dir: direction,\n                ...groupProps,\n                ref: composedRefs\n              }\n            )\n          }\n        )\n      }\n    );\n  }, \"RadioGroup\")\n);\nvar ITEM_PROVIDER_NAME = \"RadioGroupItemProvider\";\nvar ITEM_TRIGGER_NAME = \"RadioGroupItemTrigger\";\nfunction RadioGroupItemProvider(props) {\n  const {\n    __scopeRadioGroup,\n    value,\n    disabled,\n    children,\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const context = useRadioGroupContext(ITEM_PROVIDER_NAME, __scopeRadioGroup);\n  const radioScope = useRadioScope(__scopeRadioGroup);\n  const isDisabled = context.disabled || disabled;\n  return /* @__PURE__ */ jsx2(\n    RadioProvider,\n    {\n      ...radioScope,\n      checked: context.value === value,\n      disabled: isDisabled,\n      required: context.required,\n      name: context.name,\n      form: context.form,\n      value,\n      onCheck: () => context.onValueChange(value),\n      internal_do_not_use_render,\n      children\n    }\n  );\n}\n__name(RadioGroupItemProvider, \"RadioGroupItemProvider\");\nvar RadioGroupItemTrigger = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function RadioGroupItemTrigger2(props, forwardedRef) {\n  const { __scopeRadioGroup, ...triggerProps } = props;\n  const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n  const radioScope = useRadioScope(__scopeRadioGroup);\n  const { checked, disabled } = useRadioContext(ITEM_TRIGGER_NAME, radioScope.__scopeRadio);\n  const ref = React2.useRef(null);\n  const composedRefs = useComposedRefs2(forwardedRef, ref);\n  const isArrowKeyPressedRef = React2.useRef(false);\n  React2.useEffect(() => {\n    const handleKeyDown = /* @__PURE__ */ __name((event) => {\n      if (ARROW_KEYS.includes(event.key)) {\n        isArrowKeyPressedRef.current = true;\n      }\n    }, \"handleKeyDown\");\n    const handleKeyUp = /* @__PURE__ */ __name(() => isArrowKeyPressedRef.current = false, \"handleKeyUp\");\n    document.addEventListener(\"keydown\", handleKeyDown);\n    document.addEventListener(\"keyup\", handleKeyUp);\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown);\n      document.removeEventListener(\"keyup\", handleKeyUp);\n    };\n  }, []);\n  return /* @__PURE__ */ jsx2(\n    RovingFocusGroup.Item,\n    {\n      asChild: true,\n      ...rovingFocusGroupScope,\n      focusable: !disabled,\n      active: checked,\n      children: /* @__PURE__ */ jsx2(\n        RadioTrigger,\n        {\n          ...radioScope,\n          ...triggerProps,\n          ref: composedRefs,\n          onKeyDown: composeEventHandlers2(triggerProps.onKeyDown, (event) => {\n            if (event.key === \"Enter\") event.preventDefault();\n          }),\n          onFocus: composeEventHandlers2(triggerProps.onFocus, () => {\n            if (isArrowKeyPressedRef.current) {\n              ref.current?.click();\n            }\n          })\n        }\n      )\n    }\n  );\n}, \"RadioGroupItemTrigger\"));\nvar RadioGroupItem = /* @__PURE__ */ React2.forwardRef(\n  /* @__PURE__ */ __name(function RadioGroupItem2(props, forwardedRef) {\n    const { __scopeRadioGroup, value, disabled, ...itemProps } = props;\n    return /* @__PURE__ */ jsx2(\n      RadioGroupItemProvider,\n      {\n        __scopeRadioGroup,\n        value,\n        disabled,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs2(Fragment2, { children: [\n          /* @__PURE__ */ jsx2(\n            RadioGroupItemTrigger,\n            {\n              ...itemProps,\n              ref: forwardedRef,\n              __scopeRadioGroup\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx2(\n            RadioGroupItemBubbleInput,\n            {\n              __scopeRadioGroup\n            }\n          )\n        ] })\n      }\n    );\n  }, \"RadioGroupItem\")\n);\nvar RadioGroupItemBubbleInput = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function RadioGroupItemBubbleInput2(props, forwardedRef) {\n  const { __scopeRadioGroup, ...bubbleProps } = props;\n  const radioScope = useRadioScope(__scopeRadioGroup);\n  return /* @__PURE__ */ jsx2(RadioBubbleInput, { ...radioScope, ...bubbleProps, ref: forwardedRef });\n}, \"RadioGroupItemBubbleInput\"));\nvar RadioGroupIndicator = /* @__PURE__ */ React2.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function RadioGroupIndicator2(props, forwardedRef) {\n    const { __scopeRadioGroup, ...indicatorProps } = props;\n    const radioScope = useRadioScope(__scopeRadioGroup);\n    return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n  }, \"RadioGroupIndicator\")\n);\nexport {\n  RadioGroupIndicator as Indicator,\n  RadioGroupItem as Item,\n  RadioGroup,\n  RadioGroupIndicator,\n  RadioGroupItem,\n  RadioGroup as Root,\n  createRadioGroupScope,\n  RadioGroupItemBubbleInput as unstable_ItemBubbleInput,\n  RadioGroupItemProvider as unstable_ItemProvider,\n  RadioGroupItemTrigger as unstable_ItemTrigger,\n  RadioGroupItemBubbleInput as unstable_RadioGroupItemBubbleInput,\n  RadioGroupItemProvider as unstable_RadioGroupItemProvider,\n  RadioGroupItemTrigger as unstable_RadioGroupItemTrigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment as Fragment2, jsx, jsxs } from \"react/jsx-runtime\";\nvar Position = {\n  ItemAligned: \"item-aligned\",\n  Popper: \"popper\"\n};\nvar Direction = {\n  LTR: \"ltr\",\n  RTL: \"rtl\"\n};\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n  createCollectionScope,\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProviderImpl, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nfunction SelectProvider(props) {\n  const {\n    __scopeSelect,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    value: valueProp,\n    defaultValue,\n    onValueChange,\n    dir,\n    name,\n    autoComplete,\n    disabled,\n    required,\n    form,\n    // @ts-expect-error internal render prop used by `Select` to compose its default parts\n    internal_do_not_use_render\n  } = props;\n  const popperScope = usePopperScope(__scopeSelect);\n  const [trigger, setTrigger] = React.useState(null);\n  const [valueNode, setValueNode] = React.useState(null);\n  const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n  const direction = useDirection(dir);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: SELECT_NAME\n  });\n  const [value, setValue] = useControllableState({\n    prop: valueProp,\n    defaultProp: defaultValue,\n    onChange: onValueChange,\n    caller: SELECT_NAME\n  });\n  const triggerPointerDownPosRef = React.useRef(null);\n  const hasConsumerStoppedPropagationRef = React.useRef(false);\n  const [userSelection, setUserSelection] = React.useState(null);\n  const handleUserSelect = /* @__PURE__ */ __name((nextValue) => {\n    setUserSelection({\n      value: nextValue,\n      hasConsumerStoppedPropagation: hasConsumerStoppedPropagationRef.current\n    });\n    setValue(nextValue);\n  }, \"handleUserSelect\");\n  const initialValueRef = React.useRef(value);\n  React.useEffect(() => {\n    const associatedForm = form ? trigger?.ownerDocument.getElementById(form) : trigger?.form;\n    if (associatedForm instanceof HTMLFormElement) {\n      const reset = /* @__PURE__ */ __name(() => setValue(initialValueRef.current), \"reset\");\n      associatedForm.addEventListener(\"reset\", reset);\n      return () => associatedForm.removeEventListener(\"reset\", reset);\n    }\n  }, [form, trigger, setValue]);\n  const isFormControl = trigger ? !!form || !!trigger.closest(\"form\") : true;\n  const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n  const contentId = useId();\n  const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n  const handleNativeOptionAdd = React.useCallback((option) => {\n    setNativeOptionsSet((prev) => new Set(prev).add(option));\n  }, []);\n  const handleNativeOptionRemove = React.useCallback((option) => {\n    setNativeOptionsSet((prev) => {\n      const optionsSet = new Set(prev);\n      optionsSet.delete(option);\n      return optionsSet;\n    });\n  }, []);\n  const context = {\n    required,\n    trigger,\n    onTriggerChange: setTrigger,\n    valueNode,\n    onValueNodeChange: setValueNode,\n    valueNodeHasChildren,\n    onValueNodeHasChildrenChange: setValueNodeHasChildren,\n    contentId,\n    value,\n    onValueChange: setValue,\n    hasConsumerStoppedPropagationRef,\n    userSelection,\n    onUserSelect: handleUserSelect,\n    open,\n    onOpenChange: setOpen,\n    dir: direction,\n    triggerPointerDownPosRef,\n    disabled,\n    name,\n    autoComplete,\n    form,\n    nativeOptions: nativeOptionsSet,\n    nativeSelectKey,\n    isFormControl\n  };\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(SelectProviderImpl, { scope: __scopeSelect, ...context, children: /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n    SelectNativeOptionsProvider,\n    {\n      scope: __scopeSelect,\n      onNativeOptionAdd: handleNativeOptionAdd,\n      onNativeOptionRemove: handleNativeOptionRemove,\n      children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n    }\n  ) }) }) });\n}\n__name(SelectProvider, \"SelectProvider\");\nvar Select = /* @__PURE__ */ __name((props) => {\n  const { __scopeSelect, children, ...providerProps } = props;\n  return /* @__PURE__ */ jsx(\n    SelectProvider,\n    {\n      __scopeSelect,\n      ...providerProps,\n      internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment2, { children: [\n        children,\n        isFormControl ? /* @__PURE__ */ jsx(\n          SelectBubbleInput,\n          {\n            __scopeSelect\n          }\n        ) : null\n      ] })\n    }\n  );\n}, \"Select\");\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectTrigger2(props, forwardedRef) {\n    const { __scopeSelect, disabled = false, ...triggerProps } = props;\n    const popperScope = usePopperScope(__scopeSelect);\n    const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n    const isDisabled = context.disabled || disabled;\n    const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n    const getItems = useCollection(__scopeSelect);\n    const pointerTypeRef = React.useRef(\"touch\");\n    const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n      const enabledItems = getItems().filter((item) => !item.disabled);\n      const currentItem = enabledItems.find((item) => item.value === context.value);\n      const nextItem = findNextItem(enabledItems, search, currentItem);\n      if (nextItem !== void 0) {\n        context.onUserSelect(nextItem.value);\n      }\n    });\n    const handleOpen = /* @__PURE__ */ __name((pointerEvent) => {\n      if (!isDisabled) {\n        context.onOpenChange(true);\n        resetTypeahead();\n      }\n      if (pointerEvent) {\n        context.triggerPointerDownPosRef.current = {\n          x: Math.round(pointerEvent.pageX),\n          y: Math.round(pointerEvent.pageY)\n        };\n      }\n    }, \"handleOpen\");\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"aria-expanded\": context.open,\n        \"aria-required\": context.required,\n        \"aria-autocomplete\": \"none\",\n        dir: context.dir,\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        disabled: isDisabled,\n        \"data-disabled\": isDisabled ? \"\" : void 0,\n        \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n        ...triggerProps,\n        ref: composedRefs,\n        onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n          event.currentTarget.focus();\n          if (pointerTypeRef.current !== \"mouse\") {\n            handleOpen(event);\n          }\n        }),\n        onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n          pointerTypeRef.current = event.pointerType;\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) {\n            target.releasePointerCapture(event.pointerId);\n          }\n          if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n            handleOpen(event);\n            event.preventDefault();\n          }\n        }),\n        onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n          const isTypingAhead = searchRef.current !== \"\";\n          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n          if (!isModifierKey && event.key.length === 1) {\n            context.hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n            handleTypeaheadSearch(event.key);\n          }\n          if (isTypingAhead && event.key === \" \") return;\n          if (OPEN_KEYS.includes(event.key)) {\n            handleOpen();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }, \"SelectTrigger\")\n);\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectValue2(props, forwardedRef) {\n    const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n    const context = useSelectContext(VALUE_NAME, __scopeSelect);\n    const { onValueNodeHasChildrenChange } = context;\n    const hasChildren = children !== void 0;\n    const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n    useLayoutEffect(() => {\n      onValueNodeHasChildrenChange(hasChildren);\n    }, [onValueNodeHasChildrenChange, hasChildren]);\n    const showPlaceholder = shouldShowPlaceholder(context.value);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...valueProps,\n        asChild: showPlaceholder ? false : valueProps.asChild,\n        ref: composedRefs,\n        style: { pointerEvents: \"none\" },\n        children: /* @__PURE__ */ jsx(React.Fragment, { children: showPlaceholder ? placeholder : children }, showPlaceholder ? \"placeholder\" : \"value\")\n      }\n    );\n  }, \"SelectValue\")\n);\nvar SelectIcon = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectIcon2(props, forwardedRef) {\n    const { __scopeSelect, children, ...iconProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n  }, \"SelectIcon\")\n);\nvar PORTAL_NAME = \"SelectPortal\";\nvar [PortalProvider, usePortalContext] = createSelectContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar SelectPortal = /* @__PURE__ */ __name((props) => {\n  const { __scopeSelect, forceMount, ...portalProps } = props;\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: props.__scopeSelect, forceMount, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...portalProps }) });\n}, \"SelectPortal\");\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectContent2(props, forwardedRef) {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeSelect);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n    const [fragment, setFragment] = React.useState();\n    useLayoutEffect(() => {\n      setFragment(new DocumentFragment());\n    }, []);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => present ? /* @__PURE__ */ jsx(SelectContentImpl, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(SelectContentFragment, { ...contentProps, fragment }) });\n  }, \"SelectContent\")\n);\nvar SelectContentFragment = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function SelectContentFragment2(props, forwardedRef) {\n  const { __scopeSelect, children, fragment } = props;\n  if (!fragment) return null;\n  return ReactDOM.createPortal(\n    /* @__PURE__ */ jsx(SelectContentProvider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { ref: forwardedRef, children }) }) }),\n    fragment\n  );\n}, \"SelectContentFragment\"));\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function SelectContentImpl2(props, forwardedRef) {\n    const { __scopeSelect } = props;\n    const {\n      position = Position.ItemAligned,\n      onCloseAutoFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      //\n      // PopperContent props\n      side,\n      sideOffset,\n      align,\n      alignOffset,\n      arrowPadding,\n      collisionBoundary,\n      collisionPadding,\n      sticky,\n      hideWhenDetached,\n      avoidCollisions,\n      //\n      ...contentProps\n    } = props;\n    const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n    const [content, setContent] = React.useState(null);\n    const [viewport, setViewport] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, setContent);\n    const [selectedItem, setSelectedItem] = React.useState(null);\n    const [selectedItemText, setSelectedItemText] = React.useState(\n      null\n    );\n    const getItems = useCollection(__scopeSelect);\n    const [isPositioned, setIsPositioned] = React.useState(false);\n    const firstValidItemFoundRef = React.useRef(false);\n    const firstItemFoundRef = React.useRef(false);\n    const firstItemTextFoundRef = React.useRef(false);\n    React.useEffect(() => {\n      if (content) return hideOthers(content);\n    }, [content]);\n    useFocusGuards();\n    const focusFirst = React.useCallback(\n      (candidates) => {\n        const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n        const [lastItem] = restItems.slice(-1);\n        const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n        for (const candidate of candidates) {\n          if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n          candidate?.scrollIntoView({ block: \"nearest\" });\n          if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n          if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n          candidate?.focus();\n          if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n        }\n      },\n      [getItems, viewport]\n    );\n    const focusSelectedItem = React.useCallback(\n      () => focusFirst([selectedItem, content]),\n      [focusFirst, selectedItem, content]\n    );\n    React.useEffect(() => {\n      if (isPositioned) {\n        focusSelectedItem();\n      }\n    }, [isPositioned, focusSelectedItem]);\n    const { onOpenChange, triggerPointerDownPosRef } = context;\n    React.useEffect(() => {\n      if (content) {\n        let pointerMoveDelta = { x: 0, y: 0 };\n        const handlePointerMove = /* @__PURE__ */ __name((event) => {\n          pointerMoveDelta = {\n            x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n            y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n          };\n        }, \"handlePointerMove\");\n        const handlePointerUp = /* @__PURE__ */ __name((event) => {\n          if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n            event.preventDefault();\n          } else {\n            if (!event.composedPath().includes(content)) {\n              onOpenChange(false);\n            }\n          }\n          document.removeEventListener(\"pointermove\", handlePointerMove);\n          triggerPointerDownPosRef.current = null;\n        }, \"handlePointerUp\");\n        if (triggerPointerDownPosRef.current !== null) {\n          document.addEventListener(\"pointermove\", handlePointerMove);\n          document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n        }\n        return () => {\n          document.removeEventListener(\"pointermove\", handlePointerMove);\n          document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n        };\n      }\n    }, [content, onOpenChange, triggerPointerDownPosRef]);\n    React.useEffect(() => {\n      const close = /* @__PURE__ */ __name(() => onOpenChange(false), \"close\");\n      window.addEventListener(\"blur\", close);\n      window.addEventListener(\"resize\", close);\n      return () => {\n        window.removeEventListener(\"blur\", close);\n        window.removeEventListener(\"resize\", close);\n      };\n    }, [onOpenChange]);\n    const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n      const enabledItems = getItems().filter((item) => !item.disabled);\n      const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n      const nextItem = findNextItem(enabledItems, search, currentItem);\n      if (nextItem) {\n        setTimeout(() => nextItem.ref.current?.focus());\n      }\n    });\n    const itemRefCallback = React.useCallback(\n      (node, value, disabled) => {\n        const isFirstItem = !firstItemFoundRef.current;\n        if (isFirstItem) firstItemFoundRef.current = true;\n        const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n        const isSelectedItem = context.value !== void 0 && context.value === value;\n        if (isSelectedItem || isFirstValidItem) {\n          setSelectedItem(node);\n          if (isFirstValidItem) firstValidItemFoundRef.current = true;\n        } else if (isFirstItem) {\n          setSelectedItem(node);\n        }\n      },\n      [context.value]\n    );\n    const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n    const itemTextRefCallback = React.useCallback(\n      (node, value, disabled) => {\n        if (!node) return;\n        const isFirstItem = !firstItemTextFoundRef.current;\n        if (isFirstItem) firstItemTextFoundRef.current = true;\n        const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n        const isSelectedItem = context.value !== void 0 && context.value === value;\n        if (isSelectedItem || isFirstValidItem) {\n          setSelectedItemText(node);\n        } else if (isFirstItem) {\n          setSelectedItemText(node);\n        }\n      },\n      [context.value]\n    );\n    const SelectPosition = position === Position.Popper ? SelectPopperPosition : SelectItemAlignedPosition;\n    const popperContentProps = SelectPosition === SelectPopperPosition ? {\n      side,\n      sideOffset,\n      align,\n      alignOffset,\n      arrowPadding,\n      collisionBoundary,\n      collisionPadding,\n      sticky,\n      hideWhenDetached,\n      avoidCollisions\n    } : {};\n    return /* @__PURE__ */ jsx(\n      SelectContentProvider,\n      {\n        scope: __scopeSelect,\n        content,\n        viewport,\n        onViewportChange: setViewport,\n        itemRefCallback,\n        selectedItem,\n        onItemLeave: handleItemLeave,\n        itemTextRefCallback,\n        focusSelectedItem,\n        selectedItemText,\n        position,\n        isPositioned,\n        searchRef,\n        children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: context.open,\n            onMountAutoFocus: (event) => {\n              event.preventDefault();\n            },\n            onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n              context.trigger?.focus({ preventScroll: true });\n              event.preventDefault();\n            }),\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents: true,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside: (event) => event.preventDefault(),\n                onDismiss: () => context.onOpenChange(false),\n                children: /* @__PURE__ */ jsx(\n                  SelectPosition,\n                  {\n                    role: \"listbox\",\n                    id: context.contentId,\n                    \"data-state\": context.open ? \"open\" : \"closed\",\n                    dir: context.dir,\n                    onContextMenu: (event) => event.preventDefault(),\n                    ...contentProps,\n                    ...popperContentProps,\n                    onPlaced: () => setIsPositioned(true),\n                    ref: composedRefs,\n                    style: {\n                      // flex layout so we can place the scroll buttons properly\n                      display: \"flex\",\n                      flexDirection: \"column\",\n                      // reset the outline by default as the content MAY get focused\n                      outline: \"none\",\n                      ...contentProps.style\n                    },\n                    onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                      const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                      if (event.key === \"Tab\") event.preventDefault();\n                      if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n                      if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n                        const items = getItems().filter((item) => !item.disabled);\n                        let candidateNodes = items.map((item) => item.ref.current);\n                        if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n                          candidateNodes = candidateNodes.slice().reverse();\n                        }\n                        if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n                          const currentElement = event.target;\n                          const currentIndex = candidateNodes.indexOf(currentElement);\n                          candidateNodes = candidateNodes.slice(currentIndex + 1);\n                        }\n                        setTimeout(() => focusFirst(candidateNodes));\n                        event.preventDefault();\n                      }\n                    })\n                  }\n                )\n              }\n            )\n          }\n        ) })\n      }\n    );\n  }, \"SelectContentImpl\")\n);\nvar SelectItemAlignedPosition = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function SelectItemAlignedPosition2(props, forwardedRef) {\n  const { __scopeSelect, onPlaced, ...popperProps } = props;\n  const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n  const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n  const [contentWrapper, setContentWrapper] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const composedRefs = useComposedRefs(forwardedRef, setContent);\n  const getItems = useCollection(__scopeSelect);\n  const shouldExpandOnScrollRef = React.useRef(false);\n  const shouldRepositionRef = React.useRef(true);\n  const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n  const position = React.useCallback(() => {\n    if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n      const triggerRect = context.trigger.getBoundingClientRect();\n      const contentRect = content.getBoundingClientRect();\n      const valueNodeRect = context.valueNode.getBoundingClientRect();\n      const itemTextRect = selectedItemText.getBoundingClientRect();\n      if (context.dir !== Direction.RTL) {\n        const itemTextOffset = itemTextRect.left - contentRect.left;\n        const left = valueNodeRect.left - itemTextOffset;\n        const leftDelta = triggerRect.left - left;\n        const minContentWidth = triggerRect.width + leftDelta;\n        const contentWidth = Math.max(minContentWidth, contentRect.width);\n        const rightEdge = window.innerWidth - CONTENT_MARGIN;\n        const clampedLeft = clamp(left, [\n          CONTENT_MARGIN,\n          // Prevents the content from going off the starting edge of the\n          // viewport. It may still go off the ending edge, but this can be\n          // controlled by the user since they may want to manage overflow in a\n          // specific way.\n          // https://github.com/radix-ui/primitives/issues/2049\n          Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n        ]);\n        contentWrapper.style.minWidth = minContentWidth + \"px\";\n        contentWrapper.style.left = clampedLeft + \"px\";\n      } else {\n        const itemTextOffset = contentRect.right - itemTextRect.right;\n        const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n        const rightDelta = window.innerWidth - triggerRect.right - right;\n        const minContentWidth = triggerRect.width + rightDelta;\n        const contentWidth = Math.max(minContentWidth, contentRect.width);\n        const leftEdge = window.innerWidth - CONTENT_MARGIN;\n        const clampedRight = clamp(right, [\n          CONTENT_MARGIN,\n          Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n        ]);\n        contentWrapper.style.minWidth = minContentWidth + \"px\";\n        contentWrapper.style.right = clampedRight + \"px\";\n      }\n      const items = getItems();\n      const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n      const itemsHeight = viewport.scrollHeight;\n      const contentStyles = window.getComputedStyle(content);\n      const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n      const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n      const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n      const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n      const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n      const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n      const viewportStyles = window.getComputedStyle(viewport);\n      const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n      const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n      const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n      const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n      const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n      const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n      const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n      const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n      const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n      if (willAlignWithoutTopOverflow) {\n        const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n        contentWrapper.style.bottom = \"0px\";\n        const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n        const clampedTriggerMiddleToBottomEdge = Math.max(\n          triggerMiddleToBottomEdge,\n          selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n          (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n        );\n        const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n        contentWrapper.style.height = height + \"px\";\n      } else {\n        const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n        contentWrapper.style.top = \"0px\";\n        const clampedTopEdgeToTriggerMiddle = Math.max(\n          topEdgeToTriggerMiddle,\n          contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n          (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n        );\n        const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n        contentWrapper.style.height = height + \"px\";\n        viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n      }\n      contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n      contentWrapper.style.minHeight = minContentHeight + \"px\";\n      contentWrapper.style.maxHeight = availableHeight + \"px\";\n      onPlaced?.();\n      requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n    }\n  }, [\n    getItems,\n    context.trigger,\n    context.valueNode,\n    contentWrapper,\n    content,\n    viewport,\n    selectedItem,\n    selectedItemText,\n    context.dir,\n    onPlaced\n  ]);\n  useLayoutEffect(() => position(), [position]);\n  const [contentZIndex, setContentZIndex] = React.useState();\n  useLayoutEffect(() => {\n    if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n  }, [content]);\n  const handleScrollButtonChange = React.useCallback(\n    (node) => {\n      if (node && shouldRepositionRef.current === true) {\n        position();\n        focusSelectedItem?.();\n        shouldRepositionRef.current = false;\n      }\n    },\n    [position, focusSelectedItem]\n  );\n  return /* @__PURE__ */ jsx(\n    SelectViewportProvider,\n    {\n      scope: __scopeSelect,\n      contentWrapper,\n      shouldExpandOnScrollRef,\n      onScrollButtonChange: handleScrollButtonChange,\n      children: /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          ref: setContentWrapper,\n          style: {\n            display: \"flex\",\n            flexDirection: \"column\",\n            position: \"fixed\",\n            zIndex: contentZIndex\n          },\n          children: /* @__PURE__ */ jsx(\n            Primitive.div,\n            {\n              ...popperProps,\n              ref: composedRefs,\n              style: {\n                // When we get the height of the content, it includes borders. If we were to set\n                // the height without having `boxSizing: 'border-box'` it would be too big.\n                boxSizing: \"border-box\",\n                // We need to ensure the content doesn't get taller than the wrapper\n                maxHeight: \"100%\",\n                ...popperProps.style\n              }\n            }\n          )\n        }\n      )\n    }\n  );\n}, \"SelectItemAlignedPosition\"));\nvar SelectPopperPosition = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function SelectPopperPosition2(props, forwardedRef) {\n  const {\n    __scopeSelect,\n    align = \"start\",\n    collisionPadding = CONTENT_MARGIN,\n    ...popperProps\n  } = props;\n  const popperScope = usePopperScope(__scopeSelect);\n  return /* @__PURE__ */ jsx(\n    PopperPrimitive.Content,\n    {\n      ...popperScope,\n      ...popperProps,\n      ref: forwardedRef,\n      align,\n      collisionPadding,\n      style: {\n        // Ensure border-box for floating-ui calculations\n        boxSizing: \"border-box\",\n        ...popperProps.style,\n        // re-namespace exposed content custom properties\n        ...{\n          \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n          \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n          \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n          \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n          \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n        }\n      }\n    }\n  );\n}, \"SelectPopperPosition\"));\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectViewport2(props, forwardedRef) {\n    const { __scopeSelect, nonce, ...viewportProps } = props;\n    const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n    const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n    const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n    const prevScrollTopRef = React.useRef(0);\n    return /* @__PURE__ */ jsxs(Fragment2, { children: [\n      /* @__PURE__ */ jsx(\n        \"style\",\n        {\n          dangerouslySetInnerHTML: {\n            __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n          },\n          nonce\n        }\n      ),\n      /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-radix-select-viewport\": \"\",\n          role: \"presentation\",\n          ...viewportProps,\n          ref: composedRefs,\n          style: {\n            // we use position: 'relative' here on the `viewport` so that when we call\n            // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n            // (independent of the scrollUpButton).\n            position: \"relative\",\n            flex: 1,\n            // Viewport should only be scrollable in the vertical direction.\n            // This won't work in vertical writing modes, so we'll need to\n            // revisit this if/when that is supported\n            // https://developer.chrome.com/blog/vertical-form-controls\n            overflow: \"hidden auto\",\n            ...viewportProps.style\n          },\n          onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n            const viewport = event.currentTarget;\n            const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n            if (shouldExpandOnScrollRef?.current && contentWrapper) {\n              const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n              if (scrolledBy > 0) {\n                const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n                const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n                const cssHeight = parseFloat(contentWrapper.style.height);\n                const prevHeight = Math.max(cssMinHeight, cssHeight);\n                if (prevHeight < availableHeight) {\n                  const nextHeight = prevHeight + scrolledBy;\n                  const clampedNextHeight = Math.min(availableHeight, nextHeight);\n                  const heightDiff = nextHeight - clampedNextHeight;\n                  contentWrapper.style.height = clampedNextHeight + \"px\";\n                  if (contentWrapper.style.bottom === \"0px\") {\n                    viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n                    contentWrapper.style.justifyContent = \"flex-end\";\n                  }\n                }\n              }\n            }\n            prevScrollTopRef.current = viewport.scrollTop;\n          })\n        }\n      ) })\n    ] });\n  }, \"SelectViewport\")\n);\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectGroup2(props, forwardedRef) {\n    const { __scopeSelect, ...groupProps } = props;\n    const groupId = useId();\n    return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n  }, \"SelectGroup\")\n);\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectLabel2(props, forwardedRef) {\n    const { __scopeSelect, ...labelProps } = props;\n    const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n    return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n  }, \"SelectLabel\")\n);\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectItem2(props, forwardedRef) {\n    const {\n      __scopeSelect,\n      value,\n      disabled = false,\n      textValue: textValueProp,\n      ...itemProps\n    } = props;\n    const context = useSelectContext(ITEM_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n    const isSelected = context.value === value;\n    const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n    const [isFocused, setIsFocused] = React.useState(false);\n    const handleItemRefCallback = useCallbackRef(\n      (node) => contentContext.itemRefCallback?.(node, value, disabled)\n    );\n    const composedRefs = useComposedRefs(forwardedRef, handleItemRefCallback);\n    const textId = useId();\n    const pointerTypeRef = React.useRef(\"touch\");\n    function handleSelect(event) {\n      context.hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n      context.onUserSelect(value);\n      context.onOpenChange(false);\n    }\n    __name(handleSelect, \"handleSelect\");\n    return /* @__PURE__ */ jsx(\n      SelectItemContextProvider,\n      {\n        scope: __scopeSelect,\n        value,\n        disabled,\n        textId,\n        isSelected,\n        onItemTextChange: React.useCallback((node) => {\n          setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n        }, []),\n        children: /* @__PURE__ */ jsx(\n          Collection.ItemSlot,\n          {\n            scope: __scopeSelect,\n            value,\n            disabled,\n            textValue,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                role: \"option\",\n                \"aria-labelledby\": textId,\n                \"data-highlighted\": isFocused ? \"\" : void 0,\n                \"aria-selected\": isSelected && isFocused,\n                \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n                \"aria-disabled\": disabled || void 0,\n                \"data-disabled\": disabled ? \"\" : void 0,\n                tabIndex: disabled ? void 0 : -1,\n                ...itemProps,\n                ref: composedRefs,\n                onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n                onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n                onClick: composeEventHandlers(itemProps.onClick, (event) => {\n                  if (disabled) {\n                    return;\n                  }\n                  if (pointerTypeRef.current !== \"mouse\") {\n                    handleSelect(event);\n                  }\n                }),\n                onPointerUp: composeEventHandlers(itemProps.onPointerUp, (event) => {\n                  if (disabled) {\n                    return;\n                  }\n                  if (pointerTypeRef.current === \"mouse\") {\n                    handleSelect(event);\n                  }\n                }),\n                onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n                  pointerTypeRef.current = event.pointerType;\n                }),\n                onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n                  pointerTypeRef.current = event.pointerType;\n                  if (disabled) {\n                    contentContext.onItemLeave?.();\n                  } else if (pointerTypeRef.current === \"mouse\") {\n                    event.currentTarget.focus({ preventScroll: true });\n                  }\n                }),\n                onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n                  if (event.currentTarget === document.activeElement) {\n                    contentContext.onItemLeave?.();\n                  }\n                }),\n                onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n                  if (disabled || event.target !== event.currentTarget) {\n                    return;\n                  }\n                  const isTypingAhead = contentContext.searchRef?.current !== \"\";\n                  if (isTypingAhead && event.key === \" \") {\n                    return;\n                  }\n                  if (SELECTION_KEYS.includes(event.key)) {\n                    handleSelect(event);\n                  }\n                  if (event.key === \" \") {\n                    event.preventDefault();\n                  }\n                })\n              }\n            )\n          }\n        )\n      }\n    );\n  }, \"SelectItem\")\n);\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectItemText2(props, forwardedRef) {\n    const { __scopeSelect, className, style, ...itemTextProps } = props;\n    const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n    const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n    const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n    const [itemTextNode, setItemTextNode] = React.useState(null);\n    const handleItemTextRefCallback = useCallbackRef(\n      (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n    );\n    const composedRefs = useComposedRefs(\n      forwardedRef,\n      setItemTextNode,\n      itemContext.onItemTextChange,\n      handleItemTextRefCallback\n    );\n    const textContent = itemTextNode?.textContent;\n    const nativeOption = React.useMemo(\n      () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n      [itemContext.disabled, itemContext.value, textContent]\n    );\n    const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n    useLayoutEffect(() => {\n      onNativeOptionAdd(nativeOption);\n      return () => onNativeOptionRemove(nativeOption);\n    }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n    return /* @__PURE__ */ jsxs(Fragment2, { children: [\n      /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n      itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren && !shouldShowPlaceholder(context.value) ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n    ] });\n  }, \"SelectItemText\")\n);\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function SelectItemIndicator2(props, forwardedRef) {\n    const { __scopeSelect, ...itemIndicatorProps } = props;\n    const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n    return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n  }, \"SelectItemIndicator\")\n);\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function SelectScrollUpButton2(props, forwardedRef) {\n  const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n  const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n  const [canScrollUp, setCanScrollUp] = React.useState(false);\n  const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n  useLayoutEffect(() => {\n    if (contentContext.viewport && contentContext.isPositioned) {\n      let handleScroll2 = function() {\n        const canScrollUp2 = viewport.scrollTop > 0;\n        setCanScrollUp(canScrollUp2);\n      };\n      var handleScroll = handleScroll2;\n      __name(handleScroll2, \"handleScroll\");\n      const viewport = contentContext.viewport;\n      handleScroll2();\n      viewport.addEventListener(\"scroll\", handleScroll2);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n    }\n  }, [contentContext.viewport, contentContext.isPositioned]);\n  return canScrollUp ? /* @__PURE__ */ jsx(\n    SelectScrollButtonImpl,\n    {\n      ...props,\n      ref: composedRefs,\n      onAutoScroll: () => {\n        const { viewport, selectedItem } = contentContext;\n        if (viewport && selectedItem) {\n          viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n        }\n      }\n    }\n  ) : null;\n}, \"SelectScrollUpButton\"));\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function SelectScrollDownButton2(props, forwardedRef) {\n  const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n  const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n  const [canScrollDown, setCanScrollDown] = React.useState(false);\n  const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n  useLayoutEffect(() => {\n    if (contentContext.viewport && contentContext.isPositioned) {\n      let handleScroll2 = function() {\n        const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n        const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n        setCanScrollDown(canScrollDown2);\n      };\n      var handleScroll = handleScroll2;\n      __name(handleScroll2, \"handleScroll\");\n      const viewport = contentContext.viewport;\n      handleScroll2();\n      viewport.addEventListener(\"scroll\", handleScroll2);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n    }\n  }, [contentContext.viewport, contentContext.isPositioned]);\n  return canScrollDown ? /* @__PURE__ */ jsx(\n    SelectScrollButtonImpl,\n    {\n      ...props,\n      ref: composedRefs,\n      onAutoScroll: () => {\n        const { viewport, selectedItem } = contentContext;\n        if (viewport && selectedItem) {\n          viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n        }\n      }\n    }\n  ) : null;\n}, \"SelectScrollDownButton\"));\nvar SelectScrollButtonImpl = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function SelectScrollButtonImpl2(props, forwardedRef) {\n  const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n  const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n  const autoScrollTimerRef = React.useRef(null);\n  const getItems = useCollection(__scopeSelect);\n  const clearAutoScrollTimer = React.useCallback(() => {\n    if (autoScrollTimerRef.current !== null) {\n      window.clearInterval(autoScrollTimerRef.current);\n      autoScrollTimerRef.current = null;\n    }\n  }, []);\n  React.useEffect(() => {\n    return () => clearAutoScrollTimer();\n  }, [clearAutoScrollTimer]);\n  useLayoutEffect(() => {\n    const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n    activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n  }, [getItems]);\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"aria-hidden\": true,\n      ...scrollIndicatorProps,\n      ref: forwardedRef,\n      style: { flexShrink: 0, ...scrollIndicatorProps.style },\n      onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n        if (autoScrollTimerRef.current === null) {\n          autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n        }\n      }),\n      onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n        contentContext.onItemLeave?.();\n        if (autoScrollTimerRef.current === null) {\n          autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n        }\n      }),\n      onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n        clearAutoScrollTimer();\n      })\n    }\n  );\n}, \"SelectScrollButtonImpl\"));\nvar SelectSeparator = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function SelectSeparator2(props, forwardedRef) {\n    const { __scopeSelect, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n  }, \"SelectSeparator\")\n);\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function SelectArrow2(props, forwardedRef) {\n    const { __scopeSelect, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeSelect);\n    const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n    return contentContext.position === Position.Popper ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n  }, \"SelectArrow\")\n);\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function SelectBubbleInput2({ __scopeSelect, ...props }, forwardedRef) {\n    const context = useSelectContext(BUBBLE_INPUT_NAME, __scopeSelect);\n    const { value, onValueChange, required, disabled, name, autoComplete, form, userSelection } = context;\n    const { nativeOptions, nativeSelectKey } = context;\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const selectValue = value ?? \"\";\n    const prevValueRef = React.useRef(selectValue);\n    const handledUserSelectionRef = React.useRef(userSelection);\n    const isDispatchingUserSelectionRef = React.useRef(false);\n    const hasEmptyValueOption = Array.from(nativeOptions).some(\n      (option) => (option.props.value ?? \"\") === \"\"\n    );\n    React.useEffect(() => {\n      const select = ref.current;\n      if (!select) return;\n      const selectProto = window.HTMLSelectElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        selectProto,\n        \"value\"\n      );\n      const setValue = descriptor.set;\n      const isNewUserSelection = userSelection !== null && userSelection !== handledUserSelectionRef.current;\n      handledUserSelectionRef.current = userSelection;\n      const valueChanged = prevValueRef.current !== selectValue;\n      prevValueRef.current = selectValue;\n      const isUserInteraction = isNewUserSelection && valueChanged;\n      if (isNewUserSelection && !valueChanged && userSelection.value !== selectValue && !userSelection.hasConsumerStoppedPropagation && setValue) {\n        isDispatchingUserSelectionRef.current = true;\n        try {\n          setValue.call(select, userSelection.value);\n          select.dispatchEvent(new Event(\"change\", { bubbles: true }));\n        } finally {\n          isDispatchingUserSelectionRef.current = false;\n          setValue.call(select, selectValue);\n        }\n        return;\n      }\n      const bubbles = isUserInteraction && !userSelection.hasConsumerStoppedPropagation;\n      if (valueChanged && setValue) {\n        const event = new Event(\"change\", { bubbles });\n        setValue.call(select, selectValue);\n        select.dispatchEvent(event);\n      }\n    }, [selectValue, userSelection]);\n    return /* @__PURE__ */ jsxs(\n      Primitive.select,\n      {\n        \"aria-hidden\": true,\n        required,\n        tabIndex: -1,\n        name,\n        autoComplete,\n        disabled,\n        form,\n        onChange: (event) => {\n          if (!isDispatchingUserSelectionRef.current) {\n            onValueChange(event.target.value);\n          }\n        },\n        ...props,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n        ref: composedRefs,\n        defaultValue: selectValue,\n        children: [\n          shouldShowPlaceholder(value) && !hasEmptyValueOption ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n          Array.from(nativeOptions)\n        ]\n      },\n      nativeSelectKey\n    );\n  }, \"SelectBubbleInput\")\n);\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n__name(isFunction, \"isFunction\");\nfunction shouldShowPlaceholder(value) {\n  return value === \"\" || value === void 0;\n}\n__name(shouldShowPlaceholder, \"shouldShowPlaceholder\");\nfunction useTypeaheadSearch(onSearchChange) {\n  const handleSearchChange = useCallbackRef(onSearchChange);\n  const searchRef = React.useRef(\"\");\n  const timerRef = React.useRef(0);\n  const handleTypeaheadSearch = React.useCallback(\n    (key) => {\n      const search = searchRef.current + key;\n      handleSearchChange(search);\n      function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      }\n      __name(updateSearch, \"updateSearch\");\n      updateSearch(search);\n    },\n    [handleSearchChange]\n  );\n  const resetTypeahead = React.useCallback(() => {\n    searchRef.current = \"\";\n    window.clearTimeout(timerRef.current);\n  }, []);\n  React.useEffect(() => {\n    return () => window.clearTimeout(timerRef.current);\n  }, []);\n  return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\n__name(useTypeaheadSearch, \"useTypeaheadSearch\");\nfunction findNextItem(items, search, currentItem) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n  let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n  const excludeCurrentItem = normalizedSearch.length === 1;\n  if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n  const nextItem = wrappedItems.find(\n    (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextItem !== currentItem ? nextItem : void 0;\n}\n__name(findNextItem, \"findNextItem\");\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n__name(wrapArray, \"wrapArray\");\nexport {\n  SelectArrow as Arrow,\n  SelectContent as Content,\n  SelectGroup as Group,\n  SelectIcon as Icon,\n  SelectItem as Item,\n  SelectItemIndicator as ItemIndicator,\n  SelectItemText as ItemText,\n  SelectLabel as Label,\n  SelectPortal as Portal,\n  Select as Root,\n  SelectScrollDownButton as ScrollDownButton,\n  SelectScrollUpButton as ScrollUpButton,\n  Select,\n  SelectArrow,\n  SelectContent,\n  SelectGroup,\n  SelectIcon,\n  SelectItem,\n  SelectItemIndicator,\n  SelectItemText,\n  SelectLabel,\n  SelectPortal,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n  SelectViewport,\n  SelectSeparator as Separator,\n  SelectTrigger as Trigger,\n  SelectValue as Value,\n  SelectViewport as Viewport,\n  createSelectScope,\n  SelectBubbleInput as unstable_BubbleInput,\n  SelectProvider as unstable_Provider,\n  SelectBubbleInput as unstable_SelectBubbleInput,\n  SelectProvider as unstable_SelectProvider\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Orientation = {\n  Horizontal: \"horizontal\",\n  Vertical: \"vertical\"\n};\nvar DEFAULT_ORIENTATION = Orientation.Horizontal;\nvar ORIENTATIONS = Object.values(Orientation);\nvar Separator = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function Separator2(props, forwardedRef) {\n    const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n    const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n    const ariaOrientation = orientation === Orientation.Vertical ? orientation : void 0;\n    const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-orientation\": orientation,\n        ...semanticProps,\n        ...domProps,\n        ref: forwardedRef\n      }\n    );\n  }, \"Separator\")\n);\nfunction isValidOrientation(orientation) {\n  return ORIENTATIONS.includes(orientation);\n}\n__name(isValidOrientation, \"isValidOrientation\");\nexport {\n  Separator as Root,\n  Separator\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ActivationMode = {\n  Automatic: \"automatic\",\n  Manual: \"manual\"\n};\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n  createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function Tabs2(props, forwardedRef) {\n    const {\n      __scopeTabs,\n      value: valueProp,\n      onValueChange,\n      defaultValue,\n      orientation = \"horizontal\",\n      dir,\n      activationMode = ActivationMode.Automatic,\n      ...tabsProps\n    } = props;\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      onChange: onValueChange,\n      defaultProp: defaultValue ?? \"\",\n      caller: TABS_NAME\n    });\n    return /* @__PURE__ */ jsx(\n      TabsProvider,\n      {\n        scope: __scopeTabs,\n        baseId: useId(),\n        value,\n        onValueChange: setValue,\n        orientation,\n        dir: direction,\n        activationMode,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            dir: direction,\n            \"data-orientation\": orientation,\n            ...tabsProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }, \"Tabs\")\n);\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = /* @__PURE__ */ React.forwardRef(\n  // blank line to reduce diff noise\n  /* @__PURE__ */ __name(function TabsList2(props, forwardedRef) {\n    const { __scopeTabs, loop = true, ...listProps } = props;\n    const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n    return /* @__PURE__ */ jsx(\n      RovingFocusGroup.Root,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        orientation: context.orientation,\n        dir: context.dir,\n        loop,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"tablist\",\n            \"aria-orientation\": context.orientation,\n            ...listProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }, \"TabsList\")\n);\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function TabsTrigger2(props, forwardedRef) {\n    const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n    const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n    const triggerId = makeTriggerId(context.baseId, value);\n    const contentId = makeContentId(context.baseId, value);\n    const isSelected = value === context.value;\n    return /* @__PURE__ */ jsx(\n      RovingFocusGroup.Item,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        focusable: !disabled,\n        active: isSelected,\n        children: /* @__PURE__ */ jsx(\n          Primitive.button,\n          {\n            type: \"button\",\n            role: \"tab\",\n            \"aria-selected\": isSelected,\n            \"aria-controls\": contentId,\n            \"data-state\": isSelected ? \"active\" : \"inactive\",\n            \"data-disabled\": disabled ? \"\" : void 0,\n            disabled,\n            id: triggerId,\n            ...triggerProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!disabled && event.button === 0 && event.ctrlKey === false) {\n                event.currentTarget.focus();\n                context.onValueChange(value);\n              } else {\n                event.preventDefault();\n              }\n            }),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if (disabled || event.target !== event.currentTarget) {\n                return;\n              }\n              if ([\" \", \"Enter\"].includes(event.key)) {\n                context.onValueChange(value);\n              }\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => {\n              const isAutomaticActivation = context.activationMode !== ActivationMode.Manual;\n              if (!isSelected && !disabled && isAutomaticActivation) {\n                context.onValueChange(value);\n              }\n            })\n          }\n        )\n      }\n    );\n  }, \"TabsTrigger\")\n);\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = /* @__PURE__ */ React.forwardRef(\n  /* @__PURE__ */ __name(function TabsContent2(props, forwardedRef) {\n    const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n    const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n    const triggerId = makeTriggerId(context.baseId, value);\n    const contentId = makeContentId(context.baseId, value);\n    const isSelected = value === context.value;\n    const isMountAnimationPreventedRef = React.useRef(isSelected);\n    React.useEffect(() => {\n      const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n      return () => cancelAnimationFrame(rAF);\n    }, []);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-state\": isSelected ? \"active\" : \"inactive\",\n        \"data-orientation\": context.orientation,\n        role: \"tabpanel\",\n        \"aria-labelledby\": triggerId,\n        hidden: !present,\n        id: contentId,\n        tabIndex: 0,\n        ...contentProps,\n        ref: forwardedRef,\n        style: {\n          ...props.style,\n          animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n        },\n        children: present && children\n      }\n    ) });\n  }, \"TabsContent\")\n);\nfunction makeTriggerId(baseId, value) {\n  return `${baseId}-trigger-${value}`;\n}\n__name(makeTriggerId, \"makeTriggerId\");\nfunction makeContentId(baseId, value) {\n  return `${baseId}-content-${value}`;\n}\n__name(makeContentId, \"makeContentId\");\nexport {\n  TabsContent as Content,\n  TabsList as List,\n  Tabs as Root,\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n  TabsTrigger as Trigger,\n  createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport { cn } from 'cn';\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\n\nfunction Avatar({\n  className,\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n  size?: 'default' | 'sm' | 'lg';\n}) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(\n        'group/avatar after:border-border relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn('aspect-square size-full rounded-full object-cover', className)}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        'bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n  return (\n    <span\n      data-slot=\"avatar-badge\"\n      className={cn(\n        'bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none',\n        'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n        'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n        'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        'group/avatar-group *:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        'bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge };\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n        var _config_compoundVariants;\n        if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n        const { variants, defaultVariants } = config;\n        const getVariantClassNames = Object.keys(variants).map((variant)=>{\n            const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n            const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n            if (variantProp === null) return null;\n            const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n            return variants[variant][variantKey];\n        });\n        const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n            let [key, value] = param;\n            if (value === undefined) {\n                return acc;\n            }\n            acc[key] = value;\n            return acc;\n        }, {});\n        const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n            let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n            return Object.entries(compoundVariantOptions).every((param)=>{\n                let [key, value] = param;\n                return Array.isArray(value) ? value.includes({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                }[key]) : ({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                })[key] === value;\n            }) ? [\n                ...acc,\n                cvClass,\n                cvClassName\n            ] : acc;\n        }, []);\n        return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n    };\n\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'cn';\nimport { Slot } from 'radix-ui';\n\nconst buttonVariants = cva(\n  \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground hover:bg-primary/80',\n        outline:\n          'border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50',\n        secondary:\n          'bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',\n        ghost:\n          'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',\n        destructive:\n          'bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40',\n        link: 'text-primary underline-offset-4 hover:underline',\n      },\n      size: {\n        default:\n          'h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n        xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n        sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n        lg: 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',\n        icon: 'size-8',\n        'icon-xs':\n          \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n        'icon-sm':\n          'size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg',\n        'icon-lg': 'size-9',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  },\n);\n\nfunction Button({\n  className,\n  variant = 'default',\n  size = 'default',\n  asChild = false,\n  ...props\n}: React.ComponentProps<'button'> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean;\n  }) {\n  const Comp = asChild ? Slot.Root : 'button';\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  );\n}\n\nexport { Button, buttonVariants };\n","import * as React from 'react';\nimport { cn } from 'cn';\nimport { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui';\nimport { CheckIcon, ChevronRightIcon } from 'lucide-react';\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n  className,\n  align = 'start',\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        align={align}\n        className={cn(\n          'bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg p-1 shadow-md ring-1 duration-100 data-[state=closed]:overflow-hidden',\n          className,\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  );\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = 'default',\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean;\n  variant?: 'default' | 'destructive';\n}) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"group/dropdown-menu-item focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:*:[svg]:text-destructive relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n  inset?: boolean;\n}) {\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      data-inset={inset}\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-checkbox-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  );\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n  inset?: boolean;\n}) {\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      data-inset={inset}\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      <span\n        className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n        data-slot=\"dropdown-menu-radio-item-indicator\"\n      >\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.RadioItem>\n  );\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean;\n}) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        'text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn('bg-border -mx-1 my-1 h-px', className)}\n      {...props}\n    />\n  );\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        'text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean;\n}) {\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ml-auto\" />\n    </DropdownMenuPrimitive.SubTrigger>\n  );\n}\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n  return (\n    <DropdownMenuPrimitive.SubContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        'bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg p-1 shadow-lg ring-1 duration-100',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n};\n","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client';\n\nimport { useTheme } from 'next-themes';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\nimport {\n  CircleCheckIcon,\n  InfoIcon,\n  TriangleAlertIcon,\n  OctagonXIcon,\n  Loader2Icon,\n} from 'lucide-react';\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n  const { theme = 'system' } = useTheme();\n\n  return (\n    <Sonner\n      theme={theme as ToasterProps['theme']}\n      className=\"toaster group\"\n      icons={{\n        success: <CircleCheckIcon className=\"size-4\" />,\n        info: <InfoIcon className=\"size-4\" />,\n        warning: <TriangleAlertIcon className=\"size-4\" />,\n        error: <OctagonXIcon className=\"size-4\" />,\n        loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n      }}\n      style={\n        {\n          '--normal-bg': 'var(--popover)',\n          '--normal-text': 'var(--popover-foreground)',\n          '--normal-border': 'var(--border)',\n          '--border-radius': 'var(--radius)',\n        } as React.CSSProperties\n      }\n      toastOptions={{\n        classNames: {\n          toast: 'cn-toast',\n        },\n      }}\n      {...props}\n    />\n  );\n};\n\nexport { Toaster };\n","/**\n * The one way the app talks to the backend (design 06): same-origin session,\n * CSRF token on writes, JSON in camelCase, and one error shape.\n */\n\nexport interface ApiErrorBody {\n  code: string;\n  message: string;\n  fields: Record<string, string[]>;\n}\n\nexport class ApiError extends Error {\n  readonly status: number;\n  readonly code: string;\n  readonly fields: Record<string, string[]>;\n\n  constructor(status: number, body: ApiErrorBody) {\n    super(body.message);\n    this.name = 'ApiError';\n    this.status = status;\n    this.code = body.code;\n    this.fields = body.fields;\n  }\n}\n\nfunction csrfToken(): string {\n  const match = document.cookie.match(/(?:^|;\\s*)csrftoken=([^;]+)/);\n  return match?.[1] ? decodeURIComponent(match[1]) : '';\n}\n\nconst UNSAFE = new Set(['POST', 'PUT', 'PATCH', 'DELETE']);\n\nfunction toErrorBody(status: number, payload: unknown): ApiErrorBody {\n  if (payload && typeof payload === 'object' && 'code' in payload && 'message' in payload) {\n    const body = payload as Partial<ApiErrorBody>;\n    return { code: String(body.code), message: String(body.message), fields: body.fields ?? {} };\n  }\n  if (status === 0) {\n    return {\n      code: 'network',\n      message: 'Could not reach Eyefibr. Check your connection.',\n      fields: {},\n    };\n  }\n  return { code: 'error', message: 'Something went wrong. Please try again.', fields: {} };\n}\n\nexport async function api<T>(\n  path: string,\n  options: { method?: string; body?: unknown; signal?: AbortSignal } = {},\n): Promise<T> {\n  const method = (options.method ?? 'GET').toUpperCase();\n  const headers: Record<string, string> = { Accept: 'application/json' };\n  if (options.body !== undefined) headers['Content-Type'] = 'application/json';\n  if (UNSAFE.has(method)) headers['X-CSRFToken'] = csrfToken();\n\n  let response: Response;\n  try {\n    response = await fetch(`/api${path}`, {\n      method,\n      headers,\n      credentials: 'same-origin',\n      body: options.body === undefined ? undefined : JSON.stringify(options.body),\n      signal: options.signal,\n    });\n  } catch (error) {\n    if (error instanceof DOMException && error.name === 'AbortError') throw error;\n    throw new ApiError(0, toErrorBody(0, null));\n  }\n\n  if (response.status === 204) return undefined as T;\n  const payload: unknown = await response.json().catch(() => null);\n  if (!response.ok) throw new ApiError(response.status, toErrorBody(response.status, payload));\n  return payload as T;\n}\n","import { api } from '@/lib/api';\nimport type {\n  BackupCodes,\n  InvitationInfo,\n  NextStep,\n  Schemas,\n  SessionState,\n  TwoFactorSetup,\n} from '@/api/types';\n\nexport const authApi = {\n  session: () => api<SessionState>('/auth/session'),\n  login: (body: Schemas['LoginRequest']) => api<NextStep>('/auth/login', { method: 'POST', body }),\n  verifyCode: (code: string) =>\n    api<NextStep>('/auth/2fa/verify', { method: 'POST', body: { code } }),\n  setupStart: () => api<TwoFactorSetup>('/auth/2fa/setup'),\n  setupConfirm: (code: string) =>\n    api<BackupCodes>('/auth/2fa/setup', { method: 'POST', body: { code } }),\n  logout: () => api<void>('/auth/logout', { method: 'POST' }),\n  signup: (body: Schemas['SignupRequest']) =>\n    api<NextStep>('/auth/signup', { method: 'POST', body }),\n  invitation: (token: string) =>\n    api<InvitationInfo>(`/auth/invitations/${encodeURIComponent(token)}`),\n  acceptInvitation: (token: string, body: Schemas['AcceptInvitationRequest']) =>\n    api<NextStep>(`/auth/invitations/${encodeURIComponent(token)}`, { method: 'POST', body }),\n  verifyEmail: (token: string) =>\n    api<void>('/auth/verify-email', { method: 'POST', body: { token } }),\n  resendVerification: () => api<void>('/auth/verify-email/resend', { method: 'POST' }),\n  requestReset: (email: string) =>\n    api<void>('/auth/password-reset', { method: 'POST', body: { email } }),\n  confirmReset: (body: Schemas['PasswordResetConfirmRequest']) =>\n    api<NextStep>('/auth/password-reset/confirm', { method: 'POST', body }),\n};\n","import * as React from 'react';\nimport { cn } from 'cn';\n\nfunction Card({\n  className,\n  size = 'default',\n  ...props\n}: React.ComponentProps<'div'> & { size?: 'default' | 'sm' }) {\n  return (\n    <div\n      data-slot=\"card\"\n      data-size={size}\n      className={cn(\n        'group/card bg-card text-card-foreground ring-foreground/10 flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl py-(--card-spacing) text-sm ring-1 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        'group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\n// Eyefibr: a card's title is a section heading (WCAG 1.3.1), level 2 under\n// the page's h1 unless aria-level says otherwise.\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      role=\"heading\"\n      aria-level={2}\n      className={cn(\n        'font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn('text-muted-foreground text-sm', className)}\n      {...props}\n    />\n  );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn('col-start-2 row-span-2 row-start-1 self-start justify-self-end', className)}\n      {...props}\n    />\n  );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div data-slot=\"card-content\" className={cn('px-(--card-spacing)', className)} {...props} />\n  );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\n        'bg-muted/50 flex items-center rounded-b-xl border-t p-(--card-spacing)',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };\n","/**\n * Interface text lives in translation files from day one (D-067). Release 1\n * ships English only; adding a language is adding a folder under locales/.\n */\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport account from '@/locales/en/account.json';\nimport app from '@/locales/en/app.json';\nimport auth from '@/locales/en/auth.json';\nimport billing from '@/locales/en/billing.json';\nimport common from '@/locales/en/common.json';\nimport workspaces from '@/locales/en/workspaces.json';\n\nexport const defaultNS = 'common';\nexport const resources = { en: { common, auth, app, account, billing, workspaces } } as const;\n\nvoid i18n.use(initReactI18next).init({\n  lng: 'en',\n  fallbackLng: 'en',\n  defaultNS,\n  ns: ['common', 'auth', 'app', 'account', 'billing', 'workspaces'],\n  resources,\n  interpolation: { escapeValue: false }, // React already escapes\n  returnNull: false,\n});\n\nexport default i18n;\n","import i18n from '@/i18n';\n\n/** The locale for numbers and dates: British forms for English (\"17 Nov 2026\", design 06). */\nexport function formatLocale(): string {\n  return i18n.language === 'en' ? 'en-GB' : i18n.language;\n}\n\n/** Dates and times in the user's language and time zone (D-067). */\nexport function formatDateTime(value: string | Date): string {\n  return new Intl.DateTimeFormat(formatLocale(), {\n    dateStyle: 'medium',\n    timeStyle: 'short',\n  }).format(new Date(value));\n}\n\nexport function formatDate(value: string | Date): string {\n  return new Intl.DateTimeFormat(formatLocale(), { dateStyle: 'medium' }).format(new Date(value));\n}\n\nexport function formatRelative(value: string | Date, now: Date = new Date()): string {\n  const seconds = Math.round((new Date(value).getTime() - now.getTime()) / 1000);\n  const format = new Intl.RelativeTimeFormat(formatLocale(), { numeric: 'auto' });\n  const units: [Intl.RelativeTimeFormatUnit, number][] = [\n    ['day', 86400],\n    ['hour', 3600],\n    ['minute', 60],\n  ];\n  for (const [unit, size] of units) {\n    if (Math.abs(seconds) >= size) return format.format(Math.round(seconds / size), unit);\n  }\n  return format.format(0, 'minute');\n}\n\n/** Money from cents: \"€300.00\" (design 06: euro sign, two decimals). */\nexport function formatMoney(cents: number, currency = 'eur'): string {\n  return new Intl.NumberFormat(formatLocale(), {\n    style: 'currency',\n    currency: currency.toUpperCase(),\n  }).format(cents / 100);\n}\n","import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { authApi } from './api';\n\nexport const SESSION_KEY = ['auth', 'session'] as const;\n\n/** Who is signed in, and how far (design 06): the single source for guards and layout. */\nexport function useSession() {\n  return useQuery({ queryKey: SESSION_KEY, queryFn: authApi.session, staleTime: 60_000 });\n}\n\nexport function useRefreshSession() {\n  const client = useQueryClient();\n  return () => client.invalidateQueries({ queryKey: SESSION_KEY });\n}\n\n/**\n * After signing in, out or enrolling: drop data cached for the previous session\n * and refetch the session in place, so every component watching it updates.\n * (Clearing the whole cache would leave existing observers on a dead entry.)\n */\nexport function useResetSession() {\n  const client = useQueryClient();\n  return async () => {\n    client.removeQueries({ predicate: (query) => query.queryKey[0] !== 'auth' });\n    client.removeQueries({ queryKey: ['auth', '2fa-setup'] });\n    await client.fetchQuery({ queryKey: SESSION_KEY, queryFn: authApi.session, staleTime: 0 });\n  };\n}\n","/** Pages Django serves itself, outside the React app; reaching them needs a full page load. */\nconst SERVER_PAGES = ['/admin/'];\n\nexport function isServerPage(path: string): boolean {\n  return SERVER_PAGES.some((prefix) => path.startsWith(prefix));\n}\n\n/** Only same-site paths: never redirect to another origin after login. */\nexport function safeNext(value: string | null): string {\n  if (!value?.startsWith('/') || value.startsWith('//') || value.startsWith('/\\\\')) {\n    return '/workspaces';\n  }\n  return value;\n}\n\n/** A full page load (kept apart so tests can replace it). */\nexport function loadPage(path: string): void {\n  window.location.assign(path);\n}\n","import { api } from '@/lib/api';\nimport type {\n  BillingProfile,\n  PaymentIssue,\n  ResellerStatus,\n  RetryOutcome,\n  Schemas,\n} from '@/api/types';\n\nexport const billingApi = {\n  profile: () => api<BillingProfile>('/billing/profile'),\n  saveProfile: (body: Schemas['BillingProfileRequest']) =>\n    api<BillingProfile>('/billing/profile', { method: 'PUT', body }),\n  reseller: () => api<ResellerStatus>('/billing/reseller-request'),\n  requestReseller: (message: string) =>\n    api<ResellerStatus>('/billing/reseller-request', { method: 'POST', body: { message } }),\n  paymentIssues: () => api<PaymentIssue[]>('/billing/payment-issues'),\n  portalSession: (returnTo: string) =>\n    api<{ url: string }>('/billing/portal-session', { method: 'POST', body: { returnTo } }),\n  retryPayment: () => api<RetryOutcome[]>('/billing/retry-payment', { method: 'POST' }),\n};\n\nexport const billingKeys = {\n  profile: ['billing', 'profile'] as const,\n  reseller: ['billing', 'reseller'] as const,\n  paymentIssues: ['billing', 'payment-issues'] as const,\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router';\nimport { toast } from 'sonner';\nimport type { RetryOutcome } from '@/api/types';\nimport { useSession } from '@/features/auth/session';\nimport { ApiError } from '@/lib/api';\nimport { loadPage } from '@/lib/navigation';\nimport { billingApi, billingKeys } from './api';\n\n/** The organisation's unpaid renewals (D-028); none for an operator without one. */\nexport function usePaymentIssues() {\n  const { data: session } = useSession();\n  return useQuery({\n    queryKey: billingKeys.paymentIssues,\n    queryFn: billingApi.paymentIssues,\n    enabled: Boolean(session?.user?.organisation),\n    refetchInterval: 60_000,\n  });\n}\n\n/** \"Update payment method\" and \"Retry payment\" (D-028): the portal returns\n * here with ?retry=1, and the retry runs at once. */\nexport function usePaymentRecovery() {\n  const { t } = useTranslation('billing');\n  const client = useQueryClient();\n  const { pathname } = useLocation();\n\n  const portal = useMutation({\n    mutationFn: (returnTo?: string) => billingApi.portalSession(returnTo ?? `${pathname}?retry=1`),\n    onSuccess: ({ url }) => loadPage(url),\n    onError: (error) =>\n      toast.error(error instanceof ApiError ? error.message : t('payments.failed')),\n  });\n\n  const retry = useMutation({\n    mutationFn: billingApi.retryPayment,\n    onSuccess: (outcomes: RetryOutcome[]) => {\n      void client.invalidateQueries({ queryKey: ['workspaces'] });\n      void client.invalidateQueries({ queryKey: billingKeys.paymentIssues });\n      if (outcomes.length === 0) return toast.success(t('payments.nothingDue'));\n      for (const outcome of outcomes) {\n        if (outcome.outcome === 'paid') {\n          toast.success(t('payments.paid', { workspace: outcome.workspace }));\n        } else if (outcome.outcome === 'pending' && outcome.paymentUrl) {\n          const url = outcome.paymentUrl;\n          toast.info(t('payments.pending', { workspace: outcome.workspace }), {\n            action: { label: t('payments.complete'), onClick: () => window.open(url, '_blank') },\n            duration: 30_000,\n          });\n        } else if (outcome.outcome === 'pending') {\n          toast.info(t('payments.processing', { workspace: outcome.workspace }));\n        } else {\n          toast.error(outcome.message || t('payments.failed'));\n        }\n      }\n    },\n    onError: (error) =>\n      toast.error(error instanceof ApiError ? error.message : t('payments.failed')),\n  });\n\n  return { portal, retry };\n}\n","import { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { formatDate, formatMoney } from '@/lib/format';\nimport { usePaymentIssues, usePaymentRecovery } from '../payments';\n\n/** On every page while a renewal is unpaid (D-028): what, how much, by when. */\nexport function PaymentIssueBanner() {\n  const { t } = useTranslation('billing');\n  const { data: issues = [] } = usePaymentIssues();\n  const { portal } = usePaymentRecovery();\n  const first = issues[0];\n  if (!first) return null;\n  const message =\n    issues.length > 1\n      ? t('payments.banner.several', { count: issues.length })\n      : first.suspended\n        ? t('payments.banner.suspended', {\n            workspace: first.workspace,\n            amount: formatMoney(first.amount),\n          })\n        : t('payments.banner.issue', {\n            workspace: first.workspace,\n            amount: formatMoney(first.amount),\n            date: first.suspendOn ? formatDate(first.suspendOn) : '',\n          });\n  return (\n    <section\n      aria-label={t('payments.banner.label')}\n      className=\"border-destructive/30 bg-destructive/10 flex flex-col gap-2 border-b px-6 py-3 text-sm sm:flex-row sm:items-center sm:justify-between\"\n    >\n      <span role=\"alert\">{message}</span>\n      <Button size=\"sm\" disabled={portal.isPending} onClick={() => portal.mutate(undefined)}>\n        {t('payments.update')}\n      </Button>\n    </section>\n  );\n}\n\n/** Back from the Customer Portal (?retry=1): retry the payment at once (D-028). */\nexport function RetryOnReturn() {\n  const { search, pathname } = useLocation();\n  const navigate = useNavigate();\n  const { retry } = usePaymentRecovery();\n  const done = useRef(false);\n  const returning = new URLSearchParams(search).get('retry') === '1';\n  useEffect(() => {\n    if (!returning || done.current) return;\n    done.current = true;\n    retry.mutate();\n    void navigate(pathname, { replace: true });\n  }, [returning, retry, navigate, pathname]);\n  return null;\n}\n\n/** Billing page: payment methods live on Stripe's page (D-004). */\nexport function PaymentMethodsCard() {\n  const { t } = useTranslation('billing');\n  const { portal } = usePaymentRecovery();\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('payments.methods.title')}</CardTitle>\n        <CardDescription>{t('payments.methods.body')}</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Button\n          variant=\"outline\"\n          size=\"sm\"\n          disabled={portal.isPending}\n          onClick={() => portal.mutate('/billing')}\n        >\n          {t('payments.methods.manage')}\n        </Button>\n      </CardContent>\n    </Card>\n  );\n}\n\n/** Billing page: each unpaid renewal, with Retry now (design 06). */\nexport function PaymentIssuesCard() {\n  const { t } = useTranslation('billing');\n  const { data: issues = [] } = usePaymentIssues();\n  const { portal, retry } = usePaymentRecovery();\n  if (issues.length === 0) return null;\n  return (\n    <Card className=\"border-destructive/40\">\n      <CardHeader>\n        <CardTitle>{t('payments.issues.title')}</CardTitle>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4 text-sm\">\n        <ul className=\"flex flex-col gap-2\">\n          {issues.map((issue) => (\n            <li key={issue.workspaceId}>\n              {issue.suspended\n                ? t('payments.issues.suspended', {\n                    workspace: issue.workspace,\n                    amount: formatMoney(issue.amount),\n                    date: issue.terminateOn ? formatDate(issue.terminateOn) : '',\n                  })\n                : t('payments.issues.open', {\n                    workspace: issue.workspace,\n                    amount: formatMoney(issue.amount),\n                    date: issue.suspendOn ? formatDate(issue.suspendOn) : '',\n                  })}\n            </li>\n          ))}\n        </ul>\n        <div className=\"flex flex-wrap gap-2\">\n          <Button size=\"sm\" disabled={retry.isPending} onClick={() => retry.mutate()}>\n            {t('payments.retry')}\n          </Button>\n          <Button\n            size=\"sm\"\n            variant=\"outline\"\n            disabled={portal.isPending}\n            onClick={() => portal.mutate('/billing?retry=1')}\n          >\n            {t('payments.update')}\n          </Button>\n        </div>\n      </CardContent>\n    </Card>\n  );\n}\n","import type { FieldValues, Path, UseFormSetError } from 'react-hook-form';\nimport { ApiError } from '@/lib/api';\nimport i18n from '@/i18n';\n\n/**\n * Put the backend's field errors on the matching form fields, focusing the\n * first, and return the message to show above the form (or null when every\n * error found a field).\n */\nexport function applyApiError<T extends FieldValues>(\n  error: unknown,\n  setError: UseFormSetError<T>,\n  fields: readonly Path<T>[],\n): string | null {\n  if (!(error instanceof ApiError)) return i18n.t('common:errors.generic');\n  let unplaced = false;\n  let first = true;\n  for (const [field, messages] of Object.entries(error.fields)) {\n    if ((fields as readonly string[]).includes(field)) {\n      // Focus the first field in error, as the browser-side checks do.\n      setError(\n        field as Path<T>,\n        { type: 'server', message: messages.join(' ') },\n        { shouldFocus: first },\n      );\n      first = false;\n    } else {\n      unplaced = true;\n    }\n  }\n  const hasFieldErrors = Object.keys(error.fields).length > 0;\n  return hasFieldErrors && !unplaced ? null : error.message;\n}\n\nexport function errorMessage(error: unknown): string {\n  return error instanceof ApiError ? error.message : i18n.t('common:errors.generic');\n}\n","import { useEffect, useRef } from 'react';\nimport { useLocation } from 'react-router';\n\nconst SITE = 'Eyefibr';\n\n/**\n * A page's main heading. It names the page in the browser's tab (WCAG 2.4.2),\n * and after a move from another page it takes the focus, so a screen reader\n * announces the new page (WCAG 2.4.3). The browser does that itself on the\n * first load, and a field the page focuses on its own (autoFocus) keeps it.\n *\n * `focusKey` moves the focus again when it changes without a new address,\n * such as the wizard's step.\n */\nexport function usePageHeading<T extends HTMLElement = HTMLHeadingElement>(\n  title?: string,\n  focusKey?: string,\n) {\n  const heading = useRef<T>(null);\n  const { pathname, key } = useLocation();\n\n  useEffect(() => {\n    document.title = title ? `${title} · ${SITE}` : SITE;\n  }, [title]);\n\n  useEffect(() => {\n    const element = heading.current;\n    if (!element || key === 'default') return; // the first page the browser loaded\n    const page = element.closest('main');\n    if (page?.contains(document.activeElement)) return;\n    element.focus({ preventScroll: true });\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- only a new page or step moves focus\n  }, [pathname, focusKey]);\n\n  return heading;\n}\n","import { useMutation } from '@tanstack/react-query';\nimport {\n  CreditCardIcon,\n  LayoutGridIcon,\n  LifeBuoyIcon,\n  LogOutIcon,\n  MenuIcon,\n  ShieldIcon,\n  UserIcon,\n} from 'lucide-react';\nimport { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, NavLink, Outlet, useLocation, useNavigate } from 'react-router';\nimport { toast } from 'sonner';\nimport type { Me } from '@/api/types';\nimport logo from '@/assets/brand/logo-white.png';\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { Button } from '@/components/ui/button';\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { Toaster } from '@/components/ui/sonner';\nimport { authApi } from '@/features/auth/api';\nimport { PaymentIssueBanner, RetryOnReturn } from '@/features/billing/components/PaymentParts';\nimport { useResetSession, useSession } from '@/features/auth/session';\nimport { errorMessage } from '@/lib/forms';\nimport { usePageHeading } from '@/lib/page';\n\nconst NAV = [\n  { to: '/workspaces', key: 'workspaces', icon: LayoutGridIcon },\n  { to: '/billing', key: 'billing', icon: CreditCardIcon },\n  { to: '/account', key: 'account', icon: UserIcon },\n  { to: '/support', key: 'support', icon: LifeBuoyIcon },\n] as const;\n\nfunction initials(user: Me): string {\n  const source = user.displayName || user.email;\n  return source\n    .split(/[\\s@.]+/)\n    .filter(Boolean)\n    .slice(0, 2)\n    .map((part) => part[0]?.toUpperCase())\n    .join('');\n}\n\n// A string, not NavLink's function form, so menu items (asChild) can merge it.\n// NavLink marks the current page with aria-current=\"page\".\nconst NAV_LINK =\n  'flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium text-zinc-300 transition-colors hover:bg-white/10 hover:text-white aria-[current=page]:bg-white/10 aria-[current=page]:text-white';\n\nfunction NavItems() {\n  const { t } = useTranslation('app');\n  return (\n    <nav aria-label={t('nav.label')} className=\"flex flex-col gap-1\">\n      {NAV.map(({ to, key, icon: Icon }) => (\n        <NavLink key={to} to={to} className={NAV_LINK}>\n          <Icon className=\"size-4\" />\n          {t(`nav.${key}`)}\n        </NavLink>\n      ))}\n    </nav>\n  );\n}\n\n/** On phones, the same links as menu items: arrow keys move between them, and\n * the menu closes once one is chosen. Opening another page leaves the focus on\n * its heading (usePageHeading) instead of returning it to the menu button. */\nfunction PhoneNav() {\n  const { t } = useTranslation('app');\n  const { pathname } = useLocation();\n  const leaving = useRef(false);\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          className=\"text-white hover:bg-white/10\"\n          aria-label={t('nav.openMenu')}\n        >\n          <MenuIcon />\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        align=\"end\"\n        className=\"w-56 bg-zinc-950 p-2\"\n        onCloseAutoFocus={(event) => {\n          if (leaving.current) event.preventDefault();\n          leaving.current = false;\n        }}\n      >\n        {NAV.map(({ to, key, icon: Icon }) => (\n          <DropdownMenuItem\n            key={to}\n            asChild\n            className=\"focus:bg-white/10 focus:text-white\"\n            onSelect={() => (leaving.current = to !== pathname)}\n          >\n            <NavLink to={to} className={NAV_LINK}>\n              <Icon className=\"size-4\" />\n              {t(`nav.${key}`)}\n            </NavLink>\n          </DropdownMenuItem>\n        ))}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n\nfunction UserMenu({ user, compact = false }: { user: Me; compact?: boolean }) {\n  const { t } = useTranslation('app');\n  const navigate = useNavigate();\n  const { pathname } = useLocation();\n  const leaving = useRef(false);\n  const resetSession = useResetSession();\n  const signOut = useMutation({\n    mutationFn: authApi.logout,\n    onSuccess: async () => {\n      await resetSession();\n      navigate('/', { replace: true });\n    },\n    onError: (error) => toast.error(errorMessage(error)),\n  });\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <button\n          type=\"button\"\n          // On phones only the initials show: name the button for screen readers.\n          aria-label={compact ? t('user.menu') : undefined}\n          className=\"flex w-full items-center gap-3 rounded-md p-2 text-left text-white hover:bg-white/10\"\n        >\n          <Avatar className=\"size-8\">\n            <AvatarFallback className=\"bg-white/15 text-xs text-white\">\n              {initials(user)}\n            </AvatarFallback>\n          </Avatar>\n          {!compact && (\n            <span className=\"min-w-0 flex-1\">\n              <span className=\"block truncate text-sm font-medium\">\n                {user.displayName || user.email}\n              </span>\n              <span className=\"block truncate text-xs text-zinc-400\">\n                {user.organisation?.name ?? user.email}\n              </span>\n            </span>\n          )}\n        </button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        align=\"end\"\n        className=\"w-60\"\n        onCloseAutoFocus={(event) => {\n          if (leaving.current) event.preventDefault(); // the new page focuses its heading\n          leaving.current = false;\n        }}\n      >\n        <DropdownMenuLabel className=\"text-muted-foreground truncate font-normal\">\n          {user.email}\n        </DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem asChild onSelect={() => (leaving.current = pathname !== '/account')}>\n          <Link to=\"/account\">\n            <UserIcon /> {t('user.account')}\n          </Link>\n        </DropdownMenuItem>\n        {user.isStaff && (\n          <DropdownMenuItem asChild>\n            <a href=\"/admin/\">\n              <ShieldIcon /> {t('nav.admin')}\n            </a>\n          </DropdownMenuItem>\n        )}\n        <DropdownMenuSeparator />\n        <DropdownMenuItem onSelect={() => signOut.mutate()}>\n          <LogOutIcon /> {t('user.signOut')}\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n\nfunction UnverifiedBanner({ user }: { user: Me }) {\n  const { t } = useTranslation('app');\n  const resend = useMutation({\n    mutationFn: authApi.resendVerification,\n    onSuccess: () => toast.success(t('banner.resent')),\n    onError: (error) => toast.error(errorMessage(error)),\n  });\n  if (user.emailVerified) return null;\n  return (\n    <section\n      aria-label={t('banner.unverifiedLabel')}\n      className=\"border-warning/40 bg-warning/15 flex flex-col gap-2 border-b px-6 py-3 text-sm sm:flex-row sm:items-center sm:justify-between\"\n    >\n      <span>{t('banner.unverified', { email: user.email })}</span>\n      <Button\n        size=\"sm\"\n        variant=\"outline\"\n        onClick={() => resend.mutate()}\n        disabled={resend.isPending}\n      >\n        {t('banner.resend')}\n      </Button>\n    </section>\n  );\n}\n\n/**\n * The signed-in shell: dark sidebar with the white logo, content on the right.\n * The shell is exactly the viewport's height; only the content area scrolls,\n * so the sidebar, header and banners stay put.\n */\nexport function AppLayout() {\n  const { t } = useTranslation('app');\n  const { data } = useSession();\n  const { pathname } = useLocation();\n  const content = useRef<HTMLDivElement>(null);\n  // The content area, not the window, scrolls: start each page at its top.\n  useEffect(() => {\n    if (content.current) content.current.scrollTop = 0;\n  }, [pathname]);\n  const user = data?.user;\n  if (!user) return null; // RequireVerified guarantees a user before this renders\n\n  return (\n    <div className=\"bg-muted/30 flex h-dvh overflow-hidden\">\n      <a\n        href=\"#content\"\n        onClick={(event) => {\n          // Focus the content without a hash in the address (the router would see a new page).\n          event.preventDefault();\n          content.current?.focus();\n        }}\n        className=\"bg-background text-foreground sr-only z-50 px-4 py-2 text-sm font-medium focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:ring-2\"\n      >\n        {t('skipToContent')}\n      </a>\n      <aside className=\"hidden w-64 shrink-0 flex-col justify-between overflow-y-auto bg-zinc-950 p-4 lg:flex\">\n        <div className=\"flex flex-col gap-8\">\n          <Link to=\"/workspaces\" className=\"px-3 pt-2\">\n            <img src={logo} alt=\"Eyefibr\" className=\"h-auto w-32\" />\n          </Link>\n          <NavItems />\n        </div>\n        <UserMenu user={user} />\n      </aside>\n\n      <div className=\"flex min-h-0 min-w-0 flex-1 flex-col\">\n        <header className=\"flex items-center justify-between bg-zinc-950 px-4 py-3 lg:hidden\">\n          <img src={logo} alt=\"Eyefibr\" className=\"h-auto w-28\" />\n          <div className=\"flex items-center gap-1\">\n            <PhoneNav />\n            <div className=\"w-12\">\n              <UserMenu user={user} compact />\n            </div>\n          </div>\n        </header>\n        <UnverifiedBanner user={user} />\n        <PaymentIssueBanner />\n        <RetryOnReturn />\n        {/* relative: absolutely placed descendants (e.g. a select's hidden native\n            input) stay inside this scroll area instead of stretching the page. */}\n        <div\n          ref={content}\n          id=\"content\"\n          tabIndex={-1}\n          className=\"relative min-h-0 flex-1 overflow-y-auto focus:outline-none\"\n        >\n          {/* A size container: pages lay out their cards by the room they get\n              (@4xl/main: = 896 px of content), not by the screen width. */}\n          <main className=\"@container/main mx-auto w-full max-w-7xl p-6 lg:p-10\">\n            <Outlet />\n          </main>\n        </div>\n      </div>\n      <Toaster richColors position=\"top-right\" />\n    </div>\n  );\n}\n\n/** The page's title (its h1, its browser tab name), with actions beside it.\n * `focusKey`: see usePageHeading. */\nexport function PageHeader({\n  title,\n  focusKey,\n  children,\n}: {\n  title: string;\n  focusKey?: string;\n  children?: React.ReactNode;\n}) {\n  const heading = usePageHeading(title, focusKey);\n  return (\n    <div className=\"mb-8 flex flex-wrap items-center justify-between gap-4\">\n      <h1\n        ref={heading}\n        tabIndex={-1}\n        className=\"text-2xl font-semibold tracking-tight outline-none\"\n      >\n        {title}\n      </h1>\n      {children}\n    </div>\n  );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'cn';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nfunction Tabs({\n  className,\n  orientation = 'horizontal',\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      data-orientation={orientation}\n      className={cn('group/tabs flex gap-2 data-horizontal:flex-col', className)}\n      {...props}\n    />\n  );\n}\n\nconst tabsListVariants = cva(\n  'group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none',\n  {\n    variants: {\n      variant: {\n        default: 'bg-muted',\n        line: 'gap-1 bg-transparent',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nfunction TabsList({\n  className,\n  variant = 'default',\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabsListVariants>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      data-variant={variant}\n      className={cn(tabsListVariants({ variant }), className)}\n      {...props}\n    />\n  );\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"text-foreground/60 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent',\n        'data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground',\n        'after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn('flex-1 text-sm outline-none', className)}\n      {...props}\n    />\n  );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n    !Array.isArray(value) &&\n    isObjectType(value) &&\n    !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n    ? isCheckBoxInput(event.target)\n        ? event.target.checked\n        : isFileInput(event.target)\n            ? event.target.files\n            : event.target.value\n    : event;\n\nconst FIELD_PATH_RE = /[.[\\]'\"]/;\nvar stringToPath = (input) => input.split(FIELD_PATH_RE).filter(Boolean);\n\nfunction getNullAncestorValue(control, name) {\n    const segments = stringToPath(name);\n    let formValues = control._formValues;\n    let defaultValues = control._defaultValues;\n    for (let i = 0; i < segments.length - 1; i++) {\n        const key = segments[i];\n        formValues = formValues == null ? formValues : formValues[key];\n        defaultValues = defaultValues == null ? defaultValues : defaultValues[key];\n        if (formValues === null || defaultValues === null) {\n            return null;\n        }\n    }\n    return undefined;\n}\n\nvar isNameInFieldArray = (names, name) => name\n    .split('.')\n    .some((part, index, arr) => !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')));\n\nvar isWeb = typeof window !== 'undefined' &&\n    typeof window.HTMLElement !== 'undefined' &&\n    typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n    if (data === null || typeof data !== 'object') {\n        return data;\n    }\n    if (data instanceof Date) {\n        return new Date(data);\n    }\n    const isBlobInstance = typeof Blob !== 'undefined' && data instanceof Blob;\n    const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n    if (isWeb && (isBlobInstance || isFileListInstance)) {\n        return data;\n    }\n    const isArray = Array.isArray(data);\n    const prototype = Object.getPrototypeOf(data);\n    if (!isArray && prototype && data.constructor !== Object) {\n        return data;\n    }\n    const copy = isArray ? new Array(data.length) : Object.create(prototype);\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            copy[key] = cloneObject(data[key]);\n        }\n    }\n    return copy;\n}\n\nconst EVENTS = {\n    BLUR: 'blur',\n    FOCUS_OUT: 'focusout',\n    CHANGE: 'change',\n    SUBMIT: 'submit',\n    TRIGGER: 'trigger',\n    VALID: 'valid',\n};\nconst VALIDATION_MODE = {\n    onBlur: 'onBlur',\n    onChange: 'onChange',\n    onSubmit: 'onSubmit',\n    onTouched: 'onTouched',\n    all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n    max: 'max',\n    min: 'min',\n    maxLength: 'maxLength',\n    minLength: 'minLength',\n    pattern: 'pattern',\n    required: 'required',\n    validate: 'validate',\n};\nconst REGISTER_VALIDATION_RULES = [\n    INPUT_VALIDATION_RULES.required,\n    INPUT_VALIDATION_RULES.min,\n    INPUT_VALIDATION_RULES.max,\n    INPUT_VALIDATION_RULES.minLength,\n    INPUT_VALIDATION_RULES.maxLength,\n    INPUT_VALIDATION_RULES.pattern,\n    INPUT_VALIDATION_RULES.validate,\n];\nconst FORM_ERROR_TYPE = 'form';\nconst ROOT_ERROR_TYPE = 'root';\nconst PROTOTYPE_KEYWORDS = ['__proto__', 'constructor', 'prototype'];\n\nconst IS_KEY_RE = /^\\w*$/;\nvar isKey = (value) => IS_KEY_RE.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (object, path, defaultValue) => {\n    if (!path || !isObject(object)) {\n        return defaultValue;\n    }\n    const paths = isKey(path) ? [path] : stringToPath(path);\n    if (paths.some((key) => PROTOTYPE_KEYWORDS.includes(key))) {\n        return defaultValue;\n    }\n    const result = paths.reduce((result, key) => {\n        return isNullOrUndefined(result) ? undefined : result[key];\n    }, object);\n    return isUndefined(result) || result === object\n        ? isUndefined(object[path])\n            ? defaultValue\n            : object[path]\n        : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n    let index = -1;\n    const tempPath = isKey(path) ? [path] : stringToPath(path);\n    const length = tempPath.length;\n    const lastIndex = length - 1;\n    while (++index < length) {\n        const key = tempPath[index];\n        let newValue = value;\n        if (index !== lastIndex) {\n            const objValue = object[key];\n            newValue =\n                isObject(objValue) || Array.isArray(objValue)\n                    ? objValue\n                    : !isNaN(+tempPath[index + 1])\n                        ? []\n                        : {};\n        }\n        if (PROTOTYPE_KEYWORDS.includes(key)) {\n            return;\n        }\n        object[key] = newValue;\n        object = object[key];\n    }\n};\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = React.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => React.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n    const result = {};\n    for (const key in formState) {\n        Object.defineProperty(result, key, {\n            get: () => {\n                const _key = key;\n                if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n                    control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n                }\n                localProxyFormState && (localProxyFormState[_key] = true);\n                return formState[_key];\n            },\n        });\n    }\n    return result;\n};\n\nconst useIsomorphicLayoutEffect = isWeb\n    ? React.useLayoutEffect\n    : React.useEffect;\n\nvar isPlainObject = (tempObject) => {\n    const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n    return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nconst isEmptyObjectWithCustomPrototype = (object, keys) => keys.length === 0 && !Array.isArray(object) && !isPlainObject(object);\nfunction deepEqual(object1, object2, isErrorObject = false, visited = new WeakMap()) {\n    if (object1 === object2) {\n        return true;\n    }\n    if (isPrimitive(object1) || isPrimitive(object2)) {\n        return Object.is(object1, object2);\n    }\n    if (isDateObject(object1) && isDateObject(object2)) {\n        return Object.is(object1.getTime(), object2.getTime());\n    }\n    const keys1 = Object.keys(object1);\n    const keys2 = Object.keys(object2);\n    if (keys1.length !== keys2.length) {\n        return false;\n    }\n    if (isEmptyObjectWithCustomPrototype(object1, keys1) ||\n        isEmptyObjectWithCustomPrototype(object2, keys2)) {\n        return Object.is(object1, object2);\n    }\n    if (!keys1.length && Array.isArray(object1) !== Array.isArray(object2)) {\n        return false;\n    }\n    const visitedPairs = visited.get(object1);\n    if (visitedPairs && visitedPairs.has(object2)) {\n        return true;\n    }\n    if (visitedPairs) {\n        visitedPairs.add(object2);\n    }\n    else {\n        const ws = new WeakSet();\n        ws.add(object2);\n        visited.set(object1, ws);\n    }\n    for (const key of keys1) {\n        const val1 = object1[key];\n        if (!(key in object2)) {\n            return false;\n        }\n        if (!isErrorObject || key !== 'ref') {\n            const val2 = object2[key];\n            if ((isDateObject(val1) && isDateObject(val2)) ||\n                ((isObject(val1) || Array.isArray(val1)) &&\n                    (isObject(val2) || Array.isArray(val2)))\n                ? !deepEqual(val1, val2, isErrorObject, visited)\n                : !Object.is(val1, val2)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\nfunction useResyncOnReconnect(getInitialValue) {\n    const _connected = React.useRef(false);\n    const _initialized = React.useRef(false);\n    const _prevValue = React.useRef(undefined);\n    const _renderCount = React.useRef(0);\n    _renderCount.current++;\n    if (!_initialized.current && getInitialValue) {\n        _initialized.current = true;\n        _prevValue.current = cloneObject(getInitialValue());\n    }\n    const resyncIfNeeded = React.useCallback((enabled, getCurrentValue, setValue) => {\n        if (enabled &&\n            (_connected.current ||\n                (_initialized.current && _renderCount.current > 1))) {\n            const currentValue = getCurrentValue();\n            if (!deepEqual(_prevValue.current, currentValue)) {\n                setValue(currentValue);\n            }\n        }\n        _connected.current = true;\n    }, []);\n    const snapshot = React.useCallback((enabled, getCurrentValue) => {\n        if (enabled) {\n            _prevValue.current = cloneObject(getCurrentValue());\n        }\n    }, []);\n    return { resyncIfNeeded, snapshot };\n}\n\n/**\n * Subscribes to form state with re-renders isolated to this hook.\n * Optionally scope to specific field names to minimize re-render surface.\n *\n * @see [API](https://react-hook-form.com/docs/useformstate)\n *\n * @example\n * ```tsx\n * const { errors, isDirty } = useFormState({ control, name: \"email\" });\n * ```\n */\nfunction useFormState(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, disabled, name, exact } = props || {};\n    const getCurrentFormState = () => ({\n        ...control._formState,\n        defaultValues: control._defaultValues,\n    });\n    const [formState, updateFormState] = React.useState(getCurrentFormState);\n    const _localProxyFormState = React.useRef({\n        isDirty: false,\n        isLoading: false,\n        dirtyFields: false,\n        touchedFields: false,\n        validatingFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    });\n    const { resyncIfNeeded, snapshot } = useResyncOnReconnect(getCurrentFormState);\n    useIsomorphicLayoutEffect(() => {\n        resyncIfNeeded(!disabled, getCurrentFormState, updateFormState);\n        const unsubscribe = control._subscribe({\n            name,\n            formState: _localProxyFormState.current,\n            exact,\n            callback: (formState) => {\n                !disabled &&\n                    updateFormState({\n                        ...control._formState,\n                        ...formState,\n                        defaultValues: control._defaultValues,\n                    });\n            },\n        });\n        return () => {\n            unsubscribe();\n            snapshot(!disabled, getCurrentFormState);\n        };\n    }, [control, name, disabled, exact, resyncIfNeeded, snapshot]);\n    React.useEffect(() => {\n        _localProxyFormState.current.isValid && control._setValid(true);\n    }, [control]);\n    return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n    if (isString(names)) {\n        isGlobal && _names.watch.add(names);\n        return get(formValues, names, defaultValue);\n    }\n    if (Array.isArray(names)) {\n        return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n            get(formValues, fieldName, get(defaultValue, fieldName))));\n    }\n    isGlobal && (_names.watchAll = true);\n    return formValues;\n};\n\n/**\n * Subscribes to field value changes and isolates re-renders to the hook level.\n *\n * @see [API](https://react-hook-form.com/docs/usewatch)\n *\n * @example\n * ```tsx\n * const email = useWatch({ control, name: \"email\" });\n * const all   = useWatch({ control });\n * const adult = useWatch({ control, name: \"age\", compute: (v) => v >= 18 });\n * ```\n */\nfunction useWatch(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n    const _defaultValue = React.useRef(defaultValue);\n    const _compute = React.useRef(compute);\n    const _prevControl = React.useRef(control);\n    const _prevName = React.useRef(name);\n    _compute.current = compute;\n    const getInitialOutput = () => {\n        const defaultValue = control._getWatch(name, _defaultValue.current);\n        return _compute.current ? _compute.current(defaultValue) : defaultValue;\n    };\n    const [value, updateValue] = React.useState(getInitialOutput);\n    const _computeFormValues = React.useRef(value);\n    const getCurrentOutput = React.useCallback((values) => {\n        const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n        return _compute.current ? _compute.current(formValues) : formValues;\n    }, [control._formValues, control._names, name]);\n    const refreshValue = React.useCallback((values) => {\n        if (!disabled) {\n            const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n            if (_compute.current) {\n                const computedFormValues = _compute.current(formValues);\n                if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n                    updateValue(computedFormValues);\n                    _computeFormValues.current = computedFormValues;\n                }\n            }\n            else {\n                updateValue(formValues);\n            }\n        }\n    }, [control._formValues, control._names, disabled, name]);\n    const { resyncIfNeeded, snapshot } = useResyncOnReconnect(getInitialOutput);\n    const _refreshValue = React.useRef(refreshValue);\n    _refreshValue.current = refreshValue;\n    const _getCurrentOutput = React.useRef(getCurrentOutput);\n    _getCurrentOutput.current = getCurrentOutput;\n    useIsomorphicLayoutEffect(() => {\n        if (_prevControl.current !== control ||\n            !deepEqual(_prevName.current, name)) {\n            _prevControl.current = control;\n            _prevName.current = name;\n            _refreshValue.current();\n        }\n        else {\n            resyncIfNeeded(!disabled, () => _getCurrentOutput.current(), (currentValue) => {\n                const nextValue = cloneObject(currentValue);\n                updateValue(nextValue);\n                _computeFormValues.current = nextValue;\n            });\n        }\n        const unsubscribe = control._subscribe({\n            name,\n            formState: {\n                values: true,\n            },\n            exact,\n            callback: (formState) => {\n                _refreshValue.current(formState.values);\n            },\n        });\n        return () => {\n            unsubscribe();\n            snapshot(!disabled, () => _getCurrentOutput.current());\n        };\n    }, [control, exact, name, disabled, resyncIfNeeded, snapshot]);\n    React.useEffect(() => control._removeUnmounted());\n    // If name or control changed for this render, synchronously reflect the\n    // latest value so callers (like useController) see the correct value\n    // immediately on the same render.\n    // Optimize: Check control reference first before expensive deepEqual\n    const controlChanged = _prevControl.current !== control;\n    const prevName = _prevName.current;\n    // `null`/`undefined` are valid watched values, so a boolean flag (rather\n    // than a sentinel return value) decides whether to return the freshly\n    // computed output instead of the possibly-stale state value.\n    const shouldReturnImmediate = React.useMemo(() => {\n        if (disabled) {\n            return false;\n        }\n        const nameChanged = !controlChanged && !deepEqual(prevName, name);\n        return controlChanged || nameChanged;\n    }, [disabled, controlChanged, name, prevName]);\n    return shouldReturnImmediate ? getCurrentOutput() : value;\n}\n\n/**\n * Hook for controlled inputs. Returns `field`, `fieldState`, and `formState`.\n * Re-renders are isolated to the hook level.\n *\n * @see [API](https://react-hook-form.com/docs/usecontroller)\n *\n * @example\n * ```tsx\n * const { field, fieldState } = useController({ control, name: \"email\" });\n * return <input {...field} />;\n * ```\n */\nfunction useController(props) {\n    const formControl = useFormControlContext();\n    const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n    const isArrayField = isNameInFieldArray(control._names.array, name);\n    const defaultValueMemo = React.useMemo(() => {\n        const resolved = get(control._formValues, name, get(control._defaultValues, name, defaultValue));\n        return isUndefined(resolved)\n            ? getNullAncestorValue(control, name)\n            : resolved;\n    }, [control, name, defaultValue]);\n    const value = useWatch({\n        control,\n        name,\n        defaultValue: defaultValueMemo,\n        exact,\n    });\n    const formState = useFormState({\n        control,\n        name,\n        exact,\n    });\n    const _props = React.useRef(props);\n    const _proxyRef = React.useRef(null);\n    const _registerProps = React.useRef(control.register(name, {\n        ...props.rules,\n        value,\n        ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n    }));\n    _props.current = props;\n    const fieldState = React.useMemo(() => Object.defineProperties({}, {\n        invalid: {\n            enumerable: true,\n            get: () => !!get(formState.errors, name),\n        },\n        isDirty: {\n            enumerable: true,\n            get: () => !!get(formState.dirtyFields, name),\n        },\n        isTouched: {\n            enumerable: true,\n            get: () => !!get(formState.touchedFields, name),\n        },\n        isValidating: {\n            enumerable: true,\n            get: () => !!get(formState.validatingFields, name),\n        },\n        error: {\n            enumerable: true,\n            get: () => get(formState.errors, name),\n        },\n    }), [formState, name]);\n    const onChange = React.useCallback((event) => {\n        const value = getEventValue(event);\n        if (!get(control._fields, name)) {\n            _registerProps.current = control.register(name, {\n                ..._props.current.rules,\n                value,\n            });\n        }\n        return _registerProps.current.onChange({\n            target: {\n                value: getEventValue(event),\n                name: name,\n            },\n            type: EVENTS.CHANGE,\n        });\n    }, [name, control]);\n    const onBlur = React.useCallback(() => {\n        const value = get(control._formValues, name);\n        if (!get(control._fields, name)) {\n            _registerProps.current = control.register(name, {\n                ..._props.current.rules,\n                value,\n            });\n        }\n        return _registerProps.current.onBlur({\n            target: {\n                value,\n                name: name,\n            },\n            type: EVENTS.BLUR,\n        });\n    }, [name, control]);\n    const ref = React.useCallback((elm) => {\n        if (elm) {\n            _proxyRef.current = {\n                focus: () => isFunction(elm.focus) && elm.focus(),\n                select: () => isFunction(elm.select) && elm.select(),\n                setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n                reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n            };\n        }\n        const field = get(control._fields, name);\n        if (field && field._f && elm) {\n            field._f.ref = _proxyRef.current;\n            field._f._c = true;\n        }\n    }, [control._fields, name]);\n    const field = React.useMemo(() => ({\n        name,\n        value,\n        ...(isBoolean(disabled) || formState.disabled\n            ? { disabled: formState.disabled || disabled }\n            : {}),\n        onChange,\n        onBlur,\n        ref,\n    }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n    React.useEffect(() => {\n        const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n        _registerProps.current = control.register(name, {\n            ..._props.current.rules,\n            ...(isBoolean(_props.current.disabled)\n                ? { disabled: _props.current.disabled }\n                : {}),\n        });\n        const updateMounted = (name, value) => {\n            const field = get(control._fields, name);\n            if (field && field._f) {\n                field._f.mount = value;\n                field._f._c = value;\n            }\n        };\n        updateMounted(name, true);\n        if (_shouldUnregisterField) {\n            const value = cloneObject(get(shouldUnregister\n                ? control._defaultValues\n                : control._options.values || control._defaultValues, name, get(control._options.defaultValues, name, _props.current.defaultValue)));\n            set(control._defaultValues, name, value);\n            if (isUndefined(get(control._formValues, name))) {\n                set(control._formValues, name, value);\n            }\n        }\n        !isArrayField &&\n            control.register(name, {\n                ..._props.current.rules,\n                ...(isBoolean(_props.current.disabled)\n                    ? { disabled: _props.current.disabled }\n                    : {}),\n            });\n        if (_proxyRef.current) {\n            const field = get(control._fields, name);\n            if (field && field._f) {\n                field._f.ref = _proxyRef.current;\n            }\n        }\n        return () => {\n            (isArrayField\n                ? _shouldUnregisterField && !control._state.action\n                : _shouldUnregisterField)\n                ? control.unregister(name)\n                : updateMounted(name, false);\n        };\n    }, [name, control, isArrayField, shouldUnregister]);\n    React.useEffect(() => {\n        control._setDisabledField({\n            disabled,\n            name,\n        });\n    }, [disabled, name, control]);\n    return React.useMemo(() => ({\n        field,\n        formState,\n        fieldState,\n    }), [field, formState, fieldState]);\n}\n\n/**\n * Component wrapper around `useController` for controlled inputs.\n *\n * @see [API](https://react-hook-form.com/docs/usecontroller/controller)\n *\n * @example\n * ```tsx\n * <Controller\n *   control={control}\n *   name=\"test\"\n *   render={({ field, fieldState, formState }) => <input {...field} />}\n * />\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\n/**\n * Displays the validation error for a single field.\n * Reads from `control` when provided, otherwise from the nearest `FormProvider`.\n *\n * @see [API](https://react-hook-form.com/docs/useformstate/errormessage)\n *\n * @example\n * ```tsx\n * <ErrorMessage control={control} name=\"email\" as=\"p\" />\n * <ErrorMessage name=\"email\" as=\"span\" />\n * <ErrorMessage control={control} name=\"email\"\n *   render={({ message }) => <Alert>{message}</Alert>} />\n * ```\n */\nconst ErrorMessage = ({ as, control, name, render, }) => {\n    const { errors } = useFormState({\n        control,\n        name: name,\n    });\n    const error = get(errors, name);\n    if (!error) {\n        return null;\n    }\n    const message = error.message || '';\n    if (render) {\n        return render({ message, messages: error.types });\n    }\n    return React.createElement(as || React.Fragment, null, message);\n};\n\nvar generateId = () => typeof crypto !== 'undefined' && crypto.randomUUID\n    ? crypto.randomUUID()\n    : 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        const r = (Math.random() * 16) | 0;\n        return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n    ? options.focusName ||\n        `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n    : '';\n\nvar getValidationModes = (mode) => ({\n    isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n    isOnBlur: mode === VALIDATION_MODE.onBlur,\n    isOnChange: mode === VALIDATION_MODE.onChange,\n    isOnAll: mode === VALIDATION_MODE.all,\n    isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nvar isWatched = (name, _names, isBlurEvent) => {\n    if (isBlurEvent)\n        return false;\n    if (_names.watchAll || _names.watch.has(name))\n        return true;\n    for (const watchName of _names.watch) {\n        if (name.startsWith(watchName) && name.charAt(watchName.length) === '.')\n            return true;\n    }\n    return false;\n};\n\nconst iterateFieldsByAction = (fields, action, fieldsNames) => {\n    for (const key of fieldsNames || Object.keys(fields)) {\n        if (key === '_f') {\n            continue;\n        }\n        const field = fieldsNames ? get(fields, key) : fields[key];\n        if (field) {\n            const { _f } = field;\n            if (_f) {\n                if (_f.refs && _f.refs[0] && action(_f.refs[0], _f.name)) {\n                    return true;\n                }\n                else if (_f.ref && action(_f.ref, _f.name)) {\n                    return true;\n                }\n                else {\n                    if (iterateFieldsByAction(field, action)) {\n                        return true;\n                    }\n                }\n            }\n            else if (isObject(field) || Array.isArray(field)) {\n                if (iterateFieldsByAction(field, action)) {\n                    return true;\n                }\n            }\n        }\n    }\n    return;\n};\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n    const existingErrors = get(errors, name);\n    const fieldArrayErrors = Array.isArray(existingErrors) ? existingErrors : [];\n    set(fieldArrayErrors, ROOT_ERROR_TYPE, error[name]);\n    set(errors, name, fieldArrayErrors);\n    return errors;\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isHTMLElement = (value) => {\n    if (!isWeb) {\n        return false;\n    }\n    const owner = value ? value.ownerDocument : 0;\n    return (value instanceof\n        (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n    ? {\n        ...errors[name],\n        types: {\n            ...(errors[name] && errors[name].types ? errors[name].types : {}),\n            [type]: message || true,\n        },\n    }\n    : {};\n\nconst defaultResult = {\n    value: false,\n    isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n    if (!Array.isArray(options)) {\n        return defaultResult;\n    }\n    if (options.length > 1) {\n        const values = options\n            .filter((option) => option && option.checked && !option.disabled)\n            .map((option) => option.value);\n        return { value: values, isValid: !!values.length };\n    }\n    const option = options[0];\n    if (!option || !option.checked || option.disabled) {\n        return defaultResult;\n    }\n    if (!option.attributes || !('value' in option.attributes)) {\n        return validResult;\n    }\n    return isUndefined(option.value) || option.value === ''\n        ? validResult\n        : { value: option.value, isValid: true };\n};\n\nconst defaultReturn = {\n    isValid: false,\n    value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n    ? options.reduce((previous, option) => option && option.checked && !option.disabled\n        ? {\n            isValid: true,\n            value: option.value,\n        }\n        : previous, defaultReturn)\n    : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\n    if (isString(result) ||\n        (Array.isArray(result) && result.every(isString)) ||\n        (isBoolean(result) && !result)) {\n        return {\n            type,\n            message: isString(result) ? result : '',\n            ref,\n        };\n    }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n    ? validationData\n    : {\n        value: validationData,\n        message: '',\n    };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n    const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, _c, } = field._f;\n    const inputValue = get(formValues, name);\n    if (!mount || disabledFieldNames.has(name)) {\n        return {};\n    }\n    const inputRef = refs ? refs[0] : ref;\n    const setCustomValidity = (message) => {\n        if (shouldUseNativeValidation && inputRef.reportValidity) {\n            const validityMessage = isBoolean(message) ? '' : message || '';\n            if (refs) {\n                refs.forEach((ref) => isFunction(ref.setCustomValidity) &&\n                    ref.setCustomValidity(validityMessage));\n            }\n            else {\n                inputRef.setCustomValidity(validityMessage);\n            }\n            inputRef.reportValidity();\n        }\n    };\n    const error = {};\n    const isRadio = isRadioInput(ref);\n    const isCheckBox = isCheckBoxInput(ref);\n    const isRadioOrCheckbox = isRadio || isCheckBox;\n    const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n        isUndefined(ref.value) &&\n        isUndefined(inputValue)) ||\n        (isHTMLElement(ref) && ref.value === '' && !_c) ||\n        inputValue === '' ||\n        (Array.isArray(inputValue) && !inputValue.length);\n    const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n    const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n        const message = exceedMax ? maxLengthMessage : minLengthMessage;\n        error[name] = {\n            type: exceedMax ? maxType : minType,\n            message,\n            ref,\n            ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n        };\n    };\n    if (isFieldArray\n        ? !Array.isArray(inputValue) || !inputValue.length\n        : required &&\n            ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n                (isBoolean(inputValue) && !inputValue) ||\n                (isCheckBox && !getCheckboxValue(refs).isValid) ||\n                (isRadio && !getRadioValue(refs).isValid))) {\n        const { value, message } = isString(required)\n            ? { value: !!required, message: required }\n            : getValueAndMessage(required);\n        if (value) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.required,\n                message,\n                ref: inputRef,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n        let exceedMax;\n        let exceedMin;\n        const maxOutput = getValueAndMessage(max);\n        const minOutput = getValueAndMessage(min);\n        if (!isNullOrUndefined(inputValue) &&\n            !isDateObject(inputValue) &&\n            !isNaN(inputValue)) {\n            const valueNumber = ref.valueAsNumber ||\n                (inputValue ? +inputValue : inputValue);\n            if (!isNullOrUndefined(maxOutput.value)) {\n                exceedMax = valueNumber > maxOutput.value;\n            }\n            if (!isNullOrUndefined(minOutput.value)) {\n                exceedMin = valueNumber < minOutput.value;\n            }\n        }\n        else {\n            const valueDate = ref.valueAsDate || new Date(inputValue);\n            const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n            const isTime = ref.type == 'time';\n            const isWeek = ref.type == 'week';\n            if (isString(maxOutput.value) && inputValue) {\n                exceedMax = isTime\n                    ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n                    : isWeek\n                        ? inputValue > maxOutput.value\n                        : valueDate > new Date(maxOutput.value);\n            }\n            if (isString(minOutput.value) && inputValue) {\n                exceedMin = isTime\n                    ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n                    : isWeek\n                        ? inputValue < minOutput.value\n                        : valueDate < new Date(minOutput.value);\n            }\n        }\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if ((maxLength || minLength) &&\n        !isEmpty &&\n        (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n        const maxLengthOutput = getValueAndMessage(maxLength);\n        const minLengthOutput = getValueAndMessage(minLength);\n        const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n            inputValue.length > +maxLengthOutput.value;\n        const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n            inputValue.length < +minLengthOutput.value;\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if (pattern && !isEmpty && isString(inputValue)) {\n        const { value: patternValue, message } = getValueAndMessage(pattern);\n        if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.pattern,\n                message,\n                ref,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (validate) {\n        if (isFunction(validate)) {\n            const result = await validate(inputValue, formValues);\n            const validateError = getValidateError(result, inputRef);\n            if (validateError) {\n                error[name] = {\n                    ...validateError,\n                    ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n                };\n                if (!validateAllFieldCriteria) {\n                    setCustomValidity(validateError.message);\n                    return error;\n                }\n            }\n        }\n        else if (isObject(validate)) {\n            let validationResult = {};\n            for (const key in validate) {\n                if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n                    break;\n                }\n                const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n                if (validateError) {\n                    validationResult = {\n                        ...validateError,\n                        ...appendErrorsCurry(key, validateError.message),\n                    };\n                    if (!validateAllFieldCriteria) {\n                        setCustomValidity(validateError.message);\n                    }\n                    if (validateAllFieldCriteria) {\n                        error[name] = validationResult;\n                    }\n                }\n            }\n            if (!isEmptyObject(validationResult)) {\n                error[name] = {\n                    ref: inputRef,\n                    ...validationResult,\n                };\n                if (!validateAllFieldCriteria) {\n                    return error;\n                }\n            }\n        }\n    }\n    const fieldError = error[name];\n    setCustomValidity(fieldError ? fieldError.message : true);\n    return error;\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar appendAt = (data, value) => [\n    ...data,\n    ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n    return [\n        ...data.slice(0, index),\n        ...convertToArrayPayload(value),\n        ...data.slice(index),\n    ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n    if (!Array.isArray(data)) {\n        return [];\n    }\n    if (isUndefined(data[to])) {\n        data[to] = undefined;\n    }\n    data.splice(to, 0, data.splice(from, 1)[0]);\n    return data;\n};\n\nvar prependAt = (data, value) => [\n    ...convertToArrayPayload(value),\n    ...convertToArrayPayload(data),\n];\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nfunction removeAtIndexes(data, indexes) {\n    let i = 0;\n    const temp = [...data];\n    for (const index of indexes) {\n        temp.splice(index - i, 1);\n        i++;\n    }\n    return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n    ? []\n    : removeAtIndexes(data, [...new Set(convertToArrayPayload(index))].sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n    [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nfunction baseGet(object, updatePath) {\n    const length = updatePath.length - 1;\n    let index = 0;\n    while (index < length) {\n        if (isNullOrUndefined(object)) {\n            object = undefined;\n            break;\n        }\n        object = object[updatePath[index]];\n        index++;\n    }\n    return object;\n}\nfunction isEmptyArray(obj) {\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction unset(object, path) {\n    if (isString(path) && Object.prototype.hasOwnProperty.call(object, path)) {\n        delete object[path];\n        return object;\n    }\n    const paths = Array.isArray(path)\n        ? path\n        : isKey(path)\n            ? [path]\n            : stringToPath(path);\n    if (paths.some((segment) => PROTOTYPE_KEYWORDS.includes(String(segment)))) {\n        return object;\n    }\n    const childObject = paths.length === 1 ? object : baseGet(object, paths);\n    const index = paths.length - 1;\n    const key = paths[index];\n    if (childObject) {\n        delete childObject[key];\n    }\n    if (index !== 0 &&\n        ((isObject(childObject) && isEmptyObject(childObject)) ||\n            (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n        unset(object, paths.slice(0, -1));\n    }\n    return object;\n}\n\nvar updateAt = (fieldValues, index, value) => {\n    fieldValues[index] = value;\n    return fieldValues;\n};\n\n/**\n * Hook for dynamic field arrays. Provides `fields` and mutation methods:\n * `append`, `prepend`, `remove`, `insert`, `swap`, `move`, `update`, `replace`.\n *\n * @see [API](https://react-hook-form.com/docs/usefieldarray)\n *\n * @example\n * ```tsx\n * const { fields, append } = useFieldArray({ control, name: \"items\" });\n * return fields.map((f, i) => <input key={f.id} {...register(`items.${i}.name`)} />);\n * ```\n */\nfunction useFieldArray(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, name, keyName = 'id', disabled, shouldUnregister, rules, } = props;\n    const getCurrentFieldArray = () => control._getFieldArray(name);\n    const [fields, setFields] = React.useState(getCurrentFieldArray);\n    const ids = React.useRef(control._getFieldArray(name).map(generateId));\n    const _actioned = React.useRef(false);\n    const { resyncIfNeeded, snapshot } = useResyncOnReconnect(getCurrentFieldArray);\n    const _prevControl = React.useRef(control);\n    const _prevName = React.useRef(name);\n    if (!disabled) {\n        control._names.array.add(name);\n    }\n    React.useMemo(() => !disabled &&\n        rules &&\n        fields.length >= 0 &&\n        control.register(name, rules), [control, name, fields.length, rules, disabled]);\n    useIsomorphicLayoutEffect(() => {\n        if (disabled) {\n            return;\n        }\n        if (_prevControl.current === control && _prevName.current === name) {\n            resyncIfNeeded(true, getCurrentFieldArray, (fieldValues) => {\n                setFields(fieldValues);\n                ids.current = fieldValues.map(generateId);\n            });\n        }\n        else {\n            _prevControl.current = control;\n            _prevName.current = name;\n            const fieldValues = getCurrentFieldArray();\n            if (!deepEqual(fields, fieldValues)) {\n                setFields(fieldValues);\n                ids.current = fieldValues.map(generateId);\n            }\n            snapshot(true, getCurrentFieldArray);\n        }\n        const unsubscribe = control._subjects.array.subscribe({\n            next: ({ values, name: fieldArrayName, }) => {\n                if (fieldArrayName === name || !fieldArrayName) {\n                    const fieldValues = get(values, name);\n                    if (Array.isArray(fieldValues)) {\n                        setFields(fieldValues);\n                        ids.current = fieldValues.map(generateId);\n                    }\n                    else if (!fieldArrayName) {\n                        setFields([]);\n                        ids.current = [];\n                    }\n                }\n            },\n        }).unsubscribe;\n        return () => {\n            unsubscribe();\n            snapshot(true, getCurrentFieldArray);\n        };\n    }, [control, name, disabled, resyncIfNeeded, snapshot]);\n    const updateValues = React.useCallback((updatedFieldArrayValues) => {\n        _actioned.current = true;\n        control._setFieldArray(name, updatedFieldArrayValues);\n    }, [control, name]);\n    const append = (value, options) => {\n        if (disabled) {\n            return;\n        }\n        const appendValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n        control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n        ids.current = appendAt(ids.current, appendValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const prepend = (value, options) => {\n        if (disabled) {\n            return;\n        }\n        const prependValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n        control._names.focus = getFocusFieldName(name, 0, options);\n        ids.current = prependAt(ids.current, prependValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const remove = (index) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n        ids.current = removeArrayAt(ids.current, index);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        !Array.isArray(get(control._fields, name)) &&\n            set(control._fields, name, undefined);\n        control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n            argA: index,\n        });\n    };\n    const insert$1 = (index, value, options) => {\n        if (disabled) {\n            return;\n        }\n        const insertValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n        control._names.focus = getFocusFieldName(name, index, options);\n        ids.current = insert(ids.current, index, insertValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, insert, {\n            argA: index,\n            argB: fillEmptyArray(value),\n        });\n    };\n    const swap = (indexA, indexB) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n        swapArrayAt(ids.current, indexA, indexB);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n            argA: indexA,\n            argB: indexB,\n        }, false);\n    };\n    const move = (from, to) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        moveArrayAt(updatedFieldArrayValues, from, to);\n        moveArrayAt(ids.current, from, to);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n            argA: from,\n            argB: to,\n        }, false);\n    };\n    const update = (index, value) => {\n        if (disabled) {\n            return;\n        }\n        const updateValue = cloneObject(value);\n        const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n        ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n        updateValues(updatedFieldArrayValues);\n        setFields([...updatedFieldArrayValues]);\n        control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n            argA: index,\n            argB: fillEmptyArray(value),\n        });\n    };\n    const replace = (value) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n        ids.current = updatedFieldArrayValues.map(generateId);\n        updateValues([...updatedFieldArrayValues]);\n        setFields([...updatedFieldArrayValues]);\n        control._setFieldArray(name, [...updatedFieldArrayValues], (data) => Array.isArray(data)\n            ? data.slice(0, updatedFieldArrayValues.length)\n            : data, {});\n    };\n    React.useEffect(() => {\n        if (disabled) {\n            control._state.actionArrayLengths.delete(name);\n            return;\n        }\n        control._state.action = false;\n        control._state.actionArrayLengths.delete(name);\n        isWatched(name, control._names) &&\n            control._subjects.state.next({\n                ...control._formState,\n            });\n        const validationModes = getValidationModes(control._options.mode);\n        if (_actioned.current &&\n            (!validationModes.isOnSubmit || control._formState.isSubmitted) &&\n            !getValidationModes(control._options.reValidateMode).isOnSubmit &&\n            !validationModes.isOnBlur) {\n            if (control._options.resolver) {\n                control._runSchema([name]).then((result) => {\n                    control._updateIsValidating([name]);\n                    const error = get(result.errors, name);\n                    const existingError = get(control._formState.errors, name);\n                    const existingErrorType = existingError &&\n                        (existingError.type ||\n                            (existingError.root && existingError.root.type));\n                    const existingErrorMessage = existingError &&\n                        (existingError.message ||\n                            (existingError.root && existingError.root.message));\n                    if (existingError\n                        ? (!error && existingErrorType) ||\n                            (error &&\n                                (existingErrorType !== error.type ||\n                                    existingErrorMessage !== error.message))\n                        : error && error.type) {\n                        if (error) {\n                            isObject(error) &&\n                                !Object.keys(error).some((key) => !Number.isNaN(+key))\n                                ? updateFieldArrayRootError(control._formState.errors, { [name]: error }, name)\n                                : set(control._formState.errors, name, error);\n                        }\n                        else {\n                            unset(control._formState.errors, name);\n                        }\n                        control._formState.errors = { ...control._formState.errors };\n                        control._subjects.state.next({\n                            errors: control._formState.errors,\n                        });\n                    }\n                });\n            }\n            else {\n                const field = get(control._fields, name);\n                if (field && field._f) {\n                    validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => {\n                        if (!isEmptyObject(error)) {\n                            updateFieldArrayRootError(control._formState.errors, error, name);\n                            control._formState.errors = { ...control._formState.errors };\n                            control._subjects.state.next({\n                                errors: control._formState.errors,\n                            });\n                        }\n                        else {\n                            const existingError = get(control._formState.errors, name);\n                            if (existingError && existingError[ROOT_ERROR_TYPE]) {\n                                unset(control._formState.errors, `${name}.${ROOT_ERROR_TYPE}`);\n                                control._formState.errors = { ...control._formState.errors };\n                                control._subjects.state.next({\n                                    errors: control._formState\n                                        .errors,\n                                });\n                            }\n                        }\n                    });\n                }\n            }\n        }\n        // External updates that change `fields` (e.g. reset() or setValue() on\n        // the array) already notify subscribers with the up-to-date values\n        // themselves, so only re-broadcast here for genuine array method calls.\n        _actioned.current &&\n            control._subjects.state.next({\n                name,\n                values: cloneObject(control._formValues),\n            });\n        control._names.focus &&\n            iterateFieldsByAction(control._fields, (ref, key) => {\n                if (control._names.focus &&\n                    key.startsWith(control._names.focus) &&\n                    ref.focus) {\n                    ref.focus();\n                    return 1;\n                }\n                return;\n            });\n        control._names.focus = '';\n        control._setValid();\n        _actioned.current = false;\n    }, [fields, name, control, disabled]);\n    React.useEffect(() => {\n        if (!disabled) {\n            isUndefined(get(control._formValues, name)) &&\n                control._setFieldArray(name);\n        }\n        return () => {\n            control._state.actionArrayLengths.delete(name);\n            if (disabled) {\n                return;\n            }\n            const shouldKeepFieldArrayValues = !(control._options.shouldUnregister || shouldUnregister);\n            const updateMounted = (name, value) => {\n                const field = get(control._fields, name);\n                if (field && field._f) {\n                    field._f.mount = value;\n                }\n            };\n            if (_actioned.current && shouldKeepFieldArrayValues) {\n                control._subjects.state.next({\n                    name,\n                    values: cloneObject(control._formValues),\n                });\n            }\n            if (!shouldKeepFieldArrayValues && control._state.action) {\n                return;\n            }\n            shouldKeepFieldArrayValues\n                ? updateMounted(name, false)\n                : control.unregister(name);\n        };\n    }, [name, control, keyName, shouldUnregister, disabled]);\n    return {\n        swap: React.useCallback(swap, [updateValues, name, control, disabled]),\n        move: React.useCallback(move, [updateValues, name, control, disabled]),\n        prepend: React.useCallback(prepend, [\n            updateValues,\n            name,\n            control,\n            disabled,\n        ]),\n        append: React.useCallback(append, [updateValues, name, control, disabled]),\n        remove: React.useCallback(remove, [updateValues, name, control, disabled]),\n        insert: React.useCallback(insert$1, [updateValues, name, control, disabled]),\n        update: React.useCallback(update, [updateValues, name, control, disabled]),\n        replace: React.useCallback(replace, [\n            updateValues,\n            name,\n            control,\n            disabled,\n        ]),\n        fields: React.useMemo(() => fields.map((field, index) => ({\n            ...field,\n            ...(isBoolean(disabled) ? { disabled } : {}),\n            [keyName]: ids.current[index] || generateId(),\n        })), [fields, keyName, disabled]),\n    };\n}\n\n/**\n * Component based on `useFieldArray` hook to work with controlled component.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control, register } = useForm<FormValues>({\n *     defaultValues: {\n *       test: [\n *         {\n *           value: '',\n *         },\n *       ],\n *     },\n *   });\n *\n *   return (\n *     <form>\n *       <FieldArray\n *         control={control}\n *         name=\"test\"\n *         render={({ fields }) =>\n *           fields.map((field, index) => (\n *             <input key={field.id} {...register(`test.${index}.value`)} />\n *           ))\n *         }\n *       />\n *     </form>\n *   );\n * }\n * ```\n */\nconst FieldArray = (props) => props.render(useFieldArray(props));\n\nconst isFileLike = (value) => (typeof Blob !== 'undefined' && value instanceof Blob) ||\n    (typeof File !== 'undefined' && value instanceof File);\nconst isFileListLike = (value) => typeof FileList !== 'undefined' && value instanceof FileList;\nconst flatten = (obj) => {\n    const output = {};\n    for (const key of Object.keys(obj)) {\n        if (isObjectType(obj[key]) &&\n            obj[key] !== null &&\n            !isDateObject(obj[key]) &&\n            !isFileLike(obj[key]) &&\n            !isFileListLike(obj[key])) {\n            const nested = flatten(obj[key]);\n            for (const nestedKey of Object.keys(nested)) {\n                output[`${key}.${nestedKey}`] = nested[nestedKey];\n            }\n        }\n        else {\n            output[key] = obj[key];\n        }\n    }\n    return output;\n};\n\nfunction jsonToFormData(json) {\n    const result = new FormData();\n    const flattenFormValues = flatten(json);\n    for (const key in flattenFormValues) {\n        const value = flattenFormValues[key];\n        if (isUndefined(value)) {\n            continue;\n        }\n        if (typeof FileList !== 'undefined' && value instanceof FileList) {\n            for (let index = 0; index < value.length; index++) {\n                const file = value[index];\n                file && result.append(key, file);\n            }\n            continue;\n        }\n        result.append(key, value);\n    }\n    return result;\n}\n\nfunction safeJSONStringify(value) {\n    try {\n        return JSON.stringify(value);\n    }\n    catch (_a) {\n        return '';\n    }\n}\n\nfunction noop() { }\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * Retrieves all `useForm` methods from the nearest `FormProvider`.\n * Use in deeply nested components to avoid prop-drilling.\n *\n * @see [API](https://react-hook-form.com/docs/useformcontext)\n *\n * @example\n * ```tsx\n * const { register } = useFormContext<FormValues>();\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * Provides all `useForm` methods to the component tree via React Context.\n * Pair with `useFormContext` to consume them in any descendant.\n *\n * @see [API](https://react-hook-form.com/docs/useformcontext)\n *\n * @example\n * ```tsx\n * <FormProvider {...methods}>\n *   <form onSubmit={methods.handleSubmit(onSubmit)}>{children}</form>\n * </FormProvider>\n * ```\n */\nconst FormProvider = ({ children, watch, getValues, getErrors, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, resetDefaultValues, handleSubmit, unregister, control, register, setFocus, subscribe, }) => {\n    const memoizedValue = React.useMemo(() => ({\n        watch,\n        getValues,\n        getErrors,\n        getFieldState,\n        setError,\n        clearErrors,\n        setValue,\n        setValues,\n        trigger,\n        formState,\n        resetField,\n        reset,\n        resetDefaultValues,\n        handleSubmit,\n        unregister,\n        control,\n        register,\n        setFocus,\n        subscribe,\n    }), [\n        clearErrors,\n        control,\n        formState,\n        getErrors,\n        getFieldState,\n        getValues,\n        handleSubmit,\n        register,\n        reset,\n        resetDefaultValues,\n        resetField,\n        setError,\n        setFocus,\n        setValue,\n        setValues,\n        subscribe,\n        trigger,\n        unregister,\n        watch,\n    ]);\n    return (React.createElement(HookFormContext.Provider, { value: memoizedValue },\n        React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));\n};\n\nconst POST_REQUEST = 'post';\nfunction defaultValidateStatus(status) {\n    return status >= 200 && status < 300;\n}\n/**\n * Form component that handles submission, including optional `action` fetch and server error wiring.\n *\n * @see [API](https://react-hook-form.com/docs/useform/form)\n *\n * @example\n * ```tsx\n * <Form action=\"/api\" control={control}>\n *   <input {...register(\"name\")} />\n *   <p>{errors?.root?.server && 'Server error'}</p>\n *   <button>Submit</button>\n * </Form>\n * ```\n */\nfunction Form(props) {\n    const methods = useFormContext();\n    const [mounted, setMounted] = React.useState(false);\n    const { control = methods.control, onSubmit = noop, children, action, method = POST_REQUEST, headers, encType, onError = noop, render, onSuccess = noop, validateStatus = defaultValidateStatus, ...rest } = props;\n    const handleSubmit = React.useMemo(() => {\n        return control.handleSubmit(async (data, event) => {\n            const formData = jsonToFormData(data);\n            const formDataJson = safeJSONStringify(data);\n            if (onSubmit) {\n                await onSubmit({\n                    data,\n                    event,\n                    method,\n                    formData,\n                    formDataJson,\n                });\n            }\n            if (isString(action)) {\n                try {\n                    const shouldStringifySubmissionData = (headers &&\n                        headers['Content-Type'] &&\n                        headers['Content-Type'].includes('json')) ||\n                        (encType && encType.includes('json'));\n                    const response = await fetch(action, {\n                        method,\n                        headers: {\n                            ...headers,\n                            ...(encType &&\n                                encType !== 'multipart/form-data' && {\n                                'Content-Type': encType,\n                            }),\n                        },\n                        body: shouldStringifySubmissionData ? formDataJson : formData,\n                    });\n                    if (response && !validateStatus(response.status)) {\n                        onError({ response });\n                        return { type: String(response.status) };\n                    }\n                    else {\n                        onSuccess({ response });\n                    }\n                }\n                catch (error) {\n                    onError({ error });\n                    return { type: '' };\n                }\n            }\n            if (isFunction(action)) {\n                try {\n                    await action(formData);\n                }\n                catch (error) {\n                    onError({ error });\n                    return { type: '' };\n                }\n            }\n            // Return nothing when successful.\n            return;\n        });\n    }, [\n        control,\n        onSubmit,\n        method,\n        action,\n        headers,\n        encType,\n        validateStatus,\n        onError,\n        onSuccess,\n    ]);\n    const submit = React.useCallback(async (event) => {\n        const err = await handleSubmit(event);\n        if (err && control) {\n            control._subjects.state.next({ isSubmitSuccessful: false });\n            control.setError('root.server', err);\n        }\n    }, [handleSubmit, control]);\n    React.useEffect(() => {\n        setMounted(true);\n    }, []);\n    if (render) {\n        return render({ submit });\n    }\n    // React forbids passing `method`/`encType` alongside a function `action`\n    // (a Server-Action-style submission) -- it manages those itself and warns\n    // if they're present, so they're only rendered for string/URL actions.\n    return (React.createElement(\"form\", { noValidate: mounted, action: action, ...(!isFunction(action) && { method, encType }), onSubmit: submit, ...rest }, children));\n}\n\nconst FormState = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n/** @deprecated Use `FormState` instead. Kept as an alias for backward compatibility. */\nconst FormStateSubscribe = FormState;\n\nvar createSubject = () => {\n    let _observers = new Set();\n    let _iterationCount = 0;\n    const next = (value) => {\n        const observers = _observers;\n        _iterationCount++;\n        for (const observer of observers) {\n            observer.next && observer.next(value);\n        }\n        observers === _observers && _iterationCount--;\n    };\n    const subscribe = (observer) => {\n        _observers.add(observer);\n        return {\n            unsubscribe: () => {\n                if (_iterationCount) {\n                    _observers = new Set(_observers);\n                    _iterationCount = 0;\n                }\n                _observers.delete(observer);\n            },\n        };\n    };\n    const unsubscribe = () => {\n        _observers = new Set();\n        _iterationCount = 0;\n    };\n    return {\n        get observers() {\n            return Array.from(_observers);\n        },\n        next,\n        subscribe,\n        unsubscribe,\n    };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n    const values = (Array.isArray(fieldsState) ? [] : {});\n    for (const key in fieldsState) {\n        if (Object.prototype.hasOwnProperty.call(fieldsState, key)) {\n            const fieldState = fieldsState[key];\n            const fieldValue = formValues[key];\n            if (fieldState &&\n                (isObject(fieldState) || Array.isArray(fieldState)) &&\n                fieldValue) {\n                values[key] = extractFormValues(fieldState, fieldValue);\n            }\n            else if (fieldsState[key]) {\n                values[key] = fieldValue;\n            }\n        }\n    }\n    return values;\n}\n\nconst hasOwn = (value, key) => value !== null &&\n    isObjectType(value) &&\n    Object.prototype.hasOwnProperty.call(value, key);\nvar has = (object, path) => {\n    if (!path) {\n        return false;\n    }\n    let result = object;\n    for (const key of isKey(path) ? [path] : stringToPath(path)) {\n        if (!hasOwn(result, key)) {\n            // `get` also resolves a path held as a single literal key, eg `{ 'a.b': 1 }`\n            return hasOwn(object, path);\n        }\n        result = result[key];\n    }\n    return true;\n};\n\nvar isEdited = (ref) => isCheckBoxInput(ref)\n    ? ref.checked !== ref.defaultChecked\n    : !isRadioInput(ref) &&\n        'defaultValue' in ref &&\n        ref.value !== ref.defaultValue;\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction isDirtyContainer(value) {\n    return Array.isArray(value) || isObject(value);\n}\nfunction collectDirtyFieldNames(dirtyTree, cachedDirtyFields, prefix = '', names = []) {\n    for (const key in dirtyTree) {\n        const path = prefix ? `${prefix}.${key}` : key;\n        const value = dirtyTree[key];\n        if (isDirtyContainer(value) &&\n            isDirtyContainer(get(cachedDirtyFields, path))) {\n            collectDirtyFieldNames(value, cachedDirtyFields, path, names);\n        }\n        else {\n            names.push(path);\n        }\n    }\n    return names;\n}\n\nvar objectHasFunction = (data) => {\n    for (const key in data) {\n        if (isFunction(data[key])) {\n            return true;\n        }\n    }\n    return false;\n};\n\nfunction isTraversable(value) {\n    return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction isRegisteredLeaf(fieldRef) {\n    return !!(fieldRef && '_f' in fieldRef);\n}\nfunction isEmptyDirtyContainer(value) {\n    return Array.isArray(value)\n        ? !value.some((item) => !isUndefined(item))\n        : !Object.keys(value).length;\n}\nfunction clearDirtyField(container, key) {\n    if (Array.isArray(container)) {\n        container[key] = undefined;\n    }\n    else {\n        delete container[key];\n    }\n}\nfunction markFieldsDirty(data, fields = {}, fieldRefs) {\n    for (const key in data) {\n        const value = data[key];\n        const fieldRef = fieldRefs && fieldRefs[key];\n        if (isTraversable(value) &&\n            (!Array.isArray(value) || !isRegisteredLeaf(fieldRef))) {\n            fields[key] = Array.isArray(value) ? [] : {};\n            markFieldsDirty(value, fields[key], fieldRef);\n            if (isEmptyDirtyContainer(fields[key])) {\n                clearDirtyField(fields, key);\n            }\n        }\n        else if (!isUndefined(value)) {\n            fields[key] = true;\n        }\n    }\n    return fields;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues, fieldRefs) {\n    if (!dirtyFieldsFromValues) {\n        dirtyFieldsFromValues = markFieldsDirty(formValues, Array.isArray(formValues) ? [] : {}, fieldRefs);\n    }\n    for (const key in data) {\n        const value = data[key];\n        const fieldRef = fieldRefs && fieldRefs[key];\n        if (isTraversable(value) &&\n            (!Array.isArray(value) || !isRegisteredLeaf(fieldRef))) {\n            if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n                dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {}, fieldRef);\n            }\n            else {\n                getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key], fieldRef);\n            }\n            if (isEmptyDirtyContainer(dirtyFieldsFromValues[key])) {\n                clearDirtyField(dirtyFieldsFromValues, key);\n            }\n        }\n        else if (deepEqual(value, formValues[key])) {\n            clearDirtyField(dirtyFieldsFromValues, key);\n        }\n        else {\n            dirtyFieldsFromValues[key] = true;\n        }\n    }\n    return dirtyFieldsFromValues;\n}\n\nvar getFieldArrayItemNames = (names, name) => {\n    const segments = name.split('.');\n    const matches = [];\n    let prefix = segments[0];\n    for (let i = 1; i < segments.length; prefix += '.' + segments[i++]) {\n        if (!isNaN(+segments[i]) && names.has(prefix)) {\n            matches.push(`${prefix}.${segments[i]}`);\n        }\n    }\n    return matches;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n    ? value\n    : valueAsNumber\n        ? value === ''\n            ? NaN\n            : value\n                ? +value\n                : value\n        : valueAsDate && isString(value)\n            ? new Date(value)\n            : setValueAs\n                ? setValueAs(value)\n                : value;\n\nfunction getFieldValue(_f) {\n    const ref = _f.ref;\n    if (isFileInput(ref)) {\n        return ref.files;\n    }\n    if (isRadioInput(ref)) {\n        return getRadioValue(_f.refs).value;\n    }\n    if (isMultipleSelect(ref)) {\n        return [...ref.selectedOptions].map(({ value }) => value);\n    }\n    if (isCheckBoxInput(ref)) {\n        return getCheckboxValue(_f.refs).value;\n    }\n    return getFieldValueAs(ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n    const fields = {};\n    for (const name of fieldsNames) {\n        const field = get(_fields, name);\n        field && set(fields, name, field._f);\n    }\n    return {\n        criteriaMode,\n        names: [...fieldsNames],\n        fields,\n        shouldUseNativeValidation,\n    };\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\n    ? rule\n    : isRegex(rule)\n        ? rule.source\n        : isObject(rule)\n            ? isRegex(rule.value)\n                ? rule.value.source\n                : rule.value\n            : rule;\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => {\n    if (!fieldReference || !fieldReference.validate)\n        return false;\n    if (isFunction(fieldReference.validate)) {\n        return fieldReference.validate.constructor.name === ASYNC_FUNCTION;\n    }\n    if (isObject(fieldReference.validate)) {\n        for (const key in fieldReference.validate) {\n            if (fieldReference.validate[key].constructor\n                .name === ASYNC_FUNCTION) {\n                return true;\n            }\n        }\n    }\n    return false;\n};\n\nvar hasValidation = (options) => options.mount &&\n    (options.required ||\n        (!isUndefined(options.required) && options.required !== false) ||\n        !isUndefined(options.min) ||\n        !isUndefined(options.max) ||\n        !isUndefined(options.maxLength) ||\n        !isUndefined(options.minLength) ||\n        options.pattern ||\n        options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\n    const error = get(errors, name);\n    if ((error && (error.type || error.message)) || Array.isArray(error)) {\n        return {\n            error,\n            name,\n        };\n    }\n    const names = name.split('.');\n    while (names.length) {\n        const fieldName = names.join('.');\n        const field = get(_fields, fieldName);\n        const foundError = get(errors, fieldName);\n        if (field && !Array.isArray(field) && name !== fieldName) {\n            return { name };\n        }\n        if (foundError && foundError.type) {\n            return {\n                name: fieldName,\n                error: foundError,\n            };\n        }\n        if (foundError && foundError.root && foundError.root.type) {\n            return {\n                name: `${fieldName}.root`,\n                error: foundError.root,\n            };\n        }\n        names.pop();\n    }\n    return {\n        name,\n    };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, isRoot) => {\n    const keys = Object.keys(formStateData).filter((key) => key !== 'name');\n    return (!keys.length ||\n        (isRoot && keys.length >= Object.keys(_proxyFormState).length) ||\n        keys.find((key) => _proxyFormState[key] ===\n            (!isRoot || VALIDATION_MODE.all)));\n};\n\nconst isNameMatch = (currentName, signalName, exact) => exact\n    ? currentName === signalName || currentName.startsWith(signalName + '.')\n    : currentName.startsWith(signalName) || signalName.startsWith(currentName);\nvar shouldSubscribeByName = (name, signalName, exact) => {\n    if (!name || !signalName || name === signalName) {\n        return true;\n    }\n    if (!Array.isArray(name)) {\n        return isNameMatch(name, signalName, exact);\n    }\n    for (const currentName of name) {\n        if (currentName && isNameMatch(currentName, signalName, exact)) {\n            return true;\n        }\n    }\n    return false;\n};\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n    if (mode.isOnAll) {\n        return false;\n    }\n    else if (!isSubmitted && mode.isOnTouch) {\n        return !(isTouched || isBlurEvent);\n    }\n    else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n        return !isBlurEvent;\n    }\n    else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n        return isBlurEvent;\n    }\n    return true;\n};\n\nvar unsetEmptyArray = (ref, name) => {\n    const array = get(ref, name);\n    !compact(array).length &&\n        !(array && array.root) &&\n        unset(ref, name);\n};\n\nconst defaultOptions = {\n    mode: VALIDATION_MODE.onSubmit,\n    reValidateMode: VALIDATION_MODE.onChange,\n    shouldFocusError: true,\n};\nconst replaceDirtyFieldsInPlace = (dirtyFields, nextDirtyFields) => {\n    for (const key in dirtyFields) {\n        delete dirtyFields[key];\n    }\n    Object.assign(dirtyFields, nextDirtyFields);\n};\nconst DEFAULT_FORM_STATE = {\n    submitCount: 0,\n    isDirty: false,\n    isReady: false,\n    isValidating: false,\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    touchedFields: {},\n    dirtyFields: {},\n    validatingFields: {},\n};\nfunction createFormControl(props = {}) {\n    let _options = {\n        ...defaultOptions,\n        ...props,\n    };\n    let _formState = {\n        ...cloneObject(DEFAULT_FORM_STATE),\n        isLoading: isFunction(_options.defaultValues),\n        errors: _options.errors || {},\n        disabled: _options.disabled || false,\n    };\n    let _fields = {};\n    let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n        ? cloneObject(_options.defaultValues || _options.values) || {}\n        : {};\n    let _formValues = _options.shouldUnregister\n        ? {}\n        : cloneObject(_defaultValues);\n    let _state = {\n        action: false,\n        actionArrayLengths: new Map(),\n        mount: false,\n        watch: false,\n        keepIsValid: false,\n    };\n    let _dirtyFieldsStale = false;\n    let _names = {\n        mount: new Set(),\n        disabled: new Set(),\n        unMount: new Set(),\n        array: new Set(),\n        watch: new Set(),\n        registerName: new Set(),\n    };\n    const delayErrorCallbacks = {};\n    const timers = {};\n    const _valuesSubscribers = new Set();\n    let _validationModeBeforeSubmit = getValidationModes(_options.mode);\n    let _validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n    const defaultProxyFormState = {\n        isDirty: false,\n        dirtyFields: false,\n        validatingFields: false,\n        touchedFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    };\n    const _proxyFormState = {\n        ...defaultProxyFormState,\n    };\n    const _proxySubscribeFormState = {};\n    const _isTracked = (...keys) => keys.some((key) => _proxyFormState[key] || _proxySubscribeFormState[key]);\n    const _hasValuesSubscriber = (name) => {\n        for (const subscriber of _valuesSubscribers) {\n            if (shouldSubscribeByName(subscriber.name, name, subscriber.exact)) {\n                return true;\n            }\n        }\n        return false;\n    };\n    const _subjects = {\n        array: createSubject(),\n        state: createSubject(),\n    };\n    let _setValidCallId = 0;\n    let _resetCallId = 0;\n    let shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n    const debounce = (name, callback) => (wait) => {\n        clearTimeout(timers[name]);\n        timers[name] = setTimeout(callback, wait);\n    };\n    const cancelDelayedError = (name) => {\n        clearTimeout(timers[name]);\n        delete timers[name];\n        delete delayErrorCallbacks[name];\n    };\n    const cancelDelayedErrorTree = (name) => {\n        cancelDelayedError(name);\n        const prefix = `${name}.`;\n        for (const key of Object.keys(delayErrorCallbacks)) {\n            key.startsWith(prefix) && cancelDelayedError(key);\n        }\n    };\n    const _setValid = async (shouldUpdateValid) => {\n        if (_state.keepIsValid) {\n            return;\n        }\n        if (!_options.disabled && (_isTracked('isValid') || shouldUpdateValid)) {\n            const callId = ++_setValidCallId;\n            let isValid;\n            if (_options.resolver) {\n                isValid = isEmptyObject((await _runSchema()).errors);\n                callId === _setValidCallId && _updateIsValidating();\n            }\n            else {\n                isValid = await executeBuiltInValidation({\n                    fields: _fields,\n                    onlyCheckValid: true,\n                    eventType: EVENTS.VALID,\n                });\n            }\n            if (callId === _setValidCallId && isValid !== _formState.isValid) {\n                _subjects.state.next({\n                    isValid,\n                });\n            }\n        }\n    };\n    const _updateIsValidating = (names, isValidating) => {\n        if (!_options.disabled && _isTracked('isValidating', 'validatingFields')) {\n            (names || _names.mount).forEach((name) => {\n                if (name) {\n                    isValidating\n                        ? set(_formState.validatingFields, name, isValidating)\n                        : unset(_formState.validatingFields, name);\n                }\n            });\n            _subjects.state.next({\n                validatingFields: _formState.validatingFields,\n                isValidating: !isEmptyObject(_formState.validatingFields),\n            });\n        }\n    };\n    const _updateDirtyFields = () => {\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues, undefined, _fields);\n    };\n    const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n        if (args && method && !_options.disabled) {\n            _state.action = true;\n            const fields = get(_fields, name);\n            if (!_state.actionArrayLengths.has(name)) {\n                _state.actionArrayLengths.set(name, Array.isArray(fields) ? fields.length : 0);\n            }\n            if (shouldUpdateFieldsAndState && Array.isArray(fields)) {\n                const fieldValues = method(fields, args.argA, args.argB);\n                shouldSetValues && set(_fields, name, fieldValues);\n            }\n            const fieldArrayErrors = get(_formState.errors, name);\n            if (shouldUpdateFieldsAndState && Array.isArray(fieldArrayErrors)) {\n                const rootError = fieldArrayErrors.root;\n                const errors = method(fieldArrayErrors, args.argA, args.argB) || fieldArrayErrors;\n                if (rootError) {\n                    errors.root = rootError;\n                }\n                shouldSetValues && set(_formState.errors, name, errors);\n                unsetEmptyArray(_formState.errors, name);\n                _formState.errors = { ..._formState.errors };\n            }\n            const touchedFieldsArray = get(_formState.touchedFields, name);\n            const shouldUpdateTouchedFields = shouldUpdateFieldsAndState && Array.isArray(touchedFieldsArray);\n            if (shouldUpdateTouchedFields) {\n                const touchedFields = method(touchedFieldsArray, args.argA, args.argB);\n                shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n            }\n            const dirtyFieldsArray = get(_formState.dirtyFields, name);\n            if (shouldUpdateFieldsAndState && Array.isArray(dirtyFieldsArray)) {\n                const dirtyFields = method(dirtyFieldsArray, args.argA, args.argB) || dirtyFieldsArray;\n                shouldSetValues && set(_formState.dirtyFields, name, dirtyFields);\n            }\n            if (_isTracked('dirtyFields')) {\n                _updateDirtyFields();\n            }\n            else {\n                _dirtyFieldsStale = true;\n            }\n            _subjects.state.next({\n                name,\n                isDirty: _getDirty(name, values),\n                dirtyFields: _formState.dirtyFields,\n                ...(shouldUpdateTouchedFields && {\n                    touchedFields: _formState.touchedFields,\n                }),\n                errors: _formState.errors,\n                isValid: _formState.isValid,\n            });\n        }\n        else {\n            set(_formValues, name, values);\n        }\n    };\n    const updateErrors = (name, error) => {\n        set(_formState.errors, name, error);\n        _formState.errors = { ..._formState.errors };\n        _subjects.state.next({\n            errors: _formState.errors,\n        });\n    };\n    const _setErrors = (errors) => {\n        Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n        const hasErrors = !isEmptyObject(errors);\n        _formState.errors = errors;\n        _subjects.state.next({\n            errors: _formState.errors,\n            ...(hasErrors ? { isValid: false } : {}),\n        });\n        !hasErrors && _state.mount && _setValid();\n    };\n    const hasExplicitNullIntermediate = (name) => {\n        const segments = isKey(name) ? [name] : stringToPath(name);\n        let formValues = _formValues;\n        let defaultValues = _defaultValues;\n        for (let i = 0; i < segments.length - 1; i++) {\n            const key = segments[i];\n            formValues = isNullOrUndefined(formValues) ? formValues : formValues[key];\n            defaultValues = isNullOrUndefined(defaultValues)\n                ? defaultValues\n                : defaultValues[key];\n            if (formValues === null && defaultValues !== null) {\n                return true;\n            }\n        }\n        return false;\n    };\n    const isStaleArrayField = (name) => {\n        if (!_state.actionArrayLengths.size) {\n            return false;\n        }\n        const segments = isKey(name) ? [name] : stringToPath(name);\n        let node = _formValues;\n        let path = '';\n        let ownerDepth = -1;\n        let ownerPreActionLength = 0;\n        for (let i = 0; i < segments.length; i++) {\n            if (isNullOrUndefined(node)) {\n                return false;\n            }\n            const key = segments[i];\n            path = path ? `${path}.${key}` : key;\n            if (Array.isArray(node) && +key >= node.length) {\n                return ownerDepth === -1\n                    ? false\n                    : i === ownerDepth\n                        ? +key < ownerPreActionLength\n                        : true;\n            }\n            if (_state.actionArrayLengths.has(path)) {\n                ownerDepth = i + 1;\n                ownerPreActionLength = _state.actionArrayLengths.get(path);\n            }\n            node = node[key];\n            if (isUndefined(node) &&\n                ownerDepth !== -1 &&\n                i > ownerDepth &&\n                +segments[ownerDepth] < ownerPreActionLength) {\n                return true;\n            }\n        }\n        return false;\n    };\n    const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n        const field = get(_fields, name);\n        if (field) {\n            if (hasExplicitNullIntermediate(name) || isStaleArrayField(name)) {\n                return;\n            }\n            const wasUnsetInFormValues = isUndefined(get(_formValues, name));\n            const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n            const isEditedBeforeReady = !!ref && !_formState.isReady && isEdited(ref);\n            if (isUndefined(defaultValue) ||\n                (ref && ref.defaultChecked) ||\n                isEditedBeforeReady ||\n                shouldSkipSetValueAs) {\n                const fieldValue = shouldSkipSetValueAs\n                    ? defaultValue\n                    : getFieldValue(field._f);\n                if (_isTracked('dirtyFields') &&\n                    !deepEqual(get(_formValues, name), fieldValue)) {\n                    _dirtyFieldsStale = true;\n                }\n                set(_formValues, name, fieldValue);\n                if (isEditedBeforeReady) {\n                    updateTouchAndDirty(name, fieldValue);\n                }\n            }\n            else {\n                setFieldValue(name, defaultValue);\n            }\n            if (_state.mount && !_state.action) {\n                if (_options.resolver &&\n                    _isTracked('isValidating', 'validatingFields')) {\n                    Promise.resolve().then(() => _setValid());\n                }\n                else {\n                    _setValid();\n                }\n                if (wasUnsetInFormValues &&\n                    _formState.isDirty &&\n                    _isTracked('isDirty')) {\n                    const isDirty = _getDirty();\n                    if (!isDirty) {\n                        _formState.isDirty = false;\n                        _subjects.state.next({ ..._formState });\n                    }\n                }\n                if (_options.shouldUnregister &&\n                    wasUnsetInFormValues &&\n                    !isUndefined(get(_formValues, name)) &&\n                    isWatched(name, _names)) {\n                    _state.watch = true;\n                }\n            }\n        }\n    };\n    const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n        let shouldUpdateField = false;\n        let isPreviousDirty = false;\n        const output = {\n            name,\n        };\n        // an explicit programmatic update (e.g. setValue with shouldDirty: true)\n        // opts into dirty tracking even when the form is disabled\n        if (!_options.disabled || shouldDirty === true) {\n            if (!isBlurEvent || shouldDirty) {\n                const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n                if (_isTracked('isDirty')) {\n                    isPreviousDirty = _formState.isDirty;\n                    _formState.isDirty = output.isDirty =\n                        !isCurrentFieldPristine || _getDirty();\n                    shouldUpdateField = isPreviousDirty !== output.isDirty;\n                }\n                isPreviousDirty = !!get(_formState.dirtyFields, name);\n                if (isCurrentFieldPristine) {\n                    unset(_formState.dirtyFields, name);\n                }\n                else {\n                    const defaultFieldValue = get(_defaultValues, name);\n                    const field = get(_fields, name);\n                    const dirtyValue = !(field && field._f) &&\n                        (isObject(defaultFieldValue) || Array.isArray(defaultFieldValue))\n                        ? getDirtyFields(defaultFieldValue, fieldValue, undefined, field)\n                        : true;\n                    set(_formState.dirtyFields, name, dirtyValue);\n                }\n                let didResyncDirtyFields = false;\n                if (_dirtyFieldsStale ||\n                    (isCurrentFieldPristine &&\n                        (_isTracked('isDirty') ? _formState.isDirty : _getDirty()))) {\n                    _dirtyFieldsStale = false;\n                    const nextDirtyFields = getDirtyFields(_defaultValues, _formValues, undefined, _fields);\n                    if (!deepEqual(_formState.dirtyFields, nextDirtyFields)) {\n                        didResyncDirtyFields = true;\n                        replaceDirtyFieldsInPlace(_formState.dirtyFields, nextDirtyFields);\n                    }\n                }\n                output.dirtyFields = _formState.dirtyFields;\n                shouldUpdateField =\n                    shouldUpdateField ||\n                        (_isTracked('dirtyFields') &&\n                            (didResyncDirtyFields ||\n                                isPreviousDirty !== !isCurrentFieldPristine));\n            }\n            if (isBlurEvent) {\n                const isPreviousFieldTouched = has(_formState.touchedFields, name)\n                    ? get(_formState.touchedFields, name)\n                    : undefined;\n                if (!isPreviousFieldTouched) {\n                    set(_formState.touchedFields, name, isBlurEvent);\n                    output.touchedFields = _formState.touchedFields;\n                    shouldUpdateField =\n                        shouldUpdateField ||\n                            (_isTracked('touchedFields') &&\n                                isPreviousFieldTouched !== isBlurEvent);\n                }\n            }\n            shouldUpdateField && shouldRender && _subjects.state.next(output);\n        }\n        return shouldUpdateField ? output : {};\n    };\n    const shouldRenderByError = (name, isValid, error, fieldState) => {\n        const previousFieldError = get(_formState.errors, name);\n        const shouldUpdateValid = _isTracked('isValid') &&\n            isBoolean(isValid) &&\n            _formState.isValid !== isValid;\n        if (_options.delayError && error) {\n            delayErrorCallbacks[name] = debounce(name, () => updateErrors(name, error));\n            delayErrorCallbacks[name](_options.delayError);\n        }\n        else {\n            cancelDelayedError(name);\n            error\n                ? set(_formState.errors, name, error)\n                : unset(_formState.errors, name);\n            _formState.errors = { ..._formState.errors };\n        }\n        if ((error\n            ? !deepEqual(previousFieldError, error, true)\n            : previousFieldError) ||\n            !isEmptyObject(fieldState) ||\n            shouldUpdateValid) {\n            const updatedFormState = {\n                ...fieldState,\n                ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n                errors: _formState.errors,\n                name,\n            };\n            _subjects.state.next(updatedFormState);\n        }\n    };\n    const _runSchema = async (name) => {\n        _updateIsValidating(name, true);\n        return await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n    };\n    const executeSchemaAndUpdateState = async (names) => {\n        const resetCallId = _resetCallId;\n        const { errors } = await _runSchema(names);\n        if (resetCallId !== _resetCallId) {\n            return errors;\n        }\n        _updateIsValidating(names);\n        if (names) {\n            for (const name of names) {\n                const error = get(errors, name);\n                cancelDelayedErrorTree(name);\n                const isFieldArrayRootError = _names.array.has(name) &&\n                    isObject(error) &&\n                    !Object.keys(error).some((key) => !Number.isNaN(Number(key)));\n                const field = get(_fields, name);\n                const hasNestedFields = isObject(field) && Object.keys(field).some((key) => key !== '_f');\n                isFieldArrayRootError\n                    ? updateFieldArrayRootError(_formState.errors, { [name]: error }, name)\n                    : (error && (error.type || error.message)) ||\n                        Array.isArray(error) ||\n                        (isObject(error) && hasNestedFields)\n                        ? set(_formState.errors, name, error)\n                        : unset(_formState.errors, name);\n            }\n            _formState.errors = { ..._formState.errors };\n        }\n        else {\n            Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n            _formState.errors = errors;\n        }\n        return errors;\n    };\n    const validateForm = async ({ name, eventType, }) => {\n        if (_options.validate) {\n            const resetCallId = _resetCallId;\n            const result = await _options.validate({\n                formValues: _formValues,\n                formState: _formState,\n                name,\n                eventType,\n            });\n            if (resetCallId !== _resetCallId) {\n                return true;\n            }\n            if (isObject(result)) {\n                let isValid = true;\n                clearErrors(FORM_ERROR_TYPE);\n                for (const key in result) {\n                    const error = result[key];\n                    if (error) {\n                        isValid = false;\n                        setError(`${FORM_ERROR_TYPE}.${key}`, {\n                            message: isString(error.message) ? error.message : '',\n                            type: error.type || INPUT_VALIDATION_RULES.validate,\n                        });\n                    }\n                }\n                return isValid;\n            }\n            else if (isString(result) || !result) {\n                setError(FORM_ERROR_TYPE, {\n                    message: result || '',\n                    type: INPUT_VALIDATION_RULES.validate,\n                });\n                return false;\n            }\n            else {\n                clearErrors(FORM_ERROR_TYPE);\n                return true;\n            }\n        }\n        return true;\n    };\n    const executeBuiltInValidation = async ({ fields, onlyCheckValid, name, eventType, context = {\n        valid: true,\n        runRootValidation: false,\n    }, }) => {\n        const resetCallId = _resetCallId;\n        if (_options.validate && !context.runRootValidation) {\n            context.runRootValidation = true;\n            const result = await validateForm({\n                name,\n                eventType,\n            });\n            if (!result) {\n                context.valid = false;\n                if (onlyCheckValid) {\n                    return context.valid;\n                }\n            }\n        }\n        for (const name in fields) {\n            const field = fields[name];\n            if (field) {\n                const { _f, ...fieldValue } = field;\n                if (_f) {\n                    const isFieldArrayRoot = _names.array.has(_f.name);\n                    const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n                    const shouldTrackIsValidatingState = _isTracked('isValidating', 'validatingFields');\n                    if (isPromiseFunction && shouldTrackIsValidatingState) {\n                        _updateIsValidating([_f.name], true);\n                    }\n                    const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !onlyCheckValid, isFieldArrayRoot);\n                    if (resetCallId !== _resetCallId) {\n                        return context.valid;\n                    }\n                    if (isPromiseFunction && shouldTrackIsValidatingState) {\n                        _updateIsValidating([_f.name]);\n                    }\n                    if (fieldError[_f.name]) {\n                        context.valid = false;\n                        if (onlyCheckValid) {\n                            break;\n                        }\n                    }\n                    if (!onlyCheckValid) {\n                        cancelDelayedError(_f.name);\n                        get(fieldError, _f.name)\n                            ? isFieldArrayRoot\n                                ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n                                : set(_formState.errors, _f.name, fieldError[_f.name])\n                            : unset(_formState.errors, _f.name);\n                    }\n                    if (_options.shouldUseNativeValidation && fieldError[_f.name]) {\n                        break;\n                    }\n                }\n                !isEmptyObject(fieldValue) &&\n                    (await executeBuiltInValidation({\n                        context,\n                        onlyCheckValid,\n                        fields: fieldValue,\n                        name: name,\n                        eventType,\n                    }));\n            }\n        }\n        return context.valid;\n    };\n    const _removeUnmounted = () => {\n        for (const name of _names.unMount) {\n            const field = get(_fields, name);\n            field &&\n                (field._f.refs\n                    ? field._f.refs.every((ref) => !live(ref))\n                    : !live(field._f.ref)) &&\n                unregister(name);\n        }\n        _names.unMount = new Set();\n    };\n    const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\n        !deepEqual(_state.mount ? _formValues : _defaultValues, _defaultValues));\n    const _getWatch = (names, defaultValue, isGlobal) => {\n        const values = _state.mount\n            ? _formValues\n            : isUndefined(defaultValue) || !isUndefined(names)\n                ? _defaultValues\n                : defaultValue;\n        return generateWatchOutput(names, _names, isUndefined(names) ? { ...values } : values, isGlobal, defaultValue);\n    };\n    const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n    const setFieldValue = (name, value, options = {}, skipClone = false, skipRender = false, skipValueRender = false) => {\n        const field = get(_fields, name);\n        let fieldValue = value;\n        if (field) {\n            const fieldReference = field._f;\n            if (fieldReference) {\n                !fieldReference.disabled &&\n                    set(_formValues, name, getFieldValueAs(value, fieldReference));\n                fieldValue =\n                    isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n                        ? ''\n                        : value;\n                if (isMultipleSelect(fieldReference.ref)) {\n                    [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n                }\n                else if (fieldReference.refs) {\n                    if (isCheckBoxInput(fieldReference.ref)) {\n                        fieldReference.refs.forEach((checkboxRef) => {\n                            if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n                                if (Array.isArray(fieldValue)) {\n                                    checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n                                }\n                                else {\n                                    checkboxRef.checked =\n                                        fieldValue === checkboxRef.value || !!fieldValue;\n                                }\n                            }\n                        });\n                    }\n                    else {\n                        fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n                    }\n                }\n                else if (isFileInput(fieldReference.ref)) {\n                    fieldReference.ref.value = '';\n                }\n                else {\n                    fieldReference.ref.value = fieldValue;\n                    if (!fieldReference.ref.type && !skipRender && !skipValueRender) {\n                        _subjects.state.next({\n                            name,\n                            values: skipClone\n                                ? _formValues\n                                : _hasValuesSubscriber(name)\n                                    ? cloneObject(_formValues)\n                                    : undefined,\n                        });\n                    }\n                }\n            }\n        }\n        (options.shouldDirty || options.shouldTouch) &&\n            updateTouchAndDirty(name, field &&\n                field._f &&\n                !field._f.disabled &&\n                (field._f.valueAsNumber ||\n                    field._f.valueAsDate ||\n                    field._f.setValueAs)\n                ? getFieldValueAs(value, field._f)\n                : fieldValue, options.shouldTouch, options.shouldDirty, !skipRender);\n        options.shouldValidate &&\n            trigger(name, {\n                delayError: options.delayError,\n            });\n        if (options.shouldValidate &&\n            field &&\n            field._f &&\n            field._f.deps &&\n            (!Array.isArray(field._f.deps) || field._f.deps.length > 0)) {\n            trigger(field._f.deps);\n        }\n    };\n    const setFieldValues = (name, value, options, skipClone = false, skipRender = false, skipValueRender = false) => {\n        if (_names.array.has(name)) {\n            _subjects.array.next({\n                name,\n                values: skipClone ? _formValues : cloneObject(_formValues),\n            });\n        }\n        for (const fieldKey in value) {\n            if (!value.hasOwnProperty(fieldKey)) {\n                continue;\n            }\n            const fieldValue = value[fieldKey];\n            const fieldName = name + '.' + fieldKey;\n            const field = get(_fields, fieldName);\n            (_names.array.has(name) ||\n                isObject(fieldValue) ||\n                (field && !field._f)) &&\n                !isDateObject(fieldValue)\n                ? setFieldValues(fieldName, fieldValue, options, skipClone, skipRender, skipValueRender)\n                : setFieldValue(fieldName, fieldValue, options, skipClone, skipRender, skipValueRender);\n        }\n    };\n    const _setValue = (name, value, options, skipClone, skipStateEmit = false) => {\n        const field = get(_fields, name);\n        const isFieldArray = _names.array.has(name);\n        const cloneValue = skipClone ? value : cloneObject(value);\n        const previousValue = get(_formValues, name);\n        const isValueUnchanged = deepEqual(previousValue, cloneValue);\n        if (!isValueUnchanged) {\n            set(_formValues, name, cloneValue);\n        }\n        if (isFieldArray) {\n            _subjects.array.next({\n                name,\n                values: skipClone ? _formValues : cloneObject(_formValues),\n            });\n            if (_isTracked('isDirty', 'dirtyFields') && options.shouldDirty) {\n                _updateDirtyFields();\n                if (!skipStateEmit) {\n                    _subjects.state.next({\n                        name,\n                        dirtyFields: _formState.dirtyFields,\n                        isDirty: _getDirty(name, cloneValue),\n                    });\n                }\n            }\n            options.shouldValidate &&\n                trigger(name, {\n                    delayError: options.delayError,\n                });\n        }\n        else {\n            const isEmpty = (Array.isArray(cloneValue) && !cloneValue.length) ||\n                isEmptyObject(cloneValue);\n            const skipValueRender = !isValueUnchanged && !skipStateEmit;\n            if (!field || field._f || isNullOrUndefined(cloneValue) || isEmpty) {\n                setFieldValue(name, cloneValue, options, skipClone, skipStateEmit, skipValueRender);\n            }\n            else {\n                setFieldValues(name, cloneValue, options, skipClone, skipStateEmit, skipValueRender);\n            }\n        }\n        if (!isValueUnchanged && !skipStateEmit) {\n            const watched = isWatched(name, _names);\n            const emittedName = _state.mount || watched ? name : undefined;\n            const fieldArrayItemNames = isFieldArray\n                ? []\n                : getFieldArrayItemNames(_names.array, name);\n            const values = skipClone\n                ? _formValues\n                : _hasValuesSubscriber(emittedName) ||\n                    fieldArrayItemNames.some(_hasValuesSubscriber)\n                    ? cloneObject(_formValues)\n                    : undefined;\n            _subjects.state.next({\n                ...(watched && _formState),\n                name: emittedName,\n                values,\n            });\n            for (const itemName of fieldArrayItemNames) {\n                _subjects.state.next({ name: itemName, values });\n            }\n        }\n    };\n    const setValue = (name, value, options = {}) => _setValue(name, value, options, false);\n    const setValues = (formValues, options = {}) => {\n        const updatedFormValues = isFunction(formValues)\n            ? formValues(_formValues)\n            : formValues;\n        if (!deepEqual(_formValues, updatedFormValues)) {\n            _formValues = {\n                ..._formValues,\n                ...updatedFormValues,\n            };\n            for (const fieldName of _names.mount) {\n                if (has(updatedFormValues, fieldName)) {\n                    _setValue(fieldName, get(updatedFormValues, fieldName), options, true, true);\n                }\n            }\n            _subjects.state.next({\n                ..._formState,\n                name: undefined,\n                type: undefined,\n                ...(_valuesSubscribers.size ? { values: _formValues } : {}),\n            });\n            if (options.shouldValidate) {\n                _setValid();\n            }\n        }\n    };\n    const onChange = async (event) => {\n        _state.mount = true;\n        const target = event.target;\n        let name = target.name;\n        let isFieldValueUpdated = true;\n        const field = get(_fields, name);\n        const _updateIsFieldValueUpdated = (fieldValue) => {\n            isFieldValueUpdated =\n                Number.isNaN(fieldValue) ||\n                    (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n                    deepEqual(fieldValue, get(_formValues, name, fieldValue));\n        };\n        if (field) {\n            let error;\n            let isValid;\n            const fieldValue = target.type\n                ? getFieldValue(field._f)\n                : getEventValue(event);\n            const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n            const hasNoValidationEffect = !hasValidation(field._f) &&\n                !_options.validate &&\n                !_options.resolver &&\n                !get(_formState.errors, name) &&\n                !field._f.deps;\n            const shouldSkipValidation = hasNoValidationEffect ||\n                skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, _validationModeAfterSubmit, _validationModeBeforeSubmit);\n            const watched = isWatched(name, _names, isBlurEvent);\n            set(_formValues, name, cloneObject(fieldValue));\n            if (isBlurEvent) {\n                if (!target || !target.readOnly) {\n                    field._f.onBlur && field._f.onBlur(event);\n                    if (Object.prototype.hasOwnProperty.call(delayErrorCallbacks, name)) {\n                        delayErrorCallbacks[name](0);\n                    }\n                }\n            }\n            else if (field._f.onChange) {\n                field._f.onChange(event);\n            }\n            const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n            const shouldRender = !isEmptyObject(fieldState) || watched;\n            !isBlurEvent &&\n                _subjects.state.next({\n                    name,\n                    type: event.type,\n                    ...(_hasValuesSubscriber(name)\n                        ? { values: cloneObject(_formValues) }\n                        : {}),\n                });\n            if (shouldSkipValidation) {\n                if ((!hasNoValidationEffect || !_formState.isValid) &&\n                    _isTracked('isValid')) {\n                    if (_options.mode === 'onBlur') {\n                        if (isBlurEvent) {\n                            _setValid();\n                        }\n                    }\n                    else if (!isBlurEvent) {\n                        _setValid();\n                    }\n                }\n                return (shouldRender &&\n                    _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n            }\n            if (!_options.resolver && _options.validate) {\n                await validateForm({\n                    name: name,\n                    eventType: event.type,\n                });\n            }\n            !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n            if (_options.resolver) {\n                const resetCallId = _resetCallId;\n                const { errors } = await _runSchema([name]);\n                if (resetCallId !== _resetCallId) {\n                    return;\n                }\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (!isFieldValueUpdated) {\n                    !isEmptyObject(fieldState) && _subjects.state.next(fieldState);\n                    return;\n                }\n                const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n                const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n                error = errorLookupResult.error;\n                name = errorLookupResult.name;\n                isValid = isEmptyObject(errors);\n            }\n            else {\n                const resetCallId = _resetCallId;\n                _updateIsValidating([name], true);\n                error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n                if (resetCallId !== _resetCallId) {\n                    return;\n                }\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (isFieldValueUpdated) {\n                    if (error) {\n                        isValid = false;\n                    }\n                    else if (_isTracked('isValid')) {\n                        isValid = await executeBuiltInValidation({\n                            fields: _fields,\n                            onlyCheckValid: true,\n                            name: name,\n                            eventType: event.type,\n                        });\n                        if (resetCallId !== _resetCallId) {\n                            return;\n                        }\n                    }\n                }\n            }\n            if (isFieldValueUpdated) {\n                field._f.deps &&\n                    (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n                    trigger(field._f.deps);\n                shouldRenderByError(name, isValid, error, fieldState);\n            }\n        }\n    };\n    const _focusInput = (ref, key) => {\n        if (get(_formState.errors, key) && ref.focus) {\n            ref.focus();\n            return 1;\n        }\n        return;\n    };\n    const trigger = async (name, options = {}) => {\n        let isValid;\n        let validationResult;\n        const fieldNames = convertToArrayPayload(name);\n        if (_options.resolver) {\n            const resetCallId = _resetCallId;\n            const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n            isValid = isEmptyObject(errors);\n            validationResult = name\n                ? !fieldNames.some((name) => get(errors, name))\n                : isValid;\n            if (resetCallId !== _resetCallId) {\n                return validationResult;\n            }\n        }\n        else if (name) {\n            validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n                const field = get(_fields, fieldName);\n                return await executeBuiltInValidation({\n                    fields: field && field._f ? { [fieldName]: field } : field,\n                    eventType: EVENTS.TRIGGER,\n                });\n            }))).every(Boolean);\n            !(!validationResult && !_formState.isValid) && _setValid();\n        }\n        else {\n            validationResult = isValid = await executeBuiltInValidation({\n                fields: _fields,\n                name,\n                eventType: EVENTS.TRIGGER,\n            });\n        }\n        if (options.delayError && _options.delayError && isString(name)) {\n            const error = get(_formState.errors, name);\n            if (error) {\n                unset(_formState.errors, name);\n                delayErrorCallbacks[name] = debounce(name, () => updateErrors(name, error));\n                delayErrorCallbacks[name](_options.delayError);\n            }\n            else {\n                cancelDelayedError(name);\n            }\n        }\n        if (options.shouldTouch) {\n            for (const fieldName of name ? fieldNames : _names.mount) {\n                !_names.array.has(fieldName) &&\n                    set(_formState.touchedFields, fieldName, true);\n            }\n        }\n        _formState.errors = { ..._formState.errors };\n        _subjects.state.next({\n            ...(!isString(name) ||\n                (_isTracked('isValid') && isValid !== _formState.isValid)\n                ? {}\n                : { name }),\n            ...(_options.resolver || !name ? { isValid } : {}),\n            ...(options.shouldTouch && _isTracked('touchedFields')\n                ? { touchedFields: _formState.touchedFields }\n                : {}),\n            errors: _formState.errors,\n        });\n        options.shouldFocus &&\n            !validationResult &&\n            iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n        return validationResult;\n    };\n    const getValues = (fieldNames, config) => {\n        let values = {\n            ...(_state.mount ? _formValues : _defaultValues),\n        };\n        if (config) {\n            values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n        }\n        return isUndefined(fieldNames)\n            ? values\n            : isString(fieldNames)\n                ? get(values, fieldNames)\n                : fieldNames.map((name) => get(values, name));\n    };\n    const getErrors = (fieldNames) => isUndefined(fieldNames)\n        ? { ..._formState.errors }\n        : isString(fieldNames)\n            ? get(_formState.errors, fieldNames)\n            : fieldNames.map((name) => get(_formState.errors, name));\n    const getFieldState = (name, formState) => {\n        const targetFormState = formState || _formState;\n        const error = get(targetFormState.errors, name);\n        return {\n            invalid: !!error,\n            isDirty: !!get(targetFormState.dirtyFields, name),\n            error,\n            isValidating: !!get(targetFormState.validatingFields, name),\n            isTouched: !!get(targetFormState.touchedFields, name),\n        };\n    };\n    const clearErrors = (name) => {\n        const names = name ? convertToArrayPayload(name) : undefined;\n        if (names) {\n            names.forEach((inputName) => {\n                cancelDelayedErrorTree(inputName);\n                unset(_formState.errors, inputName);\n                _formState.errors = { ..._formState.errors };\n                _subjects.state.next({\n                    name: inputName,\n                    errors: _formState.errors,\n                });\n            });\n        }\n        else {\n            Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n            _formState.errors = {};\n            _subjects.state.next({\n                errors: _formState.errors,\n            });\n        }\n    };\n    const setError = (name, error, options) => {\n        cancelDelayedErrorTree(name);\n        const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n        const currentError = get(_formState.errors, name) || {};\n        const { ref: currentRef, message, type, types, ...restOfErrorTree } = currentError;\n        set(_formState.errors, name, {\n            ...restOfErrorTree,\n            ...error,\n            ref,\n        });\n        _formState.errors = { ..._formState.errors };\n        _subjects.state.next({\n            name,\n            errors: _formState.errors,\n            isValid: false,\n        });\n        options && options.shouldFocus && ref && ref.focus && ref.focus();\n    };\n    const watch = (name, defaultValue) => {\n        if (isFunction(name)) {\n            const valuesSubscriber = {};\n            _valuesSubscribers.add(valuesSubscriber);\n            const { unsubscribe } = _subjects.state.subscribe({\n                next: (payload) => 'values' in payload &&\n                    name(payload.values || _getWatch(undefined, defaultValue), payload),\n            });\n            return {\n                unsubscribe: () => {\n                    _valuesSubscribers.delete(valuesSubscriber);\n                    unsubscribe();\n                },\n            };\n        }\n        return _getWatch(name, defaultValue, true);\n    };\n    const _subscribe = (props) => {\n        const valuesSubscriber = { name: props.name, exact: props.exact };\n        props.formState &&\n            props.formState.values &&\n            _valuesSubscribers.add(valuesSubscriber);\n        const { unsubscribe } = _subjects.state.subscribe({\n            next: (formState) => {\n                if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n                    shouldRenderFormState(formState, props.formState || _proxyFormState, props.reRenderRoot)) {\n                    const values = formState.values || { ..._formValues };\n                    props.callback({\n                        ..._formState,\n                        ...formState,\n                        values,\n                        defaultValues: _defaultValues,\n                    });\n                }\n            },\n        });\n        return () => {\n            _valuesSubscribers.delete(valuesSubscriber);\n            unsubscribe();\n        };\n    };\n    const subscribe = (props) => {\n        _state.mount = true;\n        const trackedKeys = Object.keys(props.formState || {}).filter((key) => props.formState && props.formState[key]);\n        for (const key of trackedKeys) {\n            _proxySubscribeFormState[key] = (_proxySubscribeFormState[key] || 0) + 1;\n        }\n        const unsubscribe = _subscribe({\n            ...props,\n            formState: {\n                ...defaultProxyFormState,\n                ...props.formState,\n            },\n        });\n        return () => {\n            // splice(0) empties the list, so a repeated unsubscribe releases nothing\n            for (const key of trackedKeys.splice(0)) {\n                _proxySubscribeFormState[key]--;\n            }\n            unsubscribe();\n        };\n    };\n    const unregister = (name, options = {}) => {\n        for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n            _names.mount.delete(fieldName);\n            _names.array.delete(fieldName);\n            _names.disabled.delete(fieldName);\n            if (!options.keepValue) {\n                unset(_fields, fieldName);\n                unset(_formValues, fieldName);\n            }\n            if (!options.keepError) {\n                cancelDelayedErrorTree(fieldName);\n                unset(_formState.errors, fieldName);\n            }\n            !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n            !options.keepTouched && unset(_formState.touchedFields, fieldName);\n            !options.keepIsValidating &&\n                unset(_formState.validatingFields, fieldName);\n            !_options.shouldUnregister &&\n                !options.keepDefaultValue &&\n                unset(_defaultValues, fieldName);\n        }\n        if (!options.keepError) {\n            _formState.errors = { ..._formState.errors };\n        }\n        _valuesSubscribers.size &&\n            _subjects.state.next({\n                values: cloneObject(_formValues),\n            });\n        _subjects.state.next({\n            ..._formState,\n            ...(options.keepDirty ? {} : { isDirty: _getDirty() }),\n            ...(options.keepIsValidating\n                ? {}\n                : { isValidating: !isEmptyObject(_formState.validatingFields) }),\n        });\n        !options.keepIsValid && _setValid();\n    };\n    const _setDisabledField = ({ disabled, name, }) => {\n        if ((isBoolean(disabled) && _state.mount) ||\n            !!disabled ||\n            _names.disabled.has(name)) {\n            const wasDisabled = _names.disabled.has(name);\n            const isDisabled = !!disabled;\n            const disabledStateChanged = wasDisabled !== isDisabled;\n            disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n            disabledStateChanged && _state.mount && !_state.action && _setValid();\n        }\n    };\n    const register = (name, options = {}) => {\n        let field = get(_fields, name);\n        const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n        const shouldRevalidateRemount = !_names.registerName.has(name) && field && field._f && !field._f.mount;\n        set(_fields, name, {\n            ...(field || {}),\n            _f: {\n                ...(field && field._f ? field._f : { ref: { name } }),\n                name,\n                mount: true,\n                ...options,\n            },\n        });\n        _names.mount.add(name);\n        if (field && field._f) {\n            const nextField = get(_fields, name);\n            for (const rule of REGISTER_VALIDATION_RULES) {\n                if (!(rule in options)) {\n                    delete nextField._f[rule];\n                }\n            }\n        }\n        if (field && !shouldRevalidateRemount) {\n            _setDisabledField({\n                disabled: isBoolean(options.disabled)\n                    ? options.disabled\n                    : _options.disabled,\n                name,\n            });\n        }\n        else {\n            updateValidAndValue(name, true, options.value);\n        }\n        return {\n            ...(disabledIsDefined\n                ? { disabled: options.disabled || _options.disabled }\n                : {}),\n            ...(_options.progressive\n                ? {\n                    required: !!options.required,\n                    min: getRuleValue(options.min),\n                    max: getRuleValue(options.max),\n                    minLength: getRuleValue(options.minLength),\n                    maxLength: getRuleValue(options.maxLength),\n                    pattern: getRuleValue(options.pattern),\n                }\n                : {}),\n            name,\n            onChange,\n            onBlur: onChange,\n            ref: (ref) => {\n                if (ref) {\n                    _names.registerName.add(name);\n                    register(name, options);\n                    _names.registerName.delete(name);\n                    field = get(_fields, name);\n                    const fieldRef = isUndefined(ref.value)\n                        ? ref.querySelectorAll\n                            ? ref.querySelectorAll('input,select,textarea')[0] || ref\n                            : ref\n                        : ref;\n                    const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n                    const refs = field._f.refs || [];\n                    if (radioOrCheckbox\n                        ? refs.find((option) => option === fieldRef)\n                        : fieldRef === field._f.ref) {\n                        return;\n                    }\n                    const newField = {\n                        ...field._f,\n                    };\n                    if (radioOrCheckbox) {\n                        newField.refs = [\n                            ...refs.filter(live),\n                            fieldRef,\n                            ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n                        ];\n                        newField.ref = { type: fieldRef.type, name };\n                    }\n                    else {\n                        newField.ref = fieldRef;\n                        delete newField.refs;\n                    }\n                    set(_fields, name, {\n                        _f: newField,\n                    });\n                    updateValidAndValue(name, false, undefined, fieldRef);\n                }\n                else {\n                    field = get(_fields, name, {});\n                    if (field._f) {\n                        field._f.mount = false;\n                    }\n                    (_options.shouldUnregister || options.shouldUnregister) &&\n                        !(isNameInFieldArray(_names.array, name) && _state.action) &&\n                        _names.unMount.add(name);\n                }\n            },\n        };\n    };\n    const _focusError = () => _options.shouldFocusError &&\n        !_options.shouldUseNativeValidation &&\n        iterateFieldsByAction(_fields, _focusInput, _names.mount);\n    const _disableForm = (disabled) => {\n        if (isBoolean(disabled)) {\n            _subjects.state.next({ disabled });\n            iterateFieldsByAction(_fields, (ref, name) => {\n                const currentField = get(_fields, name);\n                if (currentField) {\n                    ref.disabled = currentField._f.disabled || disabled;\n                    if (Array.isArray(currentField._f.refs)) {\n                        currentField._f.refs.forEach((inputRef) => {\n                            inputRef.disabled = currentField._f.disabled || disabled;\n                        });\n                    }\n                }\n            }, 0);\n        }\n    };\n    const handleSubmit = (onValid, onInvalid) => async (e) => {\n        let result = undefined;\n        let onValidError = undefined;\n        if (e) {\n            e.preventDefault && e.preventDefault();\n            e.persist &&\n                e.persist();\n        }\n        let fieldValues = cloneObject(_formValues);\n        _subjects.state.next({\n            isSubmitting: true,\n        });\n        if (_options.resolver) {\n            const resetCallId = _resetCallId;\n            const { errors, values } = await _runSchema();\n            if (resetCallId !== _resetCallId) {\n                return;\n            }\n            _updateIsValidating();\n            Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n            _formState.errors = errors;\n            fieldValues = cloneObject(values);\n        }\n        else {\n            const resetCallId = _resetCallId;\n            await executeBuiltInValidation({\n                fields: _fields,\n                eventType: EVENTS.SUBMIT,\n            });\n            if (resetCallId !== _resetCallId) {\n                return;\n            }\n            unset(_formState.errors, ROOT_ERROR_TYPE);\n            _formState.errors = { ..._formState.errors };\n        }\n        if (_names.disabled.size) {\n            for (const name of _names.disabled) {\n                unset(fieldValues, name);\n            }\n        }\n        if (isEmptyObject(_formState.errors)) {\n            _subjects.state.next({\n                errors: {},\n            });\n            try {\n                result = await onValid(fieldValues, e);\n            }\n            catch (error) {\n                onValidError = error;\n            }\n        }\n        else {\n            if (onInvalid) {\n                await onInvalid({ ..._formState.errors }, e);\n            }\n            _focusError();\n            setTimeout(_focusError);\n        }\n        _subjects.state.next({\n            isSubmitted: true,\n            isSubmitting: false,\n            isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n            submitCount: _formState.submitCount + 1,\n            errors: _formState.errors,\n        });\n        if (onValidError) {\n            throw onValidError;\n        }\n        return result;\n    };\n    const resetField = (name, options = {}) => {\n        if (get(_fields, name)) {\n            unset(_formState.validatingFields, name);\n            if (isUndefined(options.defaultValue)) {\n                setValue(name, cloneObject(get(_defaultValues, name)));\n            }\n            else {\n                setValue(name, options.defaultValue);\n                set(_defaultValues, name, cloneObject(options.defaultValue));\n            }\n            if (!options.keepTouched) {\n                unset(_formState.touchedFields, name);\n            }\n            if (!options.keepDirty) {\n                unset(_formState.dirtyFields, name);\n                _formState.isDirty = options.defaultValue\n                    ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n                    : _getDirty();\n            }\n            if (!options.keepError) {\n                cancelDelayedErrorTree(name);\n                unset(_formState.errors, name);\n                _formState.errors = { ..._formState.errors };\n                _setValid();\n            }\n            _subjects.state.next({\n                ..._formState,\n                isValidating: !isEmptyObject(_formState.validatingFields),\n            });\n        }\n    };\n    const _reset = (formValues, keepStateOptions = {}) => {\n        _resetCallId++;\n        const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n        const cloneUpdatedValues = cloneObject(updatedValues);\n        const isEmptyResetValues = isEmptyObject(formValues);\n        const values = cloneUpdatedValues;\n        const fieldRefs = _fields;\n        Object.keys(delayErrorCallbacks).forEach(cancelDelayedError);\n        if (!keepStateOptions.keepDefaultValues) {\n            _defaultValues = updatedValues;\n        }\n        if (!keepStateOptions.keepValues) {\n            if (keepStateOptions.keepDirtyValues) {\n                const fieldsToCheck = new Set([\n                    ..._names.mount,\n                    ...collectDirtyFieldNames(getDirtyFields(_defaultValues, _formValues, undefined, fieldRefs), _formState.dirtyFields),\n                ]);\n                for (const fieldName of fieldsToCheck) {\n                    const isDirty = get(_formState.dirtyFields, fieldName);\n                    const existingValue = get(_formValues, fieldName);\n                    const newValue = get(values, fieldName);\n                    if (isDirty && !isUndefined(existingValue)) {\n                        set(values, fieldName, existingValue);\n                    }\n                    else if (!isDirty && !isUndefined(newValue)) {\n                        setValue(fieldName, newValue);\n                    }\n                }\n            }\n            else {\n                if (isWeb && isUndefined(formValues)) {\n                    for (const name of _names.mount) {\n                        const field = get(_fields, name);\n                        if (field && field._f) {\n                            const fieldReference = Array.isArray(field._f.refs)\n                                ? field._f.refs[0]\n                                : field._f.ref;\n                            if (isHTMLElement(fieldReference)) {\n                                const form = fieldReference.closest('form');\n                                if (form) {\n                                    form.reset();\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                }\n                if (keepStateOptions.keepFieldsRef) {\n                    for (const fieldName of _names.mount) {\n                        setValue(fieldName, get(values, fieldName));\n                    }\n                }\n                else {\n                    _fields = {};\n                }\n            }\n            if (_options.shouldUnregister) {\n                _formValues = keepStateOptions.keepDefaultValues\n                    ? cloneObject(_defaultValues)\n                    : {};\n                if (keepStateOptions.keepFieldsRef) {\n                    for (const fieldName of _names.mount) {\n                        set(_formValues, fieldName, get(values, fieldName));\n                    }\n                }\n            }\n            else {\n                _formValues = cloneObject(values);\n            }\n            _subjects.array.next({\n                values: { ...values },\n            });\n            _subjects.state.next({\n                name: undefined,\n                type: undefined,\n                values: { ...values },\n            });\n        }\n        _names = {\n            mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n            unMount: new Set(),\n            array: new Set(),\n            registerName: new Set(),\n            disabled: new Set(),\n            watch: new Set(),\n            watchAll: false,\n            focus: '',\n        };\n        _state.mount =\n            !_proxyFormState.isValid ||\n                !!keepStateOptions.keepIsValid ||\n                !!keepStateOptions.keepDirtyValues ||\n                (!_options.shouldUnregister && !isEmptyObject(values));\n        _state.watch = !!_options.shouldUnregister;\n        _state.keepIsValid = !!keepStateOptions.keepIsValid;\n        _state.action = false;\n        _state.actionArrayLengths.clear();\n        _dirtyFieldsStale = false;\n        if (!keepStateOptions.keepErrors) {\n            _formState.errors = {};\n        }\n        _subjects.state.next({\n            submitCount: keepStateOptions.keepSubmitCount\n                ? _formState.submitCount\n                : 0,\n            isDirty: isEmptyResetValues\n                ? false\n                : keepStateOptions.keepDirty\n                    ? _formState.isDirty\n                    : keepStateOptions.keepValues\n                        ? _getDirty()\n                        : !!(keepStateOptions.keepDefaultValues &&\n                            formValues &&\n                            !deepEqual(formValues, _defaultValues)),\n            isSubmitted: keepStateOptions.keepIsSubmitted\n                ? _formState.isSubmitted\n                : false,\n            dirtyFields: isEmptyResetValues\n                ? {}\n                : keepStateOptions.keepDirtyValues\n                    ? keepStateOptions.keepDefaultValues && _formValues\n                        ? getDirtyFields(_defaultValues, _formValues, undefined, fieldRefs)\n                        : _formState.dirtyFields\n                    : keepStateOptions.keepDefaultValues && formValues\n                        ? getDirtyFields(_defaultValues, formValues, undefined, fieldRefs)\n                        : keepStateOptions.keepDirty\n                            ? _formState.dirtyFields\n                            : keepStateOptions.keepValues\n                                ? getDirtyFields(_defaultValues, _formValues, undefined, fieldRefs)\n                                : {},\n            touchedFields: keepStateOptions.keepTouched\n                ? _formState.touchedFields\n                : {},\n            ...(!keepStateOptions.keepIsValidating &&\n                (_formState.isValidating || !isEmptyObject(_formState.validatingFields))\n                ? { validatingFields: {}, isValidating: false }\n                : null),\n            errors: keepStateOptions.keepErrors ? _formState.errors : {},\n            isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n                ? _formState.isSubmitSuccessful\n                : false,\n            isSubmitting: false,\n            defaultValues: _defaultValues,\n        });\n    };\n    const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n        ? formValues(_formValues)\n        : formValues, { ..._options.resetOptions, ...keepStateOptions });\n    const setFocus = (name, options = {}) => {\n        const field = get(_fields, name);\n        const fieldReference = field && field._f;\n        if (fieldReference) {\n            const fieldRef = fieldReference.refs\n                ? fieldReference.refs[0]\n                : fieldReference.ref;\n            if (fieldRef.focus) {\n                setTimeout(() => {\n                    fieldRef.focus();\n                    options.shouldSelect &&\n                        isFunction(fieldRef.select) &&\n                        fieldRef.select();\n                });\n            }\n        }\n    };\n    const _setFormState = (updatedFormState) => {\n        // `name`, `type`, and `values` describe the event that produced this\n        // update, not the form's persisted state (they aren't part of\n        // `FormState`). Merging them in would leak a stale `name`/`type` from\n        // one event into a later, unrelated notification that doesn't specify\n        // its own.\n        const { name, type, values, ...formState } = updatedFormState;\n        if (Object.keys(formState).length) {\n            _formState = {\n                ..._formState,\n                ...formState,\n            };\n        }\n    };\n    _subjects.state.subscribe({ next: _setFormState });\n    const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n        _options.defaultValues().then((values) => {\n            reset(values, _options.resetOptions);\n            _subjects.state.next({\n                isLoading: false,\n            });\n        });\n    const resetDefaultValues = (values, options = {}) => {\n        _defaultValues = cloneObject(values);\n        if (!options.keepDirty) {\n            const newDirtyFields = getDirtyFields(_defaultValues, _formValues, undefined, _fields);\n            _formState.dirtyFields = newDirtyFields;\n            _formState.isDirty = !isEmptyObject(newDirtyFields);\n        }\n        if (!options.keepIsValid) {\n            _setValid();\n        }\n        _subjects.state.next({\n            ..._formState,\n            defaultValues: _defaultValues,\n        });\n    };\n    const methods = {\n        control: {\n            register,\n            unregister,\n            getFieldState,\n            handleSubmit,\n            setError,\n            _subscribe,\n            _runSchema,\n            _updateIsValidating,\n            _focusError,\n            _getWatch,\n            _getDirty,\n            _setValid,\n            _setFieldArray,\n            _setDisabledField,\n            _setErrors,\n            _getFieldArray,\n            _reset,\n            _resetDefaultValues,\n            _removeUnmounted,\n            _disableForm,\n            _subjects,\n            _proxyFormState,\n            get _fields() {\n                return _fields;\n            },\n            get _formValues() {\n                return _formValues;\n            },\n            get _state() {\n                return _state;\n            },\n            set _state(value) {\n                _state = value;\n            },\n            get _defaultValues() {\n                return _defaultValues;\n            },\n            get _names() {\n                return _names;\n            },\n            set _names(value) {\n                _names = value;\n            },\n            get _formState() {\n                return _formState;\n            },\n            get _options() {\n                return _options;\n            },\n            set _options(value) {\n                _options = {\n                    ..._options,\n                    ...value,\n                };\n                _validationModeBeforeSubmit = getValidationModes(_options.mode);\n                _validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n                shouldDisplayAllAssociatedErrors =\n                    _options.criteriaMode === VALIDATION_MODE.all;\n            },\n        },\n        subscribe,\n        trigger,\n        register,\n        handleSubmit,\n        watch,\n        setValue,\n        setValues,\n        getValues,\n        getErrors,\n        reset,\n        resetField,\n        resetDefaultValues,\n        clearErrors,\n        unregister,\n        setError,\n        setFocus,\n        getFieldState,\n    };\n    return {\n        ...methods,\n        formControl: methods,\n    };\n}\n\nconst RESET_OPTIONS = {\n    mode: defaultOptions.mode,\n    reValidateMode: defaultOptions.reValidateMode,\n    shouldFocusError: defaultOptions.shouldFocusError,\n    resolver: undefined,\n    criteriaMode: undefined,\n    delayError: undefined,\n    shouldUnregister: undefined,\n    shouldUseNativeValidation: undefined,\n    context: undefined,\n};\n/**\n * Core hook for managing a form. Returns all methods and state for\n * registration, validation, and submission.\n *\n * @see [API](https://react-hook-form.com/docs/useform)\n *\n * @example\n * ```tsx\n * const { register, handleSubmit, formState: { errors } } = useForm<FormValues>();\n * <form onSubmit={handleSubmit(onSubmit)}>\n *   <input {...register(\"email\", { required: true })} />\n * </form>\n * ```\n */\nfunction useForm(props = {}) {\n    const _formControl = React.useRef(undefined);\n    const _values = React.useRef(undefined);\n    const _formControlProp = React.useRef(props.formControl);\n    const _hadValidate = React.useRef(!!props.validate);\n    const [formState, updateFormState] = React.useState(() => ({\n        ...cloneObject(DEFAULT_FORM_STATE),\n        isLoading: isFunction(props.defaultValues),\n        errors: props.errors || {},\n        disabled: props.disabled || false,\n        defaultValues: isFunction(props.defaultValues)\n            ? undefined\n            : props.defaultValues,\n    }));\n    if (!_formControl.current ||\n        (props.formControl && _formControlProp.current !== props.formControl)) {\n        _formControlProp.current = props.formControl;\n        if (props.formControl) {\n            _formControl.current = {\n                ...props.formControl,\n                formState,\n            };\n            if (props.defaultValues && !isFunction(props.defaultValues)) {\n                props.formControl.reset(props.defaultValues, props.resetOptions);\n            }\n        }\n        else {\n            const { formControl, ...rest } = createFormControl(props);\n            _formControl.current = {\n                ...rest,\n                formState,\n            };\n        }\n    }\n    const control = _formControl.current.control;\n    const previousOptions = control._options;\n    const removedOptions = {};\n    for (const key in RESET_OPTIONS) {\n        if (key in previousOptions && !(key in props)) {\n            removedOptions[key] = RESET_OPTIONS[key];\n        }\n    }\n    control._options = {\n        ...removedOptions,\n        ...props,\n        validate: props.validate,\n    };\n    const getCurrentFormState = () => ({\n        ...control._formState,\n        defaultValues: control._defaultValues,\n    });\n    const { resyncIfNeeded, snapshot } = useResyncOnReconnect(getCurrentFormState);\n    useIsomorphicLayoutEffect(() => {\n        resyncIfNeeded(true, getCurrentFormState, updateFormState);\n        const unsubscribe = control._subscribe({\n            formState: control._proxyFormState,\n            callback: () => updateFormState({\n                ...control._formState,\n                defaultValues: control._defaultValues,\n            }),\n            reRenderRoot: true,\n        });\n        updateFormState((data) => ({\n            ...data,\n            isReady: true,\n        }));\n        control._formState.isReady = true;\n        return () => {\n            unsubscribe();\n            snapshot(true, getCurrentFormState);\n        };\n    }, [control, resyncIfNeeded, snapshot]);\n    React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n    React.useEffect(() => {\n        if (props.mode) {\n            control._options.mode = props.mode;\n        }\n        if (props.reValidateMode) {\n            control._options.reValidateMode = props.reValidateMode;\n        }\n    }, [control, props.mode, props.reValidateMode]);\n    React.useEffect(() => {\n        if (props.errors) {\n            control._setErrors(props.errors);\n            control._focusError();\n        }\n    }, [control, props.errors]);\n    React.useEffect(() => {\n        if (_hadValidate.current && !props.validate) {\n            _formControl.current && _formControl.current.clearErrors(FORM_ERROR_TYPE);\n        }\n        _hadValidate.current = !!props.validate;\n    }, [props.validate]);\n    React.useEffect(() => {\n        props.shouldUnregister &&\n            control._subjects.state.next({\n                values: control._getWatch(),\n            });\n    }, [control, props.shouldUnregister]);\n    React.useEffect(() => {\n        if (control._proxyFormState.isDirty) {\n            const isDirty = control._getDirty();\n            if (isDirty !== formState.isDirty) {\n                control._subjects.state.next({\n                    isDirty,\n                });\n            }\n        }\n    }, [control, formState.isDirty]);\n    React.useEffect(() => {\n        if (props.values && !deepEqual(props.values, _values.current)) {\n            control._reset(props.values, {\n                keepFieldsRef: true,\n                ...control._options.resetOptions,\n            });\n            if (!(control._options.resetOptions &&\n                control._options.resetOptions.keepIsValid)) {\n                control._setValid();\n            }\n            _values.current = props.values;\n            updateFormState((state) => ({ ...state }));\n        }\n        else {\n            control._resetDefaultValues();\n        }\n    }, [control, props.values]);\n    React.useEffect(() => {\n        if (!control._state.mount) {\n            control._setValid();\n            control._state.mount = true;\n        }\n        if (control._state.watch) {\n            control._state.watch = false;\n            control._subjects.state.next({ ...control._formState });\n        }\n        control._removeUnmounted();\n    });\n    _formControl.current.formState = React.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n    return _formControl.current;\n}\n\n/**\n * Component wrapper around `useWatch`. Re-renders only when watched fields change.\n *\n * @see [API](https://react-hook-form.com/docs/usewatch)\n *\n * @example\n * ```tsx\n * <Watch\n *   control={control}\n *   names={[\"foo\", \"bar\"]}\n *   render={([foo, bar]) => <span>{foo} {bar}</span>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\nexport { Controller, ErrorMessage, FieldArray, Form, FormProvider, FormState, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import{get as e,set as r}from\"react-hook-form\";const t=(r,t,s)=>{if(r&&\"reportValidity\"in r){const o=e(s,t);r.setCustomValidity(o&&o.message||\"\"),r.reportValidity()}},s=(e,r)=>{for(const s in r.fields){const o=r.fields[s];o&&o.ref&&\"reportValidity\"in o.ref?t(o.ref,s,e):o&&o.refs&&o.refs.forEach(r=>t(r,s,e))}},o=(t,o)=>{o.shouldUseNativeValidation&&s(t,o);const n={};for(const s in t){const f=e(o.fields,s),c=Object.assign(t[s]||{},{ref:f&&f.refs?f.refs[0]:f&&f.ref});if(i(o.names||Object.keys(t),s)){const t=Object.assign({},e(n,s));r(t,\"root\",c),r(n,s,t)}else r(n,s,c)}return n},i=(e,r)=>{const t=n(r).replace(/[.*+?^${}()|\\\\]/g,\"\\\\$&\");return e.some(e=>n(e).match(`^${t}\\\\.\\\\d+`))};function n(e){return e.replace(/\\[(\\d+)]/g,\".$1\").replace(/[[\\]]/g,\"\")}export{o as toNestErrors,s as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as n}from\"react-hook-form\";function o(){return o=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)({}).hasOwnProperty.call(n,o)&&(r[o]=n[o])}return r},o.apply(null,arguments)}function t(r,e){try{var n=r()}catch(r){return e(r)}return n&&n.then?n.then(void 0,e):n}function s(r,e){for(var o=Object.create(null);r.length;){var t=r[0],s=t.code,i=t.message,u=t.path.join(\".\");if(!o[u])if(\"unionErrors\"in t){var a,c,l=t.unionErrors.reduce(function(r,e){return e.errors.length<r.errors.length?e:r}).errors[0];o[u]={message:null!=(a=null==l?void 0:l.message)?a:i,type:null!=(c=null==l?void 0:l.code)?c:s}}else o[u]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var f=o[u].types,d=f&&f[t.code];o[u]=n(u,e,o,s,d?[].concat(d,t.message):t.message)}r.shift()}return o}function i(r,e){for(var t=Object.create(null),s=function(){var s=r[0],i=s.code,u=s.message,a=s.path.join(\".\");if(!t[a])if(\"invalid_union\"===s.code&&s.errors.length>0){var c,l,f=s.errors.reduce(function(r,e){return e.length<r.length?e:r})[0];t[a]={message:null!=(c=null==f?void 0:f.message)?c:u,type:null!=(l=null==f?void 0:f.code)?l:i}}else t[a]={message:u,type:i};if(\"invalid_union\"===s.code&&s.errors.forEach(function(e){return e.forEach(function(e){return r.push(o({},e,{path:[].concat(s.path,e.path)}))})}),e){var d=t[a].types,h=d&&d[s.code];t[a]=n(a,e,t,i,h?[].concat(h,s.message):s.message)}r.shift()};r.length;)s();return t}function u(n,o,u){if(void 0===u&&(u={}),function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(n))return function(s,a,c){try{return Promise.resolve(t(function(){function e(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},s):e}}var t=n;return\"sync\"===u.mode?e(t.parse(s,o)):Promise.resolve(t.parseAsync(s,o)).then(e)},function(r){if(function(r){var e;return!(null==r||null==(e=r._zod)||null==(e=e.traits)||!e.has(\"$ZodError\"))}(r))return{values:{},errors:e(i(r.issues,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_def\"in r&&\"object\"==typeof r._def}(n))return function(i,a,c){try{return Promise.resolve(t(function(){return Promise.resolve(n[\"sync\"===u.mode?\"parse\":\"parseAsync\"](i,o)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},i):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{u as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n","import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n    return val;\n}\nexport function assertNotEqual(val) {\n    return val;\n}\nexport function toZod() {\n    return (schema) => schema;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n    throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n    const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n    const values = Object.entries(entries)\n        .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n        .map(([_, v]) => v);\n    return values;\n}\nexport function joinValues(array, separator = \"|\") {\n    return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n    if (typeof value === \"bigint\")\n        return value.toString();\n    return value;\n}\n// the accessor lives on a shared prototype: an own accessor makes every box a dictionary-mode object (~360 B and a slow load per read against ~100 B and an inlined getter here)\nclass Cached {\n    constructor(getter) {\n        this._getter = getter;\n        this._value = undefined;\n    }\n    get value() {\n        const getter = this._getter;\n        if (getter !== undefined) {\n            this._value = getter();\n            this._getter = undefined;\n        }\n        return this._value;\n    }\n}\nexport function cached(getter) {\n    return new Cached(getter);\n}\nexport function nullish(input) {\n    return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n    const start = source.startsWith(\"^\") ? 1 : 0;\n    const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n    return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n    const ratio = val / step;\n    const roundedRatio = Math.round(ratio);\n    // `val` and `step` each round to a double before the division rounds again, so a true decimal multiple's quotient can sit up to 1.5 of these scaled epsilons from the integer. A 1x tolerance therefore rejected 2.03 as a multiple of 0.07; 4x covers the worst case with margin.\n    const tolerance = 4 * Number.EPSILON * Math.max(Math.abs(ratio), 1);\n    if (Math.abs(ratio - roundedRatio) < tolerance)\n        return 0;\n    return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n    let value = undefined;\n    Object.defineProperty(object, key, {\n        get() {\n            if (value === EVALUATING) {\n                // Circular reference detected, return undefined to break the cycle\n                return undefined;\n            }\n            if (value === undefined) {\n                value = EVALUATING;\n                value = getter();\n            }\n            return value;\n        },\n        set(v) {\n            Object.defineProperty(object, key, {\n                value: v,\n                // configurable: true,\n            });\n            // object[key] = v;\n        },\n        configurable: true,\n    });\n}\nexport function objectClone(obj) {\n    return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n    Object.defineProperty(target, prop, {\n        value,\n        writable: true,\n        enumerable: true,\n        configurable: true,\n    });\n}\n/**\n * Whichever object a def's `shape` currently answers from: the one the caller passed until the first read, the frozen copy after it.\n *\n * Its keys and descriptors read without invoking anything, which is what lets a discriminated union check its discriminator, and the cycle walk read a shape, without resolving a getter that references the schema being constructed. A def that answers `shape` from an accessor of its own has none.\n */\nexport function rawShape(def) {\n    const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n    return desc?.get ? desc.get.raw : desc?.value;\n}\n// where a builder reads its source's keys and descriptors, resolving only a shape a def answers for itself. A shape resolves by object spread, so only its enumerable keys are ever part of it.\nfunction sourceShape(schema) {\n    return rawShape(schema._zod.def) ?? schema._zod.def.shape;\n}\n// a key whose value is not settled yet, self-caching so every read after the first gets the same one\nfunction deferProp(target, key, getter) {\n    Object.defineProperty(target, key, {\n        get() {\n            const value = getter();\n            assignProp(this, key, value);\n            return value;\n        },\n        enumerable: true,\n        configurable: true,\n    });\n}\n// Writes a settled key. A plain assignment is much cheaper than `defineProperty` and produces the same descriptor, but it runs whatever setter already answers to the key — an accessor this shape deferred, or an inherited one, which `__proto__` has on every object and prototype pollution can add for any name.\nfunction putProp(target, key, value) {\n    if (key in target)\n        assignProp(target, key, value);\n    else\n        target[key] = value;\n}\n/**\n * Copies `keys` of `source`'s shape onto `target`, each value passed through `wrap`.\n *\n * A key the source has resolved is copied through now, so the derived shape states it outright and nothing has to resolve it to learn what it holds. A key the source still defers stays deferred, and reads back through the source's own `shape`, so it resolves once and both shapes get that one schema.\n */\nfunction mirrorShape(target, source, keys, wrap) {\n    const raw = sourceShape(source);\n    for (const key of keys) {\n        const desc = Object.getOwnPropertyDescriptor(raw, key);\n        if (!desc.enumerable)\n            continue;\n        if (desc.get) {\n            deferProp(target, key, () => {\n                const value = source._zod.def.shape[key];\n                return wrap ? wrap(value, key) : value;\n            });\n        }\n        else\n            putProp(target, key, wrap ? wrap(desc.value, key) : desc.value);\n    }\n}\n// same, for a plain shape a caller passed rather than a schema's\nfunction mirrorProps(target, source) {\n    for (const key of Reflect.ownKeys(source)) {\n        const desc = Object.getOwnPropertyDescriptor(source, key);\n        if (!desc.enumerable)\n            continue;\n        if (desc.get)\n            deferProp(target, key, () => source[key]);\n        else\n            putProp(target, key, desc.value);\n    }\n}\nexport function mergeDefs(...defs) {\n    const mergedDescriptors = {};\n    for (const def of defs) {\n        const descriptors = Object.getOwnPropertyDescriptors(def);\n        Object.assign(mergedDescriptors, descriptors);\n    }\n    return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n    return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n    if (!path)\n        return obj;\n    return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n    const keys = Object.keys(promisesObj);\n    const promises = keys.map((key) => promisesObj[key]);\n    return Promise.all(promises).then((results) => {\n        const resolvedObj = {};\n        for (let i = 0; i < keys.length; i++) {\n            resolvedObj[keys[i]] = results[i];\n        }\n        return resolvedObj;\n    });\n}\nexport function randomString(length = 10) {\n    const chars = \"abcdefghijklmnopqrstuvwxyz\";\n    let str = \"\";\n    for (let i = 0; i < length; i++) {\n        str += chars[Math.floor(Math.random() * chars.length)];\n    }\n    return str;\n}\nexport function esc(str) {\n    return JSON.stringify(str);\n}\nexport function slugify(input) {\n    return input\n        .toLowerCase()\n        .trim()\n        .replace(/[^\\w\\s-]/g, \"\")\n        .replace(/[\\s_-]+/g, \"-\")\n        .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n    return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n    // Skip the probe under `jitless`: strict CSPs report the caught `new Function` as a `securitypolicyviolation` even though the throw is swallowed.\n    if (globalConfig.jitless) {\n        return false;\n    }\n    // @ts-ignore\n    if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n        return false;\n    }\n    try {\n        const F = Function;\n        new F(\"\");\n        return true;\n    }\n    catch (_) {\n        return false;\n    }\n});\nexport function isPlainObject(o) {\n    if (isObject(o) === false)\n        return false;\n    // modified constructor\n    const ctor = o.constructor;\n    if (ctor === undefined)\n        return true;\n    if (typeof ctor !== \"function\")\n        return true;\n    // modified prototype\n    const prot = ctor.prototype;\n    if (isObject(prot) === false)\n        return false;\n    // ctor doesn't have static `isPrototypeOf`\n    if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n        return false;\n    }\n    return true;\n}\nexport function shallowClone(o) {\n    if (isPlainObject(o))\n        return { ...o };\n    if (Array.isArray(o))\n        return [...o];\n    if (o instanceof Map)\n        return new Map(o);\n    if (o instanceof Set)\n        return new Set(o);\n    return o;\n}\nexport function numKeys(data) {\n    let keyCount = 0;\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            keyCount++;\n        }\n    }\n    return keyCount;\n}\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return \"undefined\";\n        case \"string\":\n            return \"string\";\n        case \"number\":\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        case \"boolean\":\n            return \"boolean\";\n        case \"function\":\n            return \"function\";\n        case \"bigint\":\n            return \"bigint\";\n        case \"symbol\":\n            return \"symbol\";\n        case \"object\":\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            if (data === null) {\n                return \"null\";\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return \"promise\";\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return \"map\";\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return \"set\";\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return \"date\";\n            }\n            // @ts-ignore\n            if (typeof File !== \"undefined\" && data instanceof File) {\n                return \"file\";\n            }\n            return \"object\";\n        default:\n            throw new Error(`Unknown data type: ${t}`);\n    }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n    \"string\",\n    \"number\",\n    \"bigint\",\n    \"boolean\",\n    \"symbol\",\n    \"undefined\",\n]);\nexport function escapeRegex(str) {\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n    const cl = new inst._zod.constr(def ?? inst._zod.def);\n    if (!def || params?.parent)\n        cl._zod.parent = inst;\n    return cl;\n}\nexport function normalizeParams(_params) {\n    const params = _params;\n    if (!params)\n        return {};\n    if (typeof params === \"string\")\n        return { error: () => params };\n    if (params?.message !== undefined) {\n        if (params?.error !== undefined)\n            throw new Error(\"Cannot specify both `message` and `error` params\");\n        params.error = params.message;\n    }\n    delete params.message;\n    if (typeof params.error === \"string\")\n        return { ...params, error: () => params.error };\n    return params;\n}\nexport function createTransparentProxy(getter) {\n    let target;\n    return new Proxy({}, {\n        get(_, prop, receiver) {\n            target ?? (target = getter());\n            return Reflect.get(target, prop, receiver);\n        },\n        set(_, prop, value, receiver) {\n            target ?? (target = getter());\n            return Reflect.set(target, prop, value, receiver);\n        },\n        has(_, prop) {\n            target ?? (target = getter());\n            return Reflect.has(target, prop);\n        },\n        deleteProperty(_, prop) {\n            target ?? (target = getter());\n            return Reflect.deleteProperty(target, prop);\n        },\n        ownKeys(_) {\n            target ?? (target = getter());\n            return Reflect.ownKeys(target);\n        },\n        getOwnPropertyDescriptor(_, prop) {\n            target ?? (target = getter());\n            return Reflect.getOwnPropertyDescriptor(target, prop);\n        },\n        defineProperty(_, prop, descriptor) {\n            target ?? (target = getter());\n            return Reflect.defineProperty(target, prop, descriptor);\n        },\n    });\n}\nexport function stringifyPrimitive(value) {\n    if (typeof value === \"bigint\")\n        return value.toString() + \"n\";\n    if (typeof value === \"string\")\n        return `\"${value}\"`;\n    return `${value}`;\n}\nexport function optionalKeys(shape) {\n    return Object.keys(shape).filter((k) => {\n        return shape[k]._zod.optin !== undefined && shape[k]._zod.optout === \"optional\";\n    });\n}\n// Wrapped in a `@__PURE__` IIFE: esbuild never tree-shakes a top-level initializer that contains a member access on `Number`, so the bare object literal survived into every bundle.\nexport const NUMBER_FORMAT_RANGES = /*@__PURE__*/ (() => ({\n    safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n    int32: [-2147483648, 2147483647],\n    uint32: [0, 4294967295],\n    float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n    float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n}))();\nexport const BIGINT_FORMAT_RANGES = {\n    int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n    uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n    }\n    const newShape = {};\n    mirrorShape(newShape, schema, maskedKeys(schema, mask));\n    return clone(schema, mergeDefs(currDef, { shape: newShape, checks: [] }));\n}\n// the mask keys that select something, checked against the source's shape without resolving it\nfunction maskedKeys(schema, mask) {\n    const raw = sourceShape(schema);\n    const keys = [];\n    // `for...in` skips symbols, so a symbol in the mask would select nothing\n    for (const key of Reflect.ownKeys(mask)) {\n        if (!Object.getOwnPropertyDescriptor(raw, key)?.enumerable) {\n            throw new Error(`Unrecognized key: \"${String(key)}\"`);\n        }\n        if (mask[key])\n            keys.push(key);\n    }\n    return keys;\n}\nexport function omit(schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n    }\n    const omitted = new Set(maskedKeys(schema, mask));\n    const newShape = {};\n    mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)).filter((key) => !omitted.has(key)));\n    return clone(schema, mergeDefs(currDef, { shape: newShape, checks: [] }));\n}\nexport function extend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to extend: expected a plain object\");\n    }\n    const checks = schema._zod.def.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        // Only throw if new shape overlaps with existing shape. Use getOwnPropertyDescriptor to check key existence without accessing values\n        const existingShape = sourceShape(schema);\n        for (const key of Reflect.ownKeys(shape)) {\n            if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n                throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n            }\n        }\n    }\n    return clone(schema, mergeDefs(schema._zod.def, { shape: extended(schema, shape) }));\n}\n// the source's keys, then the caller's overlaid on top\nfunction extended(schema, shape) {\n    const newShape = {};\n    mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)));\n    mirrorProps(newShape, shape);\n    return newShape;\n}\nexport function safeExtend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n    }\n    return clone(schema, mergeDefs(schema._zod.def, { shape: extended(schema, shape) }));\n}\nexport function merge(a, b) {\n    if (!b?._zod?.def) {\n        throw new Error(\"Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.\");\n    }\n    if (a._zod.def.checks?.length) {\n        throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n    }\n    const newShape = {};\n    mirrorShape(newShape, a, Reflect.ownKeys(sourceShape(a)));\n    mirrorShape(newShape, b, Reflect.ownKeys(sourceShape(b)));\n    const def = mergeDefs(a._zod.def, {\n        shape: newShape,\n        get catchall() {\n            return b._zod.def.catchall;\n        },\n        checks: b._zod.def.checks ?? [],\n    });\n    return clone(a, def);\n}\nexport function partial(Class, schema, mask, name = \"partial\") {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(`.${name}() cannot be used on object schemas containing refinements`);\n    }\n    const selected = mask ? new Set(maskedKeys(schema, mask)) : undefined;\n    const newShape = {};\n    mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)), Class &&\n        ((value, key) => (selected && !selected.has(key) ? value : new Class({ type: \"optional\", innerType: value }))));\n    return clone(schema, mergeDefs(schema._zod.def, { shape: newShape, checks: [] }));\n}\nexport function required(Class, schema, mask) {\n    const selected = mask ? new Set(maskedKeys(schema, mask)) : undefined;\n    const newShape = {};\n    mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)), (value, key) => \n    // overwrite with non-optional\n    selected && !selected.has(key) ? value : new Class({ type: \"nonoptional\", innerType: value }));\n    return clone(schema, mergeDefs(schema._zod.def, { shape: newShape }));\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n    if (x.aborted === true)\n        return true;\n    for (let i = startIndex; i < x.issues.length; i++) {\n        if (x.issues[i]?.continue !== true) {\n            return true;\n        }\n    }\n    return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined). Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n    if (x.aborted === true)\n        return true;\n    for (let i = startIndex; i < x.issues.length; i++) {\n        if (x.issues[i]?.continue === false) {\n            return true;\n        }\n    }\n    return false;\n}\nexport function prefixIssues(path, issues) {\n    return issues.map((iss) => {\n        var _a;\n        (_a = iss).path ?? (_a.path = []);\n        iss.path.unshift(path);\n        return iss;\n    });\n}\nexport function unwrapMessage(message) {\n    return typeof message === \"string\" ? message : message?.message;\n}\n/* A check holds no link back to the schema it is attached to — the same check instance is shared by every clone of that schema — so the owner is stamped onto the issues a check just raised, at the only point where both are in scope. Runs on the failure path only; `start` is the issue count from before the check ran. */\n/** The leading size checks of `defChecks` that set an upper bound, each paired with it. */\nexport function sizeCaps(defChecks) {\n    const caps = [];\n    for (const ch of defChecks ?? []) {\n        const d = ch._zod.def;\n        // a later check may rewrite the value\n        if (!/_(length|size)$|_equals$/.test(d.check))\n            break;\n        const max = d.maximum ?? d.length ?? d.size;\n        if (max >= 0)\n            caps.push([max, ch]);\n    }\n    return caps;\n}\nexport function attachSchema(issues, start, inst) {\n    var _a;\n    for (let i = start; i < issues.length; i++) {\n        (_a = issues[i]).schema ?? (_a.schema = inst);\n    }\n}\nexport function finalizeIssue(iss, ctx, config) {\n    var _a;\n    // A schema that raised an issue itself owns it outright, and outranks any stamp an enclosing check left in `attachSchema`. String formats and z.custom() are schema and check at once, so when they act as a check they defer to that stamp instead.\n    const traits = iss.inst?._zod?.traits;\n    if (traits?.has(\"$ZodType\")) {\n        if (traits.has(\"$ZodCheck\"))\n            (_a = iss).schema ?? (_a.schema = iss.inst);\n        else\n            iss.schema = iss.inst;\n    }\n    // Decreasing specificity, first map to return a message wins. `inst` is whatever raised the issue, so a check's own map outranks the owning schema's.\n    const schemaError = iss.schema !== iss.inst ? iss.schema?._zod.def?.error : undefined;\n    const message = iss.message\n        ? iss.message\n        : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n            unwrapMessage(schemaError?.(iss)) ??\n            unwrapMessage(ctx?.error?.(iss)) ??\n            unwrapMessage(config.customError?.(iss)) ??\n            unwrapMessage(config.localeError?.(iss)) ??\n            \"Invalid input\");\n    // an explicit own-key copy beats object rest with excluded keys, which v8 routes through a generic runtime call; Object.keys rather than for-in so an issue pushed with a prototype does not leak inherited keys, and an own __proto__ key is dropped rather than assigned through the setter\n    const full = {};\n    for (const k of Object.keys(iss)) {\n        if (k === \"inst\" || k === \"schema\" || k === \"continue\" || k === \"input\" || k === \"__proto__\")\n            continue;\n        full[k] = iss[k];\n    }\n    full.path ?? (full.path = []);\n    full.message = message;\n    if (ctx?.reportInput) {\n        full.input = iss.input;\n    }\n    return full;\n}\nexport function getSizableOrigin(input) {\n    if (input instanceof Set)\n        return \"set\";\n    if (input instanceof Map)\n        return \"map\";\n    // @ts-ignore\n    if (input instanceof File)\n        return \"file\";\n    return \"unknown\";\n}\nconst highSurrogate = /[\\uD800-\\uDBFF]/;\n// Code points in `str`: a surrogate pair counts once, a lone surrogate as itself. Hand-rolled because the string iterator allocates and runs ~250x slower on this path; the regex probe exits ~50x quicker for a string with no astral characters.\nexport function codePointLength(str) {\n    const units = str.length;\n    if (!highSurrogate.test(str))\n        return units;\n    let count = units;\n    for (let i = 0; i < units - 1; i++) {\n        if ((str.charCodeAt(i) & 0xfc00) === 0xd800 && (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n            count--;\n            i++;\n        }\n    }\n    return count;\n}\nexport function getLengthableOrigin(input) {\n    if (Array.isArray(input))\n        return \"array\";\n    if (typeof input === \"string\")\n        return \"string\";\n    return \"unknown\";\n}\nexport function parsedType(data) {\n    const t = typeof data;\n    switch (t) {\n        case \"number\": {\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        }\n        case \"object\": {\n            if (data === null) {\n                return \"null\";\n            }\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            const obj = data;\n            if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n                return obj.constructor.name;\n            }\n        }\n    }\n    return t;\n}\nexport function issue(...args) {\n    const [iss, input, inst] = args;\n    if (typeof iss === \"string\") {\n        return {\n            message: iss,\n            code: \"custom\",\n            input,\n            inst,\n        };\n    }\n    return { ...iss };\n}\nexport function cleanEnum(obj) {\n    return Object.entries(obj)\n        .filter(([k, _]) => {\n        // return true if NaN, meaning it's not a number, thus a string key\n        return Number.isNaN(Number.parseInt(k, 10));\n    })\n        .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n    const binaryString = atob(base64);\n    const bytes = new Uint8Array(binaryString.length);\n    for (let i = 0; i < binaryString.length; i++) {\n        bytes[i] = binaryString.charCodeAt(i);\n    }\n    return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n    let binaryString = \"\";\n    for (let i = 0; i < bytes.length; i++) {\n        binaryString += String.fromCharCode(bytes[i]);\n    }\n    return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n    const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n    return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n    return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n    const cleanHex = hex.replace(/^0x/, \"\");\n    if (cleanHex.length % 2 !== 0) {\n        throw new Error(\"Invalid hex string length\");\n    }\n    const bytes = new Uint8Array(cleanHex.length / 2);\n    for (let i = 0; i < cleanHex.length; i += 2) {\n        bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n    }\n    return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n    return Array.from(bytes)\n        .map((b) => b.toString(16).padStart(2, \"0\"))\n        .join(\"\");\n}\n// instanceof\nexport class Class {\n    constructor(..._args) { }\n}\n//////////    PROTOTYPE INSTALLERS     //////////\n//\n// Members live on the prototype and materialize per instance on first read, which keeps own-property count under the step where V8 stops using inline slots. Changing anything here means re-measuring runtime, memory and bundle size together — see \"The three axes\" in AGENTS.md.\n/**\n * Installs a trait's members on its prototype. Each value builds that member for the instance on first read; the built value shadows the accessor as an own property, so a detached `const { parse } = schema` keeps working.\n *\n * Call this from a `proto` initializer, which runs once per prototype — never per instance.\n */\nexport function members(proto, table) {\n    for (const key in table) {\n        const desc = Object.getOwnPropertyDescriptor(table, key);\n        // a getter installs as written, so it stays live: `description` reads through to the registry on every access. not enumerable: an object literal's is, and a prototype member never was\n        if (desc.get)\n            Object.defineProperty(proto, key, { ...desc, enumerable: false });\n        // a method materializes bound on first read, which is what keeps a detached member working: `const opt = schema.optional; opt()`\n        else\n            defineBound(proto, key, desc.value);\n    }\n}\n/** Shadows a prototype member with an own value, so a getter that builds from the instance runs once. */\nexport function own(inst, key, value, enumerable = true) {\n    Object.defineProperty(inst, key, { configurable: true, writable: true, enumerable, value });\n    return value;\n}\n/** Like {@link own}, for a member that was never an own data property and has to stay out of `Object.keys`. */\nexport function hide(inst, key, value) {\n    return own(inst, key, value, false);\n}\n/** Adds members a table derives from the instance: each builds on first read and shadows as own data, and assignment shadows the same way, as when these were own properties. */\nexport /*@__NO_SIDE_EFFECTS__*/ function derived(computes, table) {\n    for (const key in computes) {\n        const compute = computes[key];\n        // an object literal's accessor is configurable and enumerable, and `members` copies the descriptor as written\n        Object.defineProperty(table, key, {\n            configurable: true,\n            enumerable: true,\n            get() {\n                return own(this, key, compute(this));\n            },\n            set(value) {\n                own(this, key, value);\n            },\n        });\n    }\n    return table;\n}\nfunction defineBound(proto, key, fn) {\n    Object.defineProperty(proto, key, {\n        configurable: true,\n        get() {\n            // vitest's spyOn calls a prototype getter bare to find the function it wraps, so a nullish receiver answers the raw method\n            return this == null ? fn : own(this, key, fn.bind(this));\n        },\n        set(value) {\n            own(this, key, value);\n        },\n    });\n}\n/** Returns the prototype to install on, or `undefined` if this group is already installed on it. */\nfunction claim(inst, sentinel) {\n    const proto = Object.getPrototypeOf(inst);\n    // Runs on every construction, so `in` rather than the costlier `hasOwnProperty.call`. Sentinels are keys the group itself defines.\n    return sentinel in proto ? undefined : proto;\n}\n// The internals whose init chain is installing. A second call for the same one is a derived constructor overriding its base, so it must not construct another schema in between or the override is dropped.\nlet installing;\n// Set while a getter is running, so a value that resolved through a recursion break is not memoized. One shared descriptor shadows the key for the duration, which costs no per-key allocation.\nlet broke = false;\nconst breaker = {\n    configurable: true,\n    get() {\n        broke = true;\n        return undefined;\n    },\n};\n/**\n * Installs a lazily-derived internal on the `_zod` prototype of `inst`'s\n * constructor, computed from the internals object itself and cached there on\n * first read. One accessor per constructor rather than one per instance.\n */\nexport function defineLazyInternal(inst, key, compute) {\n    const proto = Object.getPrototypeOf(inst._zod);\n    if (key in proto && installing !== inst._zod) {\n        // A repeat construction: everything is installed already. Cleared here so the reference is not held past the first construction of every type.\n        installing = undefined;\n        return;\n    }\n    installing = inst._zod;\n    Object.defineProperty(proto, key, {\n        configurable: true,\n        get() {\n            // Shadowed before computing so a re-entrant read from a recursive schema resolves to undefined instead of running the getter again.\n            Object.defineProperty(this, key, breaker);\n            const outer = broke;\n            broke = false;\n            try {\n                const value = compute(this);\n                // A result that resolved through a recursion break is recomputed once the graph is complete; everything else memoizes, undefined included.\n                if (broke)\n                    delete this[key];\n                else\n                    Object.defineProperty(this, key, { configurable: true, writable: true, value });\n                broke = broke || outer;\n                return value;\n            }\n            catch (err) {\n                // A compute that threw memoizes nothing, so a later read runs it again and fails the same way. The shadow goes with it, since leaving it installed would answer undefined for every later read.\n                delete this[key];\n                broke = broke || outer;\n                throw err;\n            }\n        },\n        set(value) {\n            Object.defineProperty(this, key, { configurable: true, writable: true, value });\n        },\n    });\n}\n/**\n * Installs `key` on `inst`'s prototype, computed by `make` on first read and cached there as an own\n * data property. One accessor per constructor rather than one per instance, because an own accessor\n * puts every instance after the first into v8 dictionary mode. The key doubles as the sentinel.\n */\nexport function installLazyProp(inst, key, make, enumerable) {\n    const proto = claim(inst, key);\n    if (!proto)\n        return;\n    Object.defineProperty(proto, key, {\n        configurable: true,\n        get() {\n            // Shadowed before computing, so a re-entrant read from a self-referential shape resolves to undefined instead of running the getter again. A data property rather than an accessor: an own accessor is the dictionary-mode transition this exists to avoid.\n            const desc = { configurable: true, writable: true, enumerable, value: undefined };\n            Object.defineProperty(this, key, desc);\n            // a compute that throws leaves the shadow behind, so later reads answer undefined instead of re-throwing; `defineLazy` did the same, and `defineLazyInternal`'s delete-on-catch would cost bytes in every bundle for a case only a throwing user getter reaches\n            desc.value = make(this);\n            Object.defineProperty(this, key, desc);\n            return desc.value;\n        },\n        set(value) {\n            Object.defineProperty(this, key, { configurable: true, writable: true, enumerable, value });\n        },\n    });\n}\n/** Marks the thunk `_catch` synthesises for a constant catch value. `Function.length` cannot tell that thunk from a user callback — rest and defaulted parameters both report arity 0 — and a user callback reads `ctx.error`, whose issues only finalize correctly against the caller's per-parse error map. Provenance can say what arity cannot. A plain string key rather than `Symbol.for`, whose call at module scope no bundler can prove pure — the same shape that anchored `urlCanParse` into every build. */\nexport const CONSTANT_CATCH = \"~constantCatch\";\n/** Wraps a constant catch value in a thunk tagged with {@link CONSTANT_CATCH}. */\nexport function constantCatch(value) {\n    const fn = () => value;\n    fn[CONSTANT_CATCH] = true;\n    return fn;\n}\n","var _a;\nimport { members as installMembers } from \"./util.js\";\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n    status: \"aborted\",\n});\n/* Shared descriptor for installing `_zod`; defineProperty reads it\n * synchronously, so reusing one object avoids a per-instance allocation. */\nconst _zodDesc = { value: undefined, enumerable: false };\n// null where suppressing the capture would be unrecoverable: `parse()` puts the frames back with `captureStackTrace`, so without it the throw would lose its stack. also latched to null once `stackTraceLimit` proves unassignable, which a realm can do at any point by hardening Error\nlet _E = \"captureStackTrace\" in Error ? Error : null;\n// v8 captures a stack trace inside the Error constructor, which dominates a failed parse; costs only the frames, and parse() restores those. the constructor must RUN: Object.create is cheaper and passes instanceof, but Error.isError and util.types.isNativeError check an internal slot\nfunction newError(Definition) {\n    const E = _E;\n    if (E) {\n        const saved = E.stackTraceLimit;\n        if (typeof saved === \"number\") {\n            try {\n                E.stackTraceLimit = 0;\n            }\n            catch {\n                _E = null;\n                return new Definition();\n            }\n            try {\n                return new Definition();\n            }\n            finally {\n                E.stackTraceLimit = saved;\n            }\n        }\n    }\n    return new Definition();\n}\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, \n/** This trait's members, installed once on every prototype that composes it. They cannot be declared in the initializer above: that runs per instance, and the prototype is shared. */\nproto, params) {\n    // Prototype for this constructor's `_zod` internals. Lazily-derived fields (`values`, `pattern`, `optin`, …) install here once rather than as an accessor on every instance.\n    const zodProto = {};\n    // Assigning the fields in the constructor body is what gives instances in-object slots; building the object literally and reparenting it costs a second allocation and a generic property copy.\n    function Internals(def) {\n        this.def = def;\n        this.constr = _;\n        this.traits = new Set();\n    }\n    Internals.prototype = zodProto;\n    const protoMembers = proto;\n    // One trait's members land on every prototype whose chain composes it, so the answer is per prototype rather than per trait.\n    const initialized = protoMembers && new WeakSet();\n    function init(inst, def) {\n        if (!inst._zod) {\n            _zodDesc.value = new Internals(def);\n            try {\n                Object.defineProperty(inst, \"_zod\", _zodDesc);\n            }\n            finally {\n                // Cleared even on throw, so the shared descriptor never leaks one instance's internals into the next.\n                _zodDesc.value = undefined;\n            }\n        }\n        else if (inst._zod.traits.has(name)) {\n            return;\n        }\n        inst._zod.traits.add(name);\n        initializer(inst, def);\n        if (initialized) {\n            // `super(def)` from a user subclass gives `this` a prototype the subclass owns, and installing there would overwrite whatever the subclass declared. `constr` built the instance, so its prototype is the one below the subclass's that should carry the members. A receiver whose chain never reaches that prototype installs on its own, which for a plain object handed straight to `init` means `Object.prototype` — unchanged from before.\n            const own = Object.getPrototypeOf(inst);\n            const ctorProto = inst._zod.constr.prototype;\n            let up = own;\n            while (up && up !== ctorProto)\n                up = Object.getPrototypeOf(up);\n            const target = up ?? own;\n            if (!initialized.has(target)) {\n                initialized.add(target);\n                installMembers(target, protoMembers);\n            }\n        }\n        // support prototype modifications; for-in avoids the array allocation of Object.keys on the (usually empty) prototype\n        const proto = _.prototype;\n        for (const k in proto) {\n            if (!Object.prototype.hasOwnProperty.call(proto, k))\n                continue;\n            if (!(k in inst)) {\n                inst[k] = proto[k].bind(inst);\n            }\n        }\n    }\n    // doesn't work if Parent has a constructor with arguments\n    const Parent = params?.Parent ?? Object;\n    class Definition extends Parent {\n    }\n    Object.defineProperty(Definition, \"name\", { value: name });\n    function _(def) {\n        const inst = params?.Parent ? newError(Definition) : this;\n        init(inst, def);\n        const deferred = inst._zod.deferred;\n        if (deferred) {\n            for (const fn of deferred) {\n                fn();\n            }\n            // Released: initializers run once, and the list would otherwise be retained for the schema's lifetime.\n            inst._zod.deferred = undefined;\n        }\n        // Global post-processor hook. Internal: installed by `import \"zod/compile\"` to enable AOT compilation for every constructed schema. Runs last, once the instance is fully built, because it hands the instance to compile(). The post-processor is expected to be reentrancy-guarded by its own implementation.\n        const pp = globalThis.__zod_globalConfig?.postProcessor;\n        if (pp)\n            pp(inst);\n        return inst;\n    }\n    Object.defineProperty(_, \"init\", { value: init });\n    Object.defineProperty(_, Symbol.hasInstance, {\n        value: (inst) => {\n            if (params?.Parent && inst instanceof params.Parent)\n                return true;\n            return inst?._zod?.traits?.has(name);\n        },\n    });\n    Object.defineProperty(_, \"name\", { value: name });\n    return _;\n}\n//////////////////////////////   UTILITIES   ///////////////////////////////////////\nexport const $brand = /*@__PURE__*/ Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n    constructor() {\n        super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n    }\n}\nexport class $ZodEncodeError extends Error {\n    constructor(name) {\n        super(`Encountered unidirectional transform during encode: ${name}`);\n        this.name = \"ZodEncodeError\";\n    }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n    if (newConfig)\n        Object.assign(globalConfig, newConfig);\n    return globalConfig;\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\n/* Computing the message eagerly is expensive (pretty-printed JSON of all\n * issues), so defer it until first read. The accessor functions and\n * descriptors are shared across instances to keep error construction\n * cheap; the computed message is cached on the internals object. The\n * setter preserves plain assignment semantics for consumers that\n * overwrite `message`. */\nfunction _getMessage() {\n    const internals = this._zod;\n    internals.message ?? (internals.message = JSON.stringify(internals.def, util.jsonStringifyReplacer, 2));\n    return internals.message;\n}\nfunction _setMessage(value) {\n    this._zod.message = value;\n}\nconst _messageDesc = {\n    get: _getMessage,\n    set: _setMessage,\n    enumerable: true,\n    configurable: true,\n};\nconst _issuesDesc = { value: undefined, enumerable: false };\n/* Prototypes that already carry the lazy `toString`. Seeded with the\n * intrinsics so that `init` on a foreign object — it accepts any object —\n * can never install an accessor onto a prototype we do not own. */\nconst _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\nconst initializer = (inst, def) => {\n    inst.name = \"$ZodError\";\n    // `_zod` is already non-enumerable: $constructor's init defined it with this same descriptor\n    _issuesDesc.value = def;\n    Object.defineProperty(inst, \"issues\", _issuesDesc);\n    // Clear the shared slot; a retained `value` pins the last error's issues.\n    _issuesDesc.value = undefined;\n    Object.defineProperty(inst, \"message\", _messageDesc);\n    /* `toString` lives as a non-enumerable lazy getter on the shared\n     * prototype; on first access it caches a per-instance closure so\n     * detached usage still works. */\n    const proto = Object.getPrototypeOf(inst);\n    if (!_installedToString.has(proto)) {\n        _installedToString.add(proto);\n        Object.defineProperty(proto, \"toString\", {\n            configurable: true,\n            enumerable: false,\n            get() {\n                const value = () => this.message;\n                Object.defineProperty(this, \"toString\", { value, configurable: true, writable: true });\n                return value;\n            },\n            set(value) {\n                Object.defineProperty(this, \"toString\", { value, configurable: true, writable: true });\n            },\n        });\n    }\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, undefined, {\n    Parent: Error,\n});\n/** Get-or-create `obj[key]` as an own data property. A path segment naming an inherited member\n * (\"toString\", \"constructor\") would otherwise read through to the prototype, and assigning\n * \"__proto__\" would hit the setter instead of creating a key. */\nfunction node(obj, key, make) {\n    if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n        if (key === \"__proto__\") {\n            Object.defineProperty(obj, key, { value: make(), writable: true, enumerable: true, configurable: true });\n        }\n        else {\n            obj[key] = make();\n        }\n    }\n    return obj[key];\n}\nexport function flattenError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = {};\n    const formErrors = [];\n    for (const sub of error.issues) {\n        if (sub.path.length > 0) {\n            node(fieldErrors, sub.path[0], () => []).push(mapper(sub));\n        }\n        else {\n            formErrors.push(mapper(sub));\n        }\n    }\n    return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = { _errors: [] };\n    const processError = (error, path = []) => {\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else {\n                const fullpath = [...path, ...issue.path];\n                if (fullpath.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < fullpath.length) {\n                        const el = fullpath[i];\n                        const terminal = i === fullpath.length - 1;\n                        // `_errors` is reserved by this legacy format, so merge a matching path segment into the current node instead of treating its array as a child.\n                        if (el === \"_errors\") {\n                            if (terminal)\n                                curr._errors.push(mapper(issue));\n                            i++;\n                            continue;\n                        }\n                        // A path element may collide with an inherited property name such as\n                        // \"__proto__\" or \"constructor\". Truthiness checks read the prototype\n                        // (so no node is created, then ._errors.push throws), and bracket\n                        // assignment of \"__proto__\" hits the setter instead of creating an\n                        // own key. Guard the read with hasOwnProperty and create the node\n                        // with defineProperty so any path element becomes a real own key.\n                        if (!Object.prototype.hasOwnProperty.call(curr, el)) {\n                            Object.defineProperty(curr, el, {\n                                value: { _errors: [] },\n                                enumerable: true,\n                                writable: true,\n                                configurable: true,\n                            });\n                        }\n                        const node = curr[el];\n                        if (terminal) {\n                            node._errors.push(mapper(issue));\n                        }\n                        curr = node;\n                        i++;\n                    }\n                }\n            }\n        }\n    };\n    processError(error);\n    return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n    const result = { errors: [] };\n    const processError = (error, path = []) => {\n        var _a;\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                // regular union error\n                issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else {\n                const fullpath = [...path, ...issue.path];\n                if (fullpath.length === 0) {\n                    result.errors.push(mapper(issue));\n                    continue;\n                }\n                let curr = result;\n                let i = 0;\n                while (i < fullpath.length) {\n                    const el = fullpath[i];\n                    const terminal = i === fullpath.length - 1;\n                    if (typeof el === \"string\") {\n                        curr.properties ?? (curr.properties = {});\n                        // el may collide with an inherited property name (\"__proto__\",\n                        // \"constructor\", ...); ??= reads the prototype so the node is never\n                        // created and curr.errors.push throws. Guard with hasOwnProperty and\n                        // create the node with defineProperty so \"__proto__\" becomes a real\n                        // own key rather than invoking the prototype setter.\n                        if (!Object.prototype.hasOwnProperty.call(curr.properties, el)) {\n                            Object.defineProperty(curr.properties, el, {\n                                value: { errors: [] },\n                                enumerable: true,\n                                writable: true,\n                                configurable: true,\n                            });\n                        }\n                        curr = curr.properties[el];\n                    }\n                    else {\n                        curr.items ?? (curr.items = []);\n                        (_a = curr.items)[el] ?? (_a[el] = { errors: [] });\n                        curr = curr.items[el];\n                    }\n                    if (terminal) {\n                        curr.errors.push(mapper(issue));\n                    }\n                    i++;\n                }\n            }\n        }\n    };\n    processError(error);\n    return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n *   issues: [\n *     {\n *       expected: 'string',\n *       code: 'invalid_type',\n *       path: [ 'username' ],\n *       message: 'Invalid input: expected string'\n *     },\n *     {\n *       expected: 'number',\n *       code: 'invalid_type',\n *       path: [ 'favoriteNumbers', 1 ],\n *       message: 'Invalid input: expected number'\n *     }\n *   ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n *   ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n *   ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n    const segs = [];\n    const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n    for (const seg of path) {\n        if (typeof seg === \"number\")\n            segs.push(`[${seg}]`);\n        else if (typeof seg === \"symbol\")\n            segs.push(`[${JSON.stringify(String(seg))}]`);\n        else if (/[^\\w$]/.test(seg))\n            segs.push(`[${JSON.stringify(seg)}]`);\n        else {\n            if (segs.length)\n                segs.push(\".\");\n            segs.push(seg);\n        }\n    }\n    return segs.join(\"\");\n}\nexport function prettifyError(error) {\n    const lines = [];\n    // sort by path length\n    const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n    // Process each issue\n    for (const issue of issues) {\n        lines.push(`✖ ${issue.message}`);\n        if (issue.path?.length)\n            lines.push(`  → at ${toDotPath(issue.path)}`);\n    }\n    // Convert Map to formatted string\n    return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\n// Always both keys, so the `_params` read site in `_parse` sees one object shape rather than two.\nfunction finalizeParams(callee, params) {\n    return { callee: params?.callee ?? callee, Err: params?.Err };\n}\nexport const _parse = (_Err) => {\n    const fn = (schema, value, _ctx, _params) => {\n        const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n        const result = schema._zod.run({ value, issues: [] }, ctx);\n        if (result instanceof Promise) {\n            throw new core.$ZodAsyncError();\n        }\n        if (result.issues.length) {\n            const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n            util.captureStackTrace(e, _params?.callee ?? fn);\n            throw e;\n        }\n        return result.value;\n    };\n    return fn;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => {\n    const fn = async (schema, value, _ctx, params) => {\n        const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n        let result = schema._zod.run({ value, issues: [] }, ctx);\n        if (result instanceof Promise)\n            result = await result;\n        if (result.issues.length) {\n            const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n            util.captureStackTrace(e, params?.callee ?? fn);\n            throw e;\n        }\n        return result.value;\n    };\n    return fn;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    return result.issues.length ? failure(_Err, result.issues, ctx) : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\n// the error is built on the first read of `error`: finalizing the issues and constructing the instance is most of a failing parse, and a caller that only branches on `success` never pays it. a getter in the literal keeps this small; the alternative, one shared accessor descriptor plus a hidden state slot, reads ~15% faster but costs ~75 B gzipped in every bundle\nfunction failure(Err, issues, ctx) {\n    let error;\n    return {\n        success: false,\n        get error() {\n            if (!error) {\n                error = new Err(issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n                // finalizeIssue drops `input`, so the built error holds nothing; keeping the raw issues past this point pins the parsed value for the life of the result\n                issues = undefined;\n                ctx = undefined;\n            }\n            return error;\n        },\n        set error(e) {\n            error = e;\n            // a replacement makes the getter's branch unreachable, so the captures have to go here too\n            issues = undefined;\n            ctx = undefined;\n        },\n    };\n}\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    return result.issues.length ? failure(_Err, result.issues, ctx) : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\n// registry mirrors of the compiler's sentinels, so this module never imports the compiler\nconst COMPILE_INVALID = /* @__PURE__ */ Symbol.for(\"zod.compile.invalid\");\nconst COMPILE_FALLBACK = /* @__PURE__ */ Symbol.for(\"zod.compile.fallback\");\n// Deliberately tiny, because v8 will not inline a body carrying the fallback's object literals and throw. Everything that is not the compiled happy path lives in validateFallback, and that split is worth ~35% on a compiled schema.\nexport const validate = ((schema, value, _ctx) => {\n    const validator = schema._zod.bag.validator;\n    if (validator !== undefined) {\n        if (validator(value) !== COMPILE_INVALID)\n            return true;\n        // a definite sentinel means the runtime would reject, so skip the re-parse; a ctx can still change the answer\n        if (validator.definite === true && _ctx === undefined)\n            return false;\n    }\n    return validateFallback(schema, value, _ctx);\n});\nfunction validateFallback(schema, value, _ctx) {\n    const ctx = _ctx\n        ? { ..._ctx, async: false, abortEarly: true }\n        : { async: false, abortEarly: true };\n    const fallbackRun = schema._zod.bag.fallbackRun;\n    let result;\n    if (fallbackRun) {\n        // skip nested fast paths on the fallback, so user callbacks keep the at-most-twice bound\n        ctx[COMPILE_FALLBACK] = true;\n        result = fallbackRun({ value, issues: [] }, ctx);\n    }\n    else {\n        result = schema._zod.run({ value, issues: [] }, ctx);\n    }\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    return result.issues.length === 0;\n}\n// no fast path: the compiler keeps async parses on the runtime, because a promise-returning callback that is not declared async compiles to a throw\nexport const validateAsync = async (schema, value, _ctx) => {\n    const ctx = _ctx\n        ? { ..._ctx, async: true, abortEarly: true }\n        : { async: true, abortEarly: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    return result.issues.length === 0;\n};\nexport const _encode = (_Err) => {\n    const parse = _parse(_Err);\n    const fn = (schema, value, _ctx, _params) => {\n        const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n        return parse(schema, value, ctx, finalizeParams(fn, _params));\n    };\n    return fn;\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => {\n    const parse = _parse(_Err);\n    const fn = (schema, value, _ctx, _params) => {\n        return parse(schema, value, _ctx, finalizeParams(fn, _params));\n    };\n    return fn;\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => {\n    const parseAsync = _parseAsync(_Err);\n    const fn = async (schema, value, _ctx, _params) => {\n        const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n        return (await parseAsync(schema, value, ctx, finalizeParams(fn, _params)));\n    };\n    return fn;\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => {\n    const parseAsync = _parseAsync(_Err);\n    const fn = async (schema, value, _ctx, _params) => {\n        return await parseAsync(schema, value, _ctx, finalizeParams(fn, _params));\n    };\n    return fn;\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n    return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n    return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n    return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n    return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\nexport function nanoidOfLength(length) {\n    return new RegExp(`^[a-zA-Z0-9_-]{${length}}$`);\n}\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n    if (!version)\n        return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n    return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\n// Single character class, not an alternation: the two properties overlap (U+1F9B0-U+1F9B3), so `(A|B)+` backtracks exponentially on a failed match. The leading lookahead then demands one anchor — a pictograph, a regional indicator, or the enclosing keycap — because `\\p{Emoji_Component}` on its own covers ASCII digits, `#`, `*`, ZWJ, variation selectors and skin tone modifiers, none of which is an emoji without a base.\nconst _emoji = `^(?=[\\\\s\\\\S]*[\\\\p{Extended_Pictographic}\\\\p{Regional_Indicator}\\\\u20E3])[\\\\p{Extended_Pictographic}\\\\p{Emoji_Component}]+$`;\nexport function emoji() {\n    return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n    const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n    return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^(?=.{1,253}$)([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,63}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces) E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// Credit card shape: 12–19 digits, optionally separated by single spaces or single hyphens. ISO/IEC 7812 caps the PAN at 19 digits; 12 is the shortest issued length (Maestro).\nexport const creditCard = /^\\d(?:[ -]?\\d){11,18}$/;\n// ISO 4217 alpha codes from the SIX list, regenerated by scripts/update-iso-4217.ts\nexport const currencyCode = /^(?:AED|AFN|ALL|AMD|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYN|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRU|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLE|SOS|SRD|SSP|STN|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|UYI|UYU|UYW|UZS|VED|VES|VND|VUV|WST|XAD|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XCG|XDR|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWG)$/;\n// iban electronic format: 2-letter country, check digits 02-98 (the only values `98 - remainder` can produce), 11-30 bban characters\nexport const iban = /^[A-Z]{2}(?!00|01|99)\\d{2}[A-Z0-9]{11,30}$/;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\n/** Anchors a pattern source. The interpolation lives here rather than at the call site because\n * esbuild will not drop a `@__PURE__` call whose own argument interpolates a variable, but it\n * will drop `anchor(dateSource)`. Keeping it inline pinned `date` into every bundle. */\nfunction anchor(source) {\n    return new RegExp(`^${source}$`);\n}\nexport const date = /*@__PURE__*/ anchor(dateSource);\nfunction timeSource(args) {\n    const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n    const regex = typeof args.precision === \"number\"\n        ? args.precision === -1\n            ? `${hhmm}`\n            : args.precision === 0\n                ? `${hhmm}:[0-5]\\\\d`\n                : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n        : args.seconds\n            ? `${hhmm}:[0-5]\\\\d(?:\\\\.\\\\d+)?`\n            : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n    return regex;\n}\nexport function time(args) {\n    return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n    const opts = [\"Z\"];\n    // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n    if (args.offset)\n        opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n    // RFC 3339 mandates seconds wherever the time carries a `Z` or an offset, so only the unqualified form `local` adds may omit them\n    const qualified = `${timeSource({ precision: args.precision, seconds: true })}(?:${opts.join(\"|\")})`;\n    const timeRegex = args.local ? `${qualified}|${timeSource({ precision: args.precision })}` : qualified;\n    return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\n// the unbounded form of `string()` as a literal, so every plain string shares one instance instead of building its own\nexport const anyString = /^[\\s\\S]{0,}$/;\nexport const string = (params) => {\n    const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n    return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n    return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n    return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n    var _a;\n    inst._zod ?? (inst._zod = {});\n    inst._zod.def = def;\n    (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\n/** Default `when` for size-based checks: run only on non-nullish values with a `size`. */\nconst _whenHasSize = (payload) => {\n    const val = payload.value;\n    return !util.nullish(val) && val.size !== undefined;\n};\n/** Default `when` for length-based checks: run only on non-nullish values with a `length`. */\nconst _whenHasLength = (payload) => {\n    const val = payload.value;\n    return !util.nullish(val) && val.length !== undefined;\n};\nconst numericOriginMap = {\n    number: \"number\",\n    bigint: \"bigint\",\n    object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin: numericOriginMap[typeof payload.value] ?? origin,\n            code: \"too_big\",\n            maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin: numericOriginMap[typeof payload.value] ?? origin,\n            code: \"too_small\",\n            minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (typeof payload.value !== typeof def.value)\n            throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n        const isMultiple = typeof payload.value === \"bigint\"\n            ? // `value % 0n` throws, and nothing is a multiple of zero — the number branch already fails this way via NaN\n                def.value !== BigInt(0) && payload.value % def.value === BigInt(0)\n            : util.floatSafeRemainder(payload.value, def.value) === 0;\n        if (isMultiple)\n            return;\n        payload.issues.push({\n            origin: typeof payload.value,\n            code: \"not_multiple_of\",\n            divisor: def.value,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    def.format = def.format || \"float64\";\n    const isInt = def.format?.includes(\"int\");\n    const origin = isInt ? \"int\" : \"number\";\n    const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (isInt) {\n            if (!Number.isInteger(input)) {\n                // invalid_format issue\n                // payload.issues.push({\n                //   expected: def.format,\n                //   format: def.format,\n                //   code: \"invalid_format\",\n                //   input,\n                //   inst,\n                // });\n                // invalid_type issue\n                payload.issues.push({\n                    expected: origin,\n                    format: def.format,\n                    code: \"invalid_type\",\n                    continue: false,\n                    input,\n                    inst,\n                });\n                return;\n                // not_multiple_of issue\n                // payload.issues.push({\n                //   code: \"not_multiple_of\",\n                //   origin: \"number\",\n                //   input,\n                //   inst,\n                //   divisor: 1,\n                // });\n            }\n            if (!Number.isSafeInteger(input)) {\n                if (input > 0) {\n                    // too_big\n                    payload.issues.push({\n                        input,\n                        code: \"too_big\",\n                        maximum: Number.MAX_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        inclusive: true,\n                        continue: !def.abort,\n                    });\n                }\n                else {\n                    // too_small\n                    payload.issues.push({\n                        input,\n                        code: \"too_small\",\n                        minimum: Number.MIN_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        inclusive: true,\n                        continue: !def.abort,\n                    });\n                }\n                return;\n            }\n        }\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_small\",\n                minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_small\",\n                minimum: minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size <= def.maximum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size >= def.minimum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size === def.size)\n            return;\n        const tooBig = size > def.size;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const units = input.length;\n        // Strings are measured in Unicode code points, not UTF-16 units. A code point is at most two units, so a string that already fits in units fits in code points; only an overflow has to be counted.\n        const length = typeof input === \"string\" && units > def.maximum ? util.codePointLength(input) : units;\n        if (length <= def.maximum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const units = input.length;\n        // A code point is one or two UTF-16 units, so fewer units than the floor can never reach it and twice the floor always clears it. Only in between is the exact count in doubt.\n        const length = typeof input === \"string\" && units >= def.minimum && units < def.minimum * 2\n            ? util.codePointLength(input)\n            : units;\n        if (length >= def.minimum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const units = input.length;\n        // A code point is one or two UTF-16 units, so outside `[length, length * 2]` units the target is missed either way — and missed in the same direction in both measures.\n        const length = typeof input === \"string\" && units >= def.length && units <= def.length * 2\n            ? util.codePointLength(input)\n            : units;\n        if (length === def.length)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        const tooBig = length > def.length;\n        payload.issues.push({\n            origin,\n            ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n    var _a, _b;\n    $ZodCheck.init(inst, def);\n    if (def.pattern)\n        (_a = inst._zod).check ?? (_a.check = (payload) => {\n            def.pattern.lastIndex = 0;\n            if (def.pattern.test(payload.value))\n                return;\n            payload.issues.push({\n                origin: \"string\",\n                code: \"invalid_format\",\n                format: def.format,\n                input: payload.value,\n                ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n                inst,\n                continue: !def.abort,\n            });\n        });\n    else\n        (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n    $ZodCheckStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        def.pattern.lastIndex = 0;\n        if (def.pattern.test(payload.value))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"regex\",\n            input: payload.value,\n            pattern: def.pattern.toString(),\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.lowercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.uppercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const escapedRegex = util.escapeRegex(def.includes);\n    // `String.prototype.includes(sub, position)` matches `sub` at `position`\n    // OR LATER, so the pattern must allow at least `position` leading chars\n    // (`{N,}`), not exactly `position` chars (`{N}`).\n    const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position},}${escapedRegex}` : escapedRegex);\n    def.pattern = pattern;\n    inst._zod.check = (payload) => {\n        if (payload.value.includes(def.includes, def.position))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"includes\",\n            includes: def.includes,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.check = (payload) => {\n        if (payload.value.startsWith(def.prefix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"starts_with\",\n            prefix: def.prefix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.check = (payload) => {\n        if (payload.value.endsWith(def.suffix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"ends_with\",\n            suffix: def.suffix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n///////////////////////////////////\n/////    $ZodCheckProperty    /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n    if (result.issues.length) {\n        payload.issues.push(...util.prefixIssues(property, result.issues));\n    }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        const result = def.schema._zod.run({\n            value: payload.value[def.property],\n            issues: [],\n        }, {});\n        if (result instanceof Promise) {\n            return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n        }\n        handleCheckPropertyResult(result, payload, def.property);\n        return;\n    };\n});\nexport const $ZodCheckProperties = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperties\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    util.hide(inst, Symbol.iterator, function* () {\n        yield inst;\n    });\n    // key and schema snapshotted together: reading one live and the other cached lets a later mutation of the caller's shape object pair a stale key with a missing schema\n    let entries;\n    inst._zod.check = (payload) => {\n        // the base schema already typed the value, so only a nullish one is rejected here: the properties read on a primitive too, matching z.property() on a string's length\n        if (payload.value == null) {\n            payload.issues.push({ expected: \"object\", code: \"invalid_type\", input: payload.value, inst });\n            return undefined;\n        }\n        entries ?? (entries = Reflect.ownKeys(def.shape).map((key) => [key, def.shape[key]]));\n        const input = payload.value;\n        let proms;\n        for (const [key, schema] of entries) {\n            const result = schema._zod.run({ value: input[key], issues: [] }, {});\n            if (result instanceof Promise) {\n                proms ?? (proms = []);\n                proms.push(result.then((result) => handleCheckPropertyResult(result, payload, key)));\n            }\n            else {\n                handleCheckPropertyResult(result, payload, key);\n            }\n        }\n        if (proms)\n            return Promise.all(proms).then(() => undefined);\n        return undefined;\n    };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const mimeSet = new Set(def.mime);\n    inst._zod.check = (payload) => {\n        if (mimeSet.has(payload.value.type))\n            return;\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.mime,\n            input: payload.value.type,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        payload.value = def.tx(payload.value);\n    };\n});\n","export class Doc {\n    constructor(args = [], closed = {}) {\n        this.content = [];\n        this.indent = 0;\n        this.args = args;\n        this.closed = closed;\n    }\n    // the compiler catches a child's throw and keeps writing into this doc, so the indent has to unwind with it\n    indented(fn) {\n        this.indent += 1;\n        try {\n            fn(this);\n        }\n        finally {\n            this.indent -= 1;\n        }\n    }\n    write(arg) {\n        if (typeof arg === \"function\") {\n            arg(this, { execution: \"sync\" });\n            arg(this, { execution: \"async\" });\n            return;\n        }\n        const content = arg;\n        const lines = content.split(\"\\n\").filter((x) => x);\n        const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n        const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n        for (const line of dedented) {\n            this.content.push(line);\n        }\n    }\n    compile() {\n        const F = Function;\n        const content = this?.content ?? [``];\n        const factory = new F(...Object.keys(this.closed), `return function (${this.args.join(\", \")}) {\\n${content.join(\"\\n\")}\\n};`);\n        return factory(...Object.values(this.closed));\n    }\n}\n","export const version = {\n    major: 4,\n    minor: 6,\n    patch: 7,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n    var _a;\n    inst ?? (inst = {});\n    inst._zod.def = def; // set _def property\n    inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n    inst._zod.version = version;\n    const defChecks = inst._zod.def.checks;\n    // if inst is itself a checks.$ZodCheck, run it as a check\n    const checks = inst._zod.traits.has(\"$ZodCheck\")\n        ? [inst, ...(defChecks ?? [])]\n        : defChecks?.length\n            ? [...defChecks]\n            : [];\n    for (const ch of checks) {\n        for (const fn of ch._zod.onattach) {\n            fn(inst);\n        }\n    }\n    if (checks.length === 0) {\n        // deferred initializer inst._zod.parse is not yet defined\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        inst._zod.deferred?.push(() => {\n            inst._zod.run = inst._zod.parse;\n        });\n    }\n    else {\n        const runChecks = (payload, checks, ctx) => {\n            if (payload.memo)\n                return payload;\n            let isAborted = util.aborted(payload);\n            let asyncResult;\n            for (const ch of checks) {\n                if (ch._zod.def.when) {\n                    if (util.explicitlyAborted(payload))\n                        continue;\n                    const shouldRun = ch._zod.def.when(payload);\n                    if (!shouldRun)\n                        continue;\n                }\n                else if (isAborted) {\n                    continue;\n                }\n                const currLen = payload.issues.length;\n                const _ = ch._zod.check(payload);\n                if (_ instanceof Promise && ctx?.async === false) {\n                    throw new core.$ZodAsyncError();\n                }\n                if (asyncResult || _ instanceof Promise) {\n                    asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n                        await _;\n                        const nextLen = payload.issues.length;\n                        if (nextLen === currLen)\n                            return;\n                        util.attachSchema(payload.issues, currLen, inst);\n                        if (!isAborted)\n                            isAborted = util.aborted(payload, currLen);\n                    });\n                }\n                else {\n                    const nextLen = payload.issues.length;\n                    if (nextLen === currLen)\n                        continue;\n                    util.attachSchema(payload.issues, currLen, inst);\n                    if (!isAborted)\n                        isAborted = util.aborted(payload, currLen);\n                }\n            }\n            if (asyncResult) {\n                return asyncResult.then(() => {\n                    return payload;\n                });\n            }\n            return payload;\n        };\n        const handleCanaryResult = (canary, payload, ctx) => {\n            // abort if the canary is aborted\n            if (util.aborted(canary)) {\n                canary.aborted = true;\n                return canary;\n            }\n            // run checks first, then\n            const checkResult = runChecks(payload, checks, ctx);\n            if (checkResult instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n            }\n            return inst._zod.parse(checkResult, ctx);\n        };\n        inst._zod.run = (payload, ctx) => {\n            if (ctx.skipChecks) {\n                return inst._zod.parse(payload, ctx);\n            }\n            if (ctx.direction === \"backward\") {\n                // run canary initial pass (no checks)\n                const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n                if (canary instanceof Promise) {\n                    return canary.then((canary) => {\n                        return handleCanaryResult(canary, payload, ctx);\n                    });\n                }\n                return handleCanaryResult(canary, payload, ctx);\n            }\n            // forward\n            const result = inst._zod.parse(payload, ctx);\n            if (result instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return result.then((result) => runChecks(result, checks, ctx));\n            }\n            return runChecks(result, checks, ctx);\n        };\n    }\n}, {\n    // Wrappers extend this by installing a richer factory over it; reading it eagerly would defeat the laziness.\n    get \"~standard\"() {\n        return util.hide(this, \"~standard\", standardProps(this));\n    },\n    set \"~standard\"(value) {\n        util.own(this, \"~standard\", value);\n    },\n});\n/** The Standard Schema surface for `inst`. Shared so wrappers can extend it without forcing it. */\n// a Standard Schema result only reports issues, so a failure finalizes them straight off the raw payload: no ZodError, and no lazy result to read through\nconst toStandardResult = (r, ctx) => r.issues.length ? { issues: r.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())) } : { value: r.value };\nasync function validateAsync(inst, value) {\n    const ctx = { async: true };\n    return toStandardResult((await inst._zod.run({ value, issues: [] }, ctx)), ctx);\n}\nexport function standardProps(inst) {\n    return {\n        validate: (value) => {\n            const ctx = { async: false };\n            try {\n                const r = inst._zod.run({ value, issues: [] }, ctx);\n                if (!(r instanceof Promise))\n                    return toStandardResult(r, ctx);\n            }\n            catch (_) { }\n            // async function so a synchronously throwing check rejects instead of escaping validate\n            return validateAsync(inst, value);\n        },\n        vendor: \"zod\",\n        version: 1,\n    };\n}\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // a format's own pattern, else unbounded; a template literal derives the check-aware form itself\n    inst._zod.pattern = def.pattern ?? regexes.anyString;\n    inst._zod.parse = (payload, _) => {\n        if (def.coerce)\n            try {\n                payload.value = String(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"string\")\n            return payload;\n        payload.issues.push({\n            expected: \"string\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n    // check initialization must come first\n    checks.$ZodCheckStringFormat.init(inst, def);\n    $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.guid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n    if (def.version) {\n        const versionMap = {\n            v1: 1,\n            v2: 2,\n            v3: 3,\n            v4: 4,\n            v5: 5,\n            v6: 6,\n            v7: 7,\n            v8: 8,\n        };\n        const v = versionMap[def.version];\n        if (v === undefined)\n            throw new Error(`Invalid UUID version: \"${def.version}\"`);\n        def.pattern ?? (def.pattern = regexes.uuid(v));\n    }\n    else\n        def.pattern ?? (def.pattern = regexes.uuid());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.email);\n    $ZodStringFormat.init(inst, def);\n});\n/** The `://` guard rejected the input before the URL constructor saw it. */\nexport const URL_BAD_FORMAT = 1;\n/** The URL parser rejected the input. */\nexport const URL_UNPARSEABLE = 2;\nexport function canParseURL(input) {\n    try {\n        if (typeof URL !== \"undefined\" && typeof URL.canParse === \"function\")\n            return URL.canParse(input);\n        new URL(input);\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport function validateURL(trimmed, def) {\n    if (!(\"normalize\" in def) && !(\"hostname\" in def) && !(\"protocol\" in def)) {\n        return canParseURL(trimmed) || URL_UNPARSEABLE;\n    }\n    return parseURLObject(trimmed, def);\n}\n/** Parses a URL while preserving the non-normalizing HTTP guard. */\nexport function parseURLObject(trimmed, def) {\n    // When normalize is off, require :// for http/https URLs. This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n    if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source && !/^https?:\\/\\//i.test(trimmed)) {\n        return URL_BAD_FORMAT;\n    }\n    try {\n        if (typeof URL !== \"undefined\") {\n            const URLStatic = URL;\n            if (typeof URLStatic.parse === \"function\")\n                return URLStatic.parse(trimmed) ?? URL_UNPARSEABLE;\n        }\n        // @ts-ignore\n        return new URL(trimmed);\n    }\n    catch {\n        return URL_UNPARSEABLE;\n    }\n}\nconst asciiTabOrNewline = /[\\t\\n\\r]/g;\n/** The URL parser deletes every ASCII tab, LF and CR from its input before it parses, so `new URL(\"https://exa\\nmple.com\")` reports on `example.com`. Applying the same deletion to the returned value closes the half of that divergence which can move the host; the parser's other rewrite, stripping C0 controls at the edges, cannot. */\nexport function stripTabAndNewline(value) {\n    return value.replace(asciiTabOrNewline, \"\");\n}\nexport function urlHostnameOk(url, hostname) {\n    hostname.lastIndex = 0;\n    return hostname.test(url.hostname);\n}\nexport function urlProtocolOk(url, protocol) {\n    protocol.lastIndex = 0;\n    return protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol);\n}\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        try {\n            // Trim whitespace from input\n            const trimmed = payload.value.trim();\n            const url = validateURL(trimmed, def);\n            if (url === URL_BAD_FORMAT) {\n                payload.issues.push({\n                    code: \"invalid_format\",\n                    format: \"url\",\n                    note: \"Invalid URL format\",\n                    input: payload.value,\n                    inst,\n                    continue: !def.abort,\n                });\n                return;\n            }\n            if (url === URL_UNPARSEABLE) {\n                payload.issues.push({\n                    code: \"invalid_format\",\n                    format: \"url\",\n                    input: payload.value,\n                    inst,\n                    continue: !def.abort,\n                });\n                return;\n            }\n            if (url === true) {\n                payload.value = stripTabAndNewline(trimmed);\n                return;\n            }\n            if (def.hostname && !urlHostnameOk(url, def.hostname)) {\n                payload.issues.push({\n                    code: \"invalid_format\",\n                    format: \"url\",\n                    note: \"Invalid hostname\",\n                    pattern: def.hostname.source,\n                    input: payload.value,\n                    inst,\n                    continue: !def.abort,\n                });\n            }\n            if (def.protocol && !urlProtocolOk(url, def.protocol)) {\n                payload.issues.push({\n                    code: \"invalid_format\",\n                    format: \"url\",\n                    note: \"Invalid protocol\",\n                    pattern: def.protocol.source,\n                    input: payload.value,\n                    inst,\n                    continue: !def.abort,\n                });\n            }\n            // Set the output value based on normalize flag\n            payload.value = def.normalize ? url.href : stripTabAndNewline(trimmed);\n            return;\n        }\n        catch (_) {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"url\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.emoji());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n    if (def.length !== undefined && (!Number.isInteger(def.length) || def.length < 1))\n        throw new Error(`Invalid nanoid length: ${def.length}`);\n    def.pattern ?? (def.pattern = def.length === undefined ? regexes.nanoid : regexes.nanoidOfLength(def.length));\n    $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid2);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ulid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.xid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ksuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.datetime(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.date);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.time(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.duration);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv4);\n    $ZodStringFormat.init(inst, def);\n});\n/** An IPv6 address is written with hex digits, colons and dots, and nothing else. The guard is what makes the check below an IPv6 check: `new URL(\"http://[...]\")` parses an authority, not an address, so `@` and `\\` re-delimit it and `\"::@1\\\\\"` validates against the host `0.0.0.1`. The URL parser also deletes ASCII tab, LF and CR rather than failing, which is how `\"::1\\n\"` validated as `::1`. */\nconst ipv6Alphabet = /^[0-9a-fA-F:.]+$/;\nexport function isValidIPv6(value) {\n    if (!ipv6Alphabet.test(value))\n        return false;\n    return canParseURL(`http://[${value}]`);\n}\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv6);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (!isValidIPv6(payload.value)) {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"ipv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv4);\n    $ZodStringFormat.init(inst, def);\n});\nexport function isValidCIDRv6(value) {\n    const parts = value.split(\"/\");\n    if (parts.length !== 2)\n        return false;\n    const [address, prefix] = parts;\n    if (!prefix)\n        return false;\n    const prefixNum = Number(prefix);\n    if (`${prefixNum}` !== prefix)\n        return false;\n    if (prefixNum < 0 || prefixNum > 128)\n        return false;\n    return isValidIPv6(address);\n}\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (!isValidCIDRv6(payload.value)) {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"cidrv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64(data) {\n    if (data === \"\")\n        return true;\n    // atob ignores whitespace, so reject it up front.\n    if (/\\s/.test(data))\n        return false;\n    if (data.length % 4 !== 0)\n        return false;\n    try {\n        // @ts-ignore\n        atob(data);\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\n// lax on purpose: the quantified regexes.base64 overflows the regex stack on multi-MB input and its leading ^$| alternation leaks through template-literal composition; isValidBase64 enforces length and padding\nexport const base64Charset = /^[0-9a-zA-Z+/]*={0,2}$/;\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n    def.pattern ?? (def.pattern = base64Charset);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidBase64(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n//////////////////////////////   ZodBase64URL   //////////////////////////////\n// lax on purpose: the quantified regexes.base64url overflows the regex stack on multi-MB input; isValidBase64 enforces length on the padded string\nexport const base64urlCharset = /^[A-Za-z0-9_-]*$/;\nexport function isValidBase64URL(data) {\n    if (!base64urlCharset.test(data))\n        return false;\n    const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n    const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n    return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n    def.pattern ?? (def.pattern = base64urlCharset);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidBase64URL(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64url\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.e164);\n    $ZodStringFormat.init(inst, def);\n});\n//////////////////////////////   ZodCreditCard   //////////////////////////////\nconst CC_SANITIZE = /[- ]/g;\n/** Luhn checksum on a digit-only string. Adapted from valibot (MIT). */\nfunction isLuhnAlgo(digits) {\n    let length = digits.length;\n    let bit = 1;\n    let sum = 0;\n    while (length) {\n        const value = digits.charCodeAt(--length) - 48;\n        bit ^= 1;\n        sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value;\n    }\n    return sum % 10 === 0;\n}\nexport function isValidCreditCard(input) {\n    if (!regexes.creditCard.test(input))\n        return false;\n    return isLuhnAlgo(input.replace(CC_SANITIZE, \"\"));\n}\nexport const $ZodCreditCard = /*@__PURE__*/ core.$constructor(\"$ZodCreditCard\", (inst, def) => {\n    // Shape only — the Luhn check below is not expressible as a pattern, so consumers of `pattern` (JSON Schema, template literals) get the length and separator rules alone.\n    def.pattern ?? (def.pattern = regexes.creditCard);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidCreditCard(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"credit_card\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n//////////////////////////////   ZodIBAN   //////////////////////////////\n// iso 7064 mod 97-10 checksum without BigInt\nfunction isIso7064Mod97(iban) {\n    let remainder = 0;\n    const len = iban.length;\n    for (let i = 4; i < len; i++) {\n        const code = iban.charCodeAt(i);\n        remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97;\n    }\n    for (let i = 0; i < 4; i++) {\n        const code = iban.charCodeAt(i);\n        remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97;\n    }\n    return remainder === 1;\n}\nexport function isValidIBAN(input) {\n    if (!regexes.iban.test(input))\n        return false;\n    return isIso7064Mod97(input);\n}\nexport const $ZodIBAN = /*@__PURE__*/ core.$constructor(\"$ZodIBAN\", (inst, def) => {\n    // shape only — checksum is not expressible as a pattern\n    def.pattern ?? (def.pattern = regexes.iban);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidIBAN(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"iban\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n//////////////////////////////   ZodJWT   //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n    try {\n        const tokensParts = token.split(\".\");\n        if (tokensParts.length !== 3)\n            return false;\n        const [header] = tokensParts;\n        if (!header)\n            return false;\n        // @ts-ignore\n        const parsedHeader = JSON.parse(atob(header));\n        if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n            return false;\n        if (!parsedHeader.alg)\n            return false;\n        if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidJWT(payload.value, def.alg))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"jwt\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (def.fn(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: def.format,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.number;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Number(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n            return payload;\n        }\n        const received = typeof input === \"number\"\n            ? Number.isNaN(input)\n                ? \"NaN\"\n                : !Number.isFinite(input)\n                    ? String(input)\n                    : undefined\n            : undefined;\n        payload.issues.push({\n            expected: \"number\",\n            code: \"invalid_type\",\n            input,\n            inst,\n            ...(received ? { received } : {}),\n        });\n        return payload;\n    };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n    checks.$ZodCheckNumberFormat.init(inst, def);\n    $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.boolean;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Boolean(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"boolean\")\n            return payload;\n        payload.issues.push({\n            expected: \"boolean\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.bigint;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = BigInt(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"bigint\")\n            return payload;\n        payload.issues.push({\n            expected: \"bigint\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n    checks.$ZodCheckBigIntFormat.init(inst, def);\n    $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"symbol\")\n            return payload;\n        payload.issues.push({\n            expected: \"symbol\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.undefined;\n    inst._zod.values = new Set([undefined]);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"undefined\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.null;\n    inst._zod.values = new Set([null]);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (input === null)\n            return payload;\n        payload.issues.push({\n            expected: \"null\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        payload.issues.push({\n            expected: \"never\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"void\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce) {\n            try {\n                payload.value = new Date(payload.value);\n            }\n            catch (_err) { }\n        }\n        const input = payload.value;\n        const isDate = input instanceof Date;\n        const isValidDate = isDate && !Number.isNaN(input.getTime());\n        if (isValidDate)\n            return payload;\n        payload.issues.push({\n            expected: \"date\",\n            code: \"invalid_type\",\n            input,\n            ...(isDate ? { received: \"Invalid Date\" } : {}),\n            inst,\n        });\n        return payload;\n    };\n});\n// an oversized container fails its leading size checks before any element is parsed\nfunction capSize(inst, size) {\n    const caps = util.sizeCaps(inst._zod.def.checks);\n    if (!caps.length)\n        return;\n    const cap = Math.min(...caps.map((c) => c[0]));\n    const parse = inst._zod.parse;\n    inst._zod.parse = (payload, ctx) => {\n        const n = size(payload.value);\n        if (n > cap && !ctx?.skipChecks && ctx?.direction !== \"backward\") {\n            for (const [max, ch] of util.sizeCaps(inst._zod.def.checks)) {\n                if (n > max && ch._zod.def.when(payload)) {\n                    const start = payload.issues.length;\n                    ch._zod.check(payload);\n                    // the value is still the raw input, so no later check may read it\n                    payload.issues[start].continue = false;\n                    util.attachSchema(payload.issues, start, inst);\n                    return payload;\n                }\n            }\n        }\n        return parse(payload, ctx);\n    };\n}\nconst arraySize = (input) => (Array.isArray(input) ? input.length : -1);\nconst mapSize = (input) => (input instanceof Map ? input.size : -1);\nconst setSize = (input) => (input instanceof Set ? input.size : -1);\nfunction handleArrayResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const memo = core.globalConfig.memoizer;\n    memo?.attach(inst);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                expected: \"array\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = memo ? memo.alloc(inst, payload, Array(input.length), ctx) : Array(input.length);\n        const proms = [];\n        const abortEarly = ctx?.abortEarly;\n        for (let i = 0; i < input.length; i++) {\n            const item = input[i];\n            const result = def.element._zod.run({\n                value: item,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n            }\n            else {\n                handleArrayResult(result, payload, i);\n                // the element's payload is authoritative here, since handleArrayResult forwards every issue; an object's is not, because it drops a failed absent optional\n                if (abortEarly && result.issues.length !== 0 && util.aborted(result))\n                    break;\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload; //handleArrayResultsAsync(parseResults, final);\n    };\n    capSize(inst, arraySize);\n});\nfunction handlePropertyResult(result, final, key, input, optin, optout) {\n    const isPresent = key in input;\n    const isOptionalOut = optout === \"optional\";\n    // The middle rung means \"absence permitted, nothing supplied in its place\", so an absent key contributes nothing — whatever the schema made of `undefined` is invented, not substituted. Only `optional` reaches this with a value: `defaulted` substitutes, and a schema that isn't optional-out has to keep the key.\n    if (!isPresent && isOptionalOut && optin === \"optional\") {\n        return;\n    }\n    if (result.issues.length) {\n        // For optional-in/out schemas, ignore errors on absent keys.\n        if (optin !== undefined && isOptionalOut && !isPresent) {\n            return;\n        }\n        final.issues.push(...util.prefixIssues(key, result.issues));\n    }\n    if (!isPresent && optin === undefined) {\n        if (!result.issues.length) {\n            final.issues.push({\n                code: \"invalid_type\",\n                expected: \"nonoptional\",\n                input: undefined,\n                path: [key],\n            });\n        }\n        return;\n    }\n    if (result.value === undefined) {\n        if (isPresent || (optin === \"defaulted\" && !isOptionalOut)) {\n            final.value[key] = undefined;\n        }\n    }\n    else {\n        final.value[key] = result.value;\n    }\n}\n// one shared instance; a fresh [] per schema cost 56 bytes retained\nconst NO_SYMBOL_KEYS = [];\nfunction normalizeDef(def) {\n    const keys = Object.keys(def.shape);\n    const ownSymbols = Object.getOwnPropertySymbols(def.shape);\n    const symbolKeys = ownSymbols.length ? ownSymbols : NO_SYMBOL_KEYS;\n    // aliases `keys` when there are no symbols, so a string-only shape keeps one array\n    const allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys;\n    for (const k of allKeys) {\n        if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n            throw new Error(`Invalid element at key \"${String(k)}\": expected a Zod schema`);\n        }\n    }\n    const okeys = util.optionalKeys(def.shape);\n    return {\n        ...def,\n        allKeys,\n        symbolKeys,\n        // string-only: handleCatchall matches it against `for...in`, which never yields a symbol\n        keySet: new Set(keys),\n        numKeys: keys.length,\n        optionalKeys: new Set(okeys),\n    };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst, abortEarly) {\n    const unrecognized = [];\n    const keySet = def.keySet;\n    const _catchall = def.catchall._zod;\n    const t = _catchall.def.type;\n    const optin = _catchall.optin;\n    const optout = _catchall.optout;\n    // starts at 0, not the current length: the shape phase already ran and may have aborted\n    let seen = 0;\n    for (const key in input) {\n        if (abortEarly && payload.issues.length !== seen) {\n            if (util.aborted(payload, seen))\n                break;\n            seen = payload.issues.length;\n        }\n        // Must precede the __proto__ branch: a declared key is not unrecognized, even though the shape loop deliberately strips __proto__ from the parsed output.\n        if (keySet.has(key))\n            continue;\n        // Don't copy an undeclared __proto__ into the result; assignment to a plain {} would replace the result prototype. But in strict mode it is still an unknown key, so report it before skipping.\n        if (key === \"__proto__\") {\n            if (t === \"never\")\n                unrecognized.push(key);\n            continue;\n        }\n        if (t === \"never\") {\n            unrecognized.push(key);\n            continue;\n        }\n        const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n        if (r instanceof Promise) {\n            proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n        }\n        else {\n            handlePropertyResult(r, payload, key, input, optin, optout);\n        }\n    }\n    if (unrecognized.length) {\n        payload.issues.push({\n            code: \"unrecognized_keys\",\n            keys: unrecognized,\n            input,\n            inst,\n            // Describes the shape of the input, not the validity of the parsed value, so it never aborts. The parse still fails; the schema's own checks just get to run first, and an enclosing intersection can reconcile the key against a sibling operand.\n            continue: true,\n        });\n    }\n    if (!proms.length)\n        return payload;\n    return Promise.all(proms).then(() => {\n        return payload;\n    });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodType.init(inst, def);\n    const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n    // a cloned def carries its source's accessor, which knows the shape it answers from; adopting that keeps the clone's keys readable without running it\n    const sh = desc?.get ? desc.get.raw : (def.shape ?? {});\n    if (sh) {\n        // Freezes the shape on first read, so its getters resolve once and every later read sees the same schemas.\n        const get = () => {\n            const newSh = { ...sh };\n            Object.defineProperty(def, \"shape\", { value: newSh });\n            get.raw = newSh;\n            return newSh;\n        };\n        get.raw = sh;\n        Object.defineProperty(def, \"shape\", { get });\n    }\n    const _normalized = util.cached(() => normalizeDef(def));\n    util.defineLazyInternal(inst, \"propValues\", (zod) => {\n        const shape = zod.def.shape;\n        const propValues = {};\n        for (const key in shape) {\n            const field = shape[key]._zod;\n            if (field.values) {\n                if (!Object.prototype.hasOwnProperty.call(propValues, key)) {\n                    util.assignProp(propValues, key, new Set());\n                }\n                for (const v of field.values)\n                    propValues[key].add(v);\n                // An omittable slot reads back as undefined at a discriminator lookup, so it has to claim undefined: two options that can both omit the key are not discriminable on it.\n                if (field.optin !== undefined)\n                    propValues[key].add(undefined);\n            }\n        }\n        return propValues;\n    });\n    const isObject = util.isObject;\n    const catchall = def.catchall;\n    let value;\n    const memo = core.globalConfig.memoizer;\n    memo?.attach(inst);\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n        const proms = [];\n        const shape = value.shape;\n        const abortEarly = ctx?.abortEarly;\n        let seen = payload.issues.length;\n        for (const key of value.allKeys) {\n            if (abortEarly && payload.issues.length !== seen) {\n                if (util.aborted(payload, seen))\n                    break;\n                seen = payload.issues.length;\n            }\n            if (key === \"__proto__\")\n                continue;\n            const el = shape[key];\n            const optin = el._zod.optin;\n            const optout = el._zod.optout;\n            const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n            if (r instanceof Promise) {\n                proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n            }\n            else {\n                handlePropertyResult(r, payload, key, input, optin, optout);\n            }\n        }\n        if (!catchall) {\n            return proms.length ? Promise.all(proms).then(() => payload) : payload;\n        }\n        return handleCatchall(proms, input, payload, ctx, _normalized.value, inst, abortEarly === true);\n    };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodObject.init(inst, def);\n    const superParse = inst._zod.parse;\n    const _normalized = util.cached(() => normalizeDef(def));\n    const memo = core.globalConfig.memoizer;\n    const generateFastpass = (shape) => {\n        const normalized = _normalized.value;\n        const syms = normalized.symbolKeys;\n        // a symbol has no source literal, so it is read as `syms[i]` off the closed-over scope\n        const doc = new Doc([\"payload\", \"ctx\"], { shape, inst, memo, syms });\n        const parseStr = (k) => `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n        // prefixes in place, like util.prefixIssues. newResult must land before the early return: a catchall runs after this and would otherwise write onto the caller's input\n        const prefixStr = (id, k) => `\n          let ${id}_ab = false;\n          for (let i = 0; i < ${id}.issues.length; i++) {\n            const iss = ${id}.issues[i];\n            iss.path = iss.path ? [${k}, ...iss.path] : [${k}];\n            payload.issues.push(iss);\n            if (iss.continue !== true) ${id}_ab = true;\n          }\n          if (${id}_ab && ctx && ctx.abortEarly) {\n            payload.value = newResult;\n            return payload;\n          }`;\n        doc.write(`const input = payload.value;`);\n        const ids = Object.create(null);\n        let counter = 0;\n        for (const key of normalized.allKeys) {\n            ids[key] = `key_${counter++}`;\n        }\n        // A: preserve key order {\n        doc.write(memo ? `const newResult = memo.alloc(inst, payload, {}, ctx);` : `const newResult = {};`);\n        for (const key of normalized.allKeys) {\n            if (key === \"__proto__\")\n                continue;\n            const id = ids[key];\n            const k = typeof key === \"symbol\" ? `syms[${syms.indexOf(key)}]` : util.esc(key);\n            const isPresent = `${k} in input`;\n            const schema = shape[key];\n            const optin = schema?._zod?.optin;\n            const isOptionalIn = optin !== undefined;\n            const isOptionalOut = schema?._zod?.optout === \"optional\";\n            doc.write(`const ${id} = ${parseStr(k)};`);\n            if (isOptionalIn && isOptionalOut) {\n                // For optional-in/out schemas, ignore errors on absent keys — and, like the interpreted path, drop the value produced alongside them. The middle rung goes further: it permits absence without supplying anything in its place, so an absent key contributes nothing at all.\n                const assign = optin === \"optional\" ? `${id}_present` : `${id}.value !== undefined || ${id}_present`;\n                doc.write(`\n        const ${id}_present = ${isPresent};\n        if (!${id}.issues.length || ${id}_present) {\n          if (${id}.issues.length) {${prefixStr(id, k)}\n          }\n\n          if (${assign}) {\n            newResult[${k}] = ${id}.value;\n          }\n        }\n\n      `);\n            }\n            else if (!isOptionalIn) {\n                doc.write(`\n        const ${id}_present = ${isPresent};\n        if (${id}.issues.length) {${prefixStr(id, k)}\n        }\n        if (!${id}_present && !${id}.issues.length) {\n          payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: undefined,\n            path: [${k}]\n          });\n          if (ctx && ctx.abortEarly) {\n            payload.value = newResult;\n            return payload;\n          }\n        }\n\n        if (${id}_present) {\n          newResult[${k}] = ${id}.value;\n        }\n\n      `);\n            }\n            else {\n                doc.write(`\n        if (${id}.issues.length) {${prefixStr(id, k)}\n        }\n      `);\n                if (optin === \"defaulted\") {\n                    doc.write(`newResult[${k}] = ${id}.value;`);\n                }\n                else {\n                    doc.write(`\n        if (${id}.value !== undefined || ${isPresent}) {\n          newResult[${k}] = ${id}.value;\n        }\n      `);\n                }\n            }\n        }\n        doc.write(`payload.value = newResult;`);\n        doc.write(`return payload;`);\n        // closing `shape` in is what pays: turbofan specializes the parser against that one shape object, so every `shape[k]._zod.run` folds to a known callee. as a parameter it stays a generic load and measures 13% slower even with the forwarding frame gone\n        return doc.compile();\n    };\n    let fastpass;\n    const isObject = util.isObject;\n    const jit = !core.globalConfig.jitless;\n    const allowsEval = util.allowsEval;\n    const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n    const catchall = def.catchall;\n    let value;\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n            // always synchronous\n            if (!fastpass)\n                fastpass = generateFastpass(def.shape);\n            payload = fastpass(payload, ctx);\n            if (!catchall)\n                return payload;\n            return handleCatchall([], input, payload, ctx, value, inst, ctx?.abortEarly === true);\n        }\n        return superParse(payload, ctx);\n    };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n    for (const result of results) {\n        if (result.issues.length === 0) {\n            final.value = result.value;\n            return final;\n        }\n    }\n    const nonaborted = results.filter((r) => !util.aborted(r));\n    if (nonaborted.length === 1) {\n        final.value = nonaborted[0].value;\n        return nonaborted[0];\n    }\n    final.issues.push({\n        code: \"invalid_union\",\n        input: final.value,\n        inst,\n        errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n    });\n    return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.options.some((o) => o._zod.optin === \"defaulted\")\n        ? \"defaulted\"\n        : zod.def.options.some((o) => o._zod.optin !== undefined)\n            ? \"optional\"\n            : undefined);\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n    util.defineLazyInternal(inst, \"values\", (zod) => {\n        if (zod.def.options.every((o) => o._zod.values)) {\n            return new Set(zod.def.options.flatMap((option) => Array.from(option._zod.values)));\n        }\n        return undefined;\n    });\n    util.defineLazyInternal(inst, \"pattern\", (zod) => {\n        if (zod.def.options.every((o) => o._zod.pattern)) {\n            const patterns = zod.def.options.map((o) => o._zod.pattern);\n            return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n        }\n        return undefined;\n    });\n    const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n    inst._zod.parse = (payload, ctx) => {\n        if (first) {\n            return first(payload, ctx);\n        }\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                if (result.issues.length === 0)\n                    return result;\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n    const matches = [];\n    for (let i = 0; i < results.length; i++) {\n        if (results[i].issues.length === 0)\n            matches.push(i);\n    }\n    if (matches.length === 1) {\n        final.value = results[matches[0]].value;\n        return final;\n    }\n    if (matches.length === 0) {\n        // No matches - same as regular union\n        final.issues.push({\n            code: \"invalid_union\",\n            input: final.value,\n            inst,\n            errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        });\n    }\n    else {\n        // Multiple matches - exclusive union failure\n        final.issues.push({\n            code: \"invalid_union\",\n            input: final.value,\n            inst,\n            errors: [],\n            inclusive: false,\n            matches,\n        });\n    }\n    return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n    $ZodUnion.init(inst, def);\n    def.inclusive = false;\n    const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n    inst._zod.parse = (payload, ctx) => {\n        if (first) {\n            return first(payload, ctx);\n        }\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleExclusiveUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleExclusiveUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\n/** Returns the option whose discriminator claims `value`, or throws if ambiguous. */\nexport function getDiscriminatedOption(union, value) {\n    const internals = union._zod;\n    let map = internals.bag.optionsMap;\n    if (!map) {\n        map = discriminatorMap(internals.def);\n        internals.bag.optionsMap = map;\n    }\n    const option = map.get(value);\n    if (option === null)\n        throw new Error(`Ambiguous discriminator value \"${String(value)}\"`);\n    return option;\n}\nfunction discriminatorMap(def) {\n    const map = new Map();\n    for (const option of def.options) {\n        const values = option._zod.propValues?.[def.discriminator];\n        if (!values || values.size === 0)\n            throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n        for (const value of values) {\n            if (map.has(value)) {\n                if (value !== undefined)\n                    throw new Error(`Duplicate discriminator value \"${String(value)}\"`);\n                // keep the collision marked so a later member cannot reclaim it\n                map.set(value, null);\n            }\n            else {\n                map.set(value, option);\n            }\n        }\n    }\n    return map;\n}\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n    def.inclusive = false;\n    $ZodUnion.init(inst, def);\n    const _super = inst._zod.parse;\n    util.defineLazyInternal(inst, \"propValues\", (zod) => {\n        const propValues = {};\n        let undefinedCount = 0;\n        for (const option of zod.def.options) {\n            const pv = option._zod.propValues;\n            if (!pv || Object.keys(pv).length === 0)\n                throw new Error(`Invalid discriminated union option at index \"${zod.def.options.indexOf(option)}\"`);\n            if (pv[zod.def.discriminator]?.has(undefined))\n                undefinedCount++;\n            for (const [k, v] of Object.entries(pv)) {\n                if (!Object.prototype.hasOwnProperty.call(propValues, k)) {\n                    util.assignProp(propValues, k, new Set());\n                }\n                for (const val of v) {\n                    propValues[k].add(val);\n                }\n            }\n        }\n        if (!zod.def.unionFallback && undefinedCount > 1)\n            propValues[zod.def.discriminator]?.delete(undefined);\n        return propValues;\n    });\n    // Checked now rather than in the lookup map below, so an option that lacks the discriminator fails at the `discriminatedUnion` call instead of on the first object parsed. Options whose shape cannot be enumerated without resolving it — pipes and lazies — are left to the map.\n    def.options.forEach((option, i) => {\n        const propShape = util.rawShape(option._zod.def);\n        if (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) {\n            throw new Error(`Invalid discriminated union option at index \"${i}\"`);\n        }\n    });\n    const disc = util.cached(() => discriminatorMap(def));\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isObject(input)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"object\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const value = input?.[def.discriminator];\n        const opt = disc.value.get(value);\n        // forward metadata cannot choose an encoder for an absent tag\n        if (opt && (value !== undefined || ctx.direction !== \"backward\")) {\n            return opt._zod.run(payload, ctx);\n        }\n        // Fall back to union matching when the fast discriminator path fails:\n        // - explicitly enabled via unionFallback, or\n        // - during backward direction (encode), since codec-based discriminators have different values in forward vs backward directions\n        if (def.unionFallback || ctx.direction === \"backward\") {\n            return _super(payload, ctx);\n        }\n        // no matching discriminator\n        payload.issues.push({\n            code: \"invalid_union\",\n            errors: [],\n            note: \"No matching discriminator\",\n            discriminator: def.discriminator,\n            options: Array.from(disc.value.keys()).filter((value) => disc.value.get(value) !== null),\n            input,\n            path: [def.discriminator],\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n        const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n        const async = left instanceof Promise || right instanceof Promise;\n        if (async) {\n            return Promise.all([left, right]).then(([left, right]) => {\n                return handleIntersectionResults(payload, left, right);\n            });\n        }\n        return handleIntersectionResults(payload, left, right);\n    };\n});\nexport function mergeValues(a, b) {\n    // const aType = parse.t(a);\n    // const bType = parse.t(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    if (a instanceof Date && b instanceof Date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    if (util.isPlainObject(a) && util.isPlainObject(b)) {\n        const bKeys = Object.keys(b);\n        const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        if (Object.prototype.hasOwnProperty.call(newObj, \"__proto__\"))\n            delete newObj.__proto__;\n        for (const key of sharedKeys) {\n            if (key === \"__proto__\")\n                continue;\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    if (Array.isArray(a) && Array.isArray(b)) {\n        if (a.length !== b.length) {\n            return { valid: false, mergeErrorPath: [] };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n    // Track which side(s) reject each key. A key rejection is reported only when BOTH sides reject it, so a key owned by one branch survives the other's key schema. strictObject reports these as unrecognized_keys; a record with an open key schema reports one invalid_key per key.\n    const unrecKeys = new Map();\n    let unrecIssue;\n    const keyIssues = new Map();\n    const collect = (iss, side) => {\n        let keys;\n        if (iss.code === \"unrecognized_keys\" && !iss.path?.length) {\n            unrecIssue ?? (unrecIssue = iss);\n            keys = iss.keys;\n        }\n        else if (iss.code === \"invalid_key\" && iss.origin === \"record\" && iss.path?.length === 1) {\n            const k = String(iss.path[0]);\n            if (!keyIssues.has(k))\n                keyIssues.set(k, iss);\n            keys = [k];\n        }\n        else {\n            return false;\n        }\n        for (const k of keys) {\n            if (!unrecKeys.has(k))\n                unrecKeys.set(k, {});\n            unrecKeys.get(k)[side] = true;\n        }\n        return true;\n    };\n    for (const iss of left.issues) {\n        if (!collect(iss, \"l\"))\n            result.issues.push(iss);\n    }\n    for (const iss of right.issues) {\n        if (!collect(iss, \"r\"))\n            result.issues.push(iss);\n    }\n    // Report only keys rejected by BOTH sides\n    const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n    if (bothKeys.length) {\n        const aggregated = unrecIssue ? bothKeys.filter((k) => unrecIssue.keys.includes(k)) : [];\n        if (aggregated.length)\n            result.issues.push({ ...unrecIssue, keys: aggregated });\n        for (const k of bothKeys) {\n            if (!aggregated.includes(k) && keyIssues.has(k))\n                result.issues.push(keyIssues.get(k));\n        }\n    }\n    const merged = mergeValues(left.value, right.value);\n    if (!merged.valid) {\n        if (util.aborted(result))\n            return result;\n        throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n    }\n    result.value = merged.data;\n    return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const items = def.items;\n    const memo = core.globalConfig.memoizer;\n    memo?.attach(inst);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"tuple\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        payload.value = memo ? memo.alloc(inst, payload, [], ctx) : [];\n        const proms = [];\n        const optinStart = getTupleOptStart(items, \"optin\");\n        const optoutStart = getTupleOptStart(items, \"optout\");\n        if (!def.rest) {\n            if (input.length < optinStart) {\n                payload.issues.push({\n                    code: \"too_small\",\n                    minimum: optinStart,\n                    inclusive: true,\n                    input,\n                    inst,\n                    origin: \"array\",\n                });\n                return payload;\n            }\n            if (input.length > items.length) {\n                payload.issues.push({\n                    code: \"too_big\",\n                    maximum: items.length,\n                    inclusive: true,\n                    input,\n                    inst,\n                    origin: \"array\",\n                });\n            }\n        }\n        // Run every item in parallel, collecting results into an indexed array. The post-processing in `handleTupleResults` walks them in order so it can decide whether an absent optional-output error can truncate the tail or must be reported to preserve required output.\n        const itemResults = new Array(items.length);\n        // only tracked when there is a rest loop to skip\n        const abortEarly = def.rest ? ctx?.abortEarly : undefined;\n        let itemAborted = false;\n        for (let i = 0; i < items.length; i++) {\n            const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n            if (r instanceof Promise) {\n                proms.push(r.then((rr) => {\n                    itemResults[i] = rr;\n                }));\n            }\n            else {\n                itemResults[i] = r;\n                if (abortEarly && !itemAborted && r.issues.length)\n                    itemAborted = util.aborted(r);\n            }\n        }\n        // sound because rest is non-empty exactly when every fixed index is present, the one case handleTupleResults cannot discard an item's issues\n        if (def.rest && !itemAborted) {\n            let i = items.length - 1;\n            const rest = input.slice(items.length);\n            let seen = payload.issues.length;\n            for (const el of rest) {\n                if (abortEarly && payload.issues.length !== seen) {\n                    if (util.aborted(payload, seen))\n                        break;\n                    seen = payload.issues.length;\n                }\n                i++;\n                const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n                }\n                else {\n                    handleTupleResult(result, payload, i);\n                }\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n        }\n        return handleTupleResults(itemResults, payload, items, input, optoutStart);\n    };\n});\nfunction getTupleOptStart(items, key) {\n    for (let i = items.length - 1; i >= 0; i--) {\n        // optin is a three-rung ladder so any rung above `undefined` permits an absent slot; optout stays two-valued.\n        const omittable = key === \"optin\" ? items[i]._zod.optin !== undefined : items[i]._zod.optout === \"optional\";\n        if (!omittable)\n            return i + 1;\n    }\n    return 0;\n}\nfunction handleTupleResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n    // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional rule, but only after `optoutStart`: the first index where the output tuple tail can be absent.\n    for (let i = 0; i < items.length; i++) {\n        const r = itemResults[i];\n        const isPresent = i < input.length;\n        // The array analog of `handlePropertyResult`'s absent-key early return: the middle rung permits absence without supplying anything in its place, so the tail truncates here instead of materializing whatever the item made of `undefined`.\n        if (!isPresent && i >= optoutStart && items[i]._zod.optin === \"optional\") {\n            final.value.length = i;\n            break;\n        }\n        if (r.issues.length) {\n            if (!isPresent && i >= optoutStart) {\n                final.value.length = i;\n                break;\n            }\n            final.issues.push(...util.prefixIssues(i, r.issues));\n        }\n        final.value[i] = r.value;\n    }\n    // Drop trailing slots that produced `undefined` for absent input\n    // (the array analog of an absent optional key on an object). The\n    // `i >= input.length` floor is critical: an explicit `undefined`\n    // *inside* the input must be preserved even when the schema is\n    // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n    // explicit undefined value).\n    for (let i = final.value.length - 1; i >= input.length; i--) {\n        if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n            final.value.length = i;\n        }\n        else {\n            break;\n        }\n    }\n    return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const memo = core.globalConfig.memoizer;\n    memo?.attach(inst);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isPlainObject(input)) {\n            payload.issues.push({\n                expected: \"record\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        // no guard in either loop below: a record's invalid_key aborts but an enclosing intersection can reconcile it, so a stopped loop hides keys the sibling does not own and the intersection then rejects nothing\n        const proms = [];\n        const values = def.keyType._zod.values;\n        if (values && !def.partial) {\n            payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n            const recordKeys = new Set();\n            for (const key of values) {\n                if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n                    recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n                    // A declared __proto__ is stripped but is not an unrecognized key.\n                    if (key === \"__proto__\")\n                        continue;\n                    const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n                    if (keyResult instanceof Promise) {\n                        throw new Error(\"Async schemas not supported in object keys currently\");\n                    }\n                    if (keyResult.issues.length) {\n                        payload.issues.push({\n                            code: \"invalid_key\",\n                            origin: \"record\",\n                            issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                            input: key,\n                            path: [key],\n                            inst,\n                        });\n                        continue;\n                    }\n                    const outKey = keyResult.value;\n                    if (outKey === \"__proto__\")\n                        continue;\n                    const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                    if (result instanceof Promise) {\n                        proms.push(result.then((result) => {\n                            if (result.issues.length) {\n                                payload.issues.push(...util.prefixIssues(key, result.issues));\n                            }\n                            payload.value[outKey] = result.value;\n                        }));\n                    }\n                    else {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[outKey] = result.value;\n                    }\n                }\n            }\n            let unrecognized;\n            for (const key in input) {\n                if (!recordKeys.has(key)) {\n                    if (def.mode === \"loose\") {\n                        // skip __proto__ so it can't replace the result prototype via the assignment setter on the plain {} we build into\n                        if (key === \"__proto__\")\n                            continue;\n                        payload.value[key] = input[key];\n                    }\n                    else {\n                        unrecognized = unrecognized ?? [];\n                        unrecognized.push(key);\n                    }\n                }\n            }\n            if (unrecognized && unrecognized.length > 0) {\n                payload.issues.push({\n                    code: \"unrecognized_keys\",\n                    input,\n                    inst,\n                    keys: unrecognized,\n                    continue: true,\n                });\n            }\n        }\n        else {\n            payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n            // An enumerable key schema declares which keys the record owns, so a key outside the set is unrecognized. A non-enumerable one (regex, refine) is a constraint every key must satisfy, so a failing key is invalid. Only the former is reconcilable against the other side of an intersection.\n            let unrecognized;\n            // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n            for (const key of Reflect.ownKeys(input)) {\n                if (key === \"__proto__\")\n                    continue;\n                if (!Object.prototype.propertyIsEnumerable.call(input, key))\n                    continue;\n                let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n                if (keyResult instanceof Promise) {\n                    throw new Error(\"Async schemas not supported in object keys currently\");\n                }\n                // Numeric string fallback: if key is a numeric string and failed, retry with Number(key). This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n                const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n                if (checkNumericKey) {\n                    const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n                    if (retryResult instanceof Promise) {\n                        throw new Error(\"Async schemas not supported in object keys currently\");\n                    }\n                    if (retryResult.issues.length === 0) {\n                        keyResult = retryResult;\n                    }\n                }\n                if (keyResult.issues.length) {\n                    if (def.mode === \"loose\") {\n                        // Pass through unchanged\n                        payload.value[key] = input[key];\n                    }\n                    else if (values) {\n                        unrecognized = unrecognized ?? [];\n                        unrecognized.push(key);\n                    }\n                    else {\n                        // Default \"strict\" behavior: error on invalid key\n                        payload.issues.push({\n                            code: \"invalid_key\",\n                            origin: \"record\",\n                            issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                            input: key,\n                            path: [key],\n                            inst,\n                        });\n                    }\n                    continue;\n                }\n                // the guard above tests the raw input key, but the key schema can normalize an ordinary key into __proto__; re-check the key we actually write under\n                const outKey = keyResult.value;\n                if (outKey === \"__proto__\")\n                    continue;\n                const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((result) => {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[outKey] = result.value;\n                    }));\n                }\n                else {\n                    if (result.issues.length) {\n                        payload.issues.push(...util.prefixIssues(key, result.issues));\n                    }\n                    payload.value[outKey] = result.value;\n                }\n            }\n            if (unrecognized && unrecognized.length > 0) {\n                payload.issues.push({\n                    code: \"unrecognized_keys\",\n                    input,\n                    inst,\n                    keys: unrecognized,\n                    continue: true,\n                });\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload;\n    };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const memo = core.globalConfig.memoizer;\n    memo?.attach(inst);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Map)) {\n            payload.issues.push({\n                expected: \"map\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = memo ? memo.alloc(inst, payload, new Map(), ctx) : new Map();\n        const abortEarly = ctx?.abortEarly;\n        let seen = payload.issues.length;\n        for (const [key, value] of input) {\n            if (abortEarly && payload.issues.length !== seen) {\n                if (util.aborted(payload, seen))\n                    break;\n                seen = payload.issues.length;\n            }\n            const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n            const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n            if (keyResult instanceof Promise || valueResult instanceof Promise) {\n                proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n                    handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n                }));\n            }\n            else {\n                handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n            }\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n    capSize(inst, mapSize);\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n    if (keyResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, keyResult.issues));\n        }\n        else {\n            final.issues.push({\n                code: \"invalid_key\",\n                origin: \"map\",\n                input,\n                inst,\n                issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    if (valueResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, valueResult.issues));\n        }\n        else {\n            final.issues.push({\n                origin: \"map\",\n                code: \"invalid_element\",\n                input,\n                inst,\n                key: key,\n                issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const memo = core.globalConfig.memoizer;\n    memo?.attach(inst);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Set)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"set\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = memo ? memo.alloc(inst, payload, new Set(), ctx) : new Set();\n        const abortEarly = ctx?.abortEarly;\n        let seen = payload.issues.length;\n        for (const item of input) {\n            if (abortEarly && payload.issues.length !== seen) {\n                if (util.aborted(payload, seen))\n                    break;\n                seen = payload.issues.length;\n            }\n            const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleSetResult(result, payload)));\n            }\n            else\n                handleSetResult(result, payload);\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n    capSize(inst, setSize);\n});\nfunction handleSetResult(result, final) {\n    if (result.issues.length) {\n        final.issues.push(...result.issues);\n    }\n    final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const values = util.getEnumValues(def.entries);\n    const valuesSet = new Set(values);\n    inst._zod.values = valuesSet;\n    util.defineLazyInternal(inst, \"pattern\", (zod) => {\n        const patternValues = util.getEnumValues(zod.def.entries).filter((k) => util.propertyKeyTypes.has(typeof k));\n        // unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches \"\"\n        return new RegExp(patternValues.length ? `^(${patternValues.map((o) => util.escapeRegex(o.toString())).join(\"|\")})$` : \"^[^\\\\s\\\\S]$\");\n    });\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (valuesSet.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const values = new Set(def.values);\n    inst._zod.values = values;\n    util.defineLazyInternal(inst, \"pattern\", (zod) => {\n        const vals = zod.def.values;\n        // unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches \"\"\n        return new RegExp(vals.length\n            ? `^(${vals\n                .map((o) => typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o))\n                .join(\"|\")})$`\n            : \"^[^\\\\s\\\\S]$\");\n    });\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (values.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        // @ts-ignore\n        if (input instanceof File)\n            return payload;\n        payload.issues.push({\n            expected: \"file\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    core.globalConfig.memoizer?.guard(inst);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(inst.constructor.name);\n        }\n        const _out = def.transform(payload.value, payload);\n        if (ctx.async) {\n            const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n            return output.then((output) => {\n                payload.value = output;\n                return payload;\n            });\n        }\n        if (_out instanceof Promise) {\n            throw new core.$ZodAsyncError();\n        }\n        payload.value = _out;\n        return payload;\n    };\n});\nfunction handleOptionalResult(payload, result) {\n    // A substituting schema that still failed has no usable answer; yield undefined. Its issues are simply dropped: it ran on a payload of its own, so there is no shared array to truncate and nothing of the caller's to lose with it.\n    payload.value = result.issues.length ? undefined : result.value;\n    return payload;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // .optional() propagates absence rather than substituting for it, so a defaulted inner keeps its rung.\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n    inst._zod.optout = \"optional\";\n    util.defineLazyInternal(inst, \"values\", (zod) => {\n        const values = zod.def.innerType._zod.values;\n        return values ? new Set([...values, undefined]) : undefined;\n    });\n    util.defineLazyInternal(inst, \"pattern\", (zod) => {\n        const pattern = zod.def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        if (payload.value === undefined) {\n            // Only the top rung substitutes a value for absence; everything else leaves it intact, which is what .optional() means.\n            if (def.innerType._zod.optin !== \"defaulted\")\n                return payload;\n            // Its own payload, for the same reason $ZodCatch gets one: a pipe forwards an unrecognized key through the caller's issues array, and this must not read that as the substituting schema failing and drop it.\n            const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);\n            if (result instanceof Promise)\n                return result.then((result) => handleOptionalResult(payload, result));\n            return handleOptionalResult(payload, result);\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n    // Call parent init - inherits optin/optout = \"optional\"\n    $ZodOptional.init(inst, def);\n    // Override values/pattern to NOT add undefined\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n    util.defineLazyInternal(inst, \"pattern\", (zod) => zod.def.innerType._zod.pattern);\n    // Override parse to just delegate (no undefined handling)\n    inst._zod.parse = (payload, ctx) => {\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin);\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n    util.defineLazyInternal(inst, \"pattern\", (zod) => {\n        const pattern = zod.def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n    });\n    util.defineLazyInternal(inst, \"values\", (zod) => {\n        return zod.def.innerType._zod.values ? new Set([...zod.def.innerType._zod.values, null]) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        // Forward direction (decode): allow null to pass through\n        if (payload.value === null)\n            return payload;\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // inst._zod.qin = \"true\";\n    inst._zod.optin = \"defaulted\";\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply defaults for undefined input\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n            /**\n             * $ZodDefault returns the default value immediately in forward direction.\n             * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe.   */\n            return payload;\n        }\n        // Forward direction: continue with default handling\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleDefaultResult(result, def));\n        }\n        return handleDefaultResult(result, def);\n    };\n});\nfunction handleDefaultResult(payload, def) {\n    if (payload.value === undefined) {\n        payload.value = def.defaultValue;\n    }\n    return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"defaulted\";\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply prefault for undefined input\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"values\", (zod) => {\n        const v = zod.def.innerType._zod.values;\n        return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleNonOptionalResult(result, inst));\n        }\n        return handleNonOptionalResult(result, inst);\n    };\n});\nfunction handleNonOptionalResult(payload, inst) {\n    if (!payload.issues.length && payload.value === undefined) {\n        payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: payload.value,\n            inst,\n        });\n    }\n    return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(\"ZodSuccess\");\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.issues.length === 0;\n                return payload;\n            });\n        }\n        payload.value = result.issues.length === 0;\n        return payload;\n    };\n});\nfunction handleCatchResult(payload, result, def, ctx) {\n    if (!result.issues.length) {\n        payload.value = result.value;\n        // The value carries up, so the flag describing it has to carry with it: a back-edge into a node still being parsed must not be frozen by an enclosing readonly, and its checks belong to the node itself. Guarded so the ordinary case adds no own property.\n        if (result.memo)\n            payload.memo = true;\n        return payload;\n    }\n    // Spread the inner's own payload, not ours: `value` has to stay the input the catch was handed, and the inner ran on a payload of its own so its issues are already private to this call.\n    payload.value = def.catchValue({\n        ...result,\n        value: payload.value,\n        error: {\n            issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n        },\n        input: payload.value,\n    });\n    return payload;\n}\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply catch logic\n        const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleCatchResult(payload, result, def, ctx));\n        }\n        return handleCatchResult(payload, result, def, ctx);\n    };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"nan\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n    util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            const right = def.out._zod.run(payload, ctx);\n            if (right instanceof Promise) {\n                return right.then((right) => handlePipeResult(right, def.in, ctx));\n            }\n            return handlePipeResult(right, def.in, ctx);\n        }\n        const left = def.in._zod.run(payload, ctx);\n        if (left instanceof Promise) {\n            return left.then((left) => handlePipeResult(left, def.out, ctx));\n        }\n        return handlePipeResult(left, def.out, ctx);\n    };\n});\nfunction handlePipeResult(left, next, ctx) {\n    // Any issue stops the pipe, so a failing refinement never feeds its transform. An unrecognized key is the exception: it describes the input's extra properties, not the value being piped, and an enclosing intersection may yet reconcile it.\n    if (left.issues.some((iss) => iss.code !== \"unrecognized_keys\")) {\n        // prevent further checks\n        left.aborted = true;\n        return left;\n    }\n    return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n    util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n    inst._zod.parse = (payload, ctx) => {\n        const direction = ctx.direction || \"forward\";\n        if (direction === \"forward\") {\n            const left = def.in._zod.run(payload, ctx);\n            if (left instanceof Promise) {\n                return left.then((left) => handleCodecAResult(left, def, ctx));\n            }\n            return handleCodecAResult(left, def, ctx);\n        }\n        else {\n            const right = def.out._zod.run(payload, ctx);\n            if (right instanceof Promise) {\n                return right.then((right) => handleCodecAResult(right, def, ctx));\n            }\n            return handleCodecAResult(right, def, ctx);\n        }\n    };\n});\nfunction handleCodecAResult(result, def, ctx) {\n    if (result.issues.length) {\n        // prevent further checks\n        result.aborted = true;\n        return result;\n    }\n    const direction = ctx.direction || \"forward\";\n    if (direction === \"forward\") {\n        const transformed = def.transform(result.value, result);\n        if (transformed instanceof Promise) {\n            return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n        }\n        return handleCodecTxResult(result, transformed, def.out, ctx);\n    }\n    else {\n        const transformed = def.reverseTransform(result.value, result);\n        if (transformed instanceof Promise) {\n            return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n        }\n        return handleCodecTxResult(result, transformed, def.in, ctx);\n    }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n    // Check if transform added any issues\n    if (left.issues.length) {\n        left.aborted = true;\n        return left;\n    }\n    return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n    $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.innerType._zod.propValues);\n    util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType?._zod?.optin);\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType?._zod?.optout);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then(handleReadonlyResult);\n        }\n        return handleReadonlyResult(result);\n    };\n});\nfunction handleReadonlyResult(payload) {\n    // A repeat visit hands back a node that is still being built; freezing it here would make the rest of its keys fail to assign.\n    if (!payload.memo)\n        payload.value = Object.freeze(payload.value);\n    return payload;\n}\n// a leaf's pattern source with its own checks folded in: the last pattern-carrying check wins, else length bounds narrow the catch-all, else an integer format narrows the number form. the fold lives here instead of on `_zod.pattern` so a bundle without template literals never pays for it\nfunction leafPattern(schema) {\n    const def = schema._zod.def;\n    let pattern = def.pattern;\n    let isInt = !!def.format?.includes(\"int\");\n    let minimum;\n    let maximum;\n    for (const ch of def.checks ?? []) {\n        const d = ch._zod.def;\n        if (d.pattern)\n            pattern = d.pattern;\n        isInt || (isInt = !!d.format?.includes(\"int\"));\n        const lo = d.minimum ?? d.length;\n        const hi = d.maximum ?? d.length;\n        if (lo !== undefined && (minimum === undefined || lo > minimum))\n            minimum = lo;\n        if (hi !== undefined && (maximum === undefined || hi < maximum))\n            maximum = hi;\n    }\n    if (pattern)\n        return pattern.source;\n    // an empty range matches nothing at runtime, and `{8,5}` is not a legal quantifier\n    if (minimum !== undefined && maximum !== undefined && minimum > maximum)\n        return \"(?!)\";\n    if (minimum !== undefined || maximum !== undefined)\n        return regexes.string({ minimum, maximum }).source;\n    const own = schema._zod.pattern;\n    return (isInt && own === regexes.number ? regexes.integer : own)?.source;\n}\n// a part's pattern source. a wrapper's pattern embeds its inner pattern's source verbatim, so the folded form is substituted in place without knowing the wrapper's own composition; a union's options are joined the way the union builds its own pattern\nfunction partPattern(schema) {\n    const def = schema._zod.def;\n    const own = schema._zod.pattern?.source;\n    // lazy resolves its inner on the internals, not the def\n    const inner = def.innerType ?? schema._zod.innerType;\n    if (inner) {\n        const before = inner._zod.pattern?.source;\n        const after = partPattern(inner);\n        if (own && before && after && after !== before) {\n            return own.replace(util.cleanRegex(before), () => util.cleanRegex(after));\n        }\n        return own;\n    }\n    if (def.options) {\n        const sources = def.options.map(partPattern);\n        if (sources.every(Boolean))\n            return `^(${sources.map((s) => util.cleanRegex(s)).join(\"|\")})$`;\n    }\n    return leafPattern(schema);\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const regexParts = [];\n    for (const part of def.parts) {\n        if (typeof part === \"object\" && part !== null) {\n            // is Zod schema\n            const source = partPattern(part);\n            if (!source) {\n                throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n            }\n            regexParts.push(util.cleanRegex(source));\n        }\n        else if (part === null || util.primitiveTypes.has(typeof part)) {\n            regexParts.push(util.escapeRegex(`${part}`));\n        }\n        else {\n            throw new Error(`Invalid template literal part: ${part}`);\n        }\n    }\n    inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"string\") {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"string\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        inst._zod.pattern.lastIndex = 0;\n        if (!inst._zod.pattern.test(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                code: \"invalid_format\",\n                format: def.format ?? \"template_literal\",\n                pattern: inst._zod.pattern.source,\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // Defined, not assigned: the classic prototype exposes `_def` as a getter with no setter.\n    Object.defineProperty(inst, \"_def\", { value: def });\n    inst._zod.def = def;\n    inst.implement = (func) => {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implement() must be called with a function\");\n        }\n        // Defined inline so the closure stays anonymous: binding it to a `const` first names it, which costs 256 bytes per implemented function.\n        return Object.defineProperty(function (...args) {\n            const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n            const result = Reflect.apply(func, this, parsedArgs);\n            if (inst._def.output) {\n                return parse(inst._def.output, result);\n            }\n            return result;\n        }, \"_zod\", { value: inst._zod, enumerable: false });\n    };\n    inst.implementAsync = (func) => {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implementAsync() must be called with a function\");\n        }\n        return Object.defineProperty(async function (...args) {\n            const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n            const result = await Reflect.apply(func, this, parsedArgs);\n            if (inst._def.output) {\n                return await parseAsync(inst._def.output, result);\n            }\n            return result;\n        }, \"_zod\", { value: inst._zod, enumerable: false });\n    };\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"function\") {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"function\",\n                input: payload.value,\n                inst,\n            });\n            return payload;\n        }\n        // Check if output is a promise type to determine if we should use async implementation\n        const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n        if (hasPromiseOutput) {\n            payload.value = inst.implementAsync(payload.value);\n        }\n        else {\n            payload.value = inst.implement(payload.value);\n        }\n        return payload;\n    };\n    inst.input = (...args) => {\n        const F = inst.constructor;\n        if (Array.isArray(args[0])) {\n            return new F({\n                type: \"function\",\n                input: new $ZodTuple({\n                    type: \"tuple\",\n                    items: args[0],\n                    rest: args[1],\n                }),\n                output: inst._def.output,\n            });\n        }\n        return new F({\n            type: \"function\",\n            input: args[0],\n            output: inst._def.output,\n        });\n    };\n    inst.output = (output) => {\n        const F = inst.constructor;\n        return new F({\n            type: \"function\",\n            input: inst._def.input,\n            output,\n        });\n    };\n    return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n    };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // Cache the resolved inner type on the shared `def` so all clones of this lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance, preserving identity for cycle detection on recursive schemas.\n    util.defineLazy(inst._zod, \"innerType\", () => {\n        const d = def;\n        if (!d._cachedInner)\n            d._cachedInner = def.getter();\n        return d._cachedInner;\n    });\n    util.defineLazyInternal(inst, \"pattern\", (zod) => zod.innerType?._zod?.pattern);\n    util.defineLazyInternal(inst, \"propValues\", (zod) => zod.innerType?._zod?.propValues);\n    util.defineLazyInternal(inst, \"optin\", (zod) => zod.innerType?._zod?.optin ?? undefined);\n    util.defineLazyInternal(inst, \"optout\", (zod) => zod.innerType?._zod?.optout ?? undefined);\n    inst._zod.parse = (payload, ctx) => {\n        const inner = inst._zod.innerType;\n        return inner._zod.run(payload, ctx);\n    };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n    checks.$ZodCheck.init(inst, def);\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _) => {\n        return payload;\n    };\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const r = def.fn(input);\n        if (r instanceof Promise) {\n            return r.then((r) => handleRefineResult(r, payload, input, inst));\n        }\n        handleRefineResult(r, payload, input, inst);\n        return;\n    };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n    if (!result) {\n        const _iss = {\n            code: \"custom\",\n            input,\n            inst, // incorporates params.error into issue reporting\n            path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n            continue: !inst._zod.def.abort,\n            // params: inst._zod.def.params,\n        };\n        if (inst._zod.def.params)\n            _iss.params = inst._zod.def.params;\n        payload.issues.push(util.issue(_iss));\n    }\n}\n","import * as util from \"./util.js\";\nexport class $ZodCyclicError extends Error {\n    constructor() {\n        super(`Cannot parse a reference cycle that closes through a transform`);\n        this.name = \"ZodCyclicError\";\n    }\n}\n/** Keyed off the context object every schema in one parse call already shares. */\nconst STATE = \"~memo\";\nconst NO_ISSUES = [];\n// a value a cycle can close through\nfunction isRef(value) {\n    return value !== null && typeof value === \"object\";\n}\n// Receivers prefix paths in place, so the cache and every hand-out need their own copies.\nfunction cloneIssues(issues) {\n    return issues.map((iss) => (iss.path ? { ...iss, path: iss.path.slice() } : { ...iss }));\n}\nconst recursive = /*@__PURE__*/ new WeakMap();\n/** What the walk established, in order of certainty: ordered so the strongest answer among children wins. */\nconst NONE = 0;\nconst ASSUMED = 1;\nconst PROVEN = 2;\n/** Whether this schema's subtree contains a cycle, so one parse can re-enter it. */\nfunction isRecursive(inst, stack, resolve) {\n    const cached = recursive.get(inst);\n    if (cached !== undefined)\n        return cached ? PROVEN : NONE;\n    // Relative to the walk in progress, so not cached.\n    if (stack.has(inst))\n        return PROVEN;\n    stack.add(inst);\n    let result = NONE;\n    const check = (child) => {\n        if (result !== PROVEN && child?._zod) {\n            const answer = isRecursive(child, stack, resolve);\n            if (answer > result)\n                result = answer;\n        }\n    };\n    // `Reflect.ownKeys` rather than `Object.keys`, so a cycle through a declared symbol key is still seen\n    const shape = (sh, spread) => {\n        let answer = NONE;\n        for (const key of Reflect.ownKeys(sh)) {\n            const desc = Object.getOwnPropertyDescriptor(sh, key);\n            // an object resolves its shape by spread, so a key it does not enumerate is never parsed; `z.properties` reads every own key and so keeps them all\n            if (spread && !desc.enumerable)\n                continue;\n            // resolving runs user code, and a factory mints a fresh subtree per read, so an edge the walk can't follow counts as a cycle\n            const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve) : NONE;\n            if (child > answer)\n                answer = child;\n        }\n        return answer;\n    };\n    const merge = (answer) => {\n        if (answer > result)\n            result = answer;\n    };\n    const def = inst._zod.def;\n    const kind = def.type;\n    switch (kind) {\n        case \"object\": {\n            const raw = util.rawShape(def);\n            // a def with no raw shape answers `shape` from an accessor of its own, and running that can mint a whole fresh subtree\n            merge(raw ? shape(raw, true) : ASSUMED);\n            check(def.catchall);\n            break;\n        }\n        case \"array\":\n            check(def.element);\n            break;\n        case \"tuple\":\n            for (const el of def.items)\n                check(el);\n            check(def.rest);\n            break;\n        case \"record\":\n        case \"map\":\n            check(def.keyType);\n            check(def.valueType);\n            break;\n        case \"set\":\n            check(def.valueType);\n            break;\n        case \"union\":\n            for (const el of def.options)\n                check(el);\n            break;\n        case \"intersection\":\n            check(def.left);\n            check(def.right);\n            break;\n        case \"optional\":\n        case \"nullable\":\n        case \"default\":\n        case \"prefault\":\n        case \"catch\":\n        case \"readonly\":\n        case \"nonoptional\":\n        case \"promise\":\n        case \"success\":\n            check(def.innerType);\n            break;\n        case \"pipe\":\n            check(def.in);\n            check(def.out);\n            break;\n        case \"function\":\n            check(def.input);\n            check(def.output);\n            break;\n        // `$ZodLazy` caches its inner on the def, so a resolved edge is followed exactly\n        case \"lazy\": {\n            const inner = def._cachedInner ?? (resolve ? inst._zod.innerType : undefined);\n            // walked with resolution off: one hop sees past the deferral, and a lazy that yields only another unresolved lazy is generative, so it stops there\n            merge(inner ? isRecursive(inner, stack, false) : ASSUMED);\n            break;\n        }\n        // a leaf by choice: `parts` are regex fragments, not data positions\n        case \"template_literal\":\n        // leaves\n        case \"string\":\n        case \"number\":\n        case \"int\":\n        case \"boolean\":\n        case \"bigint\":\n        case \"symbol\":\n        case \"undefined\":\n        case \"null\":\n        case \"void\":\n        case \"never\":\n        case \"any\":\n        case \"unknown\":\n        case \"date\":\n        case \"nan\":\n        case \"enum\":\n        case \"literal\":\n        case \"file\":\n        case \"transform\":\n        case \"custom\":\n            break;\n        default: {\n            // a new built-in kind becomes a compile error here\n            kind;\n            // a user-defined kind can still hold children, and only its author knows where, so fall back to scanning the def — skipping accessors, since reading one can run user code\n            for (const key in def) {\n                const desc = Object.getOwnPropertyDescriptor(def, key);\n                if (!desc || desc.get)\n                    continue;\n                const value = desc.value;\n                if (!value || typeof value !== \"object\")\n                    continue;\n                if (value._zod)\n                    check(value);\n                else if (Array.isArray(value))\n                    for (const el of value)\n                        check(el);\n            }\n        }\n    }\n    stack.delete(inst);\n    return settle(inst, result);\n}\n/** An assumed answer must not outlive the resolution that settles it, so only a certain one is cached. */\nfunction settle(inst, answer) {\n    if (answer !== ASSUMED)\n        recursive.set(inst, answer === PROVEN);\n    return answer;\n}\n/**\n * Whether one parse can re-enter this schema, i.e. its subtree contains a cycle.\n * Exported for `z.compile`, which refuses to compile such a schema: cycle\n * breaking is driven from here off state keyed on the parse context, and a\n * generated fast path has no context to key on.\n */\nexport function isRecursiveSchema(inst) {\n    // z.compile never parses, so nothing would ever resolve a lazy for it; it runs once and already treats a throw here as recursive\n    return isRecursive(inst, new Set(), true) !== NONE;\n}\nfunction bucketFor(state, inst) {\n    let bucket = state.buckets.get(inst);\n    if (!bucket) {\n        bucket = new WeakMap();\n        state.buckets.set(inst, bucket);\n    }\n    return bucket;\n}\n// Set immediately before delegating to core and cleared immediately after, so `alloc` registers only for a visit this module is driving.\nlet handoff;\n// Allocated but unfinished entries. `alloc` and the matching pop both happen in the synchronous part of a parse, so they nest even when children are async, and one stack serves every schema.\nconst open = [];\nconst memo = {\n    alloc(_inst, payload, empty) {\n        const bucket = handoff;\n        if (!bucket)\n            return empty;\n        handoff = undefined;\n        const entry = { value: empty, issues: null };\n        bucket.set(payload.value, entry);\n        open.push(entry);\n        return empty;\n    },\n    guard(inst) {\n        var _a;\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        inst._zod.deferred.push(() => {\n            const base = inst._zod.parse;\n            const wrapped = (payload, ctx) => {\n                // The value is a placeholder a back-edge is still waiting on, so the cycle closes through this transform. Its output can't exist in time to bind.\n                if (ctx.direction !== \"backward\" && isBackEdge(ctx, payload.value))\n                    throw new $ZodCyclicError();\n                return base(payload, ctx);\n            };\n            inst._zod.parse = wrapped;\n            if (inst._zod.run === base)\n                inst._zod.run = wrapped;\n        });\n    },\n    attach(inst) {\n        var _a;\n        let isRecursiveInst;\n        let rechecked = false;\n        // a recursive schema is re-entered many times per parse and its bucket never changes\n        let lastCtx;\n        let lastBucket;\n        // Wraps `parse` in a deferred so it sees the container's final parse. Core's own deferred copies `parse` into `run` when there are no checks, and it ran first, so `run` is patched to match; with checks, `run` reads `parse` dynamically.\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        inst._zod.deferred.push(() => {\n            const base = inst._zod.parse;\n            const wrapped = (payload, ctx) => {\n                if (isRecursiveInst === undefined) {\n                    const walked = isRecursive(inst, new Set(), false);\n                    if (walked === NONE) {\n                        // Nothing here can ever fire, so take it back out.\n                        inst._zod.parse = base;\n                        if (inst._zod.run === wrapped)\n                            inst._zod.run = base;\n                        return base(payload, ctx);\n                    }\n                    // this parse resolves the deferred edges on its own path, so ask once more before latching\n                    if (walked === PROVEN || rechecked)\n                        isRecursiveInst = true;\n                    else\n                        rechecked = true;\n                }\n                const input = payload.value;\n                if (!isRef(input))\n                    return base(payload, ctx);\n                let state = ctx[STATE];\n                if (!state) {\n                    state = { buckets: new WeakMap(), backEdges: undefined };\n                    ctx[STATE] = state;\n                }\n                let bucket;\n                if (lastCtx === ctx) {\n                    bucket = lastBucket;\n                }\n                else {\n                    bucket = bucketFor(state, inst);\n                    lastCtx = ctx;\n                    lastBucket = bucket;\n                }\n                const hit = bucket.get(input);\n                if (hit) {\n                    payload.value = hit.value;\n                    if (hit.issues) {\n                        if (hit.issues.length)\n                            payload.issues.push(...cloneIssues(hit.issues));\n                    }\n                    else {\n                        // Still being parsed: its own checks cover it, so skip them here.\n                        payload.memo = true;\n                        state.backEdges ?? (state.backEdges = new WeakSet());\n                        state.backEdges.add(hit.value);\n                    }\n                    return payload;\n                }\n                handoff = bucket;\n                const depth = open.length;\n                const result = base(payload, ctx);\n                handoff = undefined;\n                // A container that rejected its input outright allocated nothing.\n                const entry = open.length > depth ? open.pop() : undefined;\n                // Both paths written out so the sync one allocates no closure. It runs once per node, and capturing here cost more than everything else combined.\n                if (result instanceof Promise) {\n                    return result.then((r) => {\n                        if (entry)\n                            entry.issues = r.issues.length ? cloneIssues(r.issues) : NO_ISSUES;\n                        return r;\n                    });\n                }\n                if (entry)\n                    entry.issues = result.issues.length ? cloneIssues(result.issues) : NO_ISSUES;\n                return result;\n            };\n            inst._zod.parse = wrapped;\n            if (inst._zod.run === base)\n                inst._zod.run = wrapped;\n        });\n    },\n};\n/** The memoizer that gives containers cycle support. `zod` installs it by default; `zod/mini` opts in with `config({ memoizer: memoizer() })`. */\nexport function memoizer() {\n    return memo;\n}\n/** Whether this value is a node a back-edge resolved to before it finished. */\nexport function isBackEdge(ctx, value) {\n    const backEdges = ctx[STATE]?.backEdges;\n    return backEdges !== undefined && isRef(value) && backEdges.has(value);\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"characters\", verb: \"to have\" },\n        file: { unit: \"bytes\", verb: \"to have\" },\n        array: { unit: \"items\", verb: \"to have\" },\n        set: { unit: \"items\", verb: \"to have\" },\n        map: { unit: \"entries\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        mac: \"MAC address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        currency_code: \"currency code\",\n        credit_card: \"credit card number\",\n        iban: \"IBAN\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    // type names: missing keys = do not translate (use raw value via ?? fallback)\n    const TypeDictionary = {\n        // Compatibility: \"nan\" -> \"NaN\" for display\n        nan: \"NaN\",\n        // All other type names omitted - they fall back to raw values via ?? operator\n    };\n    function getTypeName(type, input) {\n        if (type === \"number\" && typeof input === \"number\" && !Number.isFinite(input)) {\n            return String(input);\n        }\n        return TypeDictionary[type] ?? type;\n    }\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = getTypeName(issue.expected);\n                const receivedType = util.parsedType(issue.input);\n                const received = getTypeName(receivedType, issue.input);\n                return `Invalid input: expected ${expected}, received ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.exact ? \"exactly \" : issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.exact ? \"exactly \" : issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Invalid string: must start with \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Invalid string: must end with \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Invalid string: must include \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Invalid string: must match pattern ${_issue.pattern}`;\n                return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Invalid number: must be a multiple of ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Invalid key in ${issue.origin}`;\n            case \"invalid_union\":\n                if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n                    const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n                    return `Invalid discriminator value. Expected ${opts}`;\n                }\n                if (issue.inclusive === false) {\n                    return \"Invalid input: more than one option matched\";\n                }\n                return \"Invalid input\";\n            case \"invalid_element\":\n                return `Invalid value in ${issue.origin}`;\n            default:\n                return `Invalid input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","var _a;\nexport const $output = /*@__PURE__*/ Symbol(\"ZodOutput\");\nexport const $input = /*@__PURE__*/ Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n    constructor() {\n        this._map = new WeakMap();\n        this._idmap = new Map();\n    }\n    add(schema, ..._meta) {\n        const meta = _meta[0];\n        this._map.set(schema, meta);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.set(meta.id, schema);\n        }\n        return this;\n    }\n    clear() {\n        this._map = new WeakMap();\n        this._idmap = new Map();\n        return this;\n    }\n    remove(schema) {\n        const meta = this._map.get(schema);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.delete(meta.id);\n        }\n        this._map.delete(schema);\n        return this;\n    }\n    get(schema) {\n        // return this._map.get(schema) as any;\n        // inherit metadata\n        const p = schema._zod.parent;\n        if (p) {\n            const pm = { ...(this.get(p) ?? {}) };\n            delete pm.id; // do not inherit id\n            const f = { ...pm, ...this._map.get(schema) };\n            return Object.keys(f).length ? f : undefined;\n        }\n        return this._map.get(schema);\n    }\n    has(schema) {\n        return this._map.has(schema);\n    }\n}\n// registries\nexport function registry() {\n    return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nfunction snapshotChecks(def) {\n    if (def.checks)\n        def.checks = [...def.checks];\n    return def;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n    return new Class(snapshotChecks({ type: \"string\", ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n    return new Class(snapshotChecks({ type: \"string\", coerce: true, ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"email\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"guid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v4\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v6\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v7\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"emoji\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"nanoid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid2\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ulid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"xid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ksuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"mac\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"e164\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _creditCard(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"credit_card\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _iban(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"iban\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"jwt\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const TimePrecision = {\n    Any: null,\n    Minute: -1,\n    Second: 0,\n    Millisecond: 3,\n    Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"datetime\",\n        check: \"string_format\",\n        offset: false,\n        local: false,\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"date\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"time\",\n        check: \"string_format\",\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"duration\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n    return new Class(snapshotChecks({ type: \"number\", checks: [], ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n    return new Class(snapshotChecks({ type: \"number\", coerce: true, checks: [], ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"safeint\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"int32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"uint32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"int64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"uint64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n    return new Class({\n        type: \"symbol\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n    return new Class({\n        type: \"undefined\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n    return new Class({\n        type: \"null\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n    return new Class({\n        type: \"any\",\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n    return new Class({\n        type: \"unknown\",\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n    return new Class({\n        type: \"never\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n    return new Class({\n        type: \"void\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n    return new Class({\n        type: \"date\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n    return new Class({\n        type: \"date\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n    return new Class({\n        type: \"nan\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n    return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n    return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n    return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n    return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n    return new checks.$ZodCheckMultipleOf({\n        check: \"multiple_of\",\n        ...util.normalizeParams(params),\n        value,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n    return new checks.$ZodCheckMaxSize({\n        check: \"max_size\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n    return new checks.$ZodCheckMinSize({\n        check: \"min_size\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n    return new checks.$ZodCheckSizeEquals({\n        check: \"size_equals\",\n        ...util.normalizeParams(params),\n        size,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n    const ch = new checks.$ZodCheckMaxLength({\n        check: \"max_length\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n    return new checks.$ZodCheckMinLength({\n        check: \"min_length\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n    return new checks.$ZodCheckLengthEquals({\n        check: \"length_equals\",\n        ...util.normalizeParams(params),\n        length,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n    return new checks.$ZodCheckRegex({\n        check: \"string_format\",\n        format: \"regex\",\n        ...util.normalizeParams(params),\n        pattern,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n    return new checks.$ZodCheckLowerCase({\n        check: \"string_format\",\n        format: \"lowercase\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n    return new checks.$ZodCheckUpperCase({\n        check: \"string_format\",\n        format: \"uppercase\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n    return new checks.$ZodCheckIncludes({\n        check: \"string_format\",\n        format: \"includes\",\n        ...util.normalizeParams(params),\n        includes,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n    return new checks.$ZodCheckStartsWith({\n        check: \"string_format\",\n        format: \"starts_with\",\n        ...util.normalizeParams(params),\n        prefix,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n    return new checks.$ZodCheckEndsWith({\n        check: \"string_format\",\n        format: \"ends_with\",\n        ...util.normalizeParams(params),\n        suffix,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n    return new checks.$ZodCheckProperty({\n        check: \"property\",\n        property,\n        schema,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _properties(shape, params) {\n    return new checks.$ZodCheckProperties({\n        check: \"properties\",\n        shape,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n    return new checks.$ZodCheckMimeType({\n        check: \"mime_type\",\n        mime: types,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n    return new checks.$ZodCheckOverwrite({\n        check: \"overwrite\",\n        tx,\n    });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n    return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n    return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n    return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n    return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n    return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n    return new Class({\n        type: \"array\",\n        element,\n        // get element() {\n        //   return element;\n        // },\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _xor(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        inclusive: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n    return new Class({\n        type: \"union\",\n        options: options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n    return new Class({\n        type: \"intersection\",\n        left,\n        right,\n    });\n}\n// export function _tuple(\n//   Class: util.SchemaClass<schemas.$ZodTuple>,\n//   items: [],\n//   params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new Class({\n        type: \"tuple\",\n        items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"record\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"map\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n    return new Class({\n        type: \"set\",\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    // if (Array.isArray(values)) {\n    //   for (const value of values) {\n    //     entries[value] = value;\n    //   }\n    // } else {\n    //   Object.assign(entries, values);\n    // }\n    // const entries: util.EnumLike = {};\n    // for (const val of values) {\n    //   entries[val] = val;\n    // }\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n    return new Class({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n    return new Class({\n        type: \"file\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n    return new Class({\n        type: \"transform\",\n        transform: fn,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n    return new Class({\n        type: \"optional\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n    return new Class({\n        type: \"nullable\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n    return new Class({\n        type: \"default\",\n        innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n    return new Class({\n        type: \"nonoptional\",\n        innerType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n    return new Class({\n        type: \"success\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n    return new Class({\n        type: \"catch\",\n        innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : util.constantCatch(catchValue)),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n    return new Class({\n        type: \"pipe\",\n        in: in_,\n        out,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n    return new Class({\n        type: \"readonly\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n    return new Class({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n    return new Class({\n        type: \"lazy\",\n        getter,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n    return new Class({\n        type: \"promise\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n    const norm = util.normalizeParams(_params);\n    norm.abort ?? (norm.abort = true); // default to abort:false\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...norm,\n    });\n    return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...util.normalizeParams(_params),\n    });\n    return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n    const ch = _check((payload) => {\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                if (!(\"input\" in _issue))\n                    _issue.input = payload.value;\n                _issue.inst ?? (_issue.inst = ch);\n                _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        return fn(payload.value, payload);\n    }, params);\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n    const ch = new checks.$ZodCheck({\n        check: \"custom\",\n        ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n    const ch = new checks.$ZodCheck({ check: \"describe\" });\n    ch._zod.onattach = [\n        (inst) => {\n            const existing = registries.globalRegistry.get(inst) ?? {};\n            registries.globalRegistry.add(inst, { ...existing, description });\n        },\n    ];\n    ch._zod.check = () => { }; // no-op check\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n    const ch = new checks.$ZodCheck({ check: \"meta\" });\n    ch._zod.onattach = [\n        (inst) => {\n            const existing = registries.globalRegistry.get(inst) ?? {};\n            registries.globalRegistry.add(inst, { ...existing, ...metadata });\n        },\n    ];\n    ch._zod.check = () => { }; // no-op check\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n    const params = util.normalizeParams(_params);\n    let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n    let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n    if (params.case !== \"sensitive\") {\n        truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n        falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n    }\n    const truthySet = new Set(truthyArray);\n    const falsySet = new Set(falsyArray);\n    const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n    const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n    const _String = Classes.String ?? schemas.$ZodString;\n    const stringSchema = new _String({ type: \"string\", error: params.error });\n    const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n    const codec = new _Codec({\n        type: \"pipe\",\n        in: stringSchema,\n        out: booleanSchema,\n        transform: ((input, payload) => {\n            let data = input;\n            if (params.case !== \"sensitive\")\n                data = data.toLowerCase();\n            if (truthySet.has(data)) {\n                return true;\n            }\n            else if (falsySet.has(data)) {\n                return false;\n            }\n            else {\n                payload.issues.push({\n                    code: \"invalid_value\",\n                    expected: \"stringbool\",\n                    values: [...truthySet, ...falsySet],\n                    input: payload.value,\n                    inst: codec,\n                    continue: false,\n                });\n                return {};\n            }\n        }),\n        reverseTransform: ((input, _payload) => {\n            if (input === true) {\n                return truthyArray[0] || \"true\";\n            }\n            else {\n                return falsyArray[0] || \"false\";\n            }\n        }),\n        error: params.error,\n    });\n    codec._zod.bag.truthy = truthyArray;\n    codec._zod.bag.falsy = falsyArray;\n    codec._zod.bag.case = params.case ?? \"insensitive\";\n    return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n    const params = util.normalizeParams(_params);\n    const def = {\n        check: \"string_format\",\n        type: \"string\",\n        format,\n        fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n        ...params,\n    };\n    if (fnOrRegex instanceof RegExp) {\n        def.pattern = fnOrRegex;\n    }\n    const inst = new Class(def);\n    return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\nimport { assignProp } from \"./util.js\";\nfunction assignProps(target, ...sources) {\n    for (const source of sources) {\n        for (const key of Reflect.ownKeys(source)) {\n            if (Object.prototype.propertyIsEnumerable.call(source, key)) {\n                assignProp(target, key, source[key]);\n            }\n        }\n    }\n    return target;\n}\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n//   return {\n//     processor: inputs.processor,\n//     metadataRegistry: inputs.metadata ?? globalRegistry,\n//     target: inputs.target ?? \"draft-2020-12\",\n//     unrepresentable: inputs.unrepresentable ?? \"throw\",\n//   };\n// }\nexport function initializeContext(params) {\n    // Normalize target: convert old non-hyphenated versions to hyphenated versions\n    let target = params?.target ?? \"draft-2020-12\";\n    if (target === \"draft-4\")\n        target = \"draft-04\";\n    if (target === \"draft-7\")\n        target = \"draft-07\";\n    return {\n        processors: params.processors ?? {},\n        metadataRegistry: params?.metadata ?? globalRegistry,\n        target,\n        unrepresentable: params?.unrepresentable ?? \"throw\",\n        override: params?.override ?? (() => { }),\n        io: params?.io ?? \"output\",\n        counter: 0,\n        seen: new Map(),\n        sharedDefsExtractedFor: undefined,\n        sharedEmitDoneFor: undefined,\n        cycles: params?.cycles ?? \"ref\",\n        reused: params?.reused ?? \"inline\",\n        intersections: [],\n        deferred: [],\n        external: params?.external ?? undefined,\n    };\n}\n/**\n * Applies the `unrepresentable` setting at a site that has no JSON Schema equivalent. Throws\n * `message` unless the setting (or the handler's return value) says otherwise. Returns `true` if a\n * custom JSON Schema was written into `json`, in which case the caller must not write its own.\n */\nexport function handleUnrepresentable(schema, ctx, json, params, message) {\n    const result = typeof ctx.unrepresentable === \"function\"\n        ? ctx.unrepresentable({ zodSchema: schema, path: params.path, message })\n        : ctx.unrepresentable;\n    if (result === \"any\")\n        return false;\n    if (result === undefined || result === \"throw\")\n        throw new Error(message);\n    Object.assign(json, result);\n    return true;\n}\n// never rename this back to `process`: bundler polyfills inject a top-level `const process` that a lexical declaration of the same name collides with (#6397)\nexport function processSchema(schema, ctx, _params = { path: [], schemaPath: [] }) {\n    var _a;\n    const def = schema._zod.def;\n    // check for schema in seens\n    const seen = ctx.seen.get(schema);\n    if (seen) {\n        seen.count++;\n        // check if cycle\n        const isCycle = _params.schemaPath.includes(schema);\n        if (isCycle) {\n            seen.cycle = _params.path;\n        }\n        return seen.schema;\n    }\n    // initialize\n    const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n    ctx.seen.set(schema, result);\n    ctx.sharedDefsExtractedFor = undefined;\n    ctx.sharedEmitDoneFor = undefined;\n    // custom method overrides default behavior\n    const overrideSchema = schema._zod.toJSONSchema?.();\n    if (overrideSchema) {\n        result.schema = overrideSchema;\n    }\n    else {\n        const params = {\n            ..._params,\n            schemaPath: [..._params.schemaPath, schema],\n            path: _params.path,\n        };\n        if (schema._zod.processJSONSchema) {\n            schema._zod.processJSONSchema(ctx, result.schema, params);\n        }\n        else {\n            const _json = result.schema;\n            const processor = ctx.processors[def.type];\n            if (!processor) {\n                throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n            }\n            processor(schema, ctx, _json, params);\n        }\n        const parent = schema._zod.parent;\n        if (parent) {\n            // Also set ref if processor didn't (for inheritance)\n            if (!result.ref)\n                result.ref = parent;\n            processSchema(parent, ctx, params);\n            ctx.seen.get(parent).isParent = true;\n        }\n    }\n    // metadata\n    const meta = ctx.metadataRegistry.get(schema);\n    if (meta)\n        assignProps(result.schema, meta);\n    if (ctx.io === \"input\" && isTransforming(schema)) {\n        // examples/defaults only apply to output type of pipe\n        delete result.schema.examples;\n        delete result.schema.default;\n    }\n    // set prefault as default\n    if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n        (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n    delete result.schema._prefault;\n    // pulling fresh from ctx.seen in case it was overwritten\n    const _result = ctx.seen.get(schema);\n    return _result.schema;\n}\n/** @deprecated Renamed to `processSchema`. An export alias declares no binding, so it is safe to keep. */\nexport { processSchema as process };\n// Escape a reference token for use in a JSON Pointer fragment (RFC 6901): `~` becomes `~0` and `/` becomes `~1`. The `~` replacement must run first.\nfunction encodeJSONPointerSegment(segment) {\n    return segment.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n    // iterate over seen map;\n    const root = ctx.seen.get(schema);\n    if (!root)\n        throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n    // With `external` set, every registered schema resolves through the external branch of `makeURI`, so the root branch below produces the same ref the external branch would — this pass is identical whichever schema it is called with, and only needs to run once.\n    if (ctx.external && ctx.sharedDefsExtractedFor === ctx.external)\n        return;\n    // Track ids to detect duplicates across different schemas\n    const idToSchema = new Map();\n    for (const entry of ctx.seen.entries()) {\n        const id = ctx.metadataRegistry.get(entry[0])?.id;\n        if (id) {\n            const existing = idToSchema.get(id);\n            if (existing && existing !== entry[0]) {\n                throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n            }\n            idToSchema.set(id, entry[0]);\n        }\n    }\n    // returns a ref to the schema defId will be empty if the ref points to an external schema (or #)\n    const makeURI = (entry) => {\n        // comparing the seen objects because sometimes multiple schemas map to the same seen object. e.g. lazy\n        // external is configured\n        const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n        if (ctx.external) {\n            const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n            // check if schema is in the external registry\n            const uriGenerator = ctx.external.uri ?? ((id) => id);\n            if (externalId) {\n                return { ref: uriGenerator(externalId) };\n            }\n            // otherwise, add to __shared\n            const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n            entry[1].defId = id; // set defId so it will be reused if needed\n            return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${encodeJSONPointerSegment(id)}` };\n        }\n        const uriPrefix = `#`;\n        const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n        // an id-less root has nowhere to be extracted to, so it stays inline and self-references as `#`\n        if (entry[1] === root && !entry[1].schema.id) {\n            return { ref: uriPrefix };\n        }\n        // self-contained schema\n        const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n        return { defId, ref: defUriPrefix + encodeJSONPointerSegment(defId) };\n    };\n    // stored cached version in `def` property remove all properties, set $ref\n    const extractToDef = (entry) => {\n        // if the schema is already a reference, do not extract it\n        if (entry[1].schema.$ref) {\n            return;\n        }\n        const seen = entry[1];\n        const { ref, defId } = makeURI(entry);\n        seen.def = { ...seen.schema };\n        // defId won't be set if the schema is a reference to an external schema or if the schema is the root schema\n        if (defId)\n            seen.defId = defId;\n        // wipe away all properties except $ref\n        const schema = seen.schema;\n        for (const key in schema) {\n            delete schema[key];\n        }\n        schema.$ref = ref;\n    };\n    // throw on cycles\n    // break cycles\n    if (ctx.cycles === \"throw\") {\n        for (const entry of ctx.seen.entries()) {\n            const seen = entry[1];\n            if (seen.cycle) {\n                throw new Error(\"Cycle detected: \" +\n                    `#/${seen.cycle?.join(\"/\")}/<root>` +\n                    '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n            }\n        }\n    }\n    // extract schemas into $defs\n    for (const entry of ctx.seen.entries()) {\n        const seen = entry[1];\n        // convert root schema to # $ref\n        if (schema === entry[0]) {\n            extractToDef(entry); // this has special handling for the root schema\n            continue;\n        }\n        // extract schemas that are in the external registry\n        if (ctx.external) {\n            const ext = ctx.external.registry.get(entry[0])?.id;\n            if (schema !== entry[0] && ext) {\n                extractToDef(entry);\n                continue;\n            }\n        }\n        // extract schemas with `id` meta\n        const id = ctx.metadataRegistry.get(entry[0])?.id;\n        if (id) {\n            extractToDef(entry);\n            continue;\n        }\n        // break cycles\n        if (seen.cycle) {\n            // any\n            extractToDef(entry);\n            continue;\n        }\n        // extract reused schemas\n        if (seen.count > 1) {\n            if (ctx.reused === \"ref\") {\n                extractToDef(entry);\n            }\n        }\n    }\n    if (ctx.external)\n        ctx.sharedDefsExtractedFor = ctx.external;\n}\n/** Rewrites `anyOf: [{type: \"a\"}, {type: \"b\"}]` to `type: [\"a\", \"b\"]`, which every JSON Schema draft treats as equivalent and most consumers render far better for the nullable case. Only branches that are a bare type assertion qualify — anything carrying a constraint, `$ref`, `const` or metadata is left alone. Runs after `flattenRef`, so a branch an override decorated or `$defs` extraction turned into a `$ref` is no longer bare and correctly stays in `anyOf`. `oneOf` is excluded: `integer` and `number` overlap, so \"exactly one\" and \"at least one\" are not the same there. OpenAPI 3.0 is excluded: its `type` must be a single string. */\nfunction compactTypeUnion(schema) {\n    const options = schema.anyOf;\n    if (!Array.isArray(options) || options.length === 0 || schema.type !== undefined)\n        return;\n    const types = [];\n    for (const option of options) {\n        if (!option || typeof option !== \"object\")\n            return;\n        // A branch that is itself a compactible union folds into this one — nested `anyOf` and a flat `type` array say the same thing. Compacting it first also makes the result independent of the order this pass walks the seen map in.\n        compactTypeUnion(option);\n        const keys = Object.keys(option);\n        if (keys.length !== 1 || keys[0] !== \"type\")\n            return;\n        const type = option.type;\n        for (const member of Array.isArray(type) ? type : [type]) {\n            if (typeof member !== \"string\")\n                return;\n            if (!types.includes(member))\n                types.push(member);\n        }\n    }\n    delete schema.anyOf;\n    // A `type` array must be non-empty and unique (metaschema); a single member is spelled as a bare string.\n    schema.type = types.length === 1 ? types[0] : types;\n}\n/** Keywords `foldIntersection` knows how to combine. Anything else — `$ref`, `patternProperties`,\n * an annotation like `description` — makes a member unfoldable, so a constraint this does not\n * understand leaves the `allOf` alone instead of being silently dropped or misattributed. */\nconst FOLDABLE_KEYS = new Set([\"type\", \"properties\", \"required\", \"additionalProperties\"]);\nconst UNION_KEYS = [\"oneOf\", \"anyOf\"];\n/** A member's constraint on a key it does not declare itself. A `catchall` states one; `false`, an absent `additionalProperties`, and the empty schema a loose object emits state nothing. */\nfunction undeclaredConstraint(member) {\n    const extra = member.additionalProperties;\n    if (extra === undefined || extra === false || typeof extra !== \"object\" || extra === null)\n        return null;\n    return Object.keys(extra).length ? extra : null;\n}\n/** Combines object members into the single object they describe together, or returns `null` if any of them carries a keyword outside {@link FOLDABLE_KEYS}. */\nfunction foldObjects(members) {\n    const objects = [];\n    for (const member of members) {\n        // A boolean subschema is legal JSON Schema and carries no keywords to fold.\n        if (typeof member !== \"object\" || member.type !== \"object\")\n            return null;\n        for (const key in member) {\n            if (!FOLDABLE_KEYS.has(key))\n                return null;\n        }\n        objects.push(member);\n    }\n    const properties = {};\n    const required = new Set();\n    for (const object of objects) {\n        for (const key in object.properties) {\n            // `in` would report a `__proto__` key as already present via the prototype chain and skip it.\n            if (Object.prototype.hasOwnProperty.call(properties, key))\n                continue;\n            // Every member constrains this key: the ones that declare it say how, and a `catchall` member constrains it too even though it does not name it. The key has to satisfy all of them, which is the same intersection one level down.\n            const parts = [];\n            for (const other of objects) {\n                const part = other.properties?.[key] ?? undeclaredConstraint(other);\n                if (part === null || part === undefined)\n                    continue;\n                if (!parts.some((seen) => JSON.stringify(seen) === JSON.stringify(part)))\n                    parts.push(part);\n            }\n            const merged = parts.length === 1\n                ? parts[0]\n                : (foldObjects(parts) ?? { allOf: parts });\n            assignProp(properties, key, merged);\n        }\n        for (const key of object.required ?? [])\n            required.add(key);\n    }\n    const folded = { type: \"object\", properties };\n    if (required.size)\n        folded.required = [...required];\n    // A key no member declares is rejected only when every member rejects it, so the fold is closed only when every member is. Otherwise it carries whatever the `catchall` members demand of such a key.\n    if (objects.every((object) => object.additionalProperties === false)) {\n        folded.additionalProperties = false;\n    }\n    else {\n        const constraints = [];\n        for (const object of objects) {\n            const constraint = undeclaredConstraint(object);\n            if (constraint && !constraints.some((seen) => JSON.stringify(seen) === JSON.stringify(constraint)))\n                constraints.push(constraint);\n        }\n        if (constraints.length === 1)\n            folded.additionalProperties = constraints[0];\n        else if (constraints.length > 1)\n            folded.additionalProperties = { allOf: constraints };\n    }\n    return folded;\n}\n/** `additionalProperties` in an `allOf` member sees only that member's own `properties`, so two\n * closed object members reject each other's keys and the schema validates nothing. Zod's parser\n * pools the key sets instead — `handleIntersectionResults` reports a key as unrecognized only when\n * *every* side rejects it — so the emitted schema has to pool them too, and folding the members\n * into one object is the encoding that says so on every target.\n *\n * This runs from `finalize`, after `extractDefs`, which is what keeps it clear of the `$ref`\n * machinery: a member extracted into `$defs` is already a `$ref` by now and declines to fold, so it\n * keeps its reference and its own closedness rather than being inlined as a stale copy. */\nfunction foldIntersection(json) {\n    const allOf = json.allOf;\n    if (!Array.isArray(allOf) || allOf.length < 2)\n        return;\n    // An `override` runs before this pass and may have written object keywords onto the intersection itself. Those are deliberate, so decline rather than overwrite them.\n    for (const key of FOLDABLE_KEYS)\n        if (key in json)\n            return;\n    // An intersection distributes over a union: `A & (X | Y)` is `(A & X) | (A & Y)`. Only the first union is distributed over; a second one stays among the members every branch folds against, where it fails the object check and declines the whole intersection rather than multiplying out.\n    const unions = allOf.filter((m) => UNION_KEYS.some((k) => Array.isArray(m[k])));\n    let folded = null;\n    if (!unions.length) {\n        folded = foldObjects(allOf);\n    }\n    else {\n        const union = unions[0];\n        const keyword = UNION_KEYS.find((k) => Array.isArray(union[k]));\n        if (Object.keys(union).length !== 1)\n            return;\n        const rest = allOf.filter((m) => m !== union);\n        const branches = union[keyword].map((branch) => foldObjects([...rest, branch]));\n        if (branches.some((b) => !b))\n            return;\n        folded = { [keyword]: branches };\n    }\n    if (!folded)\n        return;\n    delete json.allOf;\n    assignProps(json, folded);\n}\nexport function finalize(ctx, schema) {\n    const root = ctx.seen.get(schema);\n    if (!root)\n        throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n    // flatten refs - inherit properties from parent schemas\n    const flattenRef = (zodSchema) => {\n        const seen = ctx.seen.get(zodSchema);\n        // already processed\n        if (seen.ref === null)\n            return;\n        const schema = seen.def ?? seen.schema;\n        const _cached = { ...schema };\n        const ref = seen.ref;\n        seen.ref = null; // prevent infinite recursion\n        if (ref) {\n            flattenRef(ref);\n            const refSeen = ctx.seen.get(ref);\n            const refSchema = refSeen.schema;\n            // merge referenced schema into current\n            if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n                // older drafts can't combine $ref with other properties\n                schema.allOf = schema.allOf ?? [];\n                schema.allOf.push(refSchema);\n            }\n            else {\n                assignProps(schema, refSchema);\n            }\n            // restore child's own properties (child wins)\n            assignProps(schema, _cached);\n            const isParentRef = zodSchema._zod.parent === ref;\n            // For parent chain, child is a refinement - remove parent-only properties\n            if (isParentRef) {\n                for (const key in schema) {\n                    if (key === \"$ref\" || key === \"allOf\")\n                        continue;\n                    if (!(key in _cached)) {\n                        delete schema[key];\n                    }\n                }\n            }\n            // When ref was extracted to $defs, remove properties that match the definition\n            if (refSchema.$ref && refSeen.def) {\n                for (const key in schema) {\n                    if (key === \"$ref\" || key === \"allOf\")\n                        continue;\n                    if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n                        delete schema[key];\n                    }\n                }\n            }\n        }\n        // If parent was extracted (has $ref), propagate $ref to this schema. This handles cases like: readonly().meta({id}).describe() where processor sets ref to innerType but parent should be referenced\n        const parent = zodSchema._zod.parent;\n        if (parent && parent !== ref) {\n            // Ensure parent is processed first so its def has inherited properties\n            flattenRef(parent);\n            const parentSeen = ctx.seen.get(parent);\n            if (parentSeen?.schema.$ref) {\n                schema.$ref = parentSeen.schema.$ref;\n                // De-duplicate with parent's definition\n                if (parentSeen.def) {\n                    for (const key in schema) {\n                        if (key === \"$ref\" || key === \"allOf\")\n                            continue;\n                        if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n                            delete schema[key];\n                        }\n                    }\n                }\n            }\n        }\n        // execute overrides\n        ctx.override({\n            zodSchema: zodSchema,\n            jsonSchema: schema,\n            path: seen.path ?? [],\n        });\n    };\n    // Flattening walks the whole map and clears each `ref` as it goes, so a second call over the same map is a no-op scan. Skip it outright once it has run for a registry conversion.\n    if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n        for (const entry of [...ctx.seen.entries()].reverse()) {\n            flattenRef(entry[0]);\n        }\n        if (ctx.target !== \"openapi-3.0\") {\n            for (const entry of ctx.seen.entries()) {\n                compactTypeUnion(entry[1].def ?? entry[1].schema);\n            }\n        }\n        for (const rewrite of ctx.deferred)\n            rewrite();\n        // After flattening, every member that was extracted is a `$ref`, so the fold sees the final shape. A schema that inherits an intersection — through `z.lazy`, or any `ref` chain — holds the same `allOf` array, so fold by array identity to catch every copy.\n        if (ctx.intersections.length) {\n            const carriers = new Map();\n            for (const seen of ctx.seen.values()) {\n                for (const json of [seen.schema, seen.def]) {\n                    const allOf = json?.allOf;\n                    if (!Array.isArray(allOf))\n                        continue;\n                    const existing = carriers.get(allOf);\n                    if (existing)\n                        existing.push(json);\n                    else\n                        carriers.set(allOf, [json]);\n                }\n            }\n            for (const allOf of ctx.intersections) {\n                for (const json of carriers.get(allOf) ?? [])\n                    foldIntersection(json);\n            }\n        }\n    }\n    const result = {};\n    if (ctx.target === \"draft-2020-12\") {\n        result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n    }\n    else if (ctx.target === \"draft-07\") {\n        result.$schema = \"http://json-schema.org/draft-07/schema#\";\n    }\n    else if (ctx.target === \"draft-04\") {\n        result.$schema = \"http://json-schema.org/draft-04/schema#\";\n    }\n    else if (ctx.target === \"openapi-3.0\") {\n        // OpenAPI 3.0 schema objects should not include a $schema property\n    }\n    else {\n        // Arbitrary string values are allowed but won't have a $schema property set\n    }\n    if (ctx.external?.uri) {\n        const id = ctx.external.registry.get(schema)?.id;\n        if (!id)\n            throw new Error(\"Schema is missing an `id` property\");\n        result.$id = ctx.external.uri(id);\n    }\n    // when the root was extracted into $defs, `root.schema` is the `$ref` wrapper and `root.def` is the body that now lives under $defs\n    assignProps(result, root.defId ? root.schema : (root.def ?? root.schema));\n    // The `id` in `.meta()` is a Zod-specific registration tag used to extract schemas into $defs — it is not user-facing JSON Schema metadata. Strip it from the output body where it would otherwise leak. The id is preserved implicitly via the $defs key (and via $ref paths).\n    const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n    if (rootMetaId !== undefined && result.id === rootMetaId)\n        delete result.id;\n    // build defs object. With `external`, `defs` is the shared object every schema writes into, so the same entries are reassigned on every call. Without it, `defs` is fresh per call and must be rebuilt.\n    const defs = ctx.external?.defs ?? {};\n    if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n        for (const entry of ctx.seen.entries()) {\n            const seen = entry[1];\n            if (seen.def && seen.defId) {\n                if (seen.def.id === seen.defId)\n                    delete seen.def.id;\n                assignProp(defs, seen.defId, seen.def);\n            }\n        }\n    }\n    if (ctx.external)\n        ctx.sharedEmitDoneFor = ctx.external;\n    // set definitions in result\n    if (ctx.external) {\n    }\n    else {\n        if (Object.keys(defs).length > 0) {\n            if (ctx.target === \"draft-2020-12\") {\n                result.$defs = defs;\n            }\n            else {\n                result.definitions = defs;\n            }\n        }\n    }\n    try {\n        // this \"finalizes\" this schema and ensures all cycles are removed each call to finalize() is functionally independent though the seen map is shared\n        const finalized = JSON.parse(JSON.stringify(result));\n        Object.defineProperty(finalized, \"~standard\", {\n            value: {\n                ...schema[\"~standard\"],\n                jsonSchema: {\n                    input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n                    output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n                },\n            },\n            enumerable: false,\n            writable: false,\n        });\n        return finalized;\n    }\n    catch (_err) {\n        throw new Error(\"Error converting schema to JSON.\");\n    }\n}\nfunction isTransforming(_schema, _ctx) {\n    const ctx = _ctx ?? { seen: new Set() };\n    if (ctx.seen.has(_schema))\n        return false;\n    ctx.seen.add(_schema);\n    const def = _schema._zod.def;\n    if (def.type === \"transform\")\n        return true;\n    if (def.type === \"array\")\n        return isTransforming(def.element, ctx);\n    if (def.type === \"set\")\n        return isTransforming(def.valueType, ctx);\n    if (def.type === \"lazy\")\n        return isTransforming(def.getter(), ctx);\n    if (def.type === \"promise\" ||\n        def.type === \"optional\" ||\n        def.type === \"nonoptional\" ||\n        def.type === \"nullable\" ||\n        def.type === \"readonly\" ||\n        def.type === \"default\" ||\n        def.type === \"prefault\" ||\n        def.type === \"catch\") {\n        return isTransforming(def.innerType, ctx);\n    }\n    if (def.type === \"intersection\") {\n        return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n    }\n    if (def.type === \"record\" || def.type === \"map\") {\n        return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n    }\n    if (def.type === \"pipe\") {\n        if (_schema._zod.traits.has(\"$ZodCodec\"))\n            return true;\n        return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n    }\n    if (def.type === \"object\") {\n        for (const key in def.shape) {\n            if (isTransforming(def.shape[key], ctx))\n                return true;\n        }\n        return false;\n    }\n    if (def.type === \"union\") {\n        for (const option of def.options) {\n            if (isTransforming(option, ctx))\n                return true;\n        }\n        return false;\n    }\n    if (def.type === \"tuple\") {\n        for (const item of def.items) {\n            if (isTransforming(item, ctx))\n                return true;\n        }\n        if (def.rest && isTransforming(def.rest, ctx))\n            return true;\n        return false;\n    }\n    return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n    const ctx = initializeContext({ ...params, processors });\n    processSchema(schema, ctx);\n    extractDefs(ctx, schema);\n    return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n    const { libraryOptions, target } = params ?? {};\n    const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n    processSchema(schema, ctx);\n    extractDefs(ctx, schema);\n    return finalize(ctx, schema);\n};\n","import * as regexes from \"./regexes.js\";\nimport { base64Charset, base64urlCharset } from \"./schemas.js\";\nimport { extractDefs, finalize, handleUnrepresentable, initializeContext, processSchema, } from \"./to-json-schema.js\";\nimport { BIGINT_FORMAT_RANGES, NUMBER_FORMAT_RANGES, assignProp, getEnumValues } from \"./util.js\";\nconst narrowMin = (agg, key, value) => {\n    if (agg[key] === undefined || value > agg[key])\n        agg[key] = value;\n};\nconst narrowMax = (agg, key, value) => {\n    if (agg[key] === undefined || value < agg[key])\n        agg[key] = value;\n};\nconst narrowBoth = (agg, value) => {\n    narrowMin(agg, \"minimum\", value);\n    narrowMax(agg, \"maximum\", value);\n};\nconst addDivisor = (agg, value) => {\n    agg.multipleOf ?? (agg.multipleOf = []);\n    if (!agg.multipleOf.includes(value))\n        agg.multipleOf.push(value);\n};\nconst addPattern = (agg, pattern) => {\n    agg.patterns ?? (agg.patterns = new Set());\n    agg.patterns.add(pattern);\n};\nconst intersectMime = (agg, mime) => {\n    agg.mime = agg.mime ? agg.mime.filter((m) => mime.includes(m)) : [...mime];\n};\n// last-wins, matching the bag's historical write order; the flag keeps an integer format from being lost to a later float one\nconst setFormat = (agg, format) => {\n    agg.format = format;\n    if (format.includes(\"int\"))\n        agg.isInt = true;\n};\nconst minContributor = (agg, def) => narrowMin(agg, \"minimum\", def.minimum);\nconst maxContributor = (agg, def) => narrowMax(agg, \"maximum\", def.maximum);\nconst formatContributor = (ranges) => (agg, def) => {\n    setFormat(agg, def.format);\n    const [minimum, maximum] = ranges[def.format];\n    narrowMin(agg, \"minimum\", minimum);\n    narrowMax(agg, \"maximum\", maximum);\n};\nconst contributors = {\n    greater_than: (agg, def) => narrowMin(agg, def.inclusive ? \"minimum\" : \"exclusiveMinimum\", def.value),\n    less_than: (agg, def) => narrowMax(agg, def.inclusive ? \"maximum\" : \"exclusiveMaximum\", def.value),\n    multiple_of: (agg, def) => addDivisor(agg, def.value),\n    number_format: formatContributor(NUMBER_FORMAT_RANGES),\n    bigint_format: formatContributor(BIGINT_FORMAT_RANGES),\n    min_length: minContributor,\n    max_length: maxContributor,\n    length_equals: (agg, def) => narrowBoth(agg, def.length),\n    min_size: minContributor,\n    max_size: maxContributor,\n    size_equals: (agg, def) => narrowBoth(agg, def.size),\n    string_format: (agg, def) => {\n        setFormat(agg, def.format);\n        if (def.pattern)\n            addPattern(agg, def.pattern);\n        if (def.format === \"base64\" || def.format === \"base64url\")\n            agg.contentEncoding = def.format;\n        if (def.local || def.precision === -1)\n            agg.laxFormat = true;\n    },\n    mime_type: (agg, def) => intersectMime(agg, def.mime),\n};\nexport function aggregateChecks(schema) {\n    const agg = {};\n    const def = schema._zod.def;\n    // a format schema is its own first check, same rule as $ZodType init\n    const list = schema._zod.traits.has(\"$ZodCheck\")\n        ? [schema, ...(def.checks ?? [])]\n        : (def.checks ?? []);\n    for (const ch of list)\n        contributors[ch._zod.def.check]?.(agg, ch._zod.def);\n    // reconcile with the bag so third-party onattach contributions still land; first-party residue is never tighter than the fold, so merging it back is idempotent for one and additive for the other\n    const bag = schema._zod.bag;\n    if (bag.minimum !== undefined)\n        narrowMin(agg, \"minimum\", bag.minimum);\n    if (bag.exclusiveMinimum !== undefined)\n        narrowMin(agg, \"exclusiveMinimum\", bag.exclusiveMinimum);\n    if (bag.maximum !== undefined)\n        narrowMax(agg, \"maximum\", bag.maximum);\n    if (bag.exclusiveMaximum !== undefined)\n        narrowMax(agg, \"exclusiveMaximum\", bag.exclusiveMaximum);\n    if (bag.multipleOf !== undefined)\n        addDivisor(agg, bag.multipleOf);\n    if (bag.format !== undefined) {\n        agg.format ?? (agg.format = bag.format);\n        if (bag.format.includes(\"int\"))\n            agg.isInt = true;\n    }\n    if (bag.mime)\n        intersectMime(agg, bag.mime);\n    for (const pattern of bag.patterns ?? [])\n        addPattern(agg, pattern);\n    return agg;\n}\nconst formatMap = {\n    guid: \"uuid\",\n    url: \"uri\",\n    datetime: \"date-time\",\n    json_string: \"json-string\",\n    regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\n// the runtime patterns are lax so parse paths never overflow the regex stack; the emitted schema swaps in the exact block forms, which zod itself never executes\nconst exactPatterns = new Map([\n    [base64Charset, regexes.base64],\n    [base64urlCharset, regexes.base64url],\n]);\nconst exactPattern = (p) => exactPatterns.get(p) ?? p;\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n    const json = _json;\n    json.type = \"string\";\n    const { minimum, maximum, format, patterns, contentEncoding, laxFormat } = aggregateChecks(schema);\n    if (typeof minimum === \"number\")\n        json.minLength = minimum;\n    if (typeof maximum === \"number\")\n        json.maxLength = maximum;\n    // custom pattern overrides format\n    if (format) {\n        json.format = formatMap[format] ?? format;\n        if (json.format === \"\")\n            delete json.format; // empty format is not valid\n        // `z.iso.time()` is never full-time, and `laxFormat` carries the datetime shapes that also accept what their keyword forbids\n        if (format === \"time\" || laxFormat) {\n            delete json.format;\n        }\n    }\n    if (contentEncoding)\n        json.contentEncoding = contentEncoding;\n    if (patterns && patterns.size > 0) {\n        const patternList = [...patterns].map(exactPattern);\n        if (patternList.length === 1)\n            json.pattern = patternList[0].source;\n        else if (patternList.length > 1) {\n            json.allOf = [\n                ...patternList.map((regex) => ({\n                    ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n                        ? { type: \"string\" }\n                        : {}),\n                    pattern: regex.source,\n                })),\n            ];\n        }\n    }\n};\nexport const numberProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const { minimum, maximum, multipleOf, exclusiveMaximum, exclusiveMinimum, isInt } = aggregateChecks(schema);\n    json.type = isInt ? \"integer\" : \"number\";\n    // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n    const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n    const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n    const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n    if (exMin) {\n        if (legacy) {\n            json.minimum = exclusiveMinimum;\n            json.exclusiveMinimum = true;\n        }\n        else {\n            json.exclusiveMinimum = exclusiveMinimum;\n        }\n    }\n    else if (typeof minimum === \"number\") {\n        json.minimum = minimum;\n    }\n    if (exMax) {\n        if (legacy) {\n            json.maximum = exclusiveMaximum;\n            json.exclusiveMaximum = true;\n        }\n        else {\n            json.exclusiveMaximum = exclusiveMaximum;\n        }\n    }\n    else if (typeof maximum === \"number\") {\n        json.maximum = maximum;\n    }\n    if (multipleOf) {\n        // JSON Schema requires a divisor strictly greater than zero, and a non-finite one does not survive JSON at all. A negative divisor accepts exactly what its absolute value accepts, so it still maps; zero, NaN and Infinity have no keyword form.\n        const divisors = new Set();\n        for (const divisor of multipleOf) {\n            if (Number.isFinite(divisor) && divisor !== 0)\n                divisors.add(Math.abs(divisor));\n            else\n                handleUnrepresentable(schema, ctx, json, params, `A multipleOf divisor of ${divisor} cannot be represented in JSON Schema`);\n        }\n        // chained divisors are a conjunction the keyword cannot carry alone, so extras ride an allOf, same as stacked patterns\n        const [first, ...rest] = divisors;\n        if (first !== undefined)\n            json.multipleOf = first;\n        if (rest.length)\n            json.allOf = [...(json.allOf ?? []), ...rest.map((m) => ({ multipleOf: m }))];\n    }\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n    json.type = \"boolean\";\n};\nexport const bigintProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"BigInt cannot be represented in JSON Schema\");\n};\nexport const symbolProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Symbols cannot be represented in JSON Schema\");\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n    if (ctx.target === \"openapi-3.0\") {\n        json.type = \"string\";\n        json.nullable = true;\n        json.enum = [null];\n    }\n    else {\n        json.type = \"null\";\n    }\n};\nexport const undefinedProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Undefined cannot be represented in JSON Schema\");\n};\nexport const voidProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Void cannot be represented in JSON Schema\");\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n    json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n    // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n    // empty schema accepts anything\n};\nexport const dateProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Date cannot be represented in JSON Schema\");\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n    const def = schema._zod.def;\n    const values = getEnumValues(def.entries);\n    // an empty enum accepts nothing, same as z.never()\n    if (values.length === 0) {\n        json.not = {};\n        return;\n    }\n    // Number enums can have both string and number values\n    if (values.every((v) => typeof v === \"number\"))\n        json.type = \"number\";\n    if (values.every((v) => typeof v === \"string\"))\n        json.type = \"string\";\n    json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    // a literal with no values accepts nothing, same as z.never()\n    if (def.values.length === 0) {\n        json.not = {};\n        return;\n    }\n    const vals = [];\n    for (const val of def.values) {\n        if (val === undefined) {\n            // a custom schema replaces the whole literal, so there is nothing left to accumulate\n            if (handleUnrepresentable(schema, ctx, json, params, \"Literal `undefined` cannot be represented in JSON Schema\"))\n                return;\n            // otherwise do not add to vals\n        }\n        else if (typeof val === \"bigint\") {\n            if (handleUnrepresentable(schema, ctx, json, params, \"BigInt literals cannot be represented in JSON Schema\"))\n                return;\n            vals.push(Number(val));\n        }\n        else {\n            vals.push(val);\n        }\n    }\n    if (vals.length === 0) {\n        // do nothing (an undefined literal was stripped)\n    }\n    else if (vals.length === 1) {\n        const val = vals[0];\n        json.type = val === null ? \"null\" : typeof val;\n        if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n            json.enum = [val];\n        }\n        else {\n            json.const = val;\n        }\n    }\n    else {\n        if (vals.every((v) => typeof v === \"number\"))\n            json.type = \"number\";\n        if (vals.every((v) => typeof v === \"string\"))\n            json.type = \"string\";\n        if (vals.every((v) => typeof v === \"boolean\"))\n            json.type = \"boolean\";\n        if (vals.every((v) => v === null))\n            json.type = \"null\";\n        json.enum = vals;\n    }\n};\nexport const nanProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"NaN cannot be represented in JSON Schema\");\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n    const _json = json;\n    const pattern = schema._zod.pattern;\n    if (!pattern)\n        throw new Error(\"Pattern not found in template literal\");\n    _json.type = \"string\";\n    _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n    const _json = json;\n    _json.type = \"string\";\n    _json.format = \"binary\";\n    _json.contentEncoding = \"binary\";\n    const { minimum, maximum, mime } = aggregateChecks(schema);\n    if (minimum !== undefined)\n        _json.minLength = minimum;\n    if (maximum !== undefined)\n        _json.maxLength = maximum;\n    if (!mime)\n        return;\n    // an empty intersection means the mime checks share no value, so nothing passes at runtime; `anyOf` must be non-empty, so the false schema is `not: {}`\n    if (mime.length === 0)\n        _json.not = {};\n    else if (mime.length === 1)\n        _json.contentMediaType = mime[0];\n    // only contentMediaType differs, so the shared props stay at the root\n    else\n        _json.anyOf = mime.map((m) => ({ contentMediaType: m }));\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n    json.type = \"boolean\";\n};\nexport const customProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Custom types cannot be represented in JSON Schema\");\n};\nexport const functionProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Function types cannot be represented in JSON Schema\");\n};\nexport const transformProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Transforms cannot be represented in JSON Schema\");\n};\nexport const mapProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Map cannot be represented in JSON Schema\");\n};\nexport const setProcessor = (schema, ctx, json, params) => {\n    handleUnrepresentable(schema, ctx, json, params, \"Set cannot be represented in JSON Schema\");\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    const { minimum, maximum } = aggregateChecks(schema);\n    if (typeof minimum === \"number\")\n        json.minItems = minimum;\n    if (typeof maximum === \"number\")\n        json.maxItems = maximum;\n    json.type = \"array\";\n    json.items = processSchema(def.element, ctx, {\n        ...params,\n        path: [...params.path, \"items\"],\n    });\n};\n// Transform and catch set `optin = \"optional\"` at runtime so the parser lets them observe an\n// absent key, but their declared input type stays required. An input JSON Schema describes the\n// declared type, so resolve past them to the schema that actually carries the optionality.\n// Used by both `objectProcessor` (for `required`) and `tupleProcessor` (for `minItems`); see\n// wiki/optionality.md, \"The JSON Schema emitter reads the *static* value\".\nfunction inputOptin(schema) {\n    const def = schema._zod.def;\n    if (def.type === \"pipe\" && def.in._zod.traits.has(\"$ZodTransform\")) {\n        return inputOptin(def.out);\n    }\n    if (def.type === \"catch\") {\n        return inputOptin(def.innerType);\n    }\n    return schema._zod.optin;\n}\nexport const objectProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    const shape = def.shape;\n    // dropping it while still emitting `additionalProperties: false` would emit a schema that rejects data this one requires\n    const symbolKeys = Object.getOwnPropertySymbols(shape);\n    if (symbolKeys.length &&\n        handleUnrepresentable(schema, ctx, json, params, \"Symbol keys cannot be represented in JSON Schema\")) {\n        return;\n    }\n    json.type = \"object\";\n    json.properties = {};\n    for (const key in shape) {\n        // assignProp so a __proto__ key becomes an own property instead of hitting the inherited setter on the plain {} we build into\n        assignProp(json.properties, key, processSchema(shape[key], ctx, {\n            ...params,\n            path: [...params.path, \"properties\", key],\n        }));\n    }\n    // required keys\n    const requiredKeys = [];\n    for (const key of Object.keys(shape)) {\n        const field = def.shape[key];\n        if (ctx.io === \"input\" ? inputOptin(field) === undefined : field._zod.optout === undefined) {\n            requiredKeys.push(key);\n        }\n    }\n    if (requiredKeys.length > 0) {\n        json.required = requiredKeys;\n    }\n    // catchall\n    if (def.catchall?._zod.def.type === \"never\") {\n        // strict\n        json.additionalProperties = false;\n    }\n    else if (!def.catchall) {\n        // regular\n        if (ctx.io === \"output\")\n            json.additionalProperties = false;\n    }\n    else if (def.catchall) {\n        json.additionalProperties = processSchema(def.catchall, ctx, {\n            ...params,\n            path: [...params.path, \"additionalProperties\"],\n        });\n    }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches). This includes both z.xor() and discriminated unions\n    const isExclusive = def.inclusive === false;\n    const options = def.options.map((x, i) => processSchema(x, ctx, {\n        ...params,\n        path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n    }));\n    if (isExclusive) {\n        json.oneOf = options;\n    }\n    else {\n        json.anyOf = options;\n    }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    const a = processSchema(def.left, ctx, {\n        ...params,\n        path: [...params.path, \"allOf\", 0],\n    });\n    const b = processSchema(def.right, ctx, {\n        ...params,\n        path: [...params.path, \"allOf\", 1],\n    });\n    const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n    const allOf = [\n        ...(isSimpleIntersection(a) ? a.allOf : [a]),\n        ...(isSimpleIntersection(b) ? b.allOf : [b]),\n    ];\n    json.allOf = allOf;\n    // Recorded innermost first, so a nested intersection has already folded by the time this one is considered. The array is the handle rather than the schema, because a wrapper that inherits this schema shares the same array; `finalize` folds every object holding it. See `foldIntersection`.\n    ctx.intersections.push(allOf);\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"array\";\n    const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n    const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n    const prefixItems = def.items.map((x, i) => processSchema(x, ctx, {\n        ...params,\n        path: [...params.path, prefixPath, i],\n    }));\n    const rest = def.rest\n        ? processSchema(def.rest, ctx, {\n            ...params,\n            path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n        })\n        : null;\n    let minItems = def.items.length;\n    while (minItems > 0) {\n        const item = def.items[minItems - 1];\n        const optional = ctx.io === \"input\" ? inputOptin(item) !== undefined : item._zod.optout === \"optional\";\n        if (!optional)\n            break;\n        minItems--;\n    }\n    const maxItems = def.items.length;\n    const isClosed = !def.rest;\n    if (ctx.target === \"draft-2020-12\") {\n        json.prefixItems = prefixItems;\n        if (isClosed) {\n            json.items = false;\n        }\n        else if (rest) {\n            json.items = rest;\n        }\n        if (minItems > 0)\n            json.minItems = minItems;\n        if (isClosed)\n            json.maxItems = maxItems;\n    }\n    else if (ctx.target === \"openapi-3.0\") {\n        json.items = {\n            anyOf: prefixItems,\n        };\n        if (rest) {\n            json.items.anyOf.push(rest);\n        }\n        if (minItems > 0)\n            json.minItems = minItems;\n        if (isClosed)\n            json.maxItems = maxItems;\n    }\n    else {\n        json.items = prefixItems;\n        if (isClosed) {\n            json.additionalItems = false;\n        }\n        else if (rest) {\n            json.additionalItems = rest;\n        }\n        if (minItems > 0)\n            json.minItems = minItems;\n        if (isClosed)\n            json.maxItems = maxItems;\n    }\n    // explicit user-defined length checks take precedence\n    const { minimum, maximum } = aggregateChecks(schema);\n    if (typeof minimum === \"number\")\n        json.minItems = minimum;\n    if (typeof maximum === \"number\")\n        json.maxItems = maximum;\n};\n/** JSON object keys are always strings, so a numeric record key schema is re-expressed over the\n * numeric-string form the record parser matches. Deferred to `finalize`, after the flatten: a key\n * behind a wrapper only carries its own `type` before then, and a union key only has its branches.\n *\n * A numeric bound cannot apply to a property name, so `minimum` and its siblings are dropped rather\n * than carried over: keeping them beside `type: \"string\"` reproduces the match-nothing schema this\n * exists to fix. A key that carries one therefore emits wider than the record parses — `z.record(z.number().min(5), V)`\n * accepts `\"3\"` — which is the deliberate trade, since throwing on it would reject an ordinary schema\n * outright. */\nfunction stringifyKeyNames(bySchema, json, visited) {\n    // an extracted key that rewrites cannot go on sharing its definition — the string form a key position needs is not the number form every other reference wants — so it inlines. One that does not rewrite keeps the `$ref`.\n    if (json.$ref) {\n        // a recursive key holds its own reference inside its definition, so a node already on the path is left alone rather than resolved again\n        if (visited.has(json))\n            return json;\n        visited.add(json);\n        const def = bySchema.get(json)?.def;\n        if (!def)\n            return json;\n        const inlined = stringifyKeyNames(bySchema, def, visited);\n        return inlined === def ? json : inlined;\n    }\n    for (const keyword of [\"anyOf\", \"oneOf\"]) {\n        const branches = json[keyword];\n        if (!Array.isArray(branches))\n            continue;\n        const mapped = branches.map((branch) => stringifyKeyNames(bySchema, branch, visited));\n        // rebuilding regardless would detach a key that had nothing to re-express, dropping its `$ref` and leaking the internal `id`\n        if (mapped.some((branch, i) => branch !== branches[i]))\n            json = { ...json, [keyword]: mapped };\n    }\n    // a member that already admits a string leaves the key unconstrained, so the node's own type re-expresses only when every member is numeric\n    const types = Array.isArray(json.type) ? json.type : [json.type];\n    const numericType = !types.includes(\"string\") && types.some((t) => t === \"number\" || t === \"integer\");\n    // a heterogeneous key carries no type at all, so its numeric members are caught here instead\n    const values = json.enum ?? (json.const !== undefined ? [json.const] : undefined);\n    if (!numericType && !values?.some((v) => typeof v === \"number\"))\n        return json;\n    const { minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, format, id, ...rest } = json;\n    if (rest.enum)\n        rest.enum = rest.enum.map((v) => (typeof v === \"number\" ? String(v) : v));\n    else if (typeof rest.const === \"number\")\n        rest.const = String(rest.const);\n    // a heterogeneous key keeps its absent type: the stringified members already say what a key may be\n    if (!numericType)\n        return rest;\n    rest.type = \"string\";\n    if (!values)\n        rest.pattern = (types.includes(\"number\") ? regexes.number : regexes.integer).source;\n    return rest;\n}\n/** Every record of one conversion, so the carriers are found in a single pass rather than once per record. */\nconst pendingRecords = new WeakMap();\nfunction rewriteKeyNames(ctx) {\n    // an extracted key is resolved by the object `extractToDef` left in its place, so the map is built once rather than searched per reference. `_zod.toJSONSchema` can hand the same object to two schemas, so the first entry carrying a body wins, as a search would have found it.\n    const bySchema = new Map();\n    for (const entry of ctx.seen.values()) {\n        if (entry.def && !bySchema.has(entry.schema))\n            bySchema.set(entry.schema, entry);\n    }\n    const rewrites = new Map();\n    for (const record of pendingRecords.get(ctx) ?? []) {\n        const seen = ctx.seen.get(record);\n        const names = (seen?.def ?? seen?.schema)?.propertyNames;\n        if (!names || names === true || rewrites.has(names))\n            continue;\n        const rewritten = stringifyKeyNames(bySchema, names, new Set());\n        if (rewritten !== names)\n            rewrites.set(names, rewritten);\n    }\n    if (!rewrites.size)\n        return;\n    // the flatten has already copied each record's own properties onto every wrapper by reference, and an extracted body is another such copy, so every carrier holding a rewritten key is updated together\n    for (const entry of ctx.seen.values()) {\n        for (const carrier of [entry.schema, entry.def]) {\n            const rewritten = carrier && rewrites.get(carrier.propertyNames);\n            if (rewritten)\n                carrier.propertyNames = rewritten;\n        }\n    }\n}\nexport const recordProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"object\";\n    // For looseRecord with regex patterns, use patternProperties. This correctly represents \"only validate keys matching the pattern\" semantics and composes well with allOf (intersections)\n    const keyType = def.keyType;\n    const patterns = aggregateChecks(keyType).patterns;\n    if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n        // Use patternProperties for looseRecord with regex patterns\n        const valueSchema = processSchema(def.valueType, ctx, {\n            ...params,\n            path: [...params.path, \"patternProperties\", \"*\"],\n        });\n        json.patternProperties = {};\n        for (const pattern of patterns) {\n            assignProp(json.patternProperties, exactPattern(pattern).source, valueSchema);\n        }\n    }\n    else {\n        // Default behavior: use propertyNames + additionalProperties\n        if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n            json.propertyNames = processSchema(def.keyType, ctx, {\n                ...params,\n                path: [...params.path, \"propertyNames\"],\n            });\n            let pending = pendingRecords.get(ctx);\n            if (!pending) {\n                pending = [];\n                pendingRecords.set(ctx, pending);\n                ctx.deferred.push(() => rewriteKeyNames(ctx));\n            }\n            pending.push(schema);\n        }\n        json.additionalProperties = processSchema(def.valueType, ctx, {\n            ...params,\n            path: [...params.path, \"additionalProperties\"],\n        });\n    }\n    // Add required for keys with discrete values (enum, literal, etc.)\n    const keyValues = keyType._zod.values;\n    // Every key shares one value schema, so an optional-in value makes the whole key set omittable on input. Output keeps them: the exhaustive branch assigns every key, even one whose value came back undefined.\n    const omittableOnInput = ctx.io === \"input\" && inputOptin(def.valueType) !== undefined;\n    if (keyValues && !def.partial && !omittableOnInput) {\n        const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n        if (validKeyValues.length > 0) {\n            json.required = validKeyValues.map(String);\n        }\n    }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    const inner = processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    if (ctx.target === \"openapi-3.0\") {\n        seen.ref = def.innerType;\n        json.nullable = true;\n    }\n    else {\n        json.anyOf = [inner, { type: \"null\" }];\n    }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\n/** Round-trips a default value through JSON so the emitted schema is guaranteed to be valid JSON.\n * A BigInt has no reliable encoding, so it goes through `unrepresentable` like any other\n * unrepresentable value. Returns a sentinel when the caller must not write a default of its own. */\nconst UNREPRESENTABLE_DEFAULT = Symbol();\nfunction serializeDefaultValue(value, schema, ctx, json, params) {\n    let unrepresentable = false;\n    const serialized = JSON.stringify(value, (_, val) => {\n        if (typeof val !== \"bigint\")\n            return val;\n        unrepresentable = true;\n        return null;\n    });\n    if (!unrepresentable)\n        return JSON.parse(serialized);\n    handleUnrepresentable(schema, ctx, json, params, \"BigInt defaults cannot be represented in JSON Schema\");\n    return UNREPRESENTABLE_DEFAULT;\n}\nexport const defaultProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    const value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n    if (value !== UNREPRESENTABLE_DEFAULT)\n        json.default = value;\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    if (ctx.io !== \"input\")\n        return;\n    const value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n    if (value !== UNREPRESENTABLE_DEFAULT)\n        json._prefault = value;\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    let catchValue;\n    try {\n        catchValue = def.catchValue(undefined);\n    }\n    catch {\n        handleUnrepresentable(schema, ctx, json, params, \"Dynamic catch values are not supported in JSON Schema\");\n        return;\n    }\n    json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n    const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n    processSchema(innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    processSchema(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n    const innerType = schema._zod.innerType;\n    processSchema(innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n    string: stringProcessor,\n    number: numberProcessor,\n    boolean: booleanProcessor,\n    bigint: bigintProcessor,\n    symbol: symbolProcessor,\n    null: nullProcessor,\n    undefined: undefinedProcessor,\n    void: voidProcessor,\n    never: neverProcessor,\n    any: anyProcessor,\n    unknown: unknownProcessor,\n    date: dateProcessor,\n    enum: enumProcessor,\n    literal: literalProcessor,\n    nan: nanProcessor,\n    template_literal: templateLiteralProcessor,\n    file: fileProcessor,\n    success: successProcessor,\n    custom: customProcessor,\n    function: functionProcessor,\n    transform: transformProcessor,\n    map: mapProcessor,\n    set: setProcessor,\n    array: arrayProcessor,\n    object: objectProcessor,\n    union: unionProcessor,\n    intersection: intersectionProcessor,\n    tuple: tupleProcessor,\n    record: recordProcessor,\n    nullable: nullableProcessor,\n    nonoptional: nonoptionalProcessor,\n    default: defaultProcessor,\n    prefault: prefaultProcessor,\n    catch: catchProcessor,\n    pipe: pipeProcessor,\n    readonly: readonlyProcessor,\n    promise: promiseProcessor,\n    optional: optionalProcessor,\n    lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n    if (\"_idmap\" in input) {\n        // Registry case\n        const registry = input;\n        const ctx = initializeContext({ ...params, processors: allProcessors });\n        const defs = {};\n        // First pass: process all schemas to build the seen map\n        for (const entry of registry._idmap.entries()) {\n            const [_, schema] = entry;\n            processSchema(schema, ctx);\n        }\n        const schemas = {};\n        const external = {\n            registry,\n            uri: params?.uri,\n            defs,\n        };\n        // Update the context with external configuration\n        ctx.external = external;\n        // Second pass: emit each schema\n        for (const entry of registry._idmap.entries()) {\n            const [key, schema] = entry;\n            extractDefs(ctx, schema);\n            assignProp(schemas, key, finalize(ctx, schema));\n        }\n        if (Object.keys(defs).length > 0) {\n            const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n            schemas.__shared = {\n                [defsSegment]: defs,\n            };\n        }\n        return { schemas };\n    }\n    // Single schema case\n    const ctx = initializeContext({ ...params, processors: allProcessors });\n    processSchema(input, ctx);\n    extractDefs(ctx, input);\n    return finalize(ctx, input);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\n/* Prototypes that already carry the lazy helper methods. Seeded with the\n * intrinsics so that `init` on a foreign object — it accepts any object —\n * can never install an accessor onto a prototype we do not own. */\nconst _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\n/* Helper methods live as non-enumerable lazy getters on the shared\n * prototype instead of own properties on every instance. On first\n * access the getter allocates the per-instance closure and caches it\n * as a non-enumerable own property, so detached usage still works and\n * the allocation only happens for methods actually touched. */\nfunction _lazyMethod(proto, key, make) {\n    Object.defineProperty(proto, key, {\n        configurable: true,\n        enumerable: false,\n        get() {\n            const value = make(this);\n            Object.defineProperty(this, key, { value, configurable: true, writable: true });\n            return value;\n        },\n        set(value) {\n            Object.defineProperty(this, key, { value, configurable: true, writable: true });\n        },\n    });\n}\nconst initializer = (inst, issues) => {\n    $ZodError.init(inst, issues);\n    inst.name = \"ZodError\";\n    const proto = Object.getPrototypeOf(inst);\n    if (_installedErrorProtos.has(proto))\n        return;\n    _installedErrorProtos.add(proto);\n    _lazyMethod(proto, \"format\", (self) => (mapper) => core.formatError(self, mapper));\n    _lazyMethod(proto, \"flatten\", (self) => (mapper) => core.flattenError(self, mapper));\n    _lazyMethod(proto, \"addIssue\", (self) => (issue) => {\n        self.issues.push(issue);\n        self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n    });\n    _lazyMethod(proto, \"addIssues\", (self) => (issues) => {\n        self.issues.push(...issues);\n        self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n    });\n    Object.defineProperty(proto, \"isEmpty\", {\n        configurable: true,\n        enumerable: false,\n        get() {\n            return this.issues.length === 0;\n        },\n    });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, undefined, {\n    Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\nexport { validate, validateAsync } from \"../core/index.js\";\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport * as regexes from \"../core/regexes.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport en from \"../locales/en.js\";\nimport * as checks from \"./checks.js\";\nimport * as parse from \"./parse.js\";\n// Register English as the default locale on first ZodType construction. Hooked into the `ZodType` `$constructor` (rather than a top-level `config(en())` in `external.ts`) so bundlers honoring `sideEffects: false` can't tree-shake it out — see #5953, #5725. An explicit `z.config(z.locales.xx())` call wins regardless of order, since this only sets the default when none is present.\nfunction _ensureDefaultLocale() {\n    if (!core.globalConfig.localeError)\n        core.config(en());\n}\n// the default memoizer is read by the core container init, which runs before `ZodType.init`, so each container calls this first\nfunction _ensureDefaultMemoizer() {\n    if (!core.globalConfig.memoizer)\n        core.config({ memoizer: core.memoizer() });\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n    _ensureDefaultLocale();\n    core.$ZodType.init(inst, def);\n    inst.def = def;\n    inst.type = def.type;\n    return inst;\n}, {\n    check(...chks) {\n        const def = this.def;\n        return this.clone(util.mergeDefs(def, {\n            checks: [\n                ...(def.checks ?? []),\n                ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n            ],\n        }), { parent: true });\n    },\n    with(...chks) {\n        return this.check(...chks);\n    },\n    clone(def, params) {\n        return core.clone(this, def, params);\n    },\n    brand() {\n        return this;\n    },\n    register(reg, meta) {\n        reg.add(this, meta);\n        return this;\n    },\n    refine(check, params) {\n        return this.check(refine(check, params));\n    },\n    superRefine(refinement, params) {\n        return this.check(superRefine(refinement, params));\n    },\n    overwrite(fn) {\n        return this.check(checks.overwrite(fn));\n    },\n    optional() {\n        return optional(this);\n    },\n    exactOptional() {\n        return exactOptional(this);\n    },\n    nullable() {\n        return nullable(this);\n    },\n    nullish() {\n        return optional(nullable(this));\n    },\n    nonoptional(params) {\n        return nonoptional(this, params);\n    },\n    array() {\n        return array(this);\n    },\n    or(arg) {\n        return union([this, arg]);\n    },\n    and(arg) {\n        return intersection(this, arg);\n    },\n    transform(tx) {\n        return pipe(this, transform(tx));\n    },\n    default(d) {\n        return _default(this, d);\n    },\n    prefault(d) {\n        return prefault(this, d);\n    },\n    catch(params) {\n        return _catch(this, params);\n    },\n    pipe(target) {\n        return pipe(this, target);\n    },\n    readonly() {\n        return readonly(this);\n    },\n    describe(description) {\n        const cl = this.clone();\n        core.globalRegistry.add(cl, { description });\n        return cl;\n    },\n    meta(...args) {\n        // overloaded: meta() returns the registered metadata, meta(data) returns a clone with `data` registered. The mapped type picks up the second overload, so we accept variadic any-args and return `any` to satisfy both at runtime.\n        if (args.length === 0)\n            return core.globalRegistry.get(this);\n        const cl = this.clone();\n        core.globalRegistry.add(cl, args[0]);\n        return cl;\n    },\n    isOptional() {\n        return this.safeParse(undefined).success;\n    },\n    isNullable() {\n        return this.safeParse(null).success;\n    },\n    apply(fn, ...args) {\n        return args.length === 0 ? fn(this) : fn(this, ...args);\n    },\n    // Overrides core's `~standard` to add `jsonSchema`. Must stay a prototype entry: redefining it per instance demotes instances to dictionary mode.\n    get \"~standard\"() {\n        return util.hide(this, \"~standard\", {\n            ...core.standardProps(this),\n            jsonSchema: {\n                input: createStandardJSONSchemaMethod(this, \"input\"),\n                output: createStandardJSONSchemaMethod(this, \"output\"),\n            },\n        });\n    },\n    set \"~standard\"(value) {\n        util.own(this, \"~standard\", value);\n    },\n    parse: function _parse(data, params) {\n        return parse.parse(this, data, params, { callee: _parse });\n    },\n    parseAsync: async function _parseAsync(data, params) {\n        return await parse.parseAsync(this, data, params, { callee: _parseAsync });\n    },\n    safeParse(data, params) {\n        return parse.safeParse(this, data, params);\n    },\n    async safeParseAsync(data, params) {\n        return parse.safeParseAsync(this, data, params);\n    },\n    // `spa` is an alias: same function object as `safeParseAsync`, as before.\n    get spa() {\n        return this?.safeParseAsync;\n    },\n    set spa(value) {\n        util.own(this, \"spa\", value);\n    },\n    validate(data, params) {\n        return parse.validate(this, data, params);\n    },\n    validateAsync(data, params) {\n        return parse.validateAsync(this, data, params);\n    },\n    encode: function _encode(data, params) {\n        return parse.encode(this, data, params, { callee: _encode });\n    },\n    decode: function _decode(data, params) {\n        return parse.decode(this, data, params, { callee: _decode });\n    },\n    encodeAsync: async function _encodeAsync(data, params) {\n        return await parse.encodeAsync(this, data, params, { callee: _encodeAsync });\n    },\n    decodeAsync: async function _decodeAsync(data, params) {\n        return await parse.decodeAsync(this, data, params, { callee: _decodeAsync });\n    },\n    safeEncode(data, params) {\n        return parse.safeEncode(this, data, params);\n    },\n    safeDecode(data, params) {\n        return parse.safeDecode(this, data, params);\n    },\n    async safeEncodeAsync(data, params) {\n        return parse.safeEncodeAsync(this, data, params);\n    },\n    async safeDecodeAsync(data, params) {\n        return parse.safeDecodeAsync(this, data, params);\n    },\n    toJSONSchema(params) {\n        return createToJSONSchemaMethod(this, {})(params);\n    },\n    // Reads through to the registry on every access, so it must not cache.\n    get description() {\n        return core.globalRegistry.get(this)?.description;\n    },\n    // No setter: `schema._def = x` throws, as it did when `_def` was a non-writable own property.\n    get _def() {\n        return this._zod.def;\n    },\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n}, \n/*@__PURE__*/ util.derived({\n    format: (inst) => processors.aggregateChecks(inst).format ?? null,\n    minLength: (inst) => processors.aggregateChecks(inst).minimum ?? null,\n    maxLength: (inst) => processors.aggregateChecks(inst).maximum ?? null,\n}, {\n    regex(...args) {\n        return this.check(checks.regex(...args));\n    },\n    includes(...args) {\n        return this.check(checks.includes(...args));\n    },\n    startsWith(...args) {\n        return this.check(checks.startsWith(...args));\n    },\n    endsWith(...args) {\n        return this.check(checks.endsWith(...args));\n    },\n    min(...args) {\n        return this.check(checks.minLength(...args));\n    },\n    max(...args) {\n        return this.check(checks.maxLength(...args));\n    },\n    length(...args) {\n        return this.check(checks.length(...args));\n    },\n    nonempty(...args) {\n        return this.check(checks.minLength(1, ...args));\n    },\n    lowercase(params) {\n        return this.check(checks.lowercase(params));\n    },\n    uppercase(params) {\n        return this.check(checks.uppercase(params));\n    },\n    trim() {\n        return this.check(checks.trim());\n    },\n    normalize(...args) {\n        return this.check(checks.normalize(...args));\n    },\n    toLowerCase() {\n        return this.check(checks.toLowerCase());\n    },\n    toUpperCase() {\n        return this.check(checks.toUpperCase());\n    },\n    slugify() {\n        return this.check(checks.slugify());\n    },\n}));\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    _ZodString.init(inst, def);\n}, {\n    email(params) {\n        return this.check(core._email(ZodEmail, params));\n    },\n    url(params) {\n        return this.check(core._url(ZodURL, params));\n    },\n    jwt(params) {\n        return this.check(core._jwt(ZodJWT, params));\n    },\n    emoji(params) {\n        return this.check(core._emoji(ZodEmoji, params));\n    },\n    guid(params) {\n        return this.check(core._guid(ZodGUID, params));\n    },\n    uuid(params) {\n        return this.check(core._uuid(ZodUUID, params));\n    },\n    uuidv4(params) {\n        return this.check(core._uuidv4(ZodUUID, params));\n    },\n    uuidv6(params) {\n        return this.check(core._uuidv6(ZodUUID, params));\n    },\n    uuidv7(params) {\n        return this.check(core._uuidv7(ZodUUID, params));\n    },\n    nanoid(params) {\n        return this.check(core._nanoid(ZodNanoID, params));\n    },\n    cuid(params) {\n        return this.check(core._cuid(ZodCUID, params));\n    },\n    cuid2(params) {\n        return this.check(core._cuid2(ZodCUID2, params));\n    },\n    ulid(params) {\n        return this.check(core._ulid(ZodULID, params));\n    },\n    base64(params) {\n        return this.check(core._base64(ZodBase64, params));\n    },\n    base64url(params) {\n        return this.check(core._base64url(ZodBase64URL, params));\n    },\n    xid(params) {\n        return this.check(core._xid(ZodXID, params));\n    },\n    ksuid(params) {\n        return this.check(core._ksuid(ZodKSUID, params));\n    },\n    ipv4(params) {\n        return this.check(core._ipv4(ZodIPv4, params));\n    },\n    ipv6(params) {\n        return this.check(core._ipv6(ZodIPv6, params));\n    },\n    cidrv4(params) {\n        return this.check(core._cidrv4(ZodCIDRv4, params));\n    },\n    cidrv6(params) {\n        return this.check(core._cidrv6(ZodCIDRv6, params));\n    },\n    e164(params) {\n        return this.check(core._e164(ZodE164, params));\n    },\n    datetime(params) {\n        return this.check(core._isoDateTime(ZodISODateTime, params));\n    },\n    date(params) {\n        return this.check(core._isoDate(ZodISODate, params));\n    },\n    time(params) {\n        return this.check(core._isoTime(ZodISOTime, params));\n    },\n    duration(params) {\n        return this.check(core._isoDuration(ZodISODuration, params));\n    },\n});\nexport function string(params) {\n    return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n    core.$ZodStringFormat.init(inst, def);\n    _ZodString.init(inst, def);\n});\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n    core.$ZodISODateTime.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n    core.$ZodISODate.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n    core.$ZodISOTime.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n    core.$ZodISODuration.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmail.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n    return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodGUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n    return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodUUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n    return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n    return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n    return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n    return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodURL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n    return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n    return core._url(ZodURL, {\n        protocol: regexes.httpProtocol,\n        hostname: regexes.domain,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmoji.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n    return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodNanoID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n    return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n    return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID2.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n    return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodULID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n    return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodXID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n    return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodKSUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n    return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n    return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodMAC.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n    return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n    return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n    core.$ZodCIDRv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n    return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n    core.$ZodCIDRv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n    return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n    return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64URL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n    return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodE164.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n    return core._e164(ZodE164, params);\n}\nexport const ZodCreditCard = /*@__PURE__*/ core.$constructor(\"ZodCreditCard\", (inst, def) => {\n    core.$ZodCreditCard.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function creditCard(params) {\n    return core._creditCard(ZodCreditCard, params);\n}\nexport const ZodIBAN = /*@__PURE__*/ core.$constructor(\"ZodIBAN\", (inst, def) => {\n    core.$ZodIBAN.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function iban(params) {\n    return core._iban(ZodIBAN, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodJWT.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n    return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCustomStringFormat.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n    return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"hostname\", regexes.hostname, _params);\n}\nexport function hex(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"hex\", regexes.hex, _params);\n}\nexport function currencyCode(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"currency_code\", regexes.currencyCode, _params);\n}\nexport function hash(alg, params) {\n    const enc = params?.enc ?? \"hex\";\n    const format = `${alg}_${enc}`;\n    const regex = core.regexes[format];\n    if (!regex)\n        throw new Error(`Unrecognized hash format: ${format}`);\n    return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n    core.$ZodNumber.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n    inst.isFinite = true;\n}, \n/*@__PURE__*/ util.derived({\n    minValue: (inst) => {\n        const { minimum, exclusiveMinimum } = processors.aggregateChecks(inst);\n        return Math.max(minimum ?? Number.NEGATIVE_INFINITY, exclusiveMinimum ?? Number.NEGATIVE_INFINITY);\n    },\n    maxValue: (inst) => {\n        const { maximum, exclusiveMaximum } = processors.aggregateChecks(inst);\n        return Math.min(maximum ?? Number.POSITIVE_INFINITY, exclusiveMaximum ?? Number.POSITIVE_INFINITY);\n    },\n    isInt: (inst) => {\n        const { isInt, multipleOf } = processors.aggregateChecks(inst);\n        return !!isInt || !!multipleOf?.some(Number.isSafeInteger);\n    },\n    format: (inst) => processors.aggregateChecks(inst).format ?? null,\n}, {\n    gt(value, params) {\n        return this.check(checks.gt(value, params));\n    },\n    gte(value, params) {\n        return this.check(checks.gte(value, params));\n    },\n    min(value, params) {\n        return this.check(checks.gte(value, params));\n    },\n    lt(value, params) {\n        return this.check(checks.lt(value, params));\n    },\n    lte(value, params) {\n        return this.check(checks.lte(value, params));\n    },\n    max(value, params) {\n        return this.check(checks.lte(value, params));\n    },\n    int(params) {\n        return this.check(int(params));\n    },\n    safe(params) {\n        return this.check(int(params));\n    },\n    positive(params) {\n        return this.check(checks.gt(0, params));\n    },\n    nonnegative(params) {\n        return this.check(checks.gte(0, params));\n    },\n    negative(params) {\n        return this.check(checks.lt(0, params));\n    },\n    nonpositive(params) {\n        return this.check(checks.lte(0, params));\n    },\n    multipleOf(value, params) {\n        return this.check(checks.multipleOf(value, params));\n    },\n    step(value, params) {\n        return this.check(checks.multipleOf(value, params));\n    },\n    finite() {\n        return this;\n    },\n}));\nexport function number(params) {\n    return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n    core.$ZodNumberFormat.init(inst, def);\n    ZodNumber.init(inst, def);\n});\nexport function int(params) {\n    return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n    return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n    return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n    return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n    return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n    core.$ZodBoolean.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n    return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n    core.$ZodBigInt.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n}, \n/*@__PURE__*/ util.derived({\n    minValue: (inst) => processors.aggregateChecks(inst).minimum ?? null,\n    maxValue: (inst) => processors.aggregateChecks(inst).maximum ?? null,\n    format: (inst) => processors.aggregateChecks(inst).format ?? null,\n}, {\n    gte(value, params) {\n        return this.check(checks.gte(value, params));\n    },\n    min(value, params) {\n        return this.check(checks.gte(value, params));\n    },\n    gt(value, params) {\n        return this.check(checks.gt(value, params));\n    },\n    lt(value, params) {\n        return this.check(checks.lt(value, params));\n    },\n    lte(value, params) {\n        return this.check(checks.lte(value, params));\n    },\n    max(value, params) {\n        return this.check(checks.lte(value, params));\n    },\n    positive(params) {\n        return this.check(checks.gt(BigInt(0), params));\n    },\n    negative(params) {\n        return this.check(checks.lt(BigInt(0), params));\n    },\n    nonpositive(params) {\n        return this.check(checks.lte(BigInt(0), params));\n    },\n    nonnegative(params) {\n        return this.check(checks.gte(BigInt(0), params));\n    },\n    multipleOf(value, params) {\n        return this.check(checks.multipleOf(value, params));\n    },\n}));\nexport function bigint(params) {\n    return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n    core.$ZodBigIntFormat.init(inst, def);\n    ZodBigInt.init(inst, def);\n});\nexport function int64(params) {\n    return core._int64(ZodBigIntFormat, params);\n}\nexport function uint64(params) {\n    return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n    core.$ZodSymbol.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n    return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n    core.$ZodUndefined.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n    return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n    core.$ZodNull.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n    return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n    core.$ZodAny.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n    return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n    core.$ZodUnknown.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n    return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n    core.$ZodNever.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n    return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n    core.$ZodVoid.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n    return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n    core.$ZodDate.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n}, \n/*@__PURE__*/ util.derived({\n    minDate: (inst) => {\n        const { minimum } = processors.aggregateChecks(inst);\n        return minimum ? new Date(minimum) : null;\n    },\n    maxDate: (inst) => {\n        const { maximum } = processors.aggregateChecks(inst);\n        return maximum ? new Date(maximum) : null;\n    },\n}, {}));\nexport function date(params) {\n    return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodArray.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n    inst.element = def.element;\n}, {\n    min(n, params) {\n        return this.check(checks.minLength(n, params));\n    },\n    nonempty(params) {\n        return this.check(checks.minLength(1, params));\n    },\n    max(n, params) {\n        return this.check(checks.maxLength(n, params));\n    },\n    length(n, params) {\n        return this.check(checks.length(n, params));\n    },\n    unwrap() {\n        return this.element;\n    },\n});\nexport function array(element, params) {\n    return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n    const shape = schema._zod.def.shape;\n    return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodObjectJIT.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n    util.installLazyProp(inst, \"shape\", (self) => self._zod.def.shape, false);\n}, {\n    keyof() {\n        return _enum(Object.keys(this._zod.def.shape));\n    },\n    catchall(catchall) {\n        // `mergeDefs` rather than a spread: spreading reads `shape`, and resolving it can mint a whole fresh subtree\n        return this.clone(util.mergeDefs(this._zod.def, { catchall: catchall }));\n    },\n    passthrough() {\n        return this.clone(util.mergeDefs(this._zod.def, { catchall: unknown() }));\n    },\n    loose() {\n        return this.clone(util.mergeDefs(this._zod.def, { catchall: unknown() }));\n    },\n    strict() {\n        return this.clone(util.mergeDefs(this._zod.def, { catchall: never() }));\n    },\n    strip() {\n        return this.clone(util.mergeDefs(this._zod.def, { catchall: undefined }));\n    },\n    extend(incoming) {\n        return util.extend(this, incoming);\n    },\n    safeExtend(incoming) {\n        return util.safeExtend(this, incoming);\n    },\n    merge(other) {\n        return util.merge(this, other);\n    },\n    pick(mask) {\n        return util.pick(this, mask);\n    },\n    omit(mask) {\n        return util.omit(this, mask);\n    },\n    partial(...args) {\n        return util.partial(ZodOptional, this, args[0]);\n    },\n    exactPartial(...args) {\n        return util.partial(ZodExactOptional, this, args[0], \"exactPartial\");\n    },\n    required(...args) {\n        return util.required(ZodNonOptional, this, args[0]);\n    },\n});\nexport function object(shape, params) {\n    const def = {\n        type: \"object\",\n        shape: shape ?? {},\n        ...util.normalizeParams(params),\n    };\n    return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        shape,\n        catchall: never(),\n        ...util.normalizeParams(params),\n    });\n}\n// looseObject\nexport function looseObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        shape,\n        catchall: unknown(),\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n    core.$ZodUnion.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n    inst.options = def.options;\n});\nexport function union(options, params) {\n    return new ZodUnion({\n        type: \"union\",\n        options: options,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodXor.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n    inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n    return new ZodXor({\n        type: \"union\",\n        options: options,\n        inclusive: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n    // const [options, params] = args;\n    return new ZodDiscriminatedUnion({\n        type: \"union\",\n        options: options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n    core.$ZodIntersection.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n    return new ZodIntersection({\n        type: \"intersection\",\n        left: left,\n        right: right,\n    });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodTuple.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n}, {\n    rest(rest) {\n        return this.clone({\n            ...this._zod.def,\n            rest: rest,\n        });\n    },\n    partial() {\n        const def = this._zod.def;\n        // a refinement was authored against the full arity; partialing would run it on a shorter array\n        if (def.checks?.length)\n            throw new Error(\".partial() cannot be used on tuple schemas containing refinements\");\n        return this.clone({\n            ...def,\n            items: def.items.map((item) => new ZodOptional({ type: \"optional\", innerType: item })),\n        });\n    },\n});\nexport function tuple(items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof core.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new ZodTuple({\n        type: \"tuple\",\n        items: items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodRecord.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n    // v3-compat: z.record(valueType, params?) — defaults keyType to z.string()\n    if (!valueType || !valueType._zod) {\n        return new ZodRecord({\n            type: \"record\",\n            keyType: string(),\n            valueType: keyType,\n            ...util.normalizeParams(valueType),\n        });\n    }\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n        partial: true,\n    });\n}\nexport function looseRecord(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        mode: \"loose\",\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodMap.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n    return new ZodMap({\n        type: \"map\",\n        keyType: keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodSet.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n    return new ZodSet({\n        type: \"set\",\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n    core.$ZodEnum.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n    inst.enum = def.entries;\n    // reuse the parsed value set so a numeric TS enum's reverse-mapping keys stay out\n    inst.options = [...inst._zod.values];\n    const keys = new Set(Object.keys(def.entries));\n    inst.extract = (values, params) => {\n        const newEntries = {};\n        for (const value of values) {\n            if (keys.has(value)) {\n                newEntries[value] = def.entries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n    inst.exclude = (values, params) => {\n        const newEntries = { ...def.entries };\n        for (const value of values) {\n            if (keys.has(value)) {\n                delete newEntries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n});\nfunction _enum(values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n    core.$ZodLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n    inst.values = new Set(def.values);\n    Object.defineProperty(inst, \"value\", {\n        get() {\n            if (def.values.length > 1) {\n                throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n            }\n            return def.values[0];\n        },\n    });\n});\nexport function literal(value, params) {\n    return new ZodLiteral({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n    core.$ZodFile.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n    inst.min = (size, params) => inst.check(core._minSize(size, params));\n    inst.max = (size, params) => inst.check(core._maxSize(size, params));\n    inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n    return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n    _ensureDefaultMemoizer();\n    core.$ZodTransform.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n    inst._zod.parse = (payload, _ctx) => {\n        if (_ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(inst.constructor.name);\n        }\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                if (!(\"input\" in _issue))\n                    _issue.input = payload.value;\n                _issue.inst ?? (_issue.inst = inst);\n                // _issue.continue ??= true;\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        const output = def.transform(payload.value, payload);\n        if (output instanceof Promise) {\n            return output.then((output) => {\n                payload.value = output;\n                return payload;\n            });\n        }\n        payload.value = output;\n        return payload;\n    };\n});\nexport function transform(fn) {\n    return new ZodTransform({\n        type: \"transform\",\n        transform: fn,\n    });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n    core.$ZodOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n    return new ZodOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n    core.$ZodExactOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n    return new ZodExactOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n    core.$ZodNullable.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n    return new ZodNullable({\n        type: \"nullable\",\n        innerType: innerType,\n    });\n}\n// nullish\nexport function nullish(innerType) {\n    return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n    core.$ZodDefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n    return new ZodDefault({\n        type: \"default\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n    core.$ZodPrefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n    return new ZodPrefault({\n        type: \"prefault\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n    core.$ZodNonOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n    return new ZodNonOptional({\n        type: \"nonoptional\",\n        innerType: innerType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n    core.$ZodSuccess.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n    return new ZodSuccess({\n        type: \"success\",\n        innerType: innerType,\n    });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n    core.$ZodCatch.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n    return new ZodCatch({\n        type: \"catch\",\n        innerType: innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : core.util.constantCatch(catchValue)),\n    });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n    core.$ZodNaN.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n    return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n    core.$ZodPipe.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n    inst.in = def.in;\n    inst.out = def.out;\n});\nexport function pipe(in_, out) {\n    return new ZodPipe({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        // ...util.normalizeParams(params),\n    });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n    ZodPipe.init(inst, def);\n    core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n    return new ZodCodec({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        transform: params.decode,\n        reverseTransform: params.encode,\n    });\n}\nexport function invertCodec(codec) {\n    const def = codec._zod.def;\n    return new ZodCodec({\n        type: \"pipe\",\n        in: def.out,\n        out: def.in,\n        transform: def.reverseTransform,\n        reverseTransform: def.transform,\n    });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n    ZodPipe.init(inst, def);\n    core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n    core.$ZodReadonly.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n    return new ZodReadonly({\n        type: \"readonly\",\n        innerType: innerType,\n    });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n    core.$ZodTemplateLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n    return new ZodTemplateLiteral({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n    core.$ZodLazy.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n    return new ZodLazy({\n        type: \"lazy\",\n        getter: getter,\n    });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n    core.$ZodPromise.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n    return new ZodPromise({\n        type: \"promise\",\n        innerType: innerType,\n    });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n    core.$ZodFunction.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n    return new ZodFunction({\n        type: \"function\",\n        input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n        output: params?.output ?? unknown(),\n    });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n    core.$ZodCustom.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n    const ch = new core.$ZodCheck({\n        check: \"custom\",\n        // ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\nexport function custom(fn, _params) {\n    return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n    return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n    return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nexport const ZodInstanceOf = /*@__PURE__*/ core.$constructor(\"ZodInstanceOf\", (inst, def) => {\n    ZodCustom.init(inst, def);\n}, {\n    properties(shape, params) {\n        // asserts in place, so the narrowed output type is truthful without a wrapper\n        return this.check(core._properties(shape, params));\n    },\n});\nfunction _instanceof(cls, params = {}) {\n    const inst = new ZodInstanceOf({\n        type: \"custom\",\n        check: \"custom\",\n        fn: (data) => data instanceof cls,\n        abort: true,\n        ...util.normalizeParams(params),\n    });\n    inst._zod.bag.Class = cls;\n    // Override check to emit invalid_type instead of custom\n    inst._zod.check = (payload) => {\n        if (!(payload.value instanceof cls)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: cls.name,\n                input: payload.value,\n                inst,\n                path: [...(inst._zod.def.path ?? [])],\n            });\n        }\n    };\n    return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n    Codec: ZodCodec,\n    Boolean: ZodBoolean,\n    String: ZodString,\n}, ...args);\nexport function json(params) {\n    const jsonSchema = lazy(() => {\n        return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n    });\n    return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n    return new ZodPreprocess({\n        type: \"pipe\",\n        in: transform(fn),\n        out: schema,\n    });\n}\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'cn';\nimport { Slot } from 'radix-ui';\n\nconst badgeVariants = cva(\n  'group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!',\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',\n        secondary: 'bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80',\n        destructive:\n          'bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20',\n        outline: 'border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground',\n        ghost: 'hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50',\n        link: 'text-primary underline-offset-4 hover:underline',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nfunction Badge({\n  className,\n  variant = 'default',\n  asChild = false,\n  ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot.Root : 'span';\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      data-variant={variant}\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from 'cn';\nimport { Label as LabelPrimitive } from 'radix-ui';\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Label };\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from 'cn';\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\n\nfunction Separator({\n  className,\n  orientation = 'horizontal',\n  decorative = true,\n  ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        'bg-border shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Separator };\n","import { useMemo } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'cn';\n\nimport { Label } from '@/components/ui/label';\nimport { Separator } from '@/components/ui/separator';\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {\n  return (\n    <fieldset\n      data-slot=\"field-set\"\n      className={cn(\n        'flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldLegend({\n  className,\n  variant = 'legend',\n  ...props\n}: React.ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {\n  return (\n    <legend\n      data-slot=\"field-legend\"\n      data-variant={variant}\n      className={cn(\n        'mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"field-group\"\n      className={cn(\n        'group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nconst fieldVariants = cva('group/field flex w-full gap-2 data-[invalid=true]:text-destructive', {\n  variants: {\n    orientation: {\n      vertical: 'flex-col *:w-full [&>.sr-only]:w-auto',\n      horizontal:\n        'flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',\n      responsive:\n        'flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',\n    },\n  },\n  defaultVariants: {\n    orientation: 'vertical',\n  },\n});\n\nfunction Field({\n  className,\n  orientation = 'vertical',\n  ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof fieldVariants>) {\n  return (\n    <div\n      role=\"group\"\n      data-slot=\"field\"\n      data-orientation={orientation}\n      className={cn(fieldVariants({ orientation }), className)}\n      {...props}\n    />\n  );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"field-content\"\n      className={cn('group/field-content flex flex-1 flex-col gap-0.5 leading-snug', className)}\n      {...props}\n    />\n  );\n}\n\nfunction FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>) {\n  return (\n    <Label\n      data-slot=\"field-label\"\n      className={cn(\n        'group/field-label peer/field-label has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-muted/50 has-[>[data-slot=field]]:has-[:focus-visible]:border-ring has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/50 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border has-[>[data-slot=field]]:has-[:focus-visible]:ring-3 *:data-[slot=field]:p-2.5',\n        'has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"field-label\"\n      className={cn(\n        'flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<'p'>) {\n  return (\n    <p\n      data-slot=\"field-description\"\n      className={cn(\n        'text-muted-foreground text-left text-sm leading-normal font-normal group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5',\n        'last:mt-0 nth-last-2:-mt-1',\n        '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction FieldSeparator({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<'div'> & {\n  children?: React.ReactNode;\n}) {\n  return (\n    <div\n      data-slot=\"field-separator\"\n      data-content={!!children}\n      className={cn(\n        'relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2',\n        className,\n      )}\n      {...props}\n    >\n      <Separator className=\"absolute inset-0 top-1/2\" />\n      {children && (\n        <span\n          className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n          data-slot=\"field-separator-content\"\n        >\n          {children}\n        </span>\n      )}\n    </div>\n  );\n}\n\nfunction FieldError({\n  className,\n  children,\n  errors,\n  ...props\n}: React.ComponentProps<'div'> & {\n  errors?: Array<{ message?: string } | undefined>;\n}) {\n  const content = useMemo(() => {\n    if (children) {\n      return children;\n    }\n\n    if (!errors?.length) {\n      return null;\n    }\n\n    const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];\n\n    if (uniqueErrors?.length == 1) {\n      return uniqueErrors[0]?.message;\n    }\n\n    return (\n      <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n        {uniqueErrors.map((error, index) => error?.message && <li key={index}>{error.message}</li>)}\n      </ul>\n    );\n  }, [children, errors]);\n\n  if (!content) {\n    return null;\n  }\n\n  return (\n    <div\n      role=\"alert\"\n      data-slot=\"field-error\"\n      className={cn('text-destructive text-sm font-normal', className)}\n      {...props}\n    >\n      {content}\n    </div>\n  );\n}\n\nexport {\n  Field,\n  FieldLabel,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLegend,\n  FieldSeparator,\n  FieldSet,\n  FieldContent,\n  FieldTitle,\n};\n","import * as React from 'react';\nimport { cn } from 'cn';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        'border-input file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 disabled:bg-input/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 h-8 w-full min-w-0 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-3 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Input };\n","import { cn } from 'cn';\nimport { Loader2Icon } from 'lucide-react';\n\nfunction Spinner({ className, ...props }: React.ComponentProps<'svg'>) {\n  return (\n    <Loader2Icon\n      data-slot=\"spinner\"\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn('size-4 animate-spin', className)}\n      {...props}\n    />\n  );\n}\n\nexport { Spinner };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'cn';\n\nconst alertVariants = cva(\n  \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n  {\n    variants: {\n      variant: {\n        default: 'bg-card text-card-foreground',\n        destructive:\n          'bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  },\n);\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        '[&_a]:hover:text-foreground font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        'text-muted-foreground [&_a]:hover:text-foreground text-sm text-balance md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />\n  );\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n","import { AlertCircleIcon } from 'lucide-react';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\n\nexport function FormAlert({ message }: { message: string | null | undefined }) {\n  if (!message) return null;\n  return (\n    <Alert variant=\"destructive\">\n      <AlertCircleIcon />\n      <AlertDescription>{message}</AlertDescription>\n    </Alert>\n  );\n}\n","import { api } from '@/lib/api';\nimport type { BackupCodes, Me, Schemas, TwoFactorSetup, UserSession } from '@/api/types';\n\nexport const accountApi = {\n  me: () => api<Me>('/me/'),\n  updateMe: (body: Schemas['PatchedMeRequest']) => api<Me>('/me/', { method: 'PATCH', body }),\n  changeEmail: (body: Schemas['EmailChangeRequest']) =>\n    api<void>('/me/email', { method: 'POST', body }),\n  changePassword: (body: Schemas['PasswordChangeRequest']) =>\n    api<void>('/me/password', { method: 'POST', body }),\n  newBackupCodes: (code: string) =>\n    api<BackupCodes>('/me/backup-codes', { method: 'POST', body: { code } }),\n  replaceStart: (code: string) =>\n    api<TwoFactorSetup>('/me/2fa/replace', { method: 'POST', body: { code } }),\n  replaceConfirm: (code: string) =>\n    api<void>('/me/2fa/replace/confirm', { method: 'POST', body: { code } }),\n  sessions: () => api<UserSession[]>('/me/sessions'),\n  revokeSession: (id: number) => api<void>(`/me/sessions/${id}`, { method: 'DELETE' }),\n  revokeOthers: () => api<void>('/me/sessions/revoke-others', { method: 'POST' }),\n};\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { useMutation } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'sonner';\nimport { z } from 'zod';\nimport type { Me } from '@/api/types';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { Spinner } from '@/components/ui/spinner';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { useRefreshSession } from '@/features/auth/session';\nimport { applyApiError } from '@/lib/forms';\nimport { accountApi } from '../api';\n\nexport function ProfileCard({ user }: { user: Me }) {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  const refreshSession = useRefreshSession();\n  const schema = z.object({ displayName: z.string().trim().min(1, t('common:errors.required')) });\n  const form = useForm<z.infer<typeof schema>>({\n    resolver: zodResolver(schema),\n    defaultValues: { displayName: user.displayName },\n  });\n  const save = useMutation({\n    mutationFn: accountApi.updateMe,\n    onSuccess: async () => {\n      await refreshSession();\n      toast.success(t('profile.saved'));\n    },\n    onError: (error) => applyApiError(error, form.setError, ['displayName']),\n  });\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('profile.title')}</CardTitle>\n      </CardHeader>\n      <CardContent>\n        <form noValidate onSubmit={form.handleSubmit((values) => save.mutate(values))}>\n          <FieldGroup>\n            <Field data-invalid={!!form.formState.errors.displayName}>\n              <FieldLabel htmlFor=\"displayName\">{t('profile.displayName')}</FieldLabel>\n              <Input id=\"displayName\" autoComplete=\"name\" {...form.register('displayName')} />\n              <FieldError errors={[form.formState.errors.displayName]} />\n            </Field>\n            <div>\n              <Button type=\"submit\" disabled={save.isPending}>\n                {save.isPending && <Spinner />}\n                {t('common:actions.save')}\n              </Button>\n            </div>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  );\n}\n\nexport function EmailCard({ user }: { user: Me }) {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  const [formError, setFormError] = useState<string | null>(null);\n  const schema = z.object({\n    newEmail: z.email(t('common:errors.invalidEmail')),\n    password: z.string().min(1, t('common:errors.required')),\n  });\n  type Values = z.infer<typeof schema>;\n  const form = useForm<Values>({\n    resolver: zodResolver(schema),\n    defaultValues: { newEmail: '', password: '' },\n  });\n  const change = useMutation({\n    mutationFn: accountApi.changeEmail,\n    onSuccess: (_, values) => {\n      toast.success(t('email.sent', { email: values.newEmail }));\n      form.reset();\n    },\n    onError: (error) => setFormError(applyApiError(error, form.setError, ['newEmail', 'password'])),\n  });\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('email.title')}</CardTitle>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-6\">\n        <div className=\"flex flex-wrap items-center gap-3 text-sm\">\n          <span className=\"text-muted-foreground\">{t('email.current')}</span>\n          <span className=\"font-medium\">{user.email}</span>\n          <Badge variant={user.emailVerified ? 'secondary' : 'destructive'}>\n            {user.emailVerified ? t('email.verified') : t('email.unverified')}\n          </Badge>\n        </div>\n        <form\n          noValidate\n          onSubmit={form.handleSubmit((values) => {\n            setFormError(null);\n            change.mutate(values);\n          })}\n        >\n          <FieldGroup>\n            <FormAlert message={formError} />\n            <Field data-invalid={!!form.formState.errors.newEmail}>\n              <FieldLabel htmlFor=\"newEmail\">{t('email.newEmail')}</FieldLabel>\n              <Input\n                id=\"newEmail\"\n                type=\"email\"\n                autoComplete=\"email\"\n                {...form.register('newEmail')}\n              />\n              <FieldError errors={[form.formState.errors.newEmail]} />\n            </Field>\n            <Field data-invalid={!!form.formState.errors.password}>\n              <FieldLabel htmlFor=\"emailPassword\">{t('email.password')}</FieldLabel>\n              <Input\n                id=\"emailPassword\"\n                type=\"password\"\n                autoComplete=\"current-password\"\n                {...form.register('password')}\n              />\n              <FieldError errors={[form.formState.errors.password]} />\n            </Field>\n            <div>\n              <Button type=\"submit\" variant=\"outline\" disabled={change.isPending}>\n                {change.isPending && <Spinner />}\n                {t('email.submit')}\n              </Button>\n            </div>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from 'cn';\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\n\nimport { Button } from '@/components/ui/button';\n\nfunction AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />;\n}\n\nfunction AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />;\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        'data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogContent({\n  className,\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n  size?: 'default' | 'sm';\n}) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        data-size={size}\n        className={cn(\n          'group/alert-dialog-content bg-popover text-popover-foreground ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 ring-1 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm',\n          className,\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  );\n}\n\nfunction AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\n        'grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        'bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogMedia({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"alert-dialog-media\"\n      className={cn(\n        \"bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\n        'font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\n        'text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDialogAction({\n  className,\n  variant = 'default',\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n  Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Action\n        data-slot=\"alert-dialog-action\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  );\n}\n\nfunction AlertDialogCancel({\n  className,\n  variant = 'outline',\n  size = 'default',\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n  Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n  return (\n    <Button variant={variant} size={size} asChild>\n      <AlertDialogPrimitive.Cancel\n        data-slot=\"alert-dialog-cancel\"\n        className={cn(className)}\n        {...props}\n      />\n    </Button>\n  );\n}\n\nexport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogMedia,\n  AlertDialogOverlay,\n  AlertDialogPortal,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n};\n","import * as React from 'react';\nimport { cn } from 'cn';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { Button } from '@/components/ui/button';\nimport { XIcon } from 'lucide-react';\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n  return (\n    <DialogPrimitive.Overlay\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        'data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean;\n}) {\n  return (\n    <DialogPortal>\n      <DialogOverlay />\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          'bg-popover text-popover-foreground ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 text-sm ring-1 duration-100 outline-none sm:max-w-sm',\n          className,\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n            <Button variant=\"ghost\" className=\"absolute top-2 right-2\" size=\"icon-sm\">\n              <XIcon />\n              <span className=\"sr-only\">Close</span>\n            </Button>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div data-slot=\"dialog-header\" className={cn('flex flex-col gap-2', className)} {...props} />\n  );\n}\n\nfunction DialogFooter({\n  className,\n  showCloseButton = false,\n  children,\n  ...props\n}: React.ComponentProps<'div'> & {\n  showCloseButton?: boolean;\n}) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        'bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end',\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      {showCloseButton && (\n        <DialogPrimitive.Close asChild>\n          <Button variant=\"outline\">Close</Button>\n        </DialogPrimitive.Close>\n      )}\n    </div>\n  );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn('font-heading text-base leading-none font-medium', className)}\n      {...props}\n    />\n  );\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\n        'text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n};\n","import { cn } from 'cn';\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"skeleton\"\n      className={cn('bg-muted animate-pulse rounded-md', className)}\n      {...props}\n    />\n  );\n}\n\nexport { Skeleton };\n","import * as React from 'react';\nimport { cn } from 'cn';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport { CheckIcon } from 'lucide-react';\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        'peer border-input group-has-[:focus-visible]/field-label:not-data-checked:border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary relative flex size-4 shrink-0 items-center justify-center rounded-[min(var(--radius-sm),4px)] border transition-colors outline-none group-has-disabled/field:opacity-50 group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3',\n        className,\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n      >\n        <CheckIcon />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  );\n}\n\nexport { Checkbox };\n","import { CheckIcon, CopyIcon, DownloadIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Label } from '@/components/ui/label';\n\n/** Shows freshly issued backup codes once; the user confirms they saved them (D-051). */\nexport function BackupCodesPanel({\n  codes,\n  onDone,\n  doneLabel,\n}: {\n  codes: string[];\n  onDone: () => void;\n  doneLabel: string;\n}) {\n  const { t } = useTranslation('auth');\n  const [saved, setSaved] = useState(false);\n  const [copied, setCopied] = useState(false);\n  const text = `${t('backupCodes.fileHeader')}\\n\\n${codes.join('\\n')}\\n`;\n\n  async function copy() {\n    await navigator.clipboard.writeText(text);\n    setCopied(true);\n  }\n\n  function download() {\n    const url = URL.createObjectURL(new Blob([text], { type: 'text/plain' }));\n    const link = Object.assign(document.createElement('a'), {\n      href: url,\n      download: t('backupCodes.fileName'),\n    });\n    link.click();\n    URL.revokeObjectURL(url);\n  }\n\n  return (\n    <div className=\"flex flex-col gap-5\">\n      <p className=\"text-muted-foreground text-sm\">{t('backupCodes.description')}</p>\n      <ul\n        aria-label={t('backupCodes.title')}\n        className=\"bg-muted/40 grid grid-cols-2 gap-2 rounded-md border p-4 font-mono text-sm\"\n      >\n        {codes.map((code) => (\n          <li key={code} className=\"text-center tracking-wider\">\n            {code}\n          </li>\n        ))}\n      </ul>\n      <div className=\"flex gap-2\">\n        <Button type=\"button\" variant=\"outline\" className=\"flex-1\" onClick={copy}>\n          {copied ? <CheckIcon /> : <CopyIcon />}\n          {t('backupCodes.copyAll')}\n        </Button>\n        <Button type=\"button\" variant=\"outline\" className=\"flex-1\" onClick={download}>\n          <DownloadIcon />\n          {t('backupCodes.download')}\n        </Button>\n      </div>\n      <div className=\"flex items-center gap-2\">\n        <Checkbox id=\"codes-saved\" checked={saved} onCheckedChange={(value) => setSaved(!!value)} />\n        <Label htmlFor=\"codes-saved\">{t('backupCodes.saved')}</Label>\n      </div>\n      <Button type=\"button\" disabled={!saved} onClick={onDone}>\n        {doneLabel}\n      </Button>\n    </div>\n  );\n}\n","var kt=Object.defineProperty,xt=Object.defineProperties;var Gt=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var ht=Object.prototype.hasOwnProperty,St=Object.prototype.propertyIsEnumerable;var Et=(o,r,t)=>r in o?kt(o,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[r]=t,bt=(o,r)=>{for(var t in r||(r={}))ht.call(r,t)&&Et(o,t,r[t]);if(U)for(var t of U(r))St.call(r,t)&&Et(o,t,r[t]);return o},Pt=(o,r)=>xt(o,Gt(r));var wt=(o,r)=>{var t={};for(var u in o)ht.call(o,u)&&r.indexOf(u)<0&&(t[u]=o[u]);if(o!=null&&U)for(var u of U(o))r.indexOf(u)<0&&St.call(o,u)&&(t[u]=o[u]);return t};import*as e from\"react\";function _t(o){let r=setTimeout(o,0),t=setTimeout(o,10),u=setTimeout(o,50);return[r,t,u]}import*as Z from\"react\";function Tt(o){let r=Z.useRef();return Z.useEffect(()=>{r.current=o}),r.current}import*as h from\"react\";var Ot=18,nt=40,Lt=`${nt}px`;function Ct(o){let r=o.getBoundingClientRect().right,t=o;for(;t;){if(getComputedStyle(t).overflowX!==\"visible\")return t.getBoundingClientRect().left+t.clientLeft+t.clientWidth-r;t=t.parentElement}return document.documentElement.clientWidth-r}var jt=[\"[data-lastpass-icon-root]\",\"com-1password-button\",\"[data-dashlanecreated]\",'[style$=\"2147483647 !important;\"]'].join(\",\");function Mt({containerRef:o,inputRef:r,pushPasswordManagerStrategy:t,isFocused:u}){let[w,T]=h.useState(!1),[x,M]=h.useState(!1),[V,I]=h.useState(!1),q=h.useMemo(()=>t===\"none\"?!1:(t===\"increase-width\"||t===\"experimental-no-flickering\")&&w&&x,[w,x,t]),y=h.useCallback(()=>{let m=o.current,S=r.current;if(!m||!S||V||t===\"none\")return;let R=m,i=R.getBoundingClientRect().left+R.offsetWidth,G=R.getBoundingClientRect().top+R.offsetHeight/2,ot=i-Ot,X=G;document.querySelectorAll(jt).length===0&&document.elementFromPoint(ot,X)===m||(M(Ct(m)>=nt),T(!0),I(!0))},[o,r,V,t]);return h.useEffect(()=>{let m=o.current;if(!m||t===\"none\")return;function S(){M(Ct(m)>=nt)}S();let R=setInterval(S,1e3);return()=>{clearInterval(R)}},[o,t]),h.useEffect(()=>{let m=u||document.activeElement===r.current;if(t===\"none\"||!m)return;let S=setTimeout(y,0),R=setTimeout(y,2e3),i=setTimeout(y,5e3),G=setTimeout(()=>{I(!0)},6e3);return()=>{clearTimeout(S),clearTimeout(R),clearTimeout(i),clearTimeout(G)}},[r,u,t,y]),{hasPWMBadge:w,willPushPWMBadge:q,PWM_BADGE_SPACE_WIDTH:Lt}}var Nt=e.createContext({}),$t=e.forwardRef((ot,G)=>{var X=ot,{value:o,onChange:r,maxLength:t,textAlign:u=\"left\",pattern:w,placeholder:T,inputMode:x=\"numeric\",onComplete:M,pushPasswordManagerStrategy:V=\"increase-width\",pasteTransformer:I,containerClassName:q,noScriptCSSFallback:y=Ft,nonce:m,render:S,children:R}=X,i=wt(X,[\"value\",\"onChange\",\"maxLength\",\"textAlign\",\"pattern\",\"placeholder\",\"inputMode\",\"onComplete\",\"pushPasswordManagerStrategy\",\"pasteTransformer\",\"containerClassName\",\"noScriptCSSFallback\",\"nonce\",\"render\",\"children\"]);var z,ft,mt,pt,Rt;let[rt,at]=e.useState(typeof i.defaultValue==\"string\"?i.defaultValue:\"\"),l=o!=null?o:rt,D=Tt(l),O=e.useCallback(a=>{r==null||r(a),at(a)},[r]),p=e.useMemo(()=>w?typeof w==\"string\"?new RegExp(w):w:null,[w]),d=e.useRef(null),K=e.useRef(null),J=e.useRef({value:l,onChange:O,isIOS:typeof window!=\"undefined\"&&((ft=(z=window==null?void 0:window.CSS)==null?void 0:z.supports)==null?void 0:ft.call(z,\"-webkit-touch-callout\",\"none\"))}),Y=e.useRef({prev:[(mt=d.current)==null?void 0:mt.selectionStart,(pt=d.current)==null?void 0:pt.selectionEnd,(Rt=d.current)==null?void 0:Rt.selectionDirection]});e.useImperativeHandle(G,()=>d.current,[]),e.useEffect(()=>{let a=d.current,n=K.current;if(!a||!n)return;J.current.value!==a.value&&J.current.onChange(a.value),Y.current.prev=[a.selectionStart,a.selectionEnd,a.selectionDirection];function c(){if(document.activeElement!==a){j(null),N(null);return}let s=a.selectionStart,P=a.selectionEnd,$=a.selectionDirection,v=a.maxLength,B=a.value,_=Y.current.prev,g=-1,E=-1,C;if(B.length!==0&&s!==null&&P!==null){let Bt=s===P,Wt=s===B.length&&B.length<v;if(Bt&&!Wt){let W=s;if(W===0)g=0,E=1,C=\"forward\";else if(W===v)g=W-1,E=W,C=\"backward\";else if(v>1&&B.length>1){let et=0;if(_[0]!==null&&_[1]!==null){C=W<_[1]?\"backward\":\"forward\";let At=_[0]===_[1]&&_[0]<v;C===\"backward\"&&!At&&(et=-1)}g=et+W,E=et+W+1}}g!==-1&&E!==-1&&g!==E&&a.setSelectionRange(g,E,C)}let vt=g!==-1?g:s,gt=E!==-1?E:P,Ht=C!=null?C:$;j(vt),N(gt),Y.current.prev=[vt,gt,Ht]}if(document.addEventListener(\"selectionchange\",c,{capture:!0}),c(),document.activeElement===a&&Q(!0),!document.getElementById(\"input-otp-style\")){let s=document.createElement(\"style\");if(s.id=\"input-otp-style\",m&&s.setAttribute(\"nonce\",m),document.head.appendChild(s),s.sheet){let P=\"background: transparent !important; color: transparent !important; border-color: transparent !important; opacity: 0 !important; box-shadow: none !important; -webkit-box-shadow: none !important; -webkit-text-fill-color: transparent !important;\";F(s.sheet,\"[data-input-otp]::selection { background: transparent !important; color: transparent !important; }\"),F(s.sheet,`[data-input-otp]:autofill { ${P} }`),F(s.sheet,`[data-input-otp]:-webkit-autofill { ${P} }`),F(s.sheet,\"@supports (-webkit-touch-callout: none) { [data-input-otp] { letter-spacing: -.6em !important; font-weight: 100 !important; font-stretch: ultra-condensed; font-optical-sizing: none !important; left: -1px !important; right: 1px !important; } }\"),F(s.sheet,\"[data-input-otp] + * { pointer-events: all !important; }\")}}let b=()=>{n&&n.style.setProperty(\"--root-height\",`${a.clientHeight}px`)};b();let f=typeof ResizeObserver==\"undefined\"?null:new ResizeObserver(b);return f==null||f.observe(a),()=>{document.removeEventListener(\"selectionchange\",c,{capture:!0}),f==null||f.disconnect()}},[]);let[ct,it]=e.useState(!1),[L,Q]=e.useState(!1),[H,j]=e.useState(null),[A,N]=e.useState(null);e.useEffect(()=>{let a=_t(()=>{var f,s,P,$;(f=d.current)==null||f.dispatchEvent(new Event(\"input\"));let n=(s=d.current)==null?void 0:s.selectionStart,c=(P=d.current)==null?void 0:P.selectionEnd,b=($=d.current)==null?void 0:$.selectionDirection;n!==null&&c!==null&&(j(n),N(c),Y.current.prev=[n,c,b])});return()=>{a.forEach(n=>clearTimeout(n))}},[l,L]),e.useEffect(()=>{D!==void 0&&l!==D&&D.length<t&&l.length===t&&(M==null||M(l))},[t,M,D,l]);let k=Mt({containerRef:K,inputRef:d,pushPasswordManagerStrategy:V,isFocused:L}),st=e.useCallback(a=>{let n=a.currentTarget.value.slice(0,t);if(n.length>0&&p&&!p.test(n)){a.preventDefault();return}typeof D==\"string\"&&n.length<D.length&&document.dispatchEvent(new Event(\"selectionchange\")),O(n)},[t,O,D,p]),lt=e.useCallback(()=>{var a;if(d.current){let n=Math.min(d.current.value.length,t-1),c=d.current.value.length;(a=d.current)==null||a.setSelectionRange(n,c),j(n),N(c)}Q(!0)},[t]),ut=e.useCallback(a=>{var g,E;let n=d.current;if(!I&&(!J.current.isIOS||!a.clipboardData||!n))return;let c=a.clipboardData.getData(\"text/plain\"),b=I?I(c):c;a.preventDefault();let f=(g=d.current)==null?void 0:g.selectionStart,s=(E=d.current)==null?void 0:E.selectionEnd,v=(f!==s?l.slice(0,f)+b+l.slice(s):l.slice(0,f)+b+l.slice(f)).slice(0,t);if(v.length>0&&p&&!p.test(v))return;n.value=v,O(v);let B=Math.min(v.length,t-1),_=v.length;n.setSelectionRange(B,_),j(B),N(_)},[t,O,I,p,l]),It=e.useMemo(()=>({position:\"relative\",cursor:i.disabled?\"default\":\"text\",userSelect:\"none\",WebkitUserSelect:\"none\",pointerEvents:\"none\"}),[i.disabled]),dt=e.useMemo(()=>({position:\"absolute\",inset:0,width:k.willPushPWMBadge?`calc(100% + ${k.PWM_BADGE_SPACE_WIDTH})`:\"100%\",clipPath:k.willPushPWMBadge?`inset(0 ${k.PWM_BADGE_SPACE_WIDTH} 0 0)`:void 0,height:\"100%\",display:\"flex\",textAlign:u,opacity:\"1\",color:\"transparent\",pointerEvents:\"all\",background:\"transparent\",caretColor:\"transparent\",border:\"0 solid transparent\",outline:\"0 solid transparent\",boxShadow:\"none\",lineHeight:\"1\",letterSpacing:\"-.5em\",fontSize:\"var(--root-height, 16px)\",fontFamily:\"monospace\",fontVariantNumeric:\"tabular-nums\"}),[k.PWM_BADGE_SPACE_WIDTH,k.willPushPWMBadge,u]),yt=e.useMemo(()=>{var a;return e.createElement(\"input\",Pt(bt({autoComplete:i.autoComplete||\"one-time-code\"},i),{\"data-input-otp\":!0,\"data-input-otp-placeholder-shown\":l.length===0||void 0,\"data-input-otp-mss\":H,\"data-input-otp-mse\":A,inputMode:x,pattern:p==null?void 0:p.source,\"aria-placeholder\":T,style:dt,maxLength:t,value:l,ref:d,spellCheck:(a=i.spellCheck)!=null?a:!1,onPaste:n=>{var c;ut(n),(c=i.onPaste)==null||c.call(i,n)},onChange:st,onMouseOver:n=>{var c;it(!0),(c=i.onMouseOver)==null||c.call(i,n)},onMouseLeave:n=>{var c;it(!1),(c=i.onMouseLeave)==null||c.call(i,n)},onFocus:n=>{var c;lt(),(c=i.onFocus)==null||c.call(i,n)},onBlur:n=>{var c;Q(!1),(c=i.onBlur)==null||c.call(i,n)}}))},[st,lt,ut,x,dt,t,A,H,T,i,p==null?void 0:p.source,l]),tt=e.useMemo(()=>({slots:Array.from({length:t}).map((a,n)=>{var s;let c=L&&H!==null&&A!==null&&(H===A&&n===H||n>=H&&n<A),b=l[n]!==void 0?l[n]:null,f=l[0]!==void 0?null:(s=T==null?void 0:T[n])!=null?s:null;return{char:b,placeholderChar:f,isActive:c,hasFakeCaret:c&&b===null}}),isFocused:L,isHovering:!i.disabled&&ct}),[L,ct,t,A,H,T,i.disabled,l]),Dt=e.useMemo(()=>S?S(tt):e.createElement(Nt.Provider,{value:tt},R),[R,tt,S]);return e.createElement(e.Fragment,null,y!==null&&e.createElement(\"noscript\",null,e.createElement(\"style\",null,y)),e.createElement(\"div\",{ref:K,\"data-input-otp-container\":!0,translate:\"no\",style:It,className:q},Dt,e.createElement(\"div\",{style:{position:\"absolute\",inset:0,pointerEvents:\"none\"}},yt)))});$t.displayName=\"Input\";function F(o,r){try{o.insertRule(r)}catch(t){console.warn(\"input-otp could not insert CSS rule:\",r)}}var Ft=`\n[data-input-otp] {\n  --nojs-bg: white !important;\n  --nojs-fg: black !important;\n\n  background-color: var(--nojs-bg) !important;\n  color: var(--nojs-fg) !important;\n  caret-color: var(--nojs-fg) !important;\n  letter-spacing: .25em !important;\n  text-align: center !important;\n  border: 1px solid var(--nojs-fg) !important;\n  border-radius: 4px !important;\n  width: 100% !important;\n}\n@media (prefers-color-scheme: dark) {\n  [data-input-otp] {\n    --nojs-bg: black !important;\n    --nojs-fg: white !important;\n  }\n}`;var Qt=\"^\\\\d+$\",te=\"^[a-zA-Z]+$\",ee=\"^[a-zA-Z0-9]+$\";export{$t as OTPInput,Nt as OTPInputContext,te as REGEXP_ONLY_CHARS,Qt as REGEXP_ONLY_DIGITS,ee as REGEXP_ONLY_DIGITS_AND_CHARS};\n//# sourceMappingURL=index.mjs.map","import * as React from 'react';\nimport { cn } from 'cn';\nimport { OTPInput, OTPInputContext } from 'input-otp';\nimport { MinusIcon } from 'lucide-react';\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string;\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        'cn-input-otp flex items-center has-disabled:opacity-50',\n        containerClassName,\n      )}\n      spellCheck={false}\n      className={cn('disabled:cursor-not-allowed', className)}\n      {...props}\n    />\n  );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\n        'has-aria-invalid:border-destructive has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40 flex items-center rounded-lg has-aria-invalid:ring-3',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<'div'> & {\n  index: number;\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext);\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        'border-input aria-invalid:border-destructive data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40 relative flex size-8 items-center justify-center border-y border-r text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:z-10 data-[active=true]:ring-3',\n        className,\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n        </div>\n      )}\n    </div>\n  );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) {\n  return (\n    <div\n      data-slot=\"input-otp-separator\"\n      className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n      role=\"separator\"\n      {...props}\n    >\n      <MinusIcon />\n    </div>\n  );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","import { REGEXP_ONLY_DIGITS } from 'input-otp';\nimport { useTranslation } from 'react-i18next';\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from '@/components/ui/input-otp';\n\n/** Six-digit authenticator code. Calls onComplete when the last digit is typed.\n * Its label is for screen readers: the six boxes speak for themselves on screen. */\nexport function CodeInput({\n  value,\n  onChange,\n  onComplete,\n  disabled,\n  invalid,\n  id,\n}: {\n  value: string;\n  onChange: (value: string) => void;\n  onComplete?: (value: string) => void;\n  disabled?: boolean;\n  invalid?: boolean;\n  id?: string;\n}) {\n  const { t } = useTranslation('auth');\n  return (\n    <InputOTP\n      id={id}\n      maxLength={6}\n      pattern={REGEXP_ONLY_DIGITS}\n      value={value}\n      onChange={onChange}\n      onComplete={onComplete}\n      disabled={disabled}\n      autoFocus\n      inputMode=\"numeric\"\n      autoComplete=\"one-time-code\"\n      aria-label={t('code.label')}\n      aria-invalid={invalid || undefined}\n    >\n      <InputOTPGroup>\n        {[0, 1, 2, 3, 4, 5].map((index) => (\n          <InputOTPSlot key={index} index={index} className=\"size-11 text-lg\" />\n        ))}\n      </InputOTPGroup>\n    </InputOTP>\n  );\n}\n","import { useTranslation } from 'react-i18next';\nimport type { TwoFactorSetup } from '@/api/types';\n\n/** The QR code (an SVG drawn by our own backend) and the manual key. */\nexport function QrSetup({ setup, instruction }: { setup: TwoFactorSetup; instruction: string }) {\n  const { t } = useTranslation('auth');\n  const groupedKey = setup.secret.match(/.{1,4}/g)?.join(' ') ?? setup.secret;\n  return (\n    <div className=\"flex flex-col items-center gap-3 text-center\">\n      <p className=\"text-sm\">{instruction}</p>\n      <div\n        className=\"size-48 rounded-md border bg-white p-2 [&_svg]:size-full\"\n        role=\"img\"\n        aria-label={t('setup.qrLabel')}\n        // Safe: generated server-side from the device secret, never user input.\n        dangerouslySetInnerHTML={{ __html: setup.qrSvg }}\n      />\n      <p className=\"text-muted-foreground text-sm\">{t('setup.manual')}</p>\n      <code className=\"bg-muted rounded-sm px-3 py-1.5 font-mono text-sm tracking-wider select-all\">\n        {groupedKey}\n      </code>\n    </div>\n  );\n}\n","/** \"Chrome on Windows\" from a user-agent string; good enough to recognise a session. */\nexport function describeUserAgent(ua: string): string | null {\n  if (!ua) return null;\n  const browser =\n    (/Edg\\//.test(ua) && 'Edge') ||\n    (/OPR\\//.test(ua) && 'Opera') ||\n    (/Firefox\\//.test(ua) && 'Firefox') ||\n    (/Chrome\\//.test(ua) && 'Chrome') ||\n    (/Safari\\//.test(ua) && 'Safari') ||\n    null;\n  const os =\n    (/iPhone|iPad/.test(ua) && 'iOS') ||\n    (/Android/.test(ua) && 'Android') ||\n    (/Windows/.test(ua) && 'Windows') ||\n    (/Mac OS X/.test(ua) && 'macOS') ||\n    (/Linux/.test(ua) && 'Linux') ||\n    null;\n  if (browser && os) return `${browser} on ${os}`;\n  return browser ?? os;\n}\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { MonitorIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'sonner';\nimport { z } from 'zod';\nimport type { Me, TwoFactorSetup, UserSession } from '@/api/types';\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from '@/components/ui/alert-dialog';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from '@/components/ui/dialog';\nimport { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Spinner } from '@/components/ui/spinner';\nimport { BackupCodesPanel } from '@/features/auth/components/BackupCodesPanel';\nimport { CodeInput } from '@/features/auth/components/CodeInput';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { QrSetup } from '@/features/auth/components/QrSetup';\nimport { useRefreshSession } from '@/features/auth/session';\nimport { applyApiError, errorMessage } from '@/lib/forms';\nimport { formatRelative } from '@/lib/format';\nimport { describeUserAgent } from '@/lib/user-agent';\nimport { accountApi } from '../api';\n\n// ── Password ──────────────────────────────────────────────────────────────────\n\nexport function PasswordCard() {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  const [formError, setFormError] = useState<string | null>(null);\n  const schema = z.object({\n    currentPassword: z.string().min(1, t('common:errors.required')),\n    newPassword: z.string().min(12, t('common:errors.passwordTooShort')),\n    code: z.string().min(6, t('common:errors.codeLength')),\n  });\n  type Values = z.infer<typeof schema>;\n  const form = useForm<Values>({\n    resolver: zodResolver(schema),\n    defaultValues: { currentPassword: '', newPassword: '', code: '' },\n  });\n  const change = useMutation({\n    mutationFn: accountApi.changePassword,\n    onSuccess: () => {\n      toast.success(t('password.changed'));\n      form.reset();\n    },\n    onError: (error) =>\n      setFormError(applyApiError(error, form.setError, ['currentPassword', 'newPassword', 'code'])),\n  });\n  const err = form.formState.errors;\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('password.title')}</CardTitle>\n      </CardHeader>\n      <CardContent>\n        <form\n          noValidate\n          onSubmit={form.handleSubmit((values) => {\n            setFormError(null);\n            change.mutate(values);\n          })}\n        >\n          <FieldGroup>\n            <FormAlert message={formError} />\n            <Field data-invalid={!!err.currentPassword}>\n              <FieldLabel htmlFor=\"currentPassword\">{t('password.current')}</FieldLabel>\n              <Input\n                id=\"currentPassword\"\n                type=\"password\"\n                autoComplete=\"current-password\"\n                {...form.register('currentPassword')}\n              />\n              <FieldError errors={[err.currentPassword]} />\n            </Field>\n            <Field data-invalid={!!err.newPassword}>\n              <FieldLabel htmlFor=\"newPassword\">{t('password.new')}</FieldLabel>\n              <Input\n                id=\"newPassword\"\n                type=\"password\"\n                autoComplete=\"new-password\"\n                {...form.register('newPassword')}\n              />\n              <FieldError errors={[err.newPassword]} />\n            </Field>\n            <Field data-invalid={!!err.code}>\n              <FieldLabel htmlFor=\"passwordCode\">{t('password.code')}</FieldLabel>\n              <Input\n                id=\"passwordCode\"\n                autoComplete=\"one-time-code\"\n                className=\"max-w-48 font-mono\"\n                {...form.register('code')}\n              />\n              <FieldError errors={[err.code]} />\n            </Field>\n            <div>\n              <Button type=\"submit\" disabled={change.isPending}>\n                {change.isPending && <Spinner />}\n                {t('password.submit')}\n              </Button>\n            </div>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  );\n}\n\n// ── Authenticator ─────────────────────────────────────────────────────────────\n\nfunction CodeForm({\n  label,\n  submitLabel,\n  pending,\n  error,\n  onSubmit,\n  allowBackup,\n}: {\n  label: string;\n  submitLabel: string;\n  pending: boolean;\n  error: string | null;\n  onSubmit: (code: string) => void;\n  allowBackup: boolean;\n}) {\n  const [code, setCode] = useState('');\n  return (\n    <form\n      noValidate\n      onSubmit={(event) => {\n        event.preventDefault();\n        if (code) onSubmit(code);\n      }}\n    >\n      <FieldGroup>\n        <FormAlert message={error} />\n        {allowBackup ? (\n          <Field>\n            <FieldLabel htmlFor=\"dialog-code\">{label}</FieldLabel>\n            <Input\n              id=\"dialog-code\"\n              autoFocus\n              autoComplete=\"one-time-code\"\n              className=\"font-mono\"\n              value={code}\n              onChange={(event) => setCode(event.target.value)}\n            />\n          </Field>\n        ) : (\n          <div className=\"flex justify-center\">\n            <CodeInput value={code} onChange={setCode} onComplete={onSubmit} disabled={pending} />\n          </div>\n        )}\n        <Button type=\"submit\" disabled={pending || !code}>\n          {pending && <Spinner />}\n          {submitLabel}\n        </Button>\n      </FieldGroup>\n    </form>\n  );\n}\n\nexport function AuthenticatorCard() {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  const [open, setOpen] = useState(false);\n  const [setup, setSetup] = useState<TwoFactorSetup | null>(null);\n  const [error, setError] = useState<string | null>(null);\n\n  const start = useMutation({\n    mutationFn: accountApi.replaceStart,\n    onSuccess: (result) => {\n      setError(null);\n      setSetup(result);\n    },\n    onError: (failure) => setError(errorMessage(failure)),\n  });\n  const confirm = useMutation({\n    mutationFn: accountApi.replaceConfirm,\n    onSuccess: () => {\n      toast.success(t('authenticator.replaced'));\n      close();\n    },\n    onError: (failure) => setError(errorMessage(failure)),\n  });\n\n  function close() {\n    setOpen(false);\n    setSetup(null);\n    setError(null);\n  }\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('authenticator.title')}</CardTitle>\n        <CardDescription>{t('authenticator.description')}</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Button variant=\"outline\" onClick={() => setOpen(true)}>\n          {t('authenticator.replace')}\n        </Button>\n        <Dialog open={open} onOpenChange={(value) => (value ? setOpen(true) : close())}>\n          <DialogContent>\n            <DialogHeader>\n              <DialogTitle>{t('authenticator.replaceTitle')}</DialogTitle>\n              <DialogDescription>\n                {setup ? t('authenticator.scanDescription') : t('authenticator.proveDescription')}\n              </DialogDescription>\n            </DialogHeader>\n            {setup ? (\n              <div className=\"flex flex-col gap-6\">\n                <QrSetup setup={setup} instruction=\"\" />\n                <CodeForm\n                  label={t('authenticator.code')}\n                  submitLabel={t('authenticator.confirm')}\n                  pending={confirm.isPending}\n                  error={error}\n                  onSubmit={(code) => confirm.mutate(code)}\n                  allowBackup={false}\n                />\n              </div>\n            ) : (\n              <CodeForm\n                label={t('authenticator.code')}\n                submitLabel={t('authenticator.next')}\n                pending={start.isPending}\n                error={error}\n                onSubmit={(code) => start.mutate(code)}\n                allowBackup\n              />\n            )}\n          </DialogContent>\n        </Dialog>\n      </CardContent>\n    </Card>\n  );\n}\n\n// ── Backup codes ──────────────────────────────────────────────────────────────\n\nexport function BackupCodesCard({ user }: { user: Me }) {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  const refreshSession = useRefreshSession();\n  const [open, setOpen] = useState(false);\n  const [codes, setCodes] = useState<string[] | null>(null);\n  const [error, setError] = useState<string | null>(null);\n  const generate = useMutation({\n    mutationFn: accountApi.newBackupCodes,\n    onSuccess: (result) => {\n      setError(null);\n      setCodes(result.backupCodes);\n    },\n    onError: (failure) => setError(errorMessage(failure)),\n  });\n\n  async function close() {\n    setOpen(false);\n    setCodes(null);\n    setError(null);\n    await refreshSession();\n  }\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('backup.title')}</CardTitle>\n        <CardDescription>\n          {t('backup.description')} {t('backup.left', { count: user.backupCodesLeft })}\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <Button variant=\"outline\" onClick={() => setOpen(true)}>\n          {t('backup.generate')}\n        </Button>\n        <Dialog open={open} onOpenChange={(value) => (value ? setOpen(true) : void close())}>\n          <DialogContent>\n            <DialogHeader>\n              <DialogTitle>\n                {codes ? t('auth:backupCodes.title') : t('backup.generateTitle')}\n              </DialogTitle>\n              {!codes && <DialogDescription>{t('backup.generateDescription')}</DialogDescription>}\n            </DialogHeader>\n            {codes ? (\n              <BackupCodesPanel\n                codes={codes}\n                doneLabel={t('common:actions.close')}\n                onDone={close}\n              />\n            ) : (\n              <CodeForm\n                label={t('authenticator.code')}\n                submitLabel={t('backup.submit')}\n                pending={generate.isPending}\n                error={error}\n                onSubmit={(code) => generate.mutate(code)}\n                allowBackup={false}\n              />\n            )}\n          </DialogContent>\n        </Dialog>\n      </CardContent>\n    </Card>\n  );\n}\n\n// ── Sessions ──────────────────────────────────────────────────────────────────\n\nfunction ConfirmSignOut({\n  title,\n  trigger,\n  onConfirm,\n}: {\n  title: string;\n  trigger: React.ReactNode;\n  onConfirm: () => void;\n}) {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>{title}</AlertDialogTitle>\n          <AlertDialogDescription>{t('sessions.confirmDescription')}</AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>{t('common:actions.cancel')}</AlertDialogCancel>\n          <AlertDialogAction onClick={onConfirm}>{t('sessions.signOut')}</AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  );\n}\n\nfunction SessionRow({ session, onRevoke }: { session: UserSession; onRevoke: () => void }) {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  return (\n    <li className=\"flex items-center gap-4 py-3\">\n      <MonitorIcon className=\"text-muted-foreground size-5 shrink-0\" />\n      <div className=\"min-w-0 flex-1\">\n        <div className=\"flex flex-wrap items-center gap-2 text-sm font-medium\">\n          {describeUserAgent(session.userAgent) ?? t('sessions.unknownDevice')}\n          {session.current && <Badge variant=\"secondary\">{t('sessions.thisDevice')}</Badge>}\n        </div>\n        <div className=\"text-muted-foreground text-xs\">\n          {[\n            session.ip,\n            session.activeNow\n              ? t('sessions.activeNow')\n              : t('sessions.lastSeen', { when: formatRelative(session.lastSeenAt) }),\n          ]\n            .filter(Boolean)\n            .join(' · ')}\n        </div>\n      </div>\n      {!session.current && (\n        <ConfirmSignOut\n          title={t('sessions.confirmTitle')}\n          onConfirm={onRevoke}\n          trigger={\n            <Button variant=\"ghost\" size=\"sm\">\n              {t('sessions.signOut')}\n            </Button>\n          }\n        />\n      )}\n    </li>\n  );\n}\n\nexport function SessionsCard() {\n  const { t } = useTranslation(['account', 'common', 'auth']);\n  const client = useQueryClient();\n  const sessions = useQuery({ queryKey: ['me', 'sessions'], queryFn: accountApi.sessions });\n  const done = async () => {\n    toast.success(t('sessions.done'));\n    await client.invalidateQueries({ queryKey: ['me', 'sessions'] });\n  };\n  const revoke = useMutation({ mutationFn: accountApi.revokeSession, onSuccess: done });\n  const revokeOthers = useMutation({ mutationFn: accountApi.revokeOthers, onSuccess: done });\n  const others = (sessions.data ?? []).filter((s) => !s.current).length;\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('sessions.title')}</CardTitle>\n        <CardDescription>{t('sessions.description')}</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4\">\n        {sessions.isPending && <Skeleton className=\"h-12 w-full\" />}\n        {sessions.isError && <FormAlert message={errorMessage(sessions.error)} />}\n        {sessions.data && (\n          <ul className=\"divide-y\">\n            {sessions.data.map((session) => (\n              <SessionRow\n                key={session.id}\n                session={session}\n                onRevoke={() => revoke.mutate(session.id)}\n              />\n            ))}\n          </ul>\n        )}\n        {others > 0 && (\n          <div>\n            <ConfirmSignOut\n              title={t('sessions.confirmOthersTitle')}\n              onConfirm={() => revokeOthers.mutate()}\n              trigger={<Button variant=\"outline\">{t('sessions.signOutOthers')}</Button>}\n            />\n          </div>\n        )}\n      </CardContent>\n    </Card>\n  );\n}\n","import { useTranslation } from 'react-i18next';\nimport { useSearchParams } from 'react-router';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { useSession } from '@/features/auth/session';\nimport { EmailCard, ProfileCard } from './components/ProfileCards';\nimport {\n  AuthenticatorCard,\n  BackupCodesCard,\n  PasswordCard,\n  SessionsCard,\n} from './components/SecurityCards';\n\nexport function AccountPage() {\n  const { t } = useTranslation('account');\n  const { data } = useSession();\n  const [params, setParams] = useSearchParams();\n  const tab = params.get('tab') === 'security' ? 'security' : 'profile';\n  const user = data?.user;\n  if (!user) return null;\n\n  return (\n    <>\n      <PageHeader title={t('title')} />\n      <Tabs value={tab} onValueChange={(value) => setParams({ tab: value }, { replace: true })}>\n        <TabsList className=\"mb-6\">\n          <TabsTrigger value=\"profile\">{t('tabs.profile')}</TabsTrigger>\n          <TabsTrigger value=\"security\">{t('tabs.security')}</TabsTrigger>\n        </TabsList>\n        {/* Wide enough: cards side by side; the sessions list keeps the full width. */}\n        <TabsContent value=\"profile\" className=\"grid items-start gap-6 @4xl/main:grid-cols-2\">\n          <ProfileCard user={user} />\n          <EmailCard user={user} />\n        </TabsContent>\n        <TabsContent value=\"security\" className=\"grid items-start gap-6 @4xl/main:grid-cols-2\">\n          <PasswordCard />\n          <div className=\"flex flex-col gap-6\">\n            <AuthenticatorCard />\n            <BackupCodesCard user={user} />\n          </div>\n          <div className=\"@4xl/main:col-span-2\">\n            <SessionsCard />\n          </div>\n        </TabsContent>\n      </Tabs>\n    </>\n  );\n}\n","import { useEffect } from 'react';\nimport { Navigate, Outlet, useLocation, useSearchParams } from 'react-router';\nimport { Spinner } from '@/components/ui/spinner';\nimport { isServerPage, loadPage, safeNext } from '@/lib/navigation';\nimport { useSession } from './session';\n\nfunction FullPageSpinner() {\n  return (\n    <div className=\"flex min-h-full items-center justify-center\">\n      <Spinner className=\"size-6\" />\n    </div>\n  );\n}\n\n/** Where a fully signed-in user goes from the auth pages: the page they asked for, or the app. */\nfunction SignedInDestination() {\n  const [params] = useSearchParams();\n  const next = safeNext(params.get('next'));\n  const serverPage = isServerPage(next);\n  useEffect(() => {\n    if (serverPage) loadPage(next);\n  }, [serverPage, next]);\n  return serverPage ? <FullPageSpinner /> : <Navigate to={next} replace />;\n}\n\n/** Fully signed in (password and second factor), or sent where they need to go. */\nexport function RequireVerified() {\n  const { data, isPending } = useSession();\n  const location = useLocation();\n  if (isPending || !data) return <FullPageSpinner />;\n  if (data.state === 'verified') return <Outlet />;\n  if (data.state === 'enrolment_required') return <Navigate to=\"/2fa/setup\" replace />;\n  const next = encodeURIComponent(location.pathname + location.search);\n  return <Navigate to={`/login?next=${next}`} replace />;\n}\n\n/** Only for a signed-in user who has not enrolled an authenticator yet (F-004). */\nexport function RequireEnrolment() {\n  const { data, isPending } = useSession();\n  const location = useLocation();\n  if (isPending || !data) return <FullPageSpinner />;\n  if (data.state === 'enrolment_required') return <Outlet />;\n  if (data.state === 'verified') return <SignedInDestination />;\n  return <Navigate to={{ pathname: '/login', search: location.search }} replace />;\n}\n\n/** Public auth pages: signed-in users go to the app instead (F-008). */\nexport function PublicOnly() {\n  const { data, isPending } = useSession();\n  const location = useLocation();\n  if (isPending || !data) return <FullPageSpinner />;\n  if (data.state === 'verified') return <SignedInDestination />;\n  if (data.state === 'enrolment_required') {\n    return <Navigate to={{ pathname: '/2fa/setup', search: location.search }} replace />;\n  }\n  return <Outlet />;\n}\n","export default \"__VITE_ASSET__C9SqDV5U__\"","import type { ReactNode } from 'react';\nimport { Link } from 'react-router';\nimport logo from '@/assets/brand/logo-white.png';\nimport background from '@/assets/landing/map-background.jpg';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { usePageHeading } from '@/lib/page';\n\n/** Auth screens share the landing page's look: blurred map, overlay, white logo. */\nexport function AuthLayout({\n  title,\n  description,\n  children,\n  footer,\n}: {\n  title: string;\n  description?: ReactNode;\n  children: ReactNode;\n  footer?: ReactNode;\n}) {\n  const heading = usePageHeading<HTMLDivElement>(title);\n  return (\n    <main className=\"relative flex min-h-screen items-center justify-center overflow-hidden p-4\">\n      <div\n        aria-hidden=\"true\"\n        className=\"absolute inset-0 scale-110 bg-cover bg-center bg-no-repeat blur-[16px]\"\n        style={{ backgroundImage: `url(${background})` }}\n      />\n      <div aria-hidden=\"true\" className=\"absolute inset-0 bg-black/40\" />\n      <div className=\"relative z-10 flex w-full max-w-md flex-col items-center gap-6\">\n        <Link to=\"/\">\n          <img src={logo} alt=\"Eyefibr\" className=\"h-auto w-40\" />\n        </Link>\n        <Card className=\"w-full\">\n          <CardHeader>\n            <CardTitle ref={heading} aria-level={1} tabIndex={-1} className=\"text-xl outline-none\">\n              {title}\n            </CardTitle>\n            {description && <CardDescription>{description}</CardDescription>}\n          </CardHeader>\n          <CardContent className=\"flex flex-col gap-6\">{children}</CardContent>\n        </Card>\n        {footer && <div className=\"text-center text-sm text-white\">{footer}</div>}\n      </div>\n    </main>\n  );\n}\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router';\nimport { z } from 'zod';\nimport { Button } from '@/components/ui/button';\nimport { Field, FieldDescription, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { Spinner } from '@/components/ui/spinner';\nimport { applyApiError, errorMessage } from '@/lib/forms';\nimport { authApi } from '../api';\nimport { AuthLayout } from '../components/AuthLayout';\nimport { FormAlert } from '../components/FormAlert';\nimport { useResetSession } from '../session';\n\n/** Accept an invitation: name and password, then authenticator enrolment (D-062). */\nexport function InvitationPage() {\n  const { t } = useTranslation(['auth', 'common']);\n  const { token = '' } = useParams();\n  const navigate = useNavigate();\n  const resetSession = useResetSession();\n  const [formError, setFormError] = useState<string | null>(null);\n\n  const info = useQuery({\n    queryKey: ['auth', 'invitation', token],\n    queryFn: () => authApi.invitation(token),\n    retry: false,\n  });\n  const schema = z.object({\n    displayName: z.string().trim().min(1, t('common:errors.required')),\n    password: z.string().min(12, t('common:errors.passwordTooShort')),\n  });\n  type Values = z.infer<typeof schema>;\n  const form = useForm<Values>({\n    resolver: zodResolver(schema),\n    defaultValues: { displayName: '', password: '' },\n  });\n  const accept = useMutation({\n    mutationFn: (values: Values) => authApi.acceptInvitation(token, values),\n    onSuccess: async () => {\n      await resetSession();\n      navigate('/2fa/setup', { replace: true });\n    },\n    onError: (error) =>\n      setFormError(applyApiError(error, form.setError, ['displayName', 'password'])),\n  });\n\n  if (info.isPending) {\n    return (\n      <AuthLayout title=\"…\">\n        <Spinner className=\"mx-auto size-6\" />\n      </AuthLayout>\n    );\n  }\n  if (info.isError) {\n    return (\n      <AuthLayout title={t('invite.invalidTitle')}>\n        <FormAlert message={errorMessage(info.error)} />\n      </AuthLayout>\n    );\n  }\n\n  const organisation = info.data.organisationName;\n  return (\n    <AuthLayout\n      title={t('invite.title', { organisation })}\n      description={t('invite.description', { organisation })}\n    >\n      <form\n        noValidate\n        onSubmit={form.handleSubmit((values) => {\n          setFormError(null);\n          accept.mutate(values);\n        })}\n      >\n        <FieldGroup>\n          <FormAlert message={formError} />\n          <Field>\n            <FieldLabel htmlFor=\"email\">{t('invite.email')}</FieldLabel>\n            <Input id=\"email\" value={info.data.email} readOnly disabled />\n          </Field>\n          <Field data-invalid={!!form.formState.errors.displayName}>\n            <FieldLabel htmlFor=\"displayName\">{t('invite.displayName')}</FieldLabel>\n            <Input\n              id=\"displayName\"\n              autoComplete=\"name\"\n              autoFocus\n              aria-invalid={!!form.formState.errors.displayName}\n              {...form.register('displayName')}\n            />\n            <FieldError errors={[form.formState.errors.displayName]} />\n          </Field>\n          <Field data-invalid={!!form.formState.errors.password}>\n            <FieldLabel htmlFor=\"password\">{t('invite.password')}</FieldLabel>\n            <Input\n              id=\"password\"\n              type=\"password\"\n              autoComplete=\"new-password\"\n              aria-invalid={!!form.formState.errors.password}\n              {...form.register('password')}\n            />\n            <FieldDescription>{t('signup.passwordHint')}</FieldDescription>\n            <FieldError errors={[form.formState.errors.password]} />\n          </Field>\n          <Button type=\"submit\" disabled={accept.isPending}>\n            {accept.isPending && <Spinner />}\n            {t('invite.submit')}\n          </Button>\n        </FieldGroup>\n      </form>\n    </AuthLayout>\n  );\n}\n","/** Values Django puts in the page before the app starts (backend/config/spa.py). */\nexport interface RuntimeConfig {\n  environment: 'local' | 'test' | 'staging' | 'production';\n  signupEnabled: boolean;\n  stripePublishableKey: string;\n  supportEmail: string;\n  workspaceDomain: string;\n}\n\nconst DEFAULTS: RuntimeConfig = {\n  environment: 'local',\n  signupEnabled: false,\n  stripePublishableKey: '',\n  supportEmail: 'eyefibr@eyetoarch.com',\n  workspaceDomain: 'eyefibr.com',\n};\n\nlet cached: RuntimeConfig | undefined;\n\nexport function readRuntimeConfig(doc: Document = document): RuntimeConfig {\n  const element = doc.getElementById('runtime-config');\n  if (!element?.textContent) return { ...DEFAULTS };\n  try {\n    const parsed = JSON.parse(element.textContent) as Partial<RuntimeConfig>;\n    return { ...DEFAULTS, ...parsed };\n  } catch {\n    return { ...DEFAULTS };\n  }\n}\n\nexport function runtimeConfig(): RuntimeConfig {\n  cached ??= readRuntimeConfig();\n  return cached;\n}\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { useMutation } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router';\nimport { z } from 'zod';\nimport { Button } from '@/components/ui/button';\nimport { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { Spinner } from '@/components/ui/spinner';\nimport { applyApiError, errorMessage } from '@/lib/forms';\nimport { runtimeConfig } from '@/lib/runtime-config';\nimport { authApi } from '../api';\nimport { AuthLayout } from '../components/AuthLayout';\nimport { CodeInput } from '../components/CodeInput';\nimport { FormAlert } from '../components/FormAlert';\nimport { useResetSession, useSession } from '../session';\n\n/** Moving on once signed in is the guards' job (guards.tsx), so `next` is honoured in one place. */\nexport function LoginPage() {\n  const { data } = useSession();\n  return data?.state === 'pending_2fa' ? <CodeStep /> : <CredentialsStep />;\n}\n\nfunction CredentialsStep() {\n  const { t } = useTranslation(['auth', 'common']);\n  const resetSession = useResetSession();\n  const [formError, setFormError] = useState<string | null>(null);\n\n  const schema = z.object({\n    email: z.email(t('common:errors.invalidEmail')),\n    password: z.string().min(1, t('common:errors.required')),\n  });\n  const form = useForm<z.infer<typeof schema>>({\n    resolver: zodResolver(schema),\n    defaultValues: { email: '', password: '' },\n  });\n\n  const login = useMutation({\n    mutationFn: authApi.login,\n    onSuccess: () => resetSession(),\n    onError: (error) => setFormError(applyApiError(error, form.setError, ['email', 'password'])),\n  });\n\n  return (\n    <AuthLayout\n      title={t('login.title')}\n      footer={\n        runtimeConfig().signupEnabled && (\n          <>\n            {t('login.noAccount')}{' '}\n            <Link to=\"/signup\" className=\"font-semibold underline underline-offset-4\">\n              {t('login.signup')}\n            </Link>\n          </>\n        )\n      }\n    >\n      <form\n        noValidate\n        onSubmit={form.handleSubmit((values) => {\n          setFormError(null);\n          login.mutate(values);\n        })}\n      >\n        <FieldGroup>\n          <FormAlert message={formError} />\n          <Field data-invalid={!!form.formState.errors.email}>\n            <FieldLabel htmlFor=\"email\">{t('login.email')}</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              autoComplete=\"username\"\n              autoFocus\n              aria-invalid={!!form.formState.errors.email}\n              {...form.register('email')}\n            />\n            <FieldError errors={[form.formState.errors.email]} />\n          </Field>\n          <Field data-invalid={!!form.formState.errors.password}>\n            <div className=\"flex items-center justify-between\">\n              <FieldLabel htmlFor=\"password\">{t('login.password')}</FieldLabel>\n              <Link to=\"/reset-password\" className=\"text-sm underline-offset-4 hover:underline\">\n                {t('login.forgot')}\n              </Link>\n            </div>\n            <Input\n              id=\"password\"\n              type=\"password\"\n              autoComplete=\"current-password\"\n              aria-invalid={!!form.formState.errors.password}\n              {...form.register('password')}\n            />\n            <FieldError errors={[form.formState.errors.password]} />\n          </Field>\n          <Button type=\"submit\" disabled={login.isPending}>\n            {login.isPending && <Spinner />}\n            {t('login.submit')}\n          </Button>\n        </FieldGroup>\n      </form>\n    </AuthLayout>\n  );\n}\n\nfunction CodeStep() {\n  const { t } = useTranslation(['auth', 'common']);\n  const resetSession = useResetSession();\n  const [useBackup, setUseBackup] = useState(false);\n  const [code, setCode] = useState('');\n  const [error, setError] = useState<string | null>(null);\n\n  const verify = useMutation({\n    mutationFn: authApi.verifyCode,\n    onSuccess: () => resetSession(),\n    onError: (failure) => {\n      setError(errorMessage(failure));\n      setCode('');\n    },\n  });\n\n  const startOver = useMutation({\n    mutationFn: authApi.logout,\n    onSettled: () => resetSession(),\n  });\n\n  function submit(value: string) {\n    setError(null);\n    verify.mutate(value);\n  }\n\n  return (\n    <AuthLayout\n      title={t('code.title')}\n      description={useBackup ? t('code.backupDescription') : t('code.description')}\n    >\n      <form\n        noValidate\n        onSubmit={(event) => {\n          event.preventDefault();\n          if (code) submit(code);\n        }}\n      >\n        <FieldGroup>\n          <FormAlert message={error} />\n          {useBackup ? (\n            <Field>\n              <FieldLabel htmlFor=\"backup-code\">{t('code.backupLabel')}</FieldLabel>\n              <Input\n                id=\"backup-code\"\n                autoComplete=\"one-time-code\"\n                autoFocus\n                value={code}\n                onChange={(event) => setCode(event.target.value)}\n                className=\"font-mono tracking-wider\"\n              />\n            </Field>\n          ) : (\n            <div className=\"flex justify-center\">\n              <CodeInput\n                value={code}\n                onChange={setCode}\n                onComplete={submit}\n                disabled={verify.isPending}\n                invalid={!!error}\n              />\n            </div>\n          )}\n          <Button type=\"submit\" disabled={verify.isPending || !code}>\n            {verify.isPending && <Spinner />}\n            {t('code.submit')}\n          </Button>\n          <div className=\"flex flex-col items-center gap-2 text-sm\">\n            <Button\n              type=\"button\"\n              variant=\"link\"\n              onClick={() => {\n                setUseBackup(!useBackup);\n                setCode('');\n                setError(null);\n              }}\n            >\n              {useBackup ? t('code.useApp') : t('code.useBackup')}\n            </Button>\n            <Button type=\"button\" variant=\"link\" onClick={() => startOver.mutate()}>\n              {t('code.startOver')}\n            </Button>\n          </div>\n        </FieldGroup>\n      </form>\n    </AuthLayout>\n  );\n}\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { useMutation } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams } from 'react-router';\nimport { z } from 'zod';\nimport { Button } from '@/components/ui/button';\nimport { Field, FieldDescription, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { Spinner } from '@/components/ui/spinner';\nimport { applyApiError } from '@/lib/forms';\nimport { authApi } from '../api';\nimport { AuthLayout } from '../components/AuthLayout';\nimport { FormAlert } from '../components/FormAlert';\n\nfunction BackToLogin() {\n  const { t } = useTranslation(['auth', 'common']);\n  return (\n    <Link to=\"/login\" className=\"font-semibold underline underline-offset-4\">\n      {t('reset.backToLogin')}\n    </Link>\n  );\n}\n\nexport function ResetRequestPage() {\n  const { t } = useTranslation(['auth', 'common']);\n  const [formError, setFormError] = useState<string | null>(null);\n  const schema = z.object({ email: z.email(t('common:errors.invalidEmail')) });\n  const form = useForm<z.infer<typeof schema>>({\n    resolver: zodResolver(schema),\n    defaultValues: { email: '' },\n  });\n  const request = useMutation({\n    mutationFn: (values: { email: string }) => authApi.requestReset(values.email),\n    onError: (error) => setFormError(applyApiError(error, form.setError, ['email'])),\n  });\n\n  if (request.isSuccess) {\n    return (\n      <AuthLayout title={t('reset.sentTitle')} footer={<BackToLogin />}>\n        <p className=\"text-sm\">{t('reset.sent', { email: form.getValues('email') })}</p>\n      </AuthLayout>\n    );\n  }\n  return (\n    <AuthLayout\n      title={t('reset.title')}\n      description={t('reset.description')}\n      footer={<BackToLogin />}\n    >\n      <form noValidate onSubmit={form.handleSubmit((values) => request.mutate(values))}>\n        <FieldGroup>\n          <FormAlert message={formError} />\n          <Field data-invalid={!!form.formState.errors.email}>\n            <FieldLabel htmlFor=\"email\">{t('reset.email')}</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              autoComplete=\"email\"\n              autoFocus\n              aria-invalid={!!form.formState.errors.email}\n              {...form.register('email')}\n            />\n            <FieldError errors={[form.formState.errors.email]} />\n          </Field>\n          <Button type=\"submit\" disabled={request.isPending}>\n            {request.isPending && <Spinner />}\n            {t('reset.submit')}\n          </Button>\n        </FieldGroup>\n      </form>\n    </AuthLayout>\n  );\n}\n\nexport function ResetConfirmPage() {\n  const { t } = useTranslation(['auth', 'common']);\n  const { uid = '', token = '' } = useParams();\n  const [formError, setFormError] = useState<string | null>(null);\n  const schema = z\n    .object({\n      password: z.string().min(12, t('common:errors.passwordTooShort')),\n      confirm: z.string(),\n    })\n    .refine((v) => v.password === v.confirm, {\n      path: ['confirm'],\n      message: t('common:errors.passwordsDontMatch'),\n    });\n  type Values = z.infer<typeof schema>;\n  const form = useForm<Values>({\n    resolver: zodResolver(schema),\n    defaultValues: { password: '', confirm: '' },\n  });\n  const confirm = useMutation({\n    mutationFn: (values: Values) => authApi.confirmReset({ uid, token, password: values.password }),\n    onError: (error) => setFormError(applyApiError(error, form.setError, ['password'])),\n  });\n\n  if (confirm.isSuccess) {\n    return (\n      <AuthLayout title={t('reset.doneTitle')}>\n        <p className=\"text-sm\">{t('reset.done')}</p>\n        <Button asChild>\n          <Link to=\"/login\">{t('reset.backToLogin')}</Link>\n        </Button>\n      </AuthLayout>\n    );\n  }\n  return (\n    <AuthLayout title={t('reset.newTitle')} footer={<BackToLogin />}>\n      <form noValidate onSubmit={form.handleSubmit((values) => confirm.mutate(values))}>\n        <FieldGroup>\n          <FormAlert message={formError} />\n          <Field data-invalid={!!form.formState.errors.password}>\n            <FieldLabel htmlFor=\"password\">{t('reset.newPassword')}</FieldLabel>\n            <Input\n              id=\"password\"\n              type=\"password\"\n              autoComplete=\"new-password\"\n              autoFocus\n              aria-invalid={!!form.formState.errors.password}\n              {...form.register('password')}\n            />\n            <FieldDescription>{t('signup.passwordHint')}</FieldDescription>\n            <FieldError errors={[form.formState.errors.password]} />\n          </Field>\n          <Field data-invalid={!!form.formState.errors.confirm}>\n            <FieldLabel htmlFor=\"confirm\">{t('reset.confirmPassword')}</FieldLabel>\n            <Input\n              id=\"confirm\"\n              type=\"password\"\n              autoComplete=\"new-password\"\n              aria-invalid={!!form.formState.errors.confirm}\n              {...form.register('confirm')}\n            />\n            <FieldError errors={[form.formState.errors.confirm]} />\n          </Field>\n          <Button type=\"submit\" disabled={confirm.isPending}>\n            {confirm.isPending && <Spinner />}\n            {t('reset.save')}\n          </Button>\n        </FieldGroup>\n      </form>\n    </AuthLayout>\n  );\n}\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport { useMutation } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useNavigate } from 'react-router';\nimport { z } from 'zod';\nimport { Button } from '@/components/ui/button';\nimport { Field, FieldDescription, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { Spinner } from '@/components/ui/spinner';\nimport { applyApiError } from '@/lib/forms';\nimport { runtimeConfig } from '@/lib/runtime-config';\nimport { authApi } from '../api';\nimport { AuthLayout } from '../components/AuthLayout';\nimport { FormAlert } from '../components/FormAlert';\nimport { useResetSession, useSession } from '../session';\n\nconst FIELDS = ['email', 'displayName', 'organisationName', 'password'] as const;\n\n/** Public signup, available only where SIGNUP_ENABLED is on (D-060). */\nexport function SignupPage() {\n  const { t } = useTranslation(['auth', 'common']);\n  const { data } = useSession();\n  const navigate = useNavigate();\n  const resetSession = useResetSession();\n  const [formError, setFormError] = useState<string | null>(null);\n\n  const schema = z.object({\n    email: z.email(t('common:errors.invalidEmail')),\n    displayName: z.string().trim().min(1, t('common:errors.required')),\n    organisationName: z.string().trim(),\n    password: z.string().min(12, t('common:errors.passwordTooShort')),\n  });\n  type Values = z.infer<typeof schema>;\n  const form = useForm<Values>({\n    resolver: zodResolver(schema),\n    defaultValues: { email: '', displayName: '', organisationName: '', password: '' },\n  });\n  const signup = useMutation({\n    mutationFn: authApi.signup,\n    onSuccess: async () => {\n      await resetSession();\n      navigate('/2fa/setup', { replace: true });\n    },\n    onError: (error) => setFormError(applyApiError(error, form.setError, FIELDS)),\n  });\n\n  if (data && !data.signupEnabled) {\n    return (\n      <AuthLayout\n        title={t('signup.closedTitle')}\n        footer={\n          <Link to=\"/login\" className=\"font-semibold underline\">\n            {t('signup.login')}\n          </Link>\n        }\n      >\n        <p className=\"text-sm\">{t('signup.closed', { email: runtimeConfig().supportEmail })}</p>\n      </AuthLayout>\n    );\n  }\n\n  const field = (name: (typeof FIELDS)[number]) => ({\n    invalid: !!form.formState.errors[name],\n    error: form.formState.errors[name],\n  });\n\n  return (\n    <AuthLayout\n      title={t('signup.title')}\n      footer={\n        <>\n          {t('signup.haveAccount')}{' '}\n          <Link to=\"/login\" className=\"font-semibold underline underline-offset-4\">\n            {t('signup.login')}\n          </Link>\n        </>\n      }\n    >\n      <form\n        noValidate\n        onSubmit={form.handleSubmit((values) => {\n          setFormError(null);\n          signup.mutate(values);\n        })}\n      >\n        <FieldGroup>\n          <FormAlert message={formError} />\n          <Field data-invalid={field('email').invalid}>\n            <FieldLabel htmlFor=\"email\">{t('signup.email')}</FieldLabel>\n            <Input\n              id=\"email\"\n              type=\"email\"\n              autoComplete=\"email\"\n              autoFocus\n              aria-invalid={field('email').invalid}\n              {...form.register('email')}\n            />\n            <FieldError errors={[field('email').error]} />\n          </Field>\n          <Field data-invalid={field('displayName').invalid}>\n            <FieldLabel htmlFor=\"displayName\">{t('signup.displayName')}</FieldLabel>\n            <Input\n              id=\"displayName\"\n              autoComplete=\"name\"\n              aria-invalid={field('displayName').invalid}\n              {...form.register('displayName')}\n            />\n            <FieldError errors={[field('displayName').error]} />\n          </Field>\n          <Field data-invalid={field('organisationName').invalid}>\n            <FieldLabel htmlFor=\"organisationName\">{t('signup.organisation')}</FieldLabel>\n            <Input\n              id=\"organisationName\"\n              autoComplete=\"organization\"\n              aria-invalid={field('organisationName').invalid}\n              {...form.register('organisationName')}\n            />\n            <FieldDescription>{t('signup.organisationHint')}</FieldDescription>\n            <FieldError errors={[field('organisationName').error]} />\n          </Field>\n          <Field data-invalid={field('password').invalid}>\n            <FieldLabel htmlFor=\"password\">{t('signup.password')}</FieldLabel>\n            <Input\n              id=\"password\"\n              type=\"password\"\n              autoComplete=\"new-password\"\n              aria-invalid={field('password').invalid}\n              {...form.register('password')}\n            />\n            <FieldDescription>{t('signup.passwordHint')}</FieldDescription>\n            <FieldError errors={[field('password').error]} />\n          </Field>\n          <Button type=\"submit\" disabled={signup.isPending}>\n            {signup.isPending && <Spinner />}\n            {t('signup.submit')}\n          </Button>\n        </FieldGroup>\n      </form>\n    </AuthLayout>\n  );\n}\n","import { useMutation, useQuery } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { FieldGroup } from '@/components/ui/field';\nimport { Spinner } from '@/components/ui/spinner';\nimport { errorMessage } from '@/lib/forms';\nimport { authApi } from '../api';\nimport { AuthLayout } from '../components/AuthLayout';\nimport { BackupCodesPanel } from '../components/BackupCodesPanel';\nimport { CodeInput } from '../components/CodeInput';\nimport { FormAlert } from '../components/FormAlert';\nimport { QrSetup } from '../components/QrSetup';\nimport { useResetSession } from '../session';\n\n/** Mandatory authenticator enrolment (D-051), reached right after first sign-in. */\nexport function TwoFactorSetupPage() {\n  const { t } = useTranslation(['auth', 'common']);\n  const resetSession = useResetSession();\n  const [code, setCode] = useState('');\n  const [error, setError] = useState<string | null>(null);\n  const [backupCodes, setBackupCodes] = useState<string[] | null>(null);\n\n  const setup = useQuery({\n    queryKey: ['auth', '2fa-setup'],\n    queryFn: authApi.setupStart,\n    staleTime: Infinity,\n  });\n  const confirm = useMutation({\n    mutationFn: authApi.setupConfirm,\n    onSuccess: (result) => setBackupCodes(result.backupCodes),\n    onError: (failure) => {\n      setError(errorMessage(failure));\n      setCode('');\n    },\n  });\n\n  if (backupCodes) {\n    return (\n      <AuthLayout title={t('backupCodes.title')}>\n        <BackupCodesPanel\n          codes={backupCodes}\n          doneLabel={t('backupCodes.continue')}\n          onDone={resetSession} // now verified: the guard moves on\n        />\n      </AuthLayout>\n    );\n  }\n\n  function submit(value: string) {\n    setError(null);\n    confirm.mutate(value);\n  }\n\n  return (\n    <AuthLayout title={t('setup.title')} description={t('setup.description')}>\n      {setup.isPending && (\n        <div className=\"text-muted-foreground flex items-center justify-center gap-2 text-sm\">\n          <Spinner /> {t('setup.loading')}\n        </div>\n      )}\n      {setup.isError && <FormAlert message={errorMessage(setup.error)} />}\n      {setup.data && (\n        <form\n          noValidate\n          onSubmit={(event) => {\n            event.preventDefault();\n            if (code.length === 6) submit(code);\n          }}\n        >\n          <FieldGroup>\n            <QrSetup setup={setup.data} instruction={`1. ${t('setup.step1')}`} />\n            <p className=\"text-center text-sm\">2. {t('setup.step2')}</p>\n            <FormAlert message={error} />\n            <div className=\"flex justify-center\">\n              <CodeInput\n                value={code}\n                onChange={setCode}\n                onComplete={submit}\n                disabled={confirm.isPending}\n                invalid={!!error}\n              />\n            </div>\n            <Button type=\"submit\" disabled={confirm.isPending || code.length !== 6}>\n              {confirm.isPending && <Spinner />}\n              {t('setup.submit')}\n            </Button>\n          </FieldGroup>\n        </form>\n      )}\n    </AuthLayout>\n  );\n}\n","import { useMutation } from '@tanstack/react-query';\nimport { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams } from 'react-router';\nimport { Button } from '@/components/ui/button';\nimport { Spinner } from '@/components/ui/spinner';\nimport { errorMessage } from '@/lib/forms';\nimport { authApi } from '../api';\nimport { AuthLayout } from '../components/AuthLayout';\nimport { FormAlert } from '../components/FormAlert';\nimport { useRefreshSession } from '../session';\n\nexport function VerifyEmailPage() {\n  const { t } = useTranslation(['auth', 'common']);\n  const { token = '' } = useParams();\n  const refreshSession = useRefreshSession();\n  const verify = useMutation({ mutationFn: authApi.verifyEmail, onSuccess: refreshSession });\n  const started = useRef(false);\n\n  useEffect(() => {\n    if (!started.current) {\n      started.current = true; // once, even under StrictMode's double effects\n      verify.mutate(token);\n    }\n  }, [token, verify]);\n\n  if (verify.isError) {\n    return (\n      <AuthLayout title={t('verify.failedTitle')}>\n        <FormAlert message={errorMessage(verify.error)} />\n        <Button asChild variant=\"outline\">\n          <Link to=\"/workspaces\">{t('verify.continue')}</Link>\n        </Button>\n      </AuthLayout>\n    );\n  }\n  if (verify.isSuccess) {\n    return (\n      <AuthLayout title={t('verify.doneTitle')}>\n        <p className=\"text-sm\">{t('verify.done')}</p>\n        <Button asChild>\n          <Link to=\"/workspaces\">{t('verify.continue')}</Link>\n        </Button>\n      </AuthLayout>\n    );\n  }\n  return (\n    <AuthLayout title={t('verify.checking')}>\n      <Spinner className=\"mx-auto size-6\" />\n    </AuthLayout>\n  );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from 'cn';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nfunction RadioGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n  return (\n    <RadioGroupPrimitive.Root\n      data-slot=\"radio-group\"\n      className={cn('grid w-full gap-2', className)}\n      {...props}\n    />\n  );\n}\n\nfunction RadioGroupItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n  return (\n    <RadioGroupPrimitive.Item\n      data-slot=\"radio-group-item\"\n      className={cn(\n        // Eyefibr: the classic look, an 18 px ring with a 10 px dot, instead of Nova's\n        // filled disc with an 8 px hole, which looks square on standard-density screens.\n        // The unchecked ring uses muted-foreground (4.7:1 on white; --input was 1.3:1).\n        'group/radio-group-item peer border-muted-foreground bg-background group-has-[:focus-visible]/field-label:not-data-checked:border-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary group-has-[:focus-visible]/field-label:data-checked:border-primary relative flex aspect-square size-[18px] shrink-0 rounded-full border outline-none group-has-[:focus-visible]/field-label:ring-0 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3',\n        className,\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"flex size-full items-center justify-center\"\n      >\n        <span className=\"bg-primary absolute top-1/2 left-1/2 size-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from 'react';\nimport { cn } from 'cn';\nimport { Select as SelectPrimitive } from 'radix-ui';\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from 'lucide-react';\n\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return (\n    <SelectPrimitive.Group\n      data-slot=\"select-group\"\n      className={cn('scroll-my-1 p-1', className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n  className,\n  size = 'default',\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: 'sm' | 'default';\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex w-fit items-center justify-between gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  );\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = 'item-aligned',\n  align = 'center',\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        data-align-trigger={position === 'item-aligned'}\n        className={cn(\n          'bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg shadow-md ring-1 duration-100 data-[align-trigger=true]:animate-none',\n          position === 'popper' &&\n            'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n          className,\n        )}\n        position={position}\n        align={align}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          data-position={position}\n          className={cn(\n            'data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)',\n            position === 'popper' && '',\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  );\n}\n\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn('text-muted-foreground px-1.5 py-1 text-xs', className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className,\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\">\n        <SelectPrimitive.ItemIndicator>\n          <CheckIcon className=\"pointer-events-none\" />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  );\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      <ChevronUpIcon />\n    </SelectPrimitive.ScrollUpButton>\n  );\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      <ChevronDownIcon />\n    </SelectPrimitive.ScrollDownButton>\n  );\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n};\n","import type { Schemas } from '@/api/types';\nimport i18n from '@/i18n';\n\nexport type CountryCode = Schemas['CountryEnum'];\n\n/** Every country the API accepts. Generated from the schema; the check below\n * stops the build if the backend's list (django-countries) ever changes. */\nexport const COUNTRY_CODES = [\n  'AF',\n  'AX',\n  'AL',\n  'DZ',\n  'AS',\n  'AD',\n  'AO',\n  'AI',\n  'AQ',\n  'AG',\n  'AR',\n  'AM',\n  'AW',\n  'AU',\n  'AT',\n  'AZ',\n  'BS',\n  'BH',\n  'BD',\n  'BB',\n  'BY',\n  'BE',\n  'BZ',\n  'BJ',\n  'BM',\n  'BT',\n  'BO',\n  'BQ',\n  'BA',\n  'BW',\n  'BV',\n  'BR',\n  'IO',\n  'BN',\n  'BG',\n  'BF',\n  'BI',\n  'CV',\n  'KH',\n  'CM',\n  'CA',\n  'KY',\n  'CF',\n  'TD',\n  'CL',\n  'CN',\n  'CX',\n  'CC',\n  'CO',\n  'KM',\n  'CG',\n  'CK',\n  'CR',\n  'CI',\n  'HR',\n  'CU',\n  'CW',\n  'CY',\n  'CZ',\n  'CD',\n  'DK',\n  'DJ',\n  'DM',\n  'DO',\n  'EC',\n  'EG',\n  'SV',\n  'GQ',\n  'ER',\n  'EE',\n  'SZ',\n  'ET',\n  'FK',\n  'FO',\n  'FJ',\n  'FI',\n  'FR',\n  'GF',\n  'PF',\n  'TF',\n  'GA',\n  'GM',\n  'GE',\n  'DE',\n  'GH',\n  'GI',\n  'GR',\n  'GL',\n  'GD',\n  'GP',\n  'GU',\n  'GT',\n  'GG',\n  'GN',\n  'GW',\n  'GY',\n  'HT',\n  'HM',\n  'HN',\n  'HK',\n  'HU',\n  'IS',\n  'IN',\n  'ID',\n  'IR',\n  'IQ',\n  'IE',\n  'IM',\n  'IL',\n  'IT',\n  'JM',\n  'JP',\n  'JE',\n  'JO',\n  'KZ',\n  'KE',\n  'KI',\n  'KW',\n  'KG',\n  'LA',\n  'LV',\n  'LB',\n  'LS',\n  'LR',\n  'LY',\n  'LI',\n  'LT',\n  'LU',\n  'MO',\n  'MG',\n  'MW',\n  'MY',\n  'MV',\n  'ML',\n  'MT',\n  'MH',\n  'MQ',\n  'MR',\n  'MU',\n  'YT',\n  'MX',\n  'FM',\n  'MD',\n  'MC',\n  'MN',\n  'ME',\n  'MS',\n  'MA',\n  'MZ',\n  'MM',\n  'NA',\n  'NR',\n  'NP',\n  'NL',\n  'NC',\n  'NZ',\n  'NI',\n  'NE',\n  'NG',\n  'NU',\n  'NF',\n  'KP',\n  'MK',\n  'MP',\n  'NO',\n  'OM',\n  'PK',\n  'PW',\n  'PS',\n  'PA',\n  'PG',\n  'PY',\n  'PE',\n  'PH',\n  'PN',\n  'PL',\n  'PT',\n  'PR',\n  'QA',\n  'RE',\n  'RO',\n  'RU',\n  'RW',\n  'BL',\n  'SH',\n  'KN',\n  'LC',\n  'MF',\n  'PM',\n  'VC',\n  'WS',\n  'SM',\n  'ST',\n  'SA',\n  'SN',\n  'RS',\n  'SC',\n  'SL',\n  'SG',\n  'SX',\n  'SK',\n  'SI',\n  'SB',\n  'SO',\n  'ZA',\n  'GS',\n  'KR',\n  'SS',\n  'ES',\n  'LK',\n  'SD',\n  'SR',\n  'SJ',\n  'SE',\n  'CH',\n  'SY',\n  'TW',\n  'TJ',\n  'TZ',\n  'TH',\n  'TL',\n  'TG',\n  'TK',\n  'TO',\n  'TT',\n  'TN',\n  'TR',\n  'TM',\n  'TC',\n  'TV',\n  'UG',\n  'UA',\n  'AE',\n  'GB',\n  'UM',\n  'US',\n  'UY',\n  'UZ',\n  'VU',\n  'VA',\n  'VE',\n  'VN',\n  'VG',\n  'VI',\n  'WF',\n  'EH',\n  'YE',\n  'ZM',\n  'ZW',\n] as const satisfies readonly CountryCode[];\n\ntype Missing = Exclude<CountryCode, (typeof COUNTRY_CODES)[number]>;\nconst complete: [Missing] extends [never] ? true : Missing = true;\nvoid complete;\n\n/** Countries whose businesses have an EU VAT number. */\nconst EU = new Set<string>(\n  'AT BE BG CY CZ DE DK EE ES FI FR GR HR HU IE IT LT LU LV MT NL PL PT RO SE SI SK'.split(' '),\n);\n\nexport function isEu(code: string): boolean {\n  return EU.has(code);\n}\n\n/** Country names in the interface language, sorted the way a reader expects. */\nexport function countryOptions(): { code: CountryCode; name: string }[] {\n  const names = new Intl.DisplayNames([i18n.language], { type: 'region' });\n  const collator = new Intl.Collator(i18n.language);\n  return COUNTRY_CODES.map((code) => ({ code, name: names.of(code) ?? code })).sort((a, b) =>\n    collator.compare(a.name, b.name),\n  );\n}\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useMemo, useState } from 'react';\nimport { Controller, useForm, type UseFormReturn } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'sonner';\nimport type { BillingProfile, Schemas } from '@/api/types';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldError,\n  FieldGroup,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from '@/components/ui/select';\nimport { Spinner } from '@/components/ui/spinner';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { countryOptions, isEu } from '@/lib/countries';\nimport { applyApiError } from '@/lib/forms';\nimport { billingApi, billingKeys } from '../api';\n\ntype Values = Schemas['BillingProfileRequest'];\ntype TextFieldName = Exclude<keyof Values, 'kind' | 'country'>;\n\nconst FIELDS = [\n  'kind',\n  'legalName',\n  'billingEmail',\n  'phone',\n  'addressLine1',\n  'addressLine2',\n  'postalCode',\n  'city',\n  'region',\n  'country',\n  'taxIdValue',\n] as const satisfies readonly (keyof Values)[];\n\nfunction toValues(profile: BillingProfile, userEmail: string): Values {\n  return {\n    kind: profile.kind,\n    legalName: profile.legalName,\n    billingEmail: profile.billingEmail || userEmail,\n    phone: profile.phone,\n    addressLine1: profile.addressLine1,\n    addressLine2: profile.addressLine2,\n    postalCode: profile.postalCode,\n    city: profile.city,\n    region: profile.region,\n    country: profile.country,\n    taxIdValue: profile.taxIdValue,\n  };\n}\n\n/** The billing details form (design 06). Which fields are required depends on\n * the kind and the country, so the server decides and names the fields. */\nexport function BillingDetailsCard({\n  profile,\n  userEmail,\n}: {\n  profile: BillingProfile;\n  userEmail: string;\n}) {\n  const { t } = useTranslation(['billing', 'common']);\n  const client = useQueryClient();\n  const [formError, setFormError] = useState<string | null>(null);\n  const countries = useMemo(countryOptions, []);\n  const form = useForm<Values>({ defaultValues: toValues(profile, userEmail) });\n  const kind = form.watch('kind');\n  const country = form.watch('country');\n  const taxIdValue = form.watch('taxIdValue');\n  const errors = form.formState.errors;\n\n  const save = useMutation({\n    mutationFn: billingApi.saveProfile,\n    onSuccess: (saved) => {\n      client.setQueryData(billingKeys.profile, saved);\n      void client.invalidateQueries({ queryKey: billingKeys.reseller });\n      form.reset(toValues(saved, userEmail));\n      toast.success(t('details.saved'));\n    },\n    onError: (error) => setFormError(applyApiError(error, form.setError, FIELDS)),\n  });\n\n  const company = kind === 'company';\n  const taxLabel = !company\n    ? t('details.taxNumberOptional')\n    : isEu(country)\n      ? t('details.vatNumber')\n      : t('details.taxNumber');\n  // The badge describes the saved number, so it goes away while it is being edited.\n  const showVerification = !!profile.taxIdType && taxIdValue === profile.taxIdValue;\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle>{t('details.title')}</CardTitle>\n        <CardDescription>{t('details.description')}</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form\n          noValidate\n          onSubmit={form.handleSubmit((values) => {\n            setFormError(null);\n            save.mutate(values);\n          })}\n        >\n          <FieldGroup>\n            <FormAlert message={formError} />\n            <FieldSet>\n              <FieldLegend variant=\"label\">{t('details.kind')}</FieldLegend>\n              <Controller\n                control={form.control}\n                name=\"kind\"\n                render={({ field }) => (\n                  <RadioGroup\n                    value={field.value}\n                    onValueChange={field.onChange}\n                    className=\"grid gap-3 sm:grid-cols-2\"\n                  >\n                    {(['company', 'individual'] as const).map((value) => (\n                      <FieldLabel key={value} htmlFor={`kind-${value}`}>\n                        <Field orientation=\"horizontal\">\n                          <FieldContent>\n                            <FieldTitle id={`kind-${value}-title`}>\n                              {t(`details.${value}`)}\n                            </FieldTitle>\n                            <FieldDescription id={`kind-${value}-description`}>\n                              {t(`details.${value}Hint`)}\n                            </FieldDescription>\n                          </FieldContent>\n                          <RadioGroupItem\n                            value={value}\n                            id={`kind-${value}`}\n                            aria-labelledby={`kind-${value}-title`}\n                            aria-describedby={`kind-${value}-description`}\n                          />\n                        </Field>\n                      </FieldLabel>\n                    ))}\n                  </RadioGroup>\n                )}\n              />\n            </FieldSet>\n\n            <TextField\n              form={form}\n              name=\"legalName\"\n              label={company ? t('details.legalNameCompany') : t('details.legalNameIndividual')}\n              autoComplete={company ? 'organization' : 'name'}\n            />\n            <div className=\"grid gap-6 md:grid-cols-2\">\n              <TextField\n                form={form}\n                name=\"billingEmail\"\n                type=\"email\"\n                label={t('details.billingEmail')}\n                hint={t('details.billingEmailHint')}\n                autoComplete=\"email\"\n              />\n              <TextField\n                form={form}\n                name=\"phone\"\n                type=\"tel\"\n                label={t('details.phone')}\n                autoComplete=\"tel\"\n              />\n            </div>\n\n            <TextField\n              form={form}\n              name=\"addressLine1\"\n              label={t('details.addressLine1')}\n              autoComplete=\"address-line1\"\n            />\n            <TextField\n              form={form}\n              name=\"addressLine2\"\n              label={t('details.addressLine2')}\n              autoComplete=\"address-line2\"\n            />\n            <div className=\"grid gap-6 md:grid-cols-2\">\n              <TextField\n                form={form}\n                name=\"postalCode\"\n                label={t('details.postalCode')}\n                autoComplete=\"postal-code\"\n              />\n              <TextField\n                form={form}\n                name=\"city\"\n                label={t('details.city')}\n                autoComplete=\"address-level2\"\n              />\n              <TextField\n                form={form}\n                name=\"region\"\n                label={t('details.region')}\n                autoComplete=\"address-level1\"\n              />\n              <Field data-invalid={!!errors.country}>\n                <FieldLabel htmlFor=\"country\">{t('details.country')}</FieldLabel>\n                <Controller\n                  control={form.control}\n                  name=\"country\"\n                  render={({ field }) => (\n                    <Select value={field.value || undefined} onValueChange={field.onChange}>\n                      <SelectTrigger\n                        id=\"country\"\n                        className=\"w-full\"\n                        aria-invalid={!!errors.country}\n                      >\n                        <SelectValue placeholder={t('details.countryPlaceholder')} />\n                      </SelectTrigger>\n                      <SelectContent>\n                        {countries.map(({ code, name }) => (\n                          <SelectItem key={code} value={code}>\n                            {name}\n                          </SelectItem>\n                        ))}\n                      </SelectContent>\n                    </Select>\n                  )}\n                />\n                <FieldError errors={[errors.country]} />\n              </Field>\n            </div>\n\n            <Field data-invalid={!!errors.taxIdValue}>\n              <div className=\"flex items-center gap-2\">\n                <FieldLabel htmlFor=\"taxIdValue\">{taxLabel}</FieldLabel>\n                {showVerification && <VerificationBadge status={profile.taxIdVerification} />}\n              </div>\n              <Input\n                id=\"taxIdValue\"\n                className=\"font-mono md:max-w-xs\"\n                aria-invalid={!!errors.taxIdValue}\n                {...form.register('taxIdValue')}\n              />\n              {showVerification && <VerificationHint status={profile.taxIdVerification} />}\n              {company && isEu(country) && (\n                <FieldDescription>{t('details.vatHint')}</FieldDescription>\n              )}\n              {!company && <FieldDescription>{t('details.taxHintIndividual')}</FieldDescription>}\n              <FieldError errors={[errors.taxIdValue]} />\n            </Field>\n\n            <div>\n              <Button type=\"submit\" disabled={save.isPending}>\n                {save.isPending && <Spinner />}\n                {t('common:actions.save')}\n              </Button>\n            </div>\n          </FieldGroup>\n        </form>\n      </CardContent>\n    </Card>\n  );\n}\n\nfunction TextField({\n  form,\n  name,\n  label,\n  hint,\n  type = 'text',\n  autoComplete,\n}: {\n  form: UseFormReturn<Values>;\n  name: TextFieldName;\n  label: string;\n  hint?: string;\n  type?: string;\n  autoComplete?: string;\n}) {\n  const error = form.formState.errors[name];\n  return (\n    <Field data-invalid={!!error}>\n      <FieldLabel htmlFor={name}>{label}</FieldLabel>\n      <Input\n        id={name}\n        type={type}\n        autoComplete={autoComplete}\n        aria-invalid={!!error}\n        {...form.register(name)}\n      />\n      {hint && <FieldDescription>{hint}</FieldDescription>}\n      <FieldError errors={[error]} />\n    </Field>\n  );\n}\n\nconst TONES: Record<string, string> = {\n  pending: 'border-warning/50 bg-warning/15 text-foreground',\n  verified: 'border-success/50 bg-success/15 text-foreground',\n  unverified: 'border-destructive/40 bg-destructive/10 text-destructive',\n};\n\nfunction VerificationBadge({ status }: { status: BillingProfile['taxIdVerification'] }) {\n  const { t } = useTranslation('billing');\n  if (status !== 'pending' && status !== 'verified' && status !== 'unverified') return null;\n  return (\n    <Badge variant=\"outline\" className={TONES[status]}>\n      {t(`details.verification.${status}`)}\n    </Badge>\n  );\n}\n\nfunction VerificationHint({ status }: { status: BillingProfile['taxIdVerification'] }) {\n  const { t } = useTranslation('billing');\n  if (status !== 'pending' && status !== 'unverified') return null;\n  return <FieldDescription>{t(`details.verificationHint.${status}`)}</FieldDescription>;\n}\n","import * as React from 'react';\nimport { cn } from 'cn';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 disabled:bg-input/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex field-sizing-content min-h-16 w-full rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm',\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Textarea };\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'sonner';\nimport type { ResellerStatus } from '@/api/types';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from '@/components/ui/dialog';\nimport { Field, FieldLabel } from '@/components/ui/field';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Spinner } from '@/components/ui/spinner';\nimport { Textarea } from '@/components/ui/textarea';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { formatDate } from '@/lib/format';\nimport { errorMessage } from '@/lib/forms';\nimport { billingApi, billingKeys } from '../api';\n\n/** Reseller prices: asked for here, decided by Eyefibr (D-061). */\nexport function ResellerCard() {\n  const { t } = useTranslation('billing');\n  const { data } = useQuery({ queryKey: billingKeys.reseller, queryFn: billingApi.reseller });\n  const latest = data?.latest;\n  const status = data?.priceList === 'reseller' ? 'approved' : latest?.status;\n\n  return (\n    <Card>\n      <CardHeader>\n        <div className=\"flex items-center gap-2\">\n          <CardTitle>{t('reseller.title')}</CardTitle>\n          {status && <Badge variant=\"secondary\">{t(`reseller.badge.${status}`)}</Badge>}\n        </div>\n        <CardDescription>{t('reseller.description')}</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col gap-4 text-sm\">\n        {!data ? <Skeleton className=\"h-9 w-56\" /> : <ResellerState status={data} />}\n      </CardContent>\n    </Card>\n  );\n}\n\nfunction ResellerState({ status }: { status: ResellerStatus }) {\n  const { t } = useTranslation('billing');\n  const latest = status.latest;\n  const note = latest?.note ? <p>{t('reseller.note', { note: latest.note })}</p> : null;\n\n  if (status.priceList === 'reseller') {\n    return (\n      <>\n        <p>{t('reseller.approved')}</p>\n        {note}\n      </>\n    );\n  }\n  if (latest?.status === 'pending') {\n    return <p>{t('reseller.pending', { date: formatDate(latest.createdAt) })}</p>;\n  }\n  return (\n    <>\n      {latest?.status === 'rejected' && (\n        <p>{t('reseller.rejected', { date: formatDate(latest.createdAt) })}</p>\n      )}\n      {latest?.status === 'revoked' && latest.decidedAt && (\n        <p>{t('reseller.revoked', { date: formatDate(latest.decidedAt) })}</p>\n      )}\n      {latest?.status !== 'approved' && note}\n      {status.canRequest ? (\n        <RequestDialog />\n      ) : (\n        <p className=\"text-muted-foreground\">{t('reseller.needsDetails')}</p>\n      )}\n    </>\n  );\n}\n\nfunction RequestDialog() {\n  const { t } = useTranslation(['billing', 'common']);\n  const client = useQueryClient();\n  const [open, setOpen] = useState(false);\n  const [message, setMessage] = useState('');\n  const [error, setError] = useState<string | null>(null);\n  const send = useMutation({\n    mutationFn: billingApi.requestReseller,\n    onSuccess: (result) => {\n      client.setQueryData(billingKeys.reseller, result);\n      setOpen(false);\n      toast.success(t('reseller.sent'));\n    },\n    onError: (failure) => setError(errorMessage(failure)),\n  });\n\n  return (\n    <Dialog open={open} onOpenChange={setOpen}>\n      <DialogTrigger asChild>\n        <Button variant=\"outline\" className=\"w-fit\">\n          {t('reseller.request')}\n        </Button>\n      </DialogTrigger>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>{t('reseller.request')}</DialogTitle>\n          <DialogDescription>{t('reseller.dialogDescription')}</DialogDescription>\n        </DialogHeader>\n        <FormAlert message={error} />\n        <Field>\n          <FieldLabel htmlFor=\"reseller-message\">{t('reseller.message')}</FieldLabel>\n          <Textarea\n            id=\"reseller-message\"\n            rows={4}\n            maxLength={2000}\n            value={message}\n            onChange={(event) => setMessage(event.target.value)}\n          />\n        </Field>\n        <DialogFooter>\n          <DialogClose asChild>\n            <Button variant=\"outline\">{t('common:actions.cancel')}</Button>\n          </DialogClose>\n          <Button onClick={() => send.mutate(message)} disabled={send.isPending}>\n            {send.isPending && <Spinner />}\n            {t('reseller.send')}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useTranslation } from 'react-i18next';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Card, CardContent } from '@/components/ui/card';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { useSession } from '@/features/auth/session';\nimport { ApiError } from '@/lib/api';\nimport { billingApi, billingKeys } from './api';\nimport { BillingDetailsCard } from './components/BillingDetailsCard';\nimport { PaymentIssuesCard, PaymentMethodsCard } from './components/PaymentParts';\nimport { ResellerCard } from './components/ResellerCard';\n\n/** Billing details, payment methods, overdue payments and reseller prices\n * (design 06). */\nexport function BillingPage() {\n  const { t } = useTranslation('billing');\n  const { data: session } = useSession();\n  const profile = useQuery({\n    queryKey: billingKeys.profile,\n    queryFn: billingApi.profile,\n    // While Stripe checks the VAT number (about a minute), look again now and then.\n    refetchInterval: (query) =>\n      query.state.data?.taxIdVerification === 'pending' ? 15_000 : false,\n  });\n\n  if (profile.error instanceof ApiError && profile.error.code === 'no_organisation') {\n    return (\n      <>\n        <PageHeader title={t('title')} />\n        <Card>\n          <CardContent className=\"text-muted-foreground py-6\">{t('noOrganisation')}</CardContent>\n        </Card>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <PageHeader title={t('title')} />\n      <div className=\"flex flex-col gap-6\">\n        {profile.data && !profile.data.isComplete && (\n          <Alert>\n            <AlertDescription>{t('details.incomplete')}</AlertDescription>\n          </Alert>\n        )}\n        {/* Wide enough: the form on the left, the shorter cards beside it. */}\n        <div className=\"grid items-start gap-6 @4xl/main:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n          {profile.data && session?.user ? (\n            <BillingDetailsCard profile={profile.data} userEmail={session.user.email} />\n          ) : (\n            <Skeleton className=\"h-96 w-full\" />\n          )}\n          <div className=\"flex flex-col gap-6\">\n            <PaymentIssuesCard />\n            {profile.data?.isComplete && <PaymentMethodsCard />}\n            {profile.data && <ResellerCard />}\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n","import { api } from '@/lib/api';\nimport type {\n  Catalog,\n  Change,\n  ChangeQuote,\n  ChangeTarget,\n  CheckoutResult,\n  NameAvailability,\n  Purchase,\n  Quote,\n  Selection,\n  Workspace,\n  WorkspaceDetail,\n} from '@/api/types';\n\nexport const workspacesApi = {\n  list: () => api<Workspace[]>('/workspaces/'),\n  detail: (id: string) => api<WorkspaceDetail>(`/workspaces/${id}`),\n  catalog: () => api<Catalog>('/catalog'),\n  nameAvailability: (name: string, signal?: AbortSignal) =>\n    api<NameAvailability>(`/workspaces/name-availability?name=${encodeURIComponent(name)}`, {\n      signal,\n    }),\n  quote: (body: Selection) => api<Quote>('/workspaces/quote', { method: 'POST', body }),\n  checkout: (body: Purchase) =>\n    api<CheckoutResult>('/workspaces/checkout', { method: 'POST', body }),\n  resumeCheckout: (id: string) => api<CheckoutResult>(`/workspaces/${id}/checkout`),\n  abandon: (id: string) => api<void>(`/workspaces/${id}/abandon`, { method: 'POST' }),\n  offer: (id: string) => api<Catalog>(`/workspaces/${id}/offer`),\n  changes: (id: string) => api<Change[]>(`/workspaces/${id}/changes`),\n  quoteChange: (id: string, body: ChangeTarget) =>\n    api<ChangeQuote>(`/workspaces/${id}/changes/quote`, { method: 'POST', body }),\n  requestChange: (id: string, body: ChangeTarget) =>\n    api<Change>(`/workspaces/${id}/changes`, { method: 'POST', body }),\n  undoChange: (id: string, changeId: number) =>\n    api<Change>(`/workspaces/${id}/changes/${changeId}`, { method: 'DELETE' }),\n  cancel: (id: string) => api<Change>(`/workspaces/${id}/cancel`, { method: 'POST' }),\n  undoCancel: (id: string) => api<Change>(`/workspaces/${id}/undo-cancel`, { method: 'POST' }),\n};\n\nexport const workspaceKeys = {\n  list: ['workspaces'] as const,\n  detail: (id: string) => ['workspaces', id] as const,\n  checkout: (id: string) => ['workspaces', id, 'checkout'] as const,\n  offer: (id: string) => ['workspaces', id, 'offer'] as const,\n  changes: (id: string) => ['workspaces', id, 'changes'] as const,\n  catalog: ['catalog'] as const,\n};\n\n/** While something is changing, look again every few seconds. */\nexport function changing(status: { code: string } | undefined): boolean {\n  return ['awaiting_payment', 'payment_processing', 'setting_up', 'updating'].includes(\n    status?.code ?? '',\n  );\n}\n","import type { Catalog, CatalogFeature, CatalogPack, CatalogPlan } from '@/api/types';\n\nexport type CatalogPrice = CatalogPlan['prices'][number];\n\n/** What the plan picker chooses: a plan, its billing interval, pack\n * quantities and the features bought on their own (D-076). */\nexport interface Selection {\n  plan: string;\n  interval: 'month' | 'year';\n  packs: Record<string, number>;\n  features: string[];\n}\n\nexport function priceOf(\n  item: CatalogPlan | CatalogPack | CatalogFeature,\n  interval: string,\n): CatalogPrice | undefined {\n  return item.prices.find((price) => price.interval === interval);\n}\n\n/** The intervals a catalog offers; resellers buy yearly only (D-038). */\nexport function intervalsOf(catalog: Catalog): Selection['interval'][] {\n  return (['month', 'year'] as const).filter((interval) =>\n    catalog.plans.some((plan) => priceOf(plan, interval)),\n  );\n}\n\n/** Whether a plan includes a feature, so it isn't bought on its own. */\nexport function includes(catalog: Catalog, plan: string, feature: string): boolean {\n  return catalog.plans.some(\n    (item) => item.key === plan && item.features.some((included) => included.key === feature),\n  );\n}\n","import { useTranslation } from 'react-i18next';\nimport type { Catalog } from '@/api/types';\nimport { Badge } from '@/components/ui/badge';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport {\n  Field,\n  FieldContent,\n  FieldDescription,\n  FieldLabel,\n  FieldLegend,\n  FieldSet,\n  FieldTitle,\n} from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';\nimport { formatMoney } from '@/lib/format';\nimport { type CatalogPrice, includes, intervalsOf, priceOf, type Selection } from './selection';\n\nconst MAX_PACKS = 100;\n\nexport type { Selection };\n\n/** Plans, interval, packs and features sold on their own (design 06, D-076),\n * as in the wizard's first step. Net prices \"+ VAT\", or VAT included for\n * individuals (D-024). `current` marks what a running workspace has. */\nexport function PlanPicker({\n  catalog,\n  value,\n  onChange,\n  current,\n  packsHint,\n  featuresHint,\n}: {\n  catalog: Catalog;\n  value: Selection;\n  onChange: (changes: Partial<Selection>) => void;\n  current?: Selection;\n  packsHint?: string;\n  featuresHint?: string;\n}) {\n  const { t } = useTranslation('workspaces');\n  const intervals = intervalsOf(catalog);\n  const interval = intervals.includes(value.interval) ? value.interval : (intervals[0] ?? 'year');\n  const plans = catalog.plans.filter((plan) => priceOf(plan, interval));\n  const packs = catalog.packs.filter((pack) => priceOf(pack, interval));\n  const features = catalog.features.filter((feature) => priceOf(feature, interval));\n  // A feature the plan includes isn't bought again (D-076).\n  const choosePlan = (plan: string) =>\n    onChange({\n      plan,\n      interval,\n      features: value.features.filter((feature) => !includes(catalog, plan, feature)),\n    });\n  const per = t(`new.per.${interval}`);\n  // Individuals whose country is known see VAT included (D-024); others, + VAT.\n  const shown = (price?: CatalogPrice) => price?.vatInclusiveAmount ?? price?.unitAmount ?? 0;\n  const vatNote = (price?: CatalogPrice) =>\n    price?.vatInclusiveAmount != null ? t('new.inclVat') : t('new.plusVat');\n\n  return (\n    <div className=\"flex flex-col gap-8\">\n      {intervals.length > 1 ? (\n        <FieldSet>\n          <FieldLegend variant=\"label\">{t('new.plan.interval')}</FieldLegend>\n          <RadioGroup\n            value={interval}\n            onValueChange={(next) => onChange({ interval: next as Selection['interval'] })}\n            className=\"grid gap-3 sm:grid-cols-2\"\n          >\n            {intervals.map((option) => (\n              <FieldLabel key={option} htmlFor={`interval-${option}`}>\n                <Field orientation=\"horizontal\">\n                  <FieldContent>\n                    <FieldTitle id={`interval-${option}-title`}>\n                      {t(`new.plan.${option}`)}\n                    </FieldTitle>\n                  </FieldContent>\n                  <RadioGroupItem\n                    value={option}\n                    id={`interval-${option}`}\n                    aria-labelledby={`interval-${option}-title`}\n                  />\n                </Field>\n              </FieldLabel>\n            ))}\n          </RadioGroup>\n        </FieldSet>\n      ) : (\n        <p className=\"text-muted-foreground text-sm\">{t('new.plan.yearlyOnly')}</p>\n      )}\n\n      <FieldSet>\n        <FieldLegend variant=\"label\">{t('new.plan.plan')}</FieldLegend>\n        <RadioGroup\n          value={value.plan}\n          onValueChange={choosePlan}\n          className=\"grid items-stretch gap-3 @4xl/main:grid-cols-3\"\n        >\n          {plans.map((plan) => (\n            <FieldLabel key={plan.key} htmlFor={`plan-${plan.key}`}>\n              <Field orientation=\"horizontal\" className=\"items-start\">\n                <FieldContent>\n                  <FieldTitle id={`plan-${plan.key}-title`}>\n                    {plan.name}\n                    {current?.plan === plan.key && (\n                      <Badge variant=\"outline\">{t('change.current')}</Badge>\n                    )}\n                  </FieldTitle>\n                  <p id={`plan-${plan.key}-price`} className=\"text-lg font-semibold\">\n                    {formatMoney(shown(priceOf(plan, interval)))}{' '}\n                    <span className=\"text-muted-foreground text-sm font-normal\">\n                      {per} {vatNote(priceOf(plan, interval))}\n                    </span>\n                  </p>\n                  <FieldDescription id={`plan-${plan.key}-description`}>\n                    {plan.description}\n                  </FieldDescription>\n                  <ul className=\"text-muted-foreground mt-2 flex flex-col gap-1 text-sm\">\n                    {LIMITS.map((name) => (\n                      <li key={name}>\n                        <Limit name={name} value={plan.limits[name]} />\n                      </li>\n                    ))}\n                    {plan.features.map((feature) => (\n                      <li key={feature.key}>{feature.title}</li>\n                    ))}\n                  </ul>\n                </FieldContent>\n                {/* Named by its title and price, not by the whole card (WCAG 4.1.2). */}\n                <RadioGroupItem\n                  value={plan.key}\n                  id={`plan-${plan.key}`}\n                  aria-labelledby={`plan-${plan.key}-title plan-${plan.key}-price`}\n                  aria-describedby={`plan-${plan.key}-description`}\n                />\n              </Field>\n            </FieldLabel>\n          ))}\n        </RadioGroup>\n      </FieldSet>\n\n      {packs.length > 0 && (\n        <FieldSet>\n          <FieldLegend variant=\"label\">{t('new.plan.packs')}</FieldLegend>\n          <FieldDescription>{packsHint ?? t('new.plan.packsHint')}</FieldDescription>\n          <div className=\"grid gap-3 @4xl/main:grid-cols-2\">\n            {packs.map((pack) => (\n              <Field key={pack.key} orientation=\"horizontal\" className=\"border p-4\">\n                <FieldContent>\n                  <FieldLabel htmlFor={`pack-${pack.key}`}>{pack.name}</FieldLabel>\n                  <FieldDescription>\n                    {t('new.plan.each', {\n                      price: formatMoney(shown(priceOf(pack, interval))),\n                      vat: vatNote(priceOf(pack, interval)),\n                      per,\n                    })}\n                  </FieldDescription>\n                </FieldContent>\n                <Input\n                  id={`pack-${pack.key}`}\n                  type=\"number\"\n                  inputMode=\"numeric\"\n                  min={0}\n                  max={pack.maxQuantity ?? MAX_PACKS}\n                  className=\"w-20\"\n                  value={value.packs[pack.key] ?? 0}\n                  onChange={(event) => {\n                    const max = pack.maxQuantity ?? MAX_PACKS;\n                    const quantity = Math.min(max, Math.max(0, Number(event.target.value) || 0));\n                    onChange({ packs: { ...value.packs, [pack.key]: quantity } });\n                  }}\n                />\n              </Field>\n            ))}\n          </div>\n        </FieldSet>\n      )}\n\n      {features.length > 0 && (\n        <FieldSet>\n          <FieldLegend variant=\"label\">{t('new.plan.features')}</FieldLegend>\n          <FieldDescription>{featuresHint ?? t('new.plan.featuresHint')}</FieldDescription>\n          <div className=\"grid gap-3 @4xl/main:grid-cols-2\">\n            {features.map((feature) => {\n              const included = includes(catalog, value.plan, feature.key);\n              const chosen = value.features.includes(feature.key);\n              return (\n                <FieldLabel key={feature.key} htmlFor={`feature-${feature.key}`}>\n                  <Field orientation=\"horizontal\" data-disabled={included || undefined}>\n                    <Checkbox\n                      id={`feature-${feature.key}`}\n                      aria-labelledby={`feature-${feature.key}-title`}\n                      aria-describedby={`feature-${feature.key}-price`}\n                      checked={included || chosen}\n                      disabled={included}\n                      onCheckedChange={(checked) =>\n                        onChange({\n                          features: checked\n                            ? [...value.features, feature.key]\n                            : value.features.filter((key) => key !== feature.key),\n                        })\n                      }\n                    />\n                    <FieldContent>\n                      <FieldTitle id={`feature-${feature.key}-title`}>\n                        {feature.title}\n                        {current?.features.includes(feature.key) && (\n                          <Badge variant=\"outline\">{t('change.current')}</Badge>\n                        )}\n                      </FieldTitle>\n                      <FieldDescription id={`feature-${feature.key}-price`}>\n                        {included\n                          ? t('new.plan.included')\n                          : t('new.plan.featurePrice', {\n                              price: formatMoney(shown(priceOf(feature, interval))),\n                              vat: vatNote(priceOf(feature, interval)),\n                              per,\n                            })}\n                      </FieldDescription>\n                      {feature.description && (\n                        <FieldDescription>{feature.description}</FieldDescription>\n                      )}\n                    </FieldContent>\n                  </Field>\n                </FieldLabel>\n              );\n            })}\n          </div>\n        </FieldSet>\n      )}\n    </div>\n  );\n}\n\nconst LIMITS = ['users', 'projects', 'cableKm', 'storageGb'] as const;\n\nfunction Limit({ name, value }: { name: (typeof LIMITS)[number]; value: number | null }) {\n  const { t } = useTranslation('workspaces');\n  return value === null\n    ? t(`new.limits.${name}Unlimited`)\n    : t(`new.limits.${name}`, { count: value });\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useNavigate, useParams, useSearchParams } from 'react-router';\nimport { toast } from 'sonner';\nimport type { ChangeQuote, WorkspaceDetail } from '@/api/types';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Spinner } from '@/components/ui/spinner';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { ApiError } from '@/lib/api';\nimport { formatDate, formatMoney } from '@/lib/format';\nimport { workspacesApi, workspaceKeys } from '../api';\nimport { PlanPicker, type Selection } from '../components/PlanPicker';\n\nfunction currentOf(workspace: WorkspaceDetail): Selection {\n  return {\n    plan: workspace.plan.key,\n    interval: workspace.subscription?.interval ?? 'month',\n    packs: Object.fromEntries(workspace.packs.map((pack) => [pack.key, pack.quantity])),\n    features: workspace.addedFeatures.map((feature) => feature.key),\n  };\n}\n\nfunction same(a: Selection, b: Selection): boolean {\n  const packs = (s: Selection) =>\n    JSON.stringify(\n      Object.entries(s.packs)\n        .filter(([, quantity]) => quantity > 0)\n        .sort(),\n    );\n  const features = (s: Selection) => JSON.stringify([...s.features].sort());\n  return (\n    a.plan === b.plan &&\n    a.interval === b.interval &&\n    packs(a) === packs(b) &&\n    features(a) === features(b)\n  );\n}\n\nfunction body(selection: Selection, prorationDate?: number | null) {\n  return {\n    plan: selection.plan,\n    interval: selection.interval,\n    packs: Object.entries(selection.packs).map(([key, quantity]) => ({ key, quantity })),\n    features: selection.features,\n    ...(prorationDate ? { prorationDate } : {}),\n  };\n}\n\n/** Change a paid workspace's plan, packs, features or billing interval (design 06): pick,\n * see what it costs and when it happens, confirm (D-031 to D-033). */\nexport function ChangePage() {\n  const { t } = useTranslation('workspaces');\n  const { id = '' } = useParams();\n  const [params] = useSearchParams();\n  const navigate = useNavigate();\n  const client = useQueryClient();\n  const workspace = useQuery({\n    queryKey: workspaceKeys.detail(id),\n    queryFn: () => workspacesApi.detail(id),\n  });\n  const offer = useQuery({\n    queryKey: workspaceKeys.offer(id),\n    queryFn: () => workspacesApi.offer(id),\n  });\n  const [selection, setSelection] = useState<Selection | null>(null);\n  const [quote, setQuote] = useState<ChangeQuote | null>(null);\n  const [error, setError] = useState<string | null>(null);\n\n  const current = workspace.data ? currentOf(workspace.data) : null;\n  const wanted =\n    selection ??\n    (current\n      ? {\n          ...current,\n          interval: params.get('interval') === 'year' ? ('year' as const) : current.interval,\n        }\n      : null);\n\n  const review = useMutation({\n    mutationFn: (choice: Selection) => workspacesApi.quoteChange(id, body(choice)),\n    onSuccess: (result) => {\n      setQuote(result);\n      setError(null);\n    },\n    onError: (failure) =>\n      setError(failure instanceof ApiError ? failure.message : t('new.review.failed')),\n  });\n  const confirm = useMutation({\n    mutationFn: (choice: Selection) =>\n      workspacesApi.requestChange(id, body(choice, quote?.prorationDate)),\n    onSuccess: (change) => {\n      void client.invalidateQueries({ queryKey: ['workspaces'] });\n      if (change.status === 'reverted') toast.error(t('change.done.reverted'));\n      else\n        toast.success(\n          t(\n            `change.done.${change.status === 'applied' ? 'applied' : change.status === 'scheduled' ? 'scheduled' : 'awaiting'}`,\n          ),\n        );\n      void navigate(`/workspaces/${id}`);\n    },\n    onError: (failure) =>\n      setError(failure instanceof ApiError ? failure.message : t('new.review.failed')),\n  });\n\n  const back = (\n    <Button asChild variant=\"ghost\" size=\"sm\">\n      <Link to={`/workspaces/${id}`}>{t('change.back')}</Link>\n    </Button>\n  );\n  if (!workspace.data || !offer.data || !wanted || !current) {\n    return (\n      <>\n        <PageHeader title={t('change.title')}>{back}</PageHeader>\n        <Skeleton className=\"h-96 w-full\" />\n      </>\n    );\n  }\n\n  const change = (changes: Partial<Selection>) => {\n    setSelection({ ...wanted, ...changes });\n    setQuote(null);\n    setError(null);\n  };\n  const money = (cents: number) => formatMoney(cents);\n\n  return (\n    <>\n      <PageHeader title={t('change.titleFor', { name: workspace.data.name })}>{back}</PageHeader>\n      <div className=\"flex flex-col gap-8\">\n        <PlanPicker\n          catalog={offer.data}\n          value={wanted}\n          onChange={change}\n          current={current}\n          packsHint={t('change.packsHint')}\n          featuresHint={t('change.featuresHint')}\n        />\n        <FormAlert message={error} />\n        {quote ? (\n          <Card className=\"max-w-2xl\">\n            <CardHeader>\n              <CardTitle>{t(`change.quote.${quote.timing === 'now' ? 'now' : 'later'}`)}</CardTitle>\n              <CardDescription>{quote.summary}</CardDescription>\n            </CardHeader>\n            <CardContent className=\"flex flex-col gap-4 text-sm\">\n              {quote.timing === 'now' ? (\n                <>\n                  <table className=\"w-full\">\n                    <tbody>\n                      {quote.lines.map((line) => (\n                        <tr key={line.description} className=\"border-b\">\n                          <td className=\"py-2\">{line.description}</td>\n                          <td className=\"py-2 text-right\">{money(line.amount)}</td>\n                        </tr>\n                      ))}\n                    </tbody>\n                    <tfoot>\n                      <tr>\n                        <td className=\"pt-2\">{t('new.review.vat')}</td>\n                        <td className=\"pt-2 text-right\">{money(quote.tax ?? 0)}</td>\n                      </tr>\n                      <tr className=\"font-semibold\">\n                        <td className=\"pt-1\">{t('change.quote.chargedNow')}</td>\n                        <td className=\"pt-1 text-right\">{money(quote.total ?? 0)}</td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                  <p className=\"text-muted-foreground\">\n                    {quote.kind === 'to_yearly'\n                      ? t('change.quote.paymentNoteYearly')\n                      : t('change.quote.paymentNote')}\n                  </p>\n                </>\n              ) : (\n                <p>\n                  {t('change.quote.on', {\n                    date: quote.effectiveOn ? formatDate(quote.effectiveOn) : '',\n                  })}\n                </p>\n              )}\n              <p className=\"text-muted-foreground\">\n                {t(`change.quote.recurring.${quote.interval}`, { amount: money(quote.recurring) })}\n              </p>\n              <div className=\"flex justify-end gap-2\">\n                <Button variant=\"outline\" onClick={() => setQuote(null)}>\n                  {t('new.back')}\n                </Button>\n                <Button disabled={confirm.isPending} onClick={() => confirm.mutate(wanted)}>\n                  {confirm.isPending && <Spinner />}\n                  {quote.timing === 'now'\n                    ? t('change.confirmNow', { amount: money(quote.total ?? 0) })\n                    : t('change.confirmLater')}\n                </Button>\n              </div>\n            </CardContent>\n          </Card>\n        ) : (\n          <div className=\"flex justify-end\">\n            <Button\n              disabled={same(wanted, current) || review.isPending}\n              onClick={() => review.mutate(wanted)}\n            >\n              {review.isPending && <Spinner />}\n              {t('change.review')}\n            </Button>\n          </div>\n        )}\n      </div>\n    </>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { useSession } from '@/features/auth/session';\nimport { billingApi, billingKeys } from '@/features/billing/api';\nimport { BillingDetailsCard } from '@/features/billing/components/BillingDetailsCard';\nimport { countryOptions } from '@/lib/countries';\n\n/** Step 3 (design 06): the same billing details form as the Billing page\n * (D-014); a one-line summary when they are already complete. */\nexport function BillingStep({ onBack, onNext }: { onBack: () => void; onNext: () => void }) {\n  const { t } = useTranslation('workspaces');\n  const { data: session } = useSession();\n  const { data: profile } = useQuery({\n    queryKey: billingKeys.profile,\n    queryFn: billingApi.profile,\n  });\n  const [editing, setEditing] = useState(false);\n  if (!profile || !session?.user) return <Skeleton className=\"h-96 w-full\" />;\n\n  const country = countryOptions().find((option) => option.code === profile.country)?.name;\n  const summary = [profile.legalName, profile.city, country].filter(Boolean).join(', ');\n\n  return (\n    <div className=\"flex flex-col gap-8\">\n      {profile.isComplete && !editing ? (\n        <Card className=\"max-w-xl\">\n          <CardHeader>\n            <CardTitle>{t('new.billing.title')}</CardTitle>\n            <CardDescription>{t('new.billing.hint')}</CardDescription>\n          </CardHeader>\n          <CardContent className=\"flex items-center justify-between gap-4\">\n            <p className=\"text-sm\">\n              {summary}\n              {profile.taxIdValue && (\n                <span className=\"text-muted-foreground\"> · {profile.taxIdValue}</span>\n              )}\n            </p>\n            <Button variant=\"outline\" size=\"sm\" onClick={() => setEditing(true)}>\n              {t('new.billing.edit')}\n            </Button>\n          </CardContent>\n        </Card>\n      ) : (\n        <BillingDetailsCard profile={profile} userEmail={session.user.email} />\n      )}\n      <div className=\"flex justify-between\">\n        <Button variant=\"outline\" onClick={onBack}>\n          {t('new.back')}\n        </Button>\n        <Button\n          disabled={!profile.isComplete}\n          onClick={() => {\n            setEditing(false);\n            onNext();\n          }}\n        >\n          {t('new.continue')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n","import type { Purchase, Selection } from '@/api/types';\n\n/** What the customer has chosen so far. Kept in session storage, so a reload\n * or a return from the bank resumes where it stopped (design 06). */\nexport interface Draft {\n  plan: string;\n  interval: 'month' | 'year';\n  packs: Record<string, number>;\n  features: string[];\n  name: string;\n  adminUsername: string;\n  adminEmail: string;\n  /** The unpaid workspace of the last checkout, replaced by a new checkout. */\n  workspaceId?: string;\n}\n\nexport const STEPS = ['plan', 'workspace', 'billing', 'review', 'pay'] as const;\nexport type Step = (typeof STEPS)[number];\n\nconst KEY = 'maestro:new-workspace';\n\nexport const EMPTY: Draft = {\n  plan: '',\n  interval: 'month',\n  packs: {},\n  features: [],\n  name: '',\n  adminUsername: '',\n  adminEmail: '',\n};\n\nexport function loadDraft(): Draft {\n  try {\n    const stored = sessionStorage.getItem(KEY);\n    return stored ? { ...EMPTY, ...(JSON.parse(stored) as Partial<Draft>) } : { ...EMPTY };\n  } catch {\n    return { ...EMPTY };\n  }\n}\n\nexport function saveDraft(draft: Draft): void {\n  try {\n    sessionStorage.setItem(KEY, JSON.stringify(draft));\n  } catch {\n    // Private mode or storage full: the wizard still works, without resuming.\n  }\n}\n\nexport function clearDraft(): void {\n  try {\n    sessionStorage.removeItem(KEY);\n  } catch {\n    // Nothing to clear.\n  }\n}\n\n/** The furthest step the draft allows: later steps send the customer back\n * there. Billing details are not in the draft; the quote checks them. */\nexport function firstOpenStep(draft: Draft): Step {\n  if (!draft.plan) return 'plan';\n  if (!draft.name || !draft.adminUsername || !draft.adminEmail) return 'workspace';\n  return 'review';\n}\n\nexport function selection(draft: Draft): Selection {\n  return {\n    plan: draft.plan,\n    interval: draft.interval,\n    packs: Object.entries(draft.packs)\n      .filter(([, quantity]) => quantity > 0)\n      .map(([key, quantity]) => ({ key, quantity })),\n    features: draft.features,\n  };\n}\n\nexport function purchase(draft: Draft, consents: Purchase['consents']): Purchase {\n  return {\n    ...selection(draft),\n    name: draft.name,\n    adminUsername: draft.adminUsername,\n    adminEmail: draft.adminEmail,\n    consents,\n  };\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nfunction _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nfunction _defineProperty(e, r, t) {\n  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: true,\n    configurable: true,\n    writable: true\n  }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = true,\n      o = false;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = true, n = r;\n    } finally {\n      try {\n        if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = _objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nfunction _slicedToArray(r, e) {\n  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r);\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n  }\n}\n\nvar useAttachEvent = function useAttachEvent(element, event, cb) {\n  var cbDefined = !!cb;\n  var cbRef = React.useRef(cb);\n  // In many integrations the callback prop changes on each render.\n  // Using a ref saves us from calling element.on/.off every render.\n  React.useEffect(function () {\n    cbRef.current = cb;\n  }, [cb]);\n  React.useEffect(function () {\n    if (!cbDefined || !element) {\n      return function () {};\n    }\n    var decoratedCb = function decoratedCb() {\n      if (cbRef.current) {\n        return cbRef.current.apply(cbRef, arguments);\n      }\n      return undefined;\n    };\n    element.on(event, decoratedCb);\n    return function () {\n      element.off(event, decoratedCb);\n    };\n  }, [cbDefined, event, element, cbRef]);\n};\n\nvar usePrevious = function usePrevious(value) {\n  var ref = React.useRef(value);\n  React.useEffect(function () {\n    ref.current = value;\n  }, [value]);\n  return ref.current;\n};\n\nvar isUnknownObject = function isUnknownObject(raw) {\n  return raw !== null && _typeof(raw) === 'object';\n};\nvar isPromise = function isPromise(raw) {\n  return isUnknownObject(raw) && typeof raw.then === 'function';\n};\n// We are using types to enforce the `stripe` prop in this lib,\n// but in an untyped integration `stripe` could be anything, so we need\n// to do some sanity validation to prevent type errors.\nvar isStripe = function isStripe(raw) {\n  return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n};\n\nvar PLAIN_OBJECT_STR = '[object Object]';\nvar isEqual = function isEqual(left, right) {\n  if (left === right) {\n    return true;\n  }\n  if (!isUnknownObject(left) || !isUnknownObject(right)) {\n    return left === right;\n  }\n  var leftArray = Array.isArray(left);\n  var rightArray = Array.isArray(right);\n  if (leftArray !== rightArray) return false;\n  var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n  var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n  if (leftPlainObject !== rightPlainObject) return false;\n  // not sure what sort of special object this is (regexp is one option), so\n  // fallback to reference check.\n  if (!leftPlainObject && !leftArray) return left === right;\n  var leftKeys = Object.keys(left);\n  var rightKeys = Object.keys(right);\n  if (leftKeys.length !== rightKeys.length) return false;\n  var keySet = {};\n  for (var i = 0; i < leftKeys.length; i += 1) {\n    keySet[leftKeys[i]] = true;\n  }\n  for (var _i = 0; _i < rightKeys.length; _i += 1) {\n    keySet[rightKeys[_i]] = true;\n  }\n  var allKeys = Object.keys(keySet);\n  if (allKeys.length !== leftKeys.length) {\n    return false;\n  }\n  var l = left;\n  var r = right;\n  var pred = function pred(key) {\n    return isEqual(l[key], r[key]);\n  };\n  return allKeys.every(pred);\n};\n\nvar extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n  if (!isUnknownObject(options)) {\n    return null;\n  }\n  return Object.keys(options).reduce(function (newOptions, key) {\n    var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n    if (immutableKeys.includes(key)) {\n      if (isUpdated) {\n        console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n      }\n      return newOptions;\n    }\n    if (!isUpdated) {\n      return newOptions;\n    }\n    return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n  }, null);\n};\n\nvar INVALID_STRIPE_ERROR$1 = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n// We are using types to enforce the `stripe` prop in this lib, but in a real\n// integration `stripe` could be anything, so we need to do some sanity\n// validation to prevent type errors.\nvar validateStripe = function validateStripe(maybeStripe) {\n  var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$1;\n  if (maybeStripe === null || isStripe(maybeStripe)) {\n    return maybeStripe;\n  }\n  throw new Error(errorMsg);\n};\nvar parseStripeProp = function parseStripeProp(raw) {\n  var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$1;\n  if (isPromise(raw)) {\n    return {\n      tag: 'async',\n      stripePromise: Promise.resolve(raw).then(function (result) {\n        return validateStripe(result, errorMsg);\n      })\n    };\n  }\n  var stripe = validateStripe(raw, errorMsg);\n  if (stripe === null) {\n    return {\n      tag: 'empty'\n    };\n  }\n  return {\n    tag: 'sync',\n    stripe: stripe\n  };\n};\n\nvar registerWithStripeJs = function registerWithStripeJs(stripe) {\n  if (!stripe || !stripe._registerWrapper || !stripe.registerAppInfo) {\n    return;\n  }\n  stripe._registerWrapper({\n    name: 'react-stripe-js',\n    version: \"7.0.0\"\n  });\n  stripe.registerAppInfo({\n    name: 'react-stripe-js',\n    version: \"7.0.0\",\n    url: 'https://stripe.com/docs/stripe-js/react'\n  });\n};\n\nvar ElementsContext = /*#__PURE__*/React.createContext(null);\nElementsContext.displayName = 'ElementsContext';\nvar parseElementsContext = function parseElementsContext(ctx, useCase) {\n  if (!ctx) {\n    throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n  }\n  return ctx;\n};\n/**\n * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n *\n * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n * Pass the returned `Promise` to `Elements`.\n *\n * @docs https://docs.stripe.com/sdks/stripejs-react?ui=elements#elements-provider\n */\nvar Elements = function Elements(_ref) {\n  var rawStripeProp = _ref.stripe,\n    options = _ref.options,\n    children = _ref.children;\n  var parsed = React.useMemo(function () {\n    return parseStripeProp(rawStripeProp);\n  }, [rawStripeProp]);\n  // For a sync stripe instance, initialize into context\n  var _React$useState = React.useState(function () {\n      return {\n        stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n        elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n      };\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    ctx = _React$useState2[0],\n    setContext = _React$useState2[1];\n  // Ref to ensure we only create one elements instance, even in React 19 StrictMode\n  var elementsInitializedRef = React.useRef(false);\n  React.useEffect(function () {\n    var isMounted = true;\n    var safeSetContext = function safeSetContext(stripe) {\n      setContext(function (ctx) {\n        // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n        if (ctx.stripe) return ctx;\n        // add ref check to ensure we only create one elements instance compatible with React 19 StrictMode\n        if (elementsInitializedRef.current) return ctx;\n        elementsInitializedRef.current = true;\n        return {\n          stripe: stripe,\n          elements: stripe.elements(options)\n        };\n      });\n    };\n    // For an async stripePromise, store it in context once resolved\n    if (parsed.tag === 'async' && !ctx.stripe) {\n      parsed.stripePromise.then(function (stripe) {\n        if (stripe && isMounted) {\n          // Only update Elements context if the component is still mounted\n          // and stripe is not null. We allow stripe to be null to make\n          // handling SSR easier.\n          safeSetContext(stripe);\n        }\n      });\n    } else if (parsed.tag === 'sync' && !ctx.stripe) {\n      // Or, handle a sync stripe instance going from null -> populated\n      safeSetContext(parsed.stripe);\n    }\n    return function () {\n      isMounted = false;\n      elementsInitializedRef.current = false;\n    };\n  }, [parsed, ctx, options]);\n  // Warn on changes to stripe prop\n  var prevStripe = usePrevious(rawStripeProp);\n  React.useEffect(function () {\n    if (prevStripe !== null && prevStripe !== rawStripeProp) {\n      console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n    }\n  }, [prevStripe, rawStripeProp]);\n  // Apply updates to elements when options prop has relevant changes\n  var prevOptions = usePrevious(options);\n  React.useEffect(function () {\n    if (!ctx.elements) {\n      return;\n    }\n    var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n    if (updates) {\n      ctx.elements.update(updates);\n    }\n  }, [options, prevOptions, ctx.elements]);\n  // Attach react-stripe-js version to stripe.js instance\n  React.useEffect(function () {\n    registerWithStripeJs(ctx.stripe);\n  }, [ctx.stripe]);\n  return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n    value: ctx\n  }, children);\n};\nElements.propTypes = {\n  stripe: PropTypes.any,\n  options: PropTypes.object\n};\nvar useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n  var ctx = React.useContext(ElementsContext);\n  return parseElementsContext(ctx, useCaseMessage);\n};\n/**\n * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n */\nvar useElements = function useElements() {\n  var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n    elements = _useElementsContextWi.elements;\n  return elements;\n};\n/**\n * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n */\nvar ElementsConsumer = function ElementsConsumer(_ref2) {\n  var children = _ref2.children;\n  var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>');\n  // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n  return children(ctx);\n};\nElementsConsumer.propTypes = {\n  children: PropTypes.func.isRequired\n};\n\nvar CheckoutContext = /*#__PURE__*/React.createContext(null);\nCheckoutContext.displayName = 'CheckoutContext';\n// Element wrappers and useStripe need SDK references, not session updates.\n// A non-null value also identifies a checkout provider before initialization.\nvar CheckoutSdkContext = /*#__PURE__*/React.createContext(null);\nCheckoutSdkContext.displayName = 'CheckoutSdkContext';\nvar useElementsOrCheckoutContextWithUseCase = function useElementsOrCheckoutContextWithUseCase(useCaseString) {\n  var checkout = React.useContext(CheckoutSdkContext);\n  var elements = React.useContext(ElementsContext);\n  if (checkout) {\n    if (elements) {\n      throw new Error(\"You cannot wrap the part of your app that \".concat(useCaseString, \" in both a checkout provider and <Elements> provider.\"));\n    } else {\n      return checkout;\n    }\n  } else {\n    return parseElementsContext(elements, useCaseString);\n  }\n};\n\nvar _excluded = [\"mode\"];\nvar capitalized = function capitalized(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n};\nvar createElementComponent = function createElementComponent(type, isServer, customDisplayName) {\n  var displayName = \"\".concat(capitalized(type), \"Element\");\n  var ClientElement = function ClientElement(_ref) {\n    var id = _ref.id,\n      className = _ref.className,\n      _ref$options = _ref.options,\n      options = _ref$options === void 0 ? {} : _ref$options,\n      onBlur = _ref.onBlur,\n      onFocus = _ref.onFocus,\n      onReady = _ref.onReady,\n      onChange = _ref.onChange,\n      onEscape = _ref.onEscape,\n      onClick = _ref.onClick,\n      onLoadError = _ref.onLoadError,\n      onLoaderStart = _ref.onLoaderStart,\n      onNetworksChange = _ref.onNetworksChange,\n      onConfirm = _ref.onConfirm,\n      onCancel = _ref.onCancel,\n      onShippingAddressChange = _ref.onShippingAddressChange,\n      onShippingRateChange = _ref.onShippingRateChange,\n      onSavedPaymentMethodRemove = _ref.onSavedPaymentMethodRemove,\n      onSavedPaymentMethodUpdate = _ref.onSavedPaymentMethodUpdate,\n      onAvailablePaymentMethodsChange = _ref.onAvailablePaymentMethodsChange;\n    var ctx = useElementsOrCheckoutContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n    var elements = 'elements' in ctx ? ctx.elements : null;\n    var checkoutSdk = 'checkoutSdk' in ctx ? ctx.checkoutSdk : null;\n    var _React$useState = React.useState(null),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      element = _React$useState2[0],\n      setElement = _React$useState2[1];\n    var elementRef = React.useRef(null);\n    var domNode = React.useRef(null);\n    // For every event where the merchant provides a callback, call element.on\n    // with that callback. If the merchant ever changes the callback, removes\n    // the old callback with element.off and then call element.on with the new one.\n    useAttachEvent(element, 'blur', onBlur);\n    useAttachEvent(element, 'focus', onFocus);\n    useAttachEvent(element, 'escape', onEscape);\n    useAttachEvent(element, 'click', onClick);\n    useAttachEvent(element, 'loaderror', onLoadError);\n    useAttachEvent(element, 'loaderstart', onLoaderStart);\n    useAttachEvent(element, 'networkschange', onNetworksChange);\n    useAttachEvent(element, 'confirm', onConfirm);\n    useAttachEvent(element, 'cancel', onCancel);\n    useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n    useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n    useAttachEvent(element, 'savedpaymentmethodremove', onSavedPaymentMethodRemove);\n    useAttachEvent(element, 'savedpaymentmethodupdate', onSavedPaymentMethodUpdate);\n    useAttachEvent(element, 'availablepaymentmethodschange', onAvailablePaymentMethodsChange);\n    useAttachEvent(element, 'change', onChange);\n    var readyCallback;\n    if (onReady) {\n      if (type === 'expressCheckout') {\n        // Passes through the event, which includes visible PM types\n        readyCallback = onReady;\n      } else {\n        // For other Elements, pass through the Element itself.\n        readyCallback = function readyCallback() {\n          onReady(element);\n        };\n      }\n    }\n    useAttachEvent(element, 'ready', readyCallback);\n    React.useLayoutEffect(function () {\n      if (elementRef.current === null && domNode.current !== null && (elements || checkoutSdk)) {\n        var newElement = null;\n        if (checkoutSdk) {\n          var elementsSdk = checkoutSdk;\n          var formSdk = checkoutSdk;\n          switch (type) {\n            case 'paymentForm':\n              newElement = formSdk.createForm(options);\n              break;\n            case 'payment':\n              newElement = elementsSdk.createPaymentElement(options);\n              break;\n            case 'address':\n              if ('mode' in options) {\n                var mode = options.mode,\n                  restOptions = _objectWithoutProperties(options, _excluded);\n                if (mode === 'shipping') {\n                  newElement = elementsSdk.createShippingAddressElement(restOptions);\n                } else if (mode === 'billing') {\n                  newElement = elementsSdk.createBillingAddressElement(restOptions);\n                } else {\n                  throw new Error(\"Invalid options.mode. mode must be 'billing' or 'shipping'.\");\n                }\n              } else {\n                throw new Error(\"You must supply options.mode. mode must be 'billing' or 'shipping'.\");\n              }\n              break;\n            case 'expressCheckout':\n              newElement = elementsSdk.createExpressCheckoutElement(options);\n              break;\n            case 'currencySelector':\n              newElement = checkoutSdk.createCurrencySelectorElement();\n              break;\n            case 'taxId':\n              newElement = elementsSdk.createTaxIdElement(options);\n              break;\n            case 'contactDetails':\n              newElement = elementsSdk.createContactDetailsElement();\n              break;\n            case 'linkSignup':\n              if ('createLinkSignupElement' in checkoutSdk) {\n                newElement = checkoutSdk.createLinkSignupElement(options);\n              } else {\n                throw new Error('<LinkSignupElement> requires <CheckoutElementsProvider> and is not supported inside <CheckoutFormProvider>.');\n              }\n              break;\n            case 'terms':\n              newElement = elementsSdk.createTermsElement(options);\n              break;\n            default:\n              throw new Error(\"<\".concat(displayName, \"> is not supported inside a checkout provider. Use an <Elements> provider instead.\"));\n          }\n        } else if (elements) {\n          newElement = elements.create(type, options);\n        }\n        // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n        elementRef.current = newElement;\n        // Store element in state to facilitate event listener attachment\n        setElement(newElement);\n        if (newElement) {\n          newElement.mount(domNode.current);\n        }\n      }\n    }, [elements, checkoutSdk, options]);\n    var prevOptions = usePrevious(options);\n    React.useEffect(function () {\n      if (!elementRef.current) {\n        return;\n      }\n      var updates = extractAllowedOptionsUpdates(options, prevOptions, []);\n      if (updates && 'update' in elementRef.current) {\n        elementRef.current.update(updates);\n      }\n    }, [options, prevOptions]);\n    React.useLayoutEffect(function () {\n      return function () {\n        if (elementRef.current && typeof elementRef.current.destroy === 'function') {\n          try {\n            elementRef.current.destroy();\n            elementRef.current = null;\n          } catch (error) {\n            // Do nothing\n          }\n        }\n      };\n    }, []);\n    return /*#__PURE__*/React.createElement(\"div\", {\n      id: id,\n      className: className,\n      ref: domNode\n    });\n  };\n  // Only render the Element wrapper in a server environment.\n  var ServerElement = function ServerElement(props) {\n    useElementsOrCheckoutContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n    var id = props.id,\n      className = props.className;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      id: id,\n      className: className\n    });\n  };\n  var Element = isServer ? ServerElement : ClientElement;\n  Element.propTypes = {\n    id: PropTypes.string,\n    className: PropTypes.string,\n    onChange: PropTypes.func,\n    onBlur: PropTypes.func,\n    onFocus: PropTypes.func,\n    onReady: PropTypes.func,\n    onEscape: PropTypes.func,\n    onClick: PropTypes.func,\n    onLoadError: PropTypes.func,\n    onLoaderStart: PropTypes.func,\n    onNetworksChange: PropTypes.func,\n    onConfirm: PropTypes.func,\n    onCancel: PropTypes.func,\n    onShippingAddressChange: PropTypes.func,\n    onShippingRateChange: PropTypes.func,\n    onSavedPaymentMethodRemove: PropTypes.func,\n    onSavedPaymentMethodUpdate: PropTypes.func,\n    onAvailablePaymentMethodsChange: PropTypes.func,\n    options: PropTypes.object\n  };\n  Element.displayName = displayName;\n  Element.__elementType = type;\n  return Element;\n};\n\nvar isServer = typeof window === 'undefined';\n\nvar EmbeddedCheckoutContext = /*#__PURE__*/React.createContext(null);\nEmbeddedCheckoutContext.displayName = 'EmbeddedCheckoutProviderContext';\nvar useEmbeddedCheckoutContext = function useEmbeddedCheckoutContext() {\n  var ctx = React.useContext(EmbeddedCheckoutContext);\n  if (!ctx) {\n    throw new Error('<EmbeddedCheckout> must be used within <EmbeddedCheckoutProvider>');\n  }\n  return ctx;\n};\nvar INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `EmbeddedCheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\nvar EmbeddedCheckoutProvider = function EmbeddedCheckoutProvider(_ref) {\n  var rawStripeProp = _ref.stripe,\n    options = _ref.options,\n    children = _ref.children;\n  var parsed = React.useMemo(function () {\n    return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR);\n  }, [rawStripeProp]);\n  var embeddedCheckoutPromise = React.useRef(null);\n  var loadedStripe = React.useRef(null);\n  var _React$useState = React.useState({\n      embeddedCheckout: null\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    ctx = _React$useState2[0],\n    setContext = _React$useState2[1];\n  React.useEffect(function () {\n    // Don't support any ctx updates once embeddedCheckout or stripe is set.\n    if (loadedStripe.current || embeddedCheckoutPromise.current) {\n      return;\n    }\n    var setStripeAndInitEmbeddedCheckout = function setStripeAndInitEmbeddedCheckout(stripe) {\n      if (loadedStripe.current || embeddedCheckoutPromise.current) return;\n      loadedStripe.current = stripe;\n      embeddedCheckoutPromise.current = loadedStripe.current.createEmbeddedCheckoutPage(options).then(function (embeddedCheckout) {\n        setContext({\n          embeddedCheckout: embeddedCheckout\n        });\n      });\n    };\n    // For an async stripePromise, store it once resolved\n    if (parsed.tag === 'async' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n      parsed.stripePromise.then(function (stripe) {\n        if (stripe) {\n          setStripeAndInitEmbeddedCheckout(stripe);\n        }\n      });\n    } else if (parsed.tag === 'sync' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n      // Or, handle a sync stripe instance going from null -> populated\n      setStripeAndInitEmbeddedCheckout(parsed.stripe);\n    }\n  }, [parsed, options, ctx, loadedStripe]);\n  React.useEffect(function () {\n    // cleanup on unmount\n    return function () {\n      // If embedded checkout is fully initialized, destroy it.\n      if (ctx.embeddedCheckout) {\n        embeddedCheckoutPromise.current = null;\n        ctx.embeddedCheckout.destroy();\n      } else if (embeddedCheckoutPromise.current) {\n        // If embedded checkout is still initializing, destroy it once\n        // it's done. This could be caused by unmounting very quickly\n        // after mounting.\n        embeddedCheckoutPromise.current.then(function () {\n          embeddedCheckoutPromise.current = null;\n          if (ctx.embeddedCheckout) {\n            ctx.embeddedCheckout.destroy();\n          }\n        });\n      }\n    };\n  }, [ctx.embeddedCheckout]);\n  // Attach react-stripe-js version to stripe.js instance\n  React.useEffect(function () {\n    registerWithStripeJs(loadedStripe);\n  }, [loadedStripe]);\n  // Warn on changes to stripe prop.\n  // The stripe prop value can only go from null to non-null once and\n  // can't be changed after that.\n  var prevStripe = usePrevious(rawStripeProp);\n  React.useEffect(function () {\n    if (prevStripe !== null && prevStripe !== rawStripeProp) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the `stripe` prop after setting it.');\n    }\n  }, [prevStripe, rawStripeProp]);\n  // Warn on changes to options.\n  var prevOptions = usePrevious(options);\n  React.useEffect(function () {\n    if (prevOptions == null) {\n      return;\n    }\n    if (options == null) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot unset options after setting them.');\n      return;\n    }\n    if (options.clientSecret === undefined && options.fetchClientSecret === undefined) {\n      console.warn('Invalid props passed to EmbeddedCheckoutProvider: You must provide one of either `options.fetchClientSecret` or `options.clientSecret`.');\n    }\n    if (prevOptions.clientSecret != null && options.clientSecret !== prevOptions.clientSecret) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the client secret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n    }\n    if (prevOptions.fetchClientSecret != null && options.fetchClientSecret !== prevOptions.fetchClientSecret) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change fetchClientSecret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n    }\n    if (prevOptions.onComplete != null && options.onComplete !== prevOptions.onComplete) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onComplete option after setting it.');\n    }\n    if (prevOptions.onShippingDetailsChange != null && options.onShippingDetailsChange !== prevOptions.onShippingDetailsChange) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onShippingDetailsChange option after setting it.');\n    }\n    if (prevOptions.onLineItemsChange != null && options.onLineItemsChange !== prevOptions.onLineItemsChange) {\n      console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onLineItemsChange option after setting it.');\n    }\n  }, [prevOptions, options]);\n  return /*#__PURE__*/React.createElement(EmbeddedCheckoutContext.Provider, {\n    value: ctx\n  }, children);\n};\n\nvar EmbeddedCheckoutClientElement = function EmbeddedCheckoutClientElement(_ref) {\n  var id = _ref.id,\n    className = _ref.className;\n  var _useEmbeddedCheckoutC = useEmbeddedCheckoutContext(),\n    embeddedCheckout = _useEmbeddedCheckoutC.embeddedCheckout;\n  var isMounted = React.useRef(false);\n  var domNode = React.useRef(null);\n  React.useLayoutEffect(function () {\n    if (!isMounted.current && embeddedCheckout && domNode.current !== null) {\n      embeddedCheckout.mount(domNode.current);\n      isMounted.current = true;\n    }\n    // Clean up on unmount\n    return function () {\n      if (isMounted.current && embeddedCheckout) {\n        try {\n          embeddedCheckout.unmount();\n          isMounted.current = false;\n        } catch (e) {\n          // Do nothing.\n          // Parent effects are destroyed before child effects, so\n          // in cases where both the EmbeddedCheckoutProvider and\n          // the EmbeddedCheckout component are removed at the same\n          // time, the embeddedCheckout instance will be destroyed,\n          // which causes an error when calling unmount.\n        }\n      }\n    };\n  }, [embeddedCheckout]);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    ref: domNode,\n    id: id,\n    className: className\n  });\n};\n// Only render the wrapper in a server environment.\nvar EmbeddedCheckoutServerElement = function EmbeddedCheckoutServerElement(_ref2) {\n  var id = _ref2.id,\n    className = _ref2.className;\n  // Validate that we are in the right context by calling useEmbeddedCheckoutContext.\n  useEmbeddedCheckoutContext();\n  return /*#__PURE__*/React.createElement(\"div\", {\n    id: id,\n    className: className\n  });\n};\nvar EmbeddedCheckout = isServer ? EmbeddedCheckoutServerElement : EmbeddedCheckoutClientElement;\n\nvar FinancialAccountDisclosure = function FinancialAccountDisclosure(_ref) {\n  var rawStripeProp = _ref.stripe,\n    onLoad = _ref.onLoad,\n    onError = _ref.onError,\n    options = _ref.options;\n  var businessName = options === null || options === void 0 ? void 0 : options.businessName;\n  var learnMoreLink = options === null || options === void 0 ? void 0 : options.learnMoreLink;\n  var containerRef = React.useRef(null);\n  var parsed = React.useMemo(function () {\n    return parseStripeProp(rawStripeProp);\n  }, [rawStripeProp]);\n  var _React$useState = React.useState(parsed.tag === 'sync' ? parsed.stripe : null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    stripeState = _React$useState2[0],\n    setStripeState = _React$useState2[1];\n  React.useEffect(function () {\n    var isMounted = true;\n    if (parsed.tag === 'async') {\n      parsed.stripePromise.then(function (stripePromise) {\n        if (stripePromise && isMounted) {\n          setStripeState(stripePromise);\n        }\n      });\n    } else if (parsed.tag === 'sync') {\n      setStripeState(parsed.stripe);\n    }\n    return function () {\n      isMounted = false;\n    };\n  }, [parsed]);\n  // Warn on changes to stripe prop\n  var prevStripe = usePrevious(rawStripeProp);\n  React.useEffect(function () {\n    if (prevStripe !== null && prevStripe !== rawStripeProp) {\n      console.warn('Unsupported prop change on FinancialAccountDisclosure: You cannot change the `stripe` prop after setting it.');\n    }\n  }, [prevStripe, rawStripeProp]);\n  // Attach react-stripe-js version to stripe.js instance\n  React.useEffect(function () {\n    registerWithStripeJs(stripeState);\n  }, [stripeState]);\n  React.useEffect(function () {\n    var createDisclosure = /*#__PURE__*/function () {\n      var _ref2 = _asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _yield$stripeState$cr, disclosureContent, error, container;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(!stripeState || !containerRef.current)) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 2:\n                _context.next = 4;\n                return stripeState.createFinancialAccountDisclosure({\n                  businessName: businessName,\n                  learnMoreLink: learnMoreLink\n                });\n              case 4:\n                _yield$stripeState$cr = _context.sent;\n                disclosureContent = _yield$stripeState$cr.htmlElement;\n                error = _yield$stripeState$cr.error;\n                if (error && onError) {\n                  onError(error);\n                } else if (disclosureContent) {\n                  container = containerRef.current;\n                  container.innerHTML = '';\n                  container.appendChild(disclosureContent);\n                  if (onLoad) {\n                    onLoad();\n                  }\n                }\n              case 8:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n      return function createDisclosure() {\n        return _ref2.apply(this, arguments);\n      };\n    }();\n    createDisclosure();\n  }, [stripeState, businessName, learnMoreLink, onLoad, onError]);\n  return /*#__PURE__*/React.createElement('div', {\n    ref: containerRef\n  });\n};\n\nvar IssuingDisclosure = function IssuingDisclosure(_ref) {\n  var rawStripeProp = _ref.stripe,\n    onLoad = _ref.onLoad,\n    onError = _ref.onError,\n    options = _ref.options;\n  var issuingProgramID = options === null || options === void 0 ? void 0 : options.issuingProgramID;\n  var publicCardProgramName = options === null || options === void 0 ? void 0 : options.publicCardProgramName;\n  var learnMoreLink = options === null || options === void 0 ? void 0 : options.learnMoreLink;\n  var containerRef = React.useRef(null);\n  var parsed = React.useMemo(function () {\n    return parseStripeProp(rawStripeProp);\n  }, [rawStripeProp]);\n  var _React$useState = React.useState(parsed.tag === 'sync' ? parsed.stripe : null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    stripeState = _React$useState2[0],\n    setStripeState = _React$useState2[1];\n  React.useEffect(function () {\n    var isMounted = true;\n    if (parsed.tag === 'async') {\n      parsed.stripePromise.then(function (stripePromise) {\n        if (stripePromise && isMounted) {\n          setStripeState(stripePromise);\n        }\n      });\n    } else if (parsed.tag === 'sync') {\n      setStripeState(parsed.stripe);\n    }\n    return function () {\n      isMounted = false;\n    };\n  }, [parsed]);\n  // Warn on changes to stripe prop\n  var prevStripe = usePrevious(rawStripeProp);\n  React.useEffect(function () {\n    if (prevStripe !== null && prevStripe !== rawStripeProp) {\n      console.warn('Unsupported prop change on IssuingDisclosure: You cannot change the `stripe` prop after setting it.');\n    }\n  }, [prevStripe, rawStripeProp]);\n  // Attach react-stripe-js version to stripe.js instance\n  React.useEffect(function () {\n    registerWithStripeJs(stripeState);\n  }, [stripeState]);\n  React.useEffect(function () {\n    var createDisclosure = /*#__PURE__*/function () {\n      var _ref2 = _asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _yield$stripeState$cr, disclosureContent, error, container;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(!stripeState || !containerRef.current)) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 2:\n                _context.next = 4;\n                return stripeState.createIssuingDisclosure({\n                  issuingProgramID: issuingProgramID,\n                  publicCardProgramName: publicCardProgramName,\n                  learnMoreLink: learnMoreLink\n                });\n              case 4:\n                _yield$stripeState$cr = _context.sent;\n                disclosureContent = _yield$stripeState$cr.htmlElement;\n                error = _yield$stripeState$cr.error;\n                if (error && onError) {\n                  onError(error);\n                } else if (disclosureContent) {\n                  container = containerRef.current;\n                  container.innerHTML = '';\n                  container.appendChild(disclosureContent);\n                  if (onLoad) {\n                    onLoad();\n                  }\n                }\n              case 8:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n      return function createDisclosure() {\n        return _ref2.apply(this, arguments);\n      };\n    }();\n    createDisclosure();\n  }, [stripeState, issuingProgramID, publicCardProgramName, learnMoreLink, onLoad, onError]);\n  return /*#__PURE__*/React.createElement('div', {\n    ref: containerRef\n  });\n};\n\nvar TreasuryDisclosure = function TreasuryDisclosure(_ref) {\n  var rawStripeProp = _ref.stripe,\n    onLoad = _ref.onLoad,\n    onError = _ref.onError,\n    options = _ref.options;\n  var businessName = options === null || options === void 0 ? void 0 : options.businessName;\n  var learnMoreLink = options === null || options === void 0 ? void 0 : options.learnMoreLink;\n  var containerRef = React.useRef(null);\n  var parsed = React.useMemo(function () {\n    return parseStripeProp(rawStripeProp);\n  }, [rawStripeProp]);\n  var _React$useState = React.useState(parsed.tag === 'sync' ? parsed.stripe : null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    stripeState = _React$useState2[0],\n    setStripeState = _React$useState2[1];\n  React.useEffect(function () {\n    var isMounted = true;\n    if (parsed.tag === 'async') {\n      parsed.stripePromise.then(function (stripePromise) {\n        if (stripePromise && isMounted) {\n          setStripeState(stripePromise);\n        }\n      });\n    } else if (parsed.tag === 'sync') {\n      setStripeState(parsed.stripe);\n    }\n    return function () {\n      isMounted = false;\n    };\n  }, [parsed]);\n  // Warn on changes to stripe prop\n  var prevStripe = usePrevious(rawStripeProp);\n  React.useEffect(function () {\n    if (prevStripe !== null && prevStripe !== rawStripeProp) {\n      console.warn('Unsupported prop change on TreasuryDisclosure: You cannot change the `stripe` prop after setting it.');\n    }\n  }, [prevStripe, rawStripeProp]);\n  // Attach react-stripe-js version to stripe.js instance\n  React.useEffect(function () {\n    registerWithStripeJs(stripeState);\n  }, [stripeState]);\n  React.useEffect(function () {\n    var createDisclosure = /*#__PURE__*/function () {\n      var _ref2 = _asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _yield$stripeState$cr, disclosureContent, error, container;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(!stripeState || !containerRef.current)) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 2:\n                _context.next = 4;\n                return stripeState.createTreasuryDisclosure({\n                  businessName: businessName,\n                  learnMoreLink: learnMoreLink\n                });\n              case 4:\n                _yield$stripeState$cr = _context.sent;\n                disclosureContent = _yield$stripeState$cr.htmlElement;\n                error = _yield$stripeState$cr.error;\n                if (error && onError) {\n                  onError(error);\n                } else if (disclosureContent) {\n                  container = containerRef.current;\n                  container.innerHTML = '';\n                  container.appendChild(disclosureContent);\n                  if (onLoad) {\n                    onLoad();\n                  }\n                }\n              case 8:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n      return function createDisclosure() {\n        return _ref2.apply(this, arguments);\n      };\n    }();\n    createDisclosure();\n  }, [stripeState, businessName, learnMoreLink, onLoad, onError]);\n  return /*#__PURE__*/React.createElement('div', {\n    ref: containerRef\n  });\n};\n\n/**\n * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n */\nvar useStripe = function useStripe() {\n  var _useElementsOrCheckou = useElementsOrCheckoutContextWithUseCase('calls useStripe()'),\n    stripe = _useElementsOrCheckou.stripe;\n  return stripe;\n};\n\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar CardElement = createElementComponent('card', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar CardNumberElement = createElementComponent('cardNumber', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar CardExpiryElement = createElementComponent('cardExpiry', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar CardCvcElement = createElementComponent('cardCvc', isServer);\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n */\nvar CurrencySelectorElement = createElementComponent('currencySelector', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar IbanElement = createElementComponent('iban', isServer);\nvar PaymentElement = createElementComponent('payment', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar ExpressCheckoutElement = createElementComponent('expressCheckout', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n/**\n * Requires beta access.\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n */\nvar LinkSignupElement = createElementComponent('linkSignup', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar ContactDetailsElement = createElementComponent('contactDetails', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar AddressElement = createElementComponent('address', isServer);\n/**\n * @deprecated\n * Use `AddressElement` instead.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n/**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\nvar PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n */\nvar TaxIdElement = createElementComponent('taxId', isServer);\n/**\n * @docs https://stripe.com/docs/issuing/elements\n */\nvar IssuingCardNumberDisplayElement = createElementComponent('issuingCardNumberDisplay', isServer);\n/**\n * @docs https://stripe.com/docs/issuing/elements\n */\nvar IssuingCardCvcDisplayElement = createElementComponent('issuingCardCvcDisplay', isServer);\n/**\n * @docs https://stripe.com/docs/issuing/elements\n */\nvar IssuingCardExpiryDisplayElement = createElementComponent('issuingCardExpiryDisplay', isServer);\n/**\n * @docs https://stripe.com/docs/issuing/elements\n */\nvar IssuingCardPinDisplayElement = createElementComponent('issuingCardPinDisplay', isServer);\n/**\n * @docs https://stripe.com/docs/issuing/elements\n */\nvar IssuingCardCopyButtonElement = createElementComponent('issuingCardCopyButton', isServer);\n/**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n */\nvar TermsElement = createElementComponent('terms', isServer);\n\nexport { AddressElement, AuBankAccountElement, CardCvcElement, CardElement, CardExpiryElement, CardNumberElement, ContactDetailsElement, CurrencySelectorElement, Elements, ElementsConsumer, EmbeddedCheckout, EmbeddedCheckoutProvider, ExpressCheckoutElement, FinancialAccountDisclosure, IbanElement, IssuingCardCopyButtonElement, IssuingCardCvcDisplayElement, IssuingCardExpiryDisplayElement, IssuingCardNumberDisplayElement, IssuingCardPinDisplayElement, IssuingDisclosure, LinkAuthenticationElement, LinkSignupElement, PaymentElement, PaymentMethodMessagingElement, ShippingAddressElement, TaxIdElement, TermsElement, TreasuryDisclosure, useElements, useStripe };\n","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nvar RELEASE_TRAIN = 'endive';\n\nvar runtimeVersionToUrlVersion = function runtimeVersionToUrlVersion(version) {\n  return version === 3 ? 'v3' : version;\n};\n\nvar ORIGIN = 'https://js.stripe.com';\nvar STRIPE_JS_URL = \"\".concat(ORIGIN, \"/\").concat(RELEASE_TRAIN, \"/stripe.js\");\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar STRIPE_JS_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/(v3|[a-z]+)\\/stripe\\.js(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\n\nvar isStripeJSURL = function isStripeJSURL(url) {\n  return V3_URL_REGEX.test(url) || STRIPE_JS_URL_REGEX.test(url);\n};\n\nvar findScript = function findScript() {\n  var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(ORIGIN, \"\\\"]\"));\n\n  for (var i = 0; i < scripts.length; i++) {\n    var script = scripts[i];\n\n    if (!isStripeJSURL(script.src)) {\n      continue;\n    }\n\n    return script;\n  }\n\n  return null;\n};\n\nvar injectScript = function injectScript(params) {\n  var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n  var script = document.createElement('script');\n  script.src = \"\".concat(STRIPE_JS_URL).concat(queryString);\n  var headOrBody = document.head || document.body;\n\n  if (!headOrBody) {\n    throw new Error('Expected document.body not to be null. Stripe.js requires a <body> element.');\n  }\n\n  headOrBody.appendChild(script);\n  return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n  if (!stripe || !stripe._registerWrapper) {\n    return;\n  }\n\n  stripe._registerWrapper({\n    name: 'stripe-js',\n    version: \"10.1.0\",\n    startTime: startTime\n  });\n};\n\nvar stripePromise$1 = null;\nvar onErrorListener = null;\nvar onLoadListener = null;\n\nvar onError = function onError(reject) {\n  return function (cause) {\n    reject(new Error('Failed to load Stripe.js', {\n      cause: cause\n    }));\n  };\n};\n\nvar onLoad = function onLoad(resolve, reject) {\n  return function () {\n    if (window.Stripe) {\n      resolve(window.Stripe);\n    } else {\n      reject(new Error('Stripe.js not available'));\n    }\n  };\n};\n\nvar loadScript = function loadScript(params) {\n  // Ensure that we only attempt to load Stripe.js at most once\n  if (stripePromise$1 !== null) {\n    return stripePromise$1;\n  }\n\n  var load = function load() {\n    return new Promise(function (resolve, reject) {\n      if (typeof window === 'undefined' || typeof document === 'undefined') {\n        // Resolve to null when imported server side. This makes the module\n        // safe to import in an isomorphic code base.\n        resolve(null);\n        return;\n      }\n\n      if (window.Stripe && params) {\n        console.warn(EXISTING_SCRIPT_MESSAGE);\n      }\n\n      if (window.Stripe) {\n        resolve(window.Stripe);\n        return;\n      }\n\n      try {\n        var script = findScript();\n\n        if (script && params) {\n          console.warn(EXISTING_SCRIPT_MESSAGE);\n        } else if (!script) {\n          script = injectScript(params);\n        } else if (script && onLoadListener !== null && onErrorListener !== null) {\n          var _script$parentNode;\n\n          // remove event listeners\n          script.removeEventListener('load', onLoadListener);\n          script.removeEventListener('error', onErrorListener); // if script exists, but we are reloading due to an error,\n          // reload script to trigger 'load' event\n\n          (_script$parentNode = script.parentNode) === null || _script$parentNode === void 0 ? void 0 : _script$parentNode.removeChild(script);\n          script = injectScript(params);\n        }\n\n        onLoadListener = onLoad(resolve, reject);\n        onErrorListener = onError(reject);\n        script.addEventListener('load', onLoadListener);\n        script.addEventListener('error', onErrorListener);\n      } catch (error) {\n        reject(error);\n        return;\n      }\n    });\n  }; // Cache the in-flight load (including its single retry) so that concurrent\n  // calls share it, and only clear the cache once the load has finally failed\n  // so that a later call can try again.\n\n\n  stripePromise$1 = load()[\"catch\"](function () {\n    return load();\n  })[\"catch\"](function (error) {\n    stripePromise$1 = null;\n    return Promise.reject(error);\n  });\n  return stripePromise$1;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n  if (maybeStripe === null) {\n    return null;\n  }\n\n  var pk = args[0];\n\n  if (typeof pk !== 'string') {\n    throw new Error(\"Expected publishable key to be of type string, got type \".concat(_typeof(pk), \" instead.\"));\n  }\n\n  var isTestKey = pk.match(/^pk_test/); // @ts-expect-error this is not publicly typed\n\n  var version = runtimeVersionToUrlVersion(maybeStripe.version);\n  var expectedVersion = RELEASE_TRAIN;\n\n  if (isTestKey && version !== expectedVersion) {\n    console.warn(\"Stripe.js@\".concat(version, \" was loaded on the page, but @stripe/stripe-js@\").concat(\"10.1.0\", \" expected Stripe.js@\").concat(expectedVersion, \". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning\"));\n  }\n\n  var stripe = maybeStripe.apply(undefined, args);\n  registerWrapper(stripe, startTime);\n  return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nvar stripePromise;\nvar loadCalled = false;\n\nvar getStripePromise = function getStripePromise() {\n  if (stripePromise) {\n    return stripePromise;\n  }\n\n  stripePromise = loadScript(null)[\"catch\"](function (error) {\n    // clear cache on error\n    stripePromise = null;\n    return Promise.reject(error);\n  });\n  return stripePromise;\n}; // Execute our own script injection after a tick to give users time to do their\n// own script injection.\n\n\nPromise.resolve().then(function () {\n  return getStripePromise();\n})[\"catch\"](function (error) {\n  if (!loadCalled) {\n    console.warn(error);\n  }\n});\nvar loadStripe = function loadStripe() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  loadCalled = true;\n  var startTime = Date.now(); // if previous attempts are unsuccessful, will re-load script\n\n  return getStripePromise().then(function (maybeStripe) {\n    return initStripe(maybeStripe, args, startTime);\n  });\n};\n\nexport { loadStripe };\n","import { loadStripe, type Stripe } from '@stripe/stripe-js';\nimport { runtimeConfig } from '@/lib/runtime-config';\n\nlet stripe: Promise<Stripe | null> | undefined;\n\n/** Stripe.js, loaded once, with the publishable key Django puts in the page. */\nexport function stripePromise(): Promise<Stripe | null> {\n  stripe ??= loadStripe(runtimeConfig().stripePublishableKey);\n  return stripe;\n}\n","import { EmbeddedCheckout, EmbeddedCheckoutProvider } from '@stripe/react-stripe-js';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useNavigate } from 'react-router';\nimport { toast } from 'sonner';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Button } from '@/components/ui/button';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { ApiError } from '@/lib/api';\nimport { runtimeConfig } from '@/lib/runtime-config';\nimport { stripePromise } from '@/lib/stripe';\nimport { workspacesApi, workspaceKeys } from '../api';\nimport { clearDraft } from './draft';\n\n/** Step 5 (design 06): Stripe's embedded Checkout (D-004). After paying,\n * Stripe sends the customer to the workspace page (design 04). */\nexport function PayStep({ workspaceId }: { workspaceId: string }) {\n  const { t } = useTranslation('workspaces');\n  const navigate = useNavigate();\n  const client = useQueryClient();\n  const session = useQuery({\n    queryKey: workspaceKeys.checkout(workspaceId),\n    queryFn: () => workspacesApi.resumeCheckout(workspaceId),\n    staleTime: Infinity,\n    retry: false,\n  });\n  const cancel = useMutation({\n    mutationFn: () => workspacesApi.abandon(workspaceId),\n    onSuccess: () => {\n      clearDraft();\n      void client.invalidateQueries({ queryKey: workspaceKeys.list });\n      toast.success(t('new.pay.cancelled'));\n      void navigate('/workspaces');\n    },\n  });\n\n  // Already paid (for example a second tab): the workspace page shows the rest.\n  const paid = session.error instanceof ApiError && session.error.code === 'payment_processing';\n  useEffect(() => {\n    if (!paid) return;\n    clearDraft();\n    void navigate(`/workspaces/${workspaceId}`, { replace: true });\n  }, [paid, navigate, workspaceId]);\n\n  if (paid) return null;\n  if (session.error) {\n    return (\n      <div className=\"flex flex-col gap-6\">\n        <FormAlert\n          message={\n            session.error instanceof ApiError ? session.error.message : t('new.review.failed')\n          }\n        />\n        <div>\n          <Button asChild variant=\"outline\">\n            <Link to=\"/workspaces/new\" onClick={clearDraft}>\n              {t('new.pay.startAgain')}\n            </Link>\n          </Button>\n        </div>\n      </div>\n    );\n  }\n  if (!runtimeConfig().stripePublishableKey) {\n    return (\n      <Alert variant=\"destructive\">\n        <AlertDescription>{t('new.pay.notConfigured')}</AlertDescription>\n      </Alert>\n    );\n  }\n  if (!session.data) return <Skeleton className=\"h-96 w-full\" />;\n\n  return (\n    <div className=\"flex flex-col gap-6\">\n      <div className=\"bg-white\">\n        <EmbeddedCheckoutProvider\n          stripe={stripePromise()}\n          options={{ clientSecret: session.data.clientSecret }}\n        >\n          <EmbeddedCheckout />\n        </EmbeddedCheckoutProvider>\n      </div>\n      <div>\n        <Button variant=\"ghost\" disabled={cancel.isPending} onClick={() => cancel.mutate()}>\n          {t('new.pay.cancel')}\n        </Button>\n        {cancel.error instanceof ApiError && <FormAlert message={cancel.error.message} />}\n      </div>\n    </div>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { workspacesApi, workspaceKeys } from '../api';\nimport { PlanPicker } from '../components/PlanPicker';\nimport { intervalsOf } from '../components/selection';\nimport type { Draft } from './draft';\n\n/** Step 1 (design 06): plan and billing interval, plus optional packs; the\n * review step shows the exact amounts. */\nexport function PlanStep({\n  draft,\n  onChange,\n  onNext,\n}: {\n  draft: Draft;\n  onChange: (changes: Partial<Draft>) => void;\n  onNext: () => void;\n}) {\n  const { t } = useTranslation('workspaces');\n  const { data: catalog } = useQuery({\n    queryKey: workspaceKeys.catalog,\n    queryFn: workspacesApi.catalog,\n  });\n  if (!catalog) return <Skeleton className=\"h-96 w-full\" />;\n\n  const intervals = intervalsOf(catalog);\n  const interval = intervals.includes(draft.interval) ? draft.interval : (intervals[0] ?? 'year');\n  const offered = catalog.plans.some(\n    (plan) => plan.key === draft.plan && plan.prices.some((price) => price.interval === interval),\n  );\n\n  return (\n    <div className=\"flex flex-col gap-8\">\n      <PlanPicker catalog={catalog} value={{ ...draft, interval }} onChange={onChange} />\n      <div className=\"flex justify-end\">\n        <Button disabled={!offered} onClick={onNext}>\n          {t('new.continue')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router';\nimport type { CheckoutResult } from '@/api/types';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { Button } from '@/components/ui/button';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Field, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Separator } from '@/components/ui/separator';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Spinner } from '@/components/ui/spinner';\nimport { FormAlert } from '@/features/auth/components/FormAlert';\nimport { ApiError } from '@/lib/api';\nimport { formatDate, formatMoney } from '@/lib/format';\nimport { runtimeConfig } from '@/lib/runtime-config';\nimport { workspacesApi } from '../api';\nimport { type Draft, purchase, selection } from './draft';\n\nconst WORKSPACE_FIELDS = ['name', 'adminUsername', 'adminEmail'];\n\n/** Already abandoned, or not ours any more: nothing to give way. */\nfunction ignoreGone(error: unknown) {\n  if (error instanceof ApiError && (error.status === 404 || error.code === 'not_pending')) return;\n  throw error;\n}\n\n/** Step 4 (design 06): the first invoice exactly as Stripe will charge it,\n * VAT included (D-015, D-024), and the consents (D-034). */\nexport function ReviewStep({\n  draft,\n  onBack,\n  onWorkspaceErrors,\n  onCheckout,\n  onPaid,\n}: {\n  draft: Draft;\n  onBack: () => void;\n  onWorkspaceErrors: (errors: Record<string, string[]>) => void;\n  onCheckout: (result: CheckoutResult) => void;\n  onPaid: (workspaceId: string) => void;\n}) {\n  const { t } = useTranslation('workspaces');\n  const client = useQueryClient();\n  const body = selection(draft);\n  const quote = useQuery({\n    queryKey: ['workspaces', 'quote', body],\n    queryFn: () => workspacesApi.quote(body),\n    staleTime: 0,\n    // While the EU checks the VAT number (D-075), look again every few seconds.\n    refetchInterval: (query) =>\n      query.state.data?.hold?.code === 'vat_check_pending' ? 5_000 : false,\n  });\n  const [accepted, setAccepted] = useState<Record<string, boolean>>({});\n  const [error, setError] = useState<string | null>(null);\n\n  const checkout = useMutation({\n    mutationFn: async () => {\n      // Back from the payment step: the earlier unpaid checkout gives way.\n      if (draft.workspaceId) await workspacesApi.abandon(draft.workspaceId).catch(ignoreGone);\n      return workspacesApi.checkout(\n        purchase(\n          draft,\n          (quote.data?.consents ?? []).map(({ kind, version }) => ({ kind, version })),\n        ),\n      );\n    },\n    onSuccess: onCheckout,\n    onError: (failure) => {\n      if (!(failure instanceof ApiError)) return setError(t('new.review.failed'));\n      if (failure.code === 'payment_processing' && draft.workspaceId) {\n        return onPaid(draft.workspaceId);\n      }\n      if (Object.keys(failure.fields).some((field) => WORKSPACE_FIELDS.includes(field))) {\n        return onWorkspaceErrors(failure.fields);\n      }\n      if (failure.code === 'consent_outdated') {\n        setAccepted({});\n        void client.invalidateQueries({ queryKey: ['workspaces', 'quote'] });\n      }\n      setError(failure.message);\n    },\n  });\n\n  if (quote.error) {\n    return (\n      <div className=\"flex flex-col gap-6\">\n        <FormAlert\n          message={quote.error instanceof ApiError ? quote.error.message : t('new.review.failed')}\n        />\n        <div>\n          <Button variant=\"outline\" onClick={onBack}>\n            {t('new.back')}\n          </Button>\n        </div>\n      </div>\n    );\n  }\n  if (!quote.data) return <Skeleton className=\"h-96 w-full\" />;\n\n  const data = quote.data;\n  const money = (cents: number) => formatMoney(cents, data.currency);\n  const allAccepted = data.consents.every((consent) => accepted[consent.kind]);\n\n  return (\n    <div className=\"flex max-w-2xl flex-col gap-8\">\n      <FormAlert message={error} />\n      {data.hold && (\n        <Alert>\n          <AlertDescription>\n            {data.hold.message}\n            {data.hold.code === 'vat_number_unverified' && (\n              <>\n                {' '}\n                <Link to=\"/billing\" className=\"underline\">\n                  {t('new.review.openBilling')}\n                </Link>\n              </>\n            )}\n          </AlertDescription>\n        </Alert>\n      )}\n      <p className=\"text-sm\">\n        {t('new.review.for', {\n          address: `${draft.name}.${runtimeConfig().workspaceDomain}`,\n          admin: draft.adminEmail,\n        })}\n      </p>\n      <table className=\"w-full text-sm\">\n        <caption className=\"sr-only\">{t('new.review.caption')}</caption>\n        <thead className=\"text-muted-foreground text-left\">\n          <tr>\n            <th className=\"pb-2 font-normal\">{t('new.review.item')}</th>\n            <th className=\"pb-2 text-right font-normal\">{t('new.review.quantity')}</th>\n            <th className=\"pb-2 text-right font-normal\">{t('new.review.amount')}</th>\n          </tr>\n        </thead>\n        <tbody>\n          {data.lines.map((line) => (\n            <tr key={line.description} className=\"border-t\">\n              <td className=\"py-2\">{line.description}</td>\n              <td className=\"py-2 text-right\">{line.quantity}</td>\n              <td className=\"py-2 text-right\">{money(line.amount)}</td>\n            </tr>\n          ))}\n        </tbody>\n        <tfoot>\n          <tr className=\"border-t\">\n            <td className=\"pt-2\" colSpan={2}>\n              {t('new.review.subtotal')}\n            </td>\n            <td className=\"pt-2 text-right\">{money(data.subtotal)}</td>\n          </tr>\n          <tr>\n            <td className=\"pt-1\" colSpan={2}>\n              {t('new.review.vat')}\n              <span className=\"text-muted-foreground block text-xs\">{data.taxNote}</span>\n            </td>\n            <td className=\"pt-1 text-right align-top\">{money(data.tax)}</td>\n          </tr>\n          <tr className=\"border-t font-semibold\">\n            <td className=\"pt-2\" colSpan={2}>\n              {t('new.review.total')}\n            </td>\n            <td className=\"pt-2 text-right\">{money(data.total)}</td>\n          </tr>\n        </tfoot>\n      </table>\n      {data.renewsOn && (\n        <p className=\"text-muted-foreground text-sm\">\n          {t(`new.review.renews.${data.interval}`, { date: formatDate(data.renewsOn) })}\n        </p>\n      )}\n      <Separator />\n      <FieldGroup>\n        {data.consents.map((consent) => (\n          <Field key={consent.kind} orientation=\"horizontal\">\n            <Checkbox\n              id={`consent-${consent.kind}`}\n              checked={accepted[consent.kind] ?? false}\n              onCheckedChange={(value) =>\n                setAccepted((current) => ({ ...current, [consent.kind]: value === true }))\n              }\n            />\n            <FieldLabel htmlFor={`consent-${consent.kind}`} className=\"font-normal\">\n              {consent.text}\n              {consent.url && (\n                <>\n                  {' '}\n                  <a\n                    href={consent.url}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    className=\"underline\"\n                  >\n                    {t('new.review.read')}\n                  </a>\n                </>\n              )}\n            </FieldLabel>\n          </Field>\n        ))}\n      </FieldGroup>\n      <div className=\"flex justify-between\">\n        <Button variant=\"outline\" onClick={onBack}>\n          {t('new.back')}\n        </Button>\n        <Button\n          disabled={!allAccepted || Boolean(data.hold) || checkout.isPending}\n          onClick={() => checkout.mutate()}\n        >\n          {checkout.isPending && <Spinner />}\n          {t('new.review.pay')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { CheckIcon } from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { Field, FieldDescription, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\nimport { runtimeConfig } from '@/lib/runtime-config';\nimport { workspacesApi } from '../api';\nimport type { Draft } from './draft';\n\nconst NAME = /^[a-z0-9-]*$/;\n\nfunction useDebounced<T>(value: T, delay: number): T {\n  const [settled, setSettled] = useState(value);\n  useEffect(() => {\n    const timer = setTimeout(() => setSettled(value), delay);\n    return () => clearTimeout(timer);\n  }, [value, delay]);\n  return settled;\n}\n\n/** Step 2 (design 06): the address, checked as it is typed (D-042), and the\n * first administrator. No password: the workspace emails it (D-010). */\nexport function WorkspaceStep({\n  draft,\n  errors,\n  onChange,\n  onBack,\n  onNext,\n}: {\n  draft: Draft;\n  errors: Record<string, string[]>;\n  onChange: (changes: Partial<Draft>) => void;\n  onBack: () => void;\n  onNext: () => void;\n}) {\n  const { t } = useTranslation('workspaces');\n  const name = useDebounced(draft.name, 400);\n  const check = useQuery({\n    queryKey: ['workspaces', 'name', name],\n    queryFn: ({ signal }) => workspacesApi.nameAvailability(name, signal),\n    enabled: name.length >= 3,\n    staleTime: 10_000,\n  });\n  const settled = name === draft.name && check.data?.name === draft.name;\n  const available = settled && check.data?.available === true;\n  const problem = settled && check.data && !check.data.available ? check.data.message : undefined;\n  const nameError = errors.name?.[0] ?? problem;\n  const complete = available && draft.adminUsername.trim() !== '' && draft.adminEmail.trim() !== '';\n\n  return (\n    <div className=\"flex flex-col gap-8\">\n      <FieldGroup className=\"max-w-xl\">\n        <Field data-invalid={nameError ? true : undefined}>\n          <FieldLabel htmlFor=\"name\">{t('new.workspace.name')}</FieldLabel>\n          <div className=\"flex items-center gap-2\">\n            <Input\n              id=\"name\"\n              autoComplete=\"off\"\n              spellCheck={false}\n              maxLength={30}\n              value={draft.name}\n              aria-invalid={nameError ? true : undefined}\n              onChange={(event) => {\n                const value = event.target.value.toLowerCase().replace(/\\s+/g, '-');\n                if (NAME.test(value)) onChange({ name: value });\n              }}\n            />\n            <span className=\"text-muted-foreground shrink-0 text-sm\">\n              .{runtimeConfig().workspaceDomain}\n            </span>\n          </div>\n          {available && (\n            <FieldDescription className=\"flex items-center gap-1\">\n              <CheckIcon className=\"size-4\" aria-hidden=\"true\" />\n              {t('new.workspace.available', {\n                address: `${draft.name}.${runtimeConfig().workspaceDomain}`,\n              })}\n            </FieldDescription>\n          )}\n          {!available && !nameError && (\n            <FieldDescription>{t('new.workspace.nameHint')}</FieldDescription>\n          )}\n          <FieldError>{nameError}</FieldError>\n        </Field>\n        <Field data-invalid={errors.adminUsername ? true : undefined}>\n          <FieldLabel htmlFor=\"adminUsername\">{t('new.workspace.adminUsername')}</FieldLabel>\n          <Input\n            id=\"adminUsername\"\n            autoComplete=\"off\"\n            value={draft.adminUsername}\n            aria-invalid={errors.adminUsername ? true : undefined}\n            onChange={(event) => onChange({ adminUsername: event.target.value })}\n          />\n          <FieldError>{errors.adminUsername?.[0]}</FieldError>\n        </Field>\n        <Field data-invalid={errors.adminEmail ? true : undefined}>\n          <FieldLabel htmlFor=\"adminEmail\">{t('new.workspace.adminEmail')}</FieldLabel>\n          <Input\n            id=\"adminEmail\"\n            type=\"email\"\n            autoComplete=\"email\"\n            value={draft.adminEmail}\n            aria-invalid={errors.adminEmail ? true : undefined}\n            onChange={(event) => onChange({ adminEmail: event.target.value })}\n          />\n          <FieldDescription>{t('new.workspace.adminHint')}</FieldDescription>\n          <FieldError>{errors.adminEmail?.[0]}</FieldError>\n        </Field>\n      </FieldGroup>\n      <div className=\"flex justify-between\">\n        <Button variant=\"outline\" onClick={onBack}>\n          {t('new.back')}\n        </Button>\n        <Button disabled={!complete} onClick={onNext}>\n          {t('new.continue')}\n        </Button>\n      </div>\n    </div>\n  );\n}\n","import { useQueryClient } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Navigate, useNavigate, useSearchParams } from 'react-router';\nimport { Alert, AlertDescription } from '@/components/ui/alert';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { useSession } from '@/features/auth/session';\nimport { cn } from '@/lib/utils';\nimport { BillingStep } from './BillingStep';\nimport {\n  clearDraft,\n  type Draft,\n  firstOpenStep,\n  loadDraft,\n  saveDraft,\n  STEPS,\n  type Step,\n} from './draft';\nimport { workspaceKeys } from '../api';\nimport { PayStep } from './PayStep';\nimport { PlanStep } from './PlanStep';\nimport { ReviewStep } from './ReviewStep';\nimport { WorkspaceStep } from './WorkspaceStep';\n\n/** The new workspace wizard (design 06). The step is in the URL and the\n * choices in session storage, so a reload resumes where it stopped. */\nexport function NewWorkspacePage() {\n  const { t } = useTranslation('workspaces');\n  const { data: session } = useSession();\n  const client = useQueryClient();\n  const navigate = useNavigate();\n  const [params, setParams] = useSearchParams();\n  const [draft, setDraft] = useState<Draft>(() => loadDraft());\n  const [errors, setErrors] = useState<Record<string, string[]>>({});\n  const requested = (STEPS as readonly string[]).includes(params.get('step') ?? '')\n    ? (params.get('step') as Step)\n    : 'plan';\n  const workspaceId = params.get('workspace');\n\n  useEffect(() => saveDraft(draft), [draft]);\n\n  const go = (step: Step, extra: Record<string, string> = {}) => {\n    setParams({ step, ...extra });\n    window.scrollTo(0, 0);\n  };\n  const change = (changes: Partial<Draft>) => {\n    setDraft((current) => ({ ...current, ...changes }));\n    setErrors({});\n  };\n\n  if (session?.user && !session.user.emailVerified) {\n    return (\n      <>\n        <PageHeader title={t('new.title')} />\n        <Alert>\n          <AlertDescription>{t('new.verifyFirst')}</AlertDescription>\n        </Alert>\n      </>\n    );\n  }\n\n  // Paying needs a workspace; every other step needs the ones before it.\n  const open = firstOpenStep(draft);\n  if (requested === 'pay' && !workspaceId) return <Navigate to=\"/workspaces/new\" replace />;\n  if (requested !== 'pay' && STEPS.indexOf(requested) > STEPS.indexOf(open)) {\n    return <Navigate to={`/workspaces/new?step=${open}`} replace />;\n  }\n\n  return (\n    <>\n      <PageHeader title={t('new.title')} focusKey={requested} />\n      <ol className=\"mb-8 grid grid-cols-5 gap-2 text-xs\" aria-label={t('new.steps')}>\n        {STEPS.map((step, index) => (\n          <li key={step} className=\"flex flex-col gap-1\">\n            <span\n              className={cn('h-1', index <= STEPS.indexOf(requested) ? 'bg-primary' : 'bg-muted')}\n              aria-hidden=\"true\"\n            />\n            <span\n              className={step === requested ? 'font-medium' : 'text-muted-foreground'}\n              aria-current={step === requested ? 'step' : undefined}\n            >\n              {t(`new.step.${step}`)}\n            </span>\n          </li>\n        ))}\n      </ol>\n      {requested === 'plan' && (\n        <PlanStep\n          draft={draft}\n          onChange={change}\n          onNext={() => {\n            // The first administrator defaults to the person buying.\n            const email = session?.user?.email ?? '';\n            if (!draft.adminEmail && email) {\n              change({ adminEmail: email, adminUsername: email.split('@')[0] ?? '' });\n            }\n            go('workspace');\n          }}\n        />\n      )}\n      {requested === 'workspace' && (\n        <WorkspaceStep\n          draft={draft}\n          errors={errors}\n          onChange={change}\n          onBack={() => go('plan')}\n          onNext={() => go('billing')}\n        />\n      )}\n      {requested === 'billing' && (\n        <BillingStep onBack={() => go('workspace')} onNext={() => go('review')} />\n      )}\n      {requested === 'review' && (\n        <ReviewStep\n          draft={draft}\n          onBack={() => go('billing')}\n          onWorkspaceErrors={(found) => {\n            setErrors(found);\n            go('workspace');\n          }}\n          onCheckout={(result) => {\n            client.setQueryData(workspaceKeys.checkout(result.workspaceId), result);\n            setDraft((current) => ({ ...current, workspaceId: result.workspaceId }));\n            go('pay', { workspace: result.workspaceId });\n          }}\n          onPaid={(id) => {\n            clearDraft();\n            void navigate(`/workspaces/${id}`);\n          }}\n        />\n      )}\n      {requested === 'pay' && workspaceId && <PayStep workspaceId={workspaceId} />}\n    </>\n  );\n}\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useNavigate } from 'react-router';\nimport { toast } from 'sonner';\nimport type { WorkspaceStatus } from '@/api/types';\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from '@/components/ui/alert-dialog';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { usePaymentRecovery } from '@/features/billing/payments';\nimport { ApiError } from '@/lib/api';\nimport { cn } from '@/lib/utils';\nimport { workspacesApi, workspaceKeys } from '../api';\nimport { clearDraft } from '../new/draft';\n\nconst TONES: Record<string, string> = {\n  success: 'border-success/50 bg-success/15 text-foreground',\n  info: 'border-primary/30 bg-primary/5 text-foreground',\n  warning: 'border-warning/50 bg-warning/15 text-foreground',\n  // Text in the foreground colour, as for the other tones: red on its tint is 4:1 (WCAG 1.4.3).\n  danger: 'border-destructive/40 bg-destructive/10 text-foreground',\n  neutral: '',\n};\n\n/** The server's status (design 03), shown as it comes: label and tone. A\n * live region, so a change while the page polls (\"Setting up\" → \"Operational\")\n * is announced (WCAG 4.1.3). */\nexport function StatusBadge({ status }: { status: WorkspaceStatus }) {\n  return (\n    <Badge variant=\"outline\" role=\"status\" className={TONES[status.tone]}>\n      {status.label}\n    </Badge>\n  );\n}\n\n/** The status's message, also announced when it changes (the setup steps). */\nexport function StatusMessage({ status }: { status: WorkspaceStatus }) {\n  if (!status.message) return null;\n  return (\n    <p role=\"status\" className=\"text-sm\">\n      {status.message}\n    </p>\n  );\n}\n\n/** The five setup steps (design 03), with the current one highlighted. On a\n * narrow card only the current step's name shows; the others stay readable to\n * screen readers. */\nexport function SetupProgress({ status }: { status: WorkspaceStatus }) {\n  if (!status.progress) return null;\n  const { step, steps } = status.progress;\n  return (\n    <ol className=\"grid grid-cols-5 gap-2 text-xs\" aria-label={status.message}>\n      {steps.map((label, index) => (\n        <li key={label} className=\"flex flex-col gap-1\">\n          <span\n            className={cn('h-1', index < step ? 'bg-primary' : 'bg-muted')}\n            aria-hidden=\"true\"\n          />\n          <span\n            className={\n              index + 1 === step\n                ? 'font-medium'\n                : 'text-muted-foreground sr-only @md/main:not-sr-only'\n            }\n          >\n            {label}\n          </span>\n        </li>\n      ))}\n    </ol>\n  );\n}\n\nexport function Notices({ status, without = [] }: { status: WorkspaceStatus; without?: string[] }) {\n  const notices = status.notices.filter((notice) => !without.includes(notice.code));\n  if (!notices.length) return null;\n  return (\n    <ul className=\"flex flex-col gap-1 text-sm\">\n      {notices.map((notice) => (\n        <li key={notice.message}>{notice.message}</li>\n      ))}\n    </ul>\n  );\n}\n\n/** The actions the server offers; the dashboard holds no rules (D-003). */\nexport function StatusActions({\n  status,\n  url,\n  workspaceId,\n}: {\n  status: WorkspaceStatus;\n  url: string;\n  workspaceId: string;\n}) {\n  const { t } = useTranslation('workspaces');\n  return (\n    <div className=\"flex flex-wrap gap-2\">\n      {status.actions.includes('open_workspace') && (\n        <Button asChild size=\"sm\">\n          <a href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n            {t('open')}\n          </a>\n        </Button>\n      )}\n      {status.actions.includes('resume_checkout') && (\n        <Button asChild size=\"sm\">\n          <Link to={`/workspaces/new?step=pay&workspace=${workspaceId}`}>\n            {t('resumeCheckout')}\n          </Link>\n        </Button>\n      )}\n      {status.actions.includes('cancel_checkout') && <CancelCheckout workspaceId={workspaceId} />}\n      {(status.actions.includes('update_payment_method') ||\n        status.actions.includes('retry_payment')) && <PaymentButtons status={status} />}\n      {status.actions.includes('contact_support') && (\n        <Button asChild size=\"sm\" variant=\"outline\">\n          <Link to=\"/support\">{t('contactSupport')}</Link>\n        </Button>\n      )}\n    </div>\n  );\n}\n\n/** Give up an unpaid purchase: Checkout closes and the name is free again. */\nfunction CancelCheckout({ workspaceId }: { workspaceId: string }) {\n  const { t } = useTranslation(['workspaces', 'common']);\n  const client = useQueryClient();\n  const navigate = useNavigate();\n  const cancel = useMutation({\n    mutationFn: () => workspacesApi.abandon(workspaceId),\n    onSuccess: () => {\n      clearDraft();\n      toast.success(t('new.pay.cancelled'));\n      void client.invalidateQueries({ queryKey: workspaceKeys.list });\n      void navigate('/workspaces');\n    },\n    onError: (error) => {\n      toast.error(error instanceof ApiError ? error.message : t('new.review.failed'));\n      void client.invalidateQueries({ queryKey: workspaceKeys.list });\n    },\n  });\n  return (\n    <AlertDialog>\n      <AlertDialogTrigger asChild>\n        <Button size=\"sm\" variant=\"outline\">\n          {t('cancelCheckout.button')}\n        </Button>\n      </AlertDialogTrigger>\n      <AlertDialogContent>\n        <AlertDialogHeader>\n          <AlertDialogTitle>{t('cancelCheckout.title')}</AlertDialogTitle>\n          <AlertDialogDescription>{t('cancelCheckout.body')}</AlertDialogDescription>\n        </AlertDialogHeader>\n        <AlertDialogFooter>\n          <AlertDialogCancel>{t('cancelCheckout.keep')}</AlertDialogCancel>\n          <AlertDialogAction onClick={() => cancel.mutate()}>\n            {t('cancelCheckout.confirm')}\n          </AlertDialogAction>\n        </AlertDialogFooter>\n      </AlertDialogContent>\n    </AlertDialog>\n  );\n}\n\n/** An unpaid renewal: update the payment method (Stripe's portal), or retry now (D-028). */\nfunction PaymentButtons({ status }: { status: WorkspaceStatus }) {\n  const { t } = useTranslation('workspaces');\n  const { portal, retry } = usePaymentRecovery();\n  return (\n    <>\n      {status.actions.includes('update_payment_method') && (\n        <Button size=\"sm\" disabled={portal.isPending} onClick={() => portal.mutate(undefined)}>\n          {t('updatePaymentMethod')}\n        </Button>\n      )}\n      {status.actions.includes('retry_payment') && (\n        <Button\n          size=\"sm\"\n          variant=\"outline\"\n          disabled={retry.isPending}\n          onClick={() => retry.mutate()}\n        >\n          {t('retryPayment')}\n        </Button>\n      )}\n    </>\n  );\n}\n","import type { WorkspaceStatus } from '@/api/types';\n\n/** Usage means something only while the workspace exists: not before it\n * runs, nor once it has ended (design 03). */\nexport function hasUsage(status: WorkspaceStatus): boolean {\n  return ![\n    'awaiting_payment',\n    'payment_processing',\n    'setting_up',\n    'cancelled',\n    'ending',\n    'restorable',\n  ].includes(status.code);\n}\n\n/** Notices about pending subscription changes; the detail page lists those\n * changes in its plan card instead, with Undo. */\nexport const CHANGE_NOTICES = ['cancel_scheduled', 'change_scheduled', 'change_awaiting_payment'];\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router';\nimport { toast } from 'sonner';\nimport type { WorkspaceDetail } from '@/api/types';\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n  AlertDialogTrigger,\n} from '@/components/ui/alert-dialog';\nimport { Button } from '@/components/ui/button';\nimport { ApiError } from '@/lib/api';\nimport { formatDate } from '@/lib/format';\nimport { workspacesApi, workspaceKeys } from '../api';\n\n/** Pending changes, and what the owners can do with the subscription: the\n * server says which (D-003). */\nexport function SubscriptionControls({ workspace }: { workspace: WorkspaceDetail }) {\n  const { t } = useTranslation('workspaces');\n  const client = useQueryClient();\n  const actions = workspace.status.actions;\n  const { data: changes = [] } = useQuery({\n    queryKey: workspaceKeys.changes(workspace.id),\n    queryFn: () => workspacesApi.changes(workspace.id),\n  });\n  const refresh = () => {\n    void client.invalidateQueries({ queryKey: ['workspaces'] });\n  };\n  const failed = (error: unknown) =>\n    toast.error(error instanceof ApiError ? error.message : t('new.review.failed'));\n  const undo = useMutation({\n    mutationFn: (changeId: number) => workspacesApi.undoChange(workspace.id, changeId),\n    onSuccess: () => {\n      toast.success(t('change.undone'));\n      refresh();\n    },\n    onError: failed,\n  });\n  const cancel = useMutation({\n    mutationFn: () => workspacesApi.cancel(workspace.id),\n    onSuccess: () => {\n      toast.success(t('change.cancel.done'));\n      refresh();\n    },\n    onError: failed,\n  });\n  const undoCancel = useMutation({\n    mutationFn: () => workspacesApi.undoCancel(workspace.id),\n    onSuccess: () => {\n      toast.success(t('change.cancel.undone'));\n      refresh();\n    },\n    onError: failed,\n  });\n  const renews = workspace.subscription?.renewsOn\n    ? formatDate(workspace.subscription.renewsOn)\n    : '';\n\n  return (\n    <div className=\"flex flex-col gap-4\">\n      {changes.length > 0 && (\n        <ul className=\"flex flex-col gap-2 text-sm\">\n          {changes.map((change) => (\n            <li\n              key={change.id}\n              className=\"flex flex-wrap items-center justify-between gap-2 border p-3\"\n            >\n              <span>\n                {change.status === 'awaiting_payment'\n                  ? t('change.pending.awaiting', { change: change.summary })\n                  : change.kind === 'cancel'\n                    ? t('change.pending.cancel', {\n                        date: change.effectiveOn ? formatDate(change.effectiveOn) : '',\n                      })\n                    : t('change.pending.scheduled', {\n                        change: change.summary,\n                        date: change.effectiveOn ? formatDate(change.effectiveOn) : '',\n                      })}\n              </span>\n              {change.paymentUrl && (\n                <Button asChild size=\"sm\">\n                  <a href={change.paymentUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n                    {t('change.pending.completePayment')}\n                  </a>\n                </Button>\n              )}\n              {change.status === 'scheduled' && change.kind !== 'cancel' && (\n                <Button\n                  size=\"sm\"\n                  variant=\"outline\"\n                  disabled={undo.isPending}\n                  onClick={() => undo.mutate(change.id)}\n                >\n                  {t('change.undo')}\n                </Button>\n              )}\n            </li>\n          ))}\n        </ul>\n      )}\n      <div className=\"flex flex-wrap gap-2\">\n        {actions.includes('change_subscription') && (\n          <Button asChild size=\"sm\">\n            <Link to={`/workspaces/${workspace.id}/change`}>{t('change.button')}</Link>\n          </Button>\n        )}\n        {actions.includes('switch_to_yearly') && (\n          <Button asChild size=\"sm\" variant=\"outline\">\n            <Link to={`/workspaces/${workspace.id}/change?interval=year`}>\n              {t('change.toYearly')}\n            </Link>\n          </Button>\n        )}\n        {actions.includes('undo_cancel') && (\n          <Button size=\"sm\" disabled={undoCancel.isPending} onClick={() => undoCancel.mutate()}>\n            {t('change.cancel.undo')}\n          </Button>\n        )}\n        {actions.includes('cancel_subscription') && (\n          <AlertDialog>\n            <AlertDialogTrigger asChild>\n              <Button size=\"sm\" variant=\"ghost\">\n                {t('change.cancel.button')}\n              </Button>\n            </AlertDialogTrigger>\n            <AlertDialogContent>\n              <AlertDialogHeader>\n                <AlertDialogTitle>{t('change.cancel.title')}</AlertDialogTitle>\n                <AlertDialogDescription>\n                  {t('change.cancel.body', { date: renews })}\n                </AlertDialogDescription>\n              </AlertDialogHeader>\n              <AlertDialogFooter>\n                <AlertDialogCancel>{t('change.cancel.keep')}</AlertDialogCancel>\n                <AlertDialogAction onClick={() => cancel.mutate()}>\n                  {t('change.cancel.confirm')}\n                </AlertDialogAction>\n              </AlertDialogFooter>\n            </AlertDialogContent>\n          </AlertDialog>\n        )}\n      </div>\n    </div>\n  );\n}\n","import * as React from 'react';\nimport { cn } from 'cn';\nimport { Progress as ProgressPrimitive } from 'radix-ui';\n\nfunction Progress({\n  className,\n  value,\n  ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      className={cn(\n        'bg-muted relative flex h-1 w-full items-center overflow-x-hidden rounded-full',\n        className,\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"bg-primary size-full flex-1 transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  );\n}\n\nexport { Progress };\n","import { useTranslation } from 'react-i18next';\nimport type { Workspace } from '@/api/types';\nimport { Progress } from '@/components/ui/progress';\nimport { formatRelative } from '@/lib/format';\n\nexport function UsageBars({ usage }: { usage: Workspace['usage'] }) {\n  const { t } = useTranslation('workspaces');\n  if (!usage) return <p className=\"text-muted-foreground text-sm\">{t('usage.none')}</p>;\n  return (\n    <div className=\"flex flex-col gap-3\">\n      <dl className=\"grid gap-3 sm:grid-cols-2\">\n        {usage.items.map((item) => (\n          // dt and dd straight under the item's div, as a description list requires.\n          <div key={item.key} className=\"grid grid-cols-[1fr_auto] gap-x-2 gap-y-1 text-sm\">\n            <dt>{item.label}</dt>\n            <dd className=\"text-muted-foreground text-right tabular-nums\">\n              {item.limit === null\n                ? t('usage.unlimited', { used: item.used })\n                : t('usage.of', { used: item.used, limit: item.limit })}\n            </dd>\n            <dd className=\"col-span-2\">\n              <Progress value={item.percent ?? 0} aria-label={item.label} />\n            </dd>\n          </div>\n        ))}\n      </dl>\n      <p className=\"text-muted-foreground text-xs\">\n        {t('usage.updated', { when: formatRelative(usage.takenAt) })}\n      </p>\n    </div>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useParams, useSearchParams } from 'react-router';\nimport { Button } from '@/components/ui/button';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { ApiError } from '@/lib/api';\nimport { formatDate } from '@/lib/format';\nimport { changing, workspacesApi, workspaceKeys } from './api';\nimport {\n  Notices,\n  SetupProgress,\n  StatusActions,\n  StatusBadge,\n  StatusMessage,\n} from './components/StatusParts';\nimport { CHANGE_NOTICES, hasUsage } from './components/status';\nimport { SubscriptionControls } from './components/SubscriptionControls';\nimport { UsageBars } from './components/UsageBars';\nimport { clearDraft } from './new/draft';\n\n/** One workspace (design 06). Paid workspaces also show their plan and\n * subscription, with changes (M6); manual ones status, usage and workspace. */\nexport function WorkspaceDetailPage() {\n  const { t } = useTranslation('workspaces');\n  const { id = '' } = useParams();\n  const [params] = useSearchParams();\n  const returning = params.has('checkout'); // back from Stripe's Checkout\n  useEffect(() => {\n    if (returning) clearDraft();\n  }, [returning]);\n  const { data, error } = useQuery({\n    queryKey: workspaceKeys.detail(id),\n    queryFn: () => workspacesApi.detail(id),\n    refetchInterval: (query) => (changing(query.state.data?.status) ? 5_000 : false),\n  });\n\n  const back = (\n    <Button asChild variant=\"ghost\" size=\"sm\">\n      <Link to=\"/workspaces\">{t('back')}</Link>\n    </Button>\n  );\n  if (error instanceof ApiError && error.status === 404) {\n    return (\n      <>\n        <PageHeader title={t('title')}>{back}</PageHeader>\n        <Card>\n          <CardContent className=\"text-muted-foreground py-6\">{t('detail.notFound')}</CardContent>\n        </Card>\n      </>\n    );\n  }\n  if (!data) return <Skeleton className=\"h-96 w-full\" />;\n\n  return (\n    <>\n      <PageHeader title={data.name}>{back}</PageHeader>\n      <div className=\"grid items-start gap-6 @4xl/main:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n        <div className=\"flex flex-col gap-6\">\n          <Card>\n            <CardHeader>\n              <div className=\"flex items-center justify-between gap-2\">\n                <CardTitle>{t('detail.status')}</CardTitle>\n                <StatusBadge status={data.status} />\n              </div>\n            </CardHeader>\n            <CardContent className=\"flex flex-col gap-4\">\n              <StatusMessage status={data.status} />\n              <SetupProgress status={data.status} />\n              {/* The plan card lists pending changes, with Undo: not twice. */}\n              <Notices status={data.status} without={data.subscription ? CHANGE_NOTICES : []} />\n              <StatusActions status={data.status} url={data.url} workspaceId={data.id} />\n            </CardContent>\n          </Card>\n          {data.subscription && (\n            <Card>\n              <CardHeader>\n                <CardTitle>{t('detail.plan')}</CardTitle>\n              </CardHeader>\n              <CardContent className=\"flex flex-col gap-6\">\n                <dl className=\"flex flex-col gap-3 text-sm\">\n                  <div>\n                    <dt className=\"text-muted-foreground\">{t('detail.planName')}</dt>\n                    <dd>{data.plan.name}</dd>\n                    {data.packs.map((pack) => (\n                      <dd key={pack.name} className=\"text-muted-foreground\">\n                        {t('detail.pack', { count: pack.quantity, name: pack.name })}\n                      </dd>\n                    ))}\n                    {data.addedFeatures.map((feature) => (\n                      <dd key={feature.key} className=\"text-muted-foreground\">\n                        {t('detail.addedFeature', { name: feature.title })}\n                      </dd>\n                    ))}\n                  </div>\n                  <div>\n                    <dt className=\"text-muted-foreground\">{t('detail.billing')}</dt>\n                    <dd>{t(`detail.interval.${data.subscription.interval}`)}</dd>\n                  </div>\n                  {data.subscription.renewsOn && (\n                    <div>\n                      <dt className=\"text-muted-foreground\">{t('detail.renews')}</dt>\n                      <dd>{formatDate(data.subscription.renewsOn)}</dd>\n                    </div>\n                  )}\n                </dl>\n                <SubscriptionControls workspace={data} />\n              </CardContent>\n            </Card>\n          )}\n          {hasUsage(data.status) && (\n            <Card>\n              <CardHeader>\n                <CardTitle>{t('usage.title')}</CardTitle>\n              </CardHeader>\n              <CardContent>\n                <UsageBars usage={data.usage} />\n              </CardContent>\n            </Card>\n          )}\n        </div>\n        <Card>\n          <CardHeader>\n            <CardTitle>{t('detail.workspace')}</CardTitle>\n          </CardHeader>\n          <CardContent>\n            <dl className=\"flex flex-col gap-3 text-sm\">\n              <div>\n                <dt className=\"text-muted-foreground\">{t('detail.address')}</dt>\n                <dd>\n                  <a\n                    className=\"underline underline-offset-4\"\n                    href={data.url}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                  >\n                    {data.address}\n                  </a>\n                </dd>\n              </div>\n              <div>\n                <dt className=\"text-muted-foreground\">{t('detail.admin')}</dt>\n                <dd>{data.adminEmail}</dd>\n                <dd className=\"text-muted-foreground text-xs\">{t('detail.adminHint')}</dd>\n              </div>\n              <div>\n                <dt className=\"text-muted-foreground\">{t('detail.created')}</dt>\n                <dd>{formatDate(data.createdAt)}</dd>\n              </div>\n              {data.readyAt && (\n                <div>\n                  <dt className=\"text-muted-foreground\">{t('detail.ready')}</dt>\n                  <dd>{formatDate(data.readyAt)}</dd>\n                </div>\n              )}\n              {data.managed && (\n                <div>\n                  <dt className=\"text-muted-foreground\">{t('detail.billing')}</dt>\n                  <dd>{t('managed')}</dd>\n                </div>\n              )}\n            </dl>\n          </CardContent>\n        </Card>\n      </div>\n    </>\n  );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router';\nimport { Button } from '@/components/ui/button';\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from '@/components/ui/card';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { formatDate } from '@/lib/format';\nimport { changing, workspacesApi, workspaceKeys } from './api';\nimport {\n  Notices,\n  SetupProgress,\n  StatusActions,\n  StatusBadge,\n  StatusMessage,\n} from './components/StatusParts';\nimport { hasUsage } from './components/status';\nimport { UsageBars } from './components/UsageBars';\n\n/** The organisation's workspaces (design 06), each with its server-built status. */\nexport function WorkspacesPage() {\n  const { t } = useTranslation('workspaces');\n  const { data } = useQuery({\n    queryKey: workspaceKeys.list,\n    queryFn: workspacesApi.list,\n    refetchInterval: (query) =>\n      query.state.data?.some((workspace) => changing(workspace.status)) ? 5_000 : false,\n  });\n\n  return (\n    <>\n      <PageHeader title={t('title')}>\n        <Button asChild>\n          <Link to=\"/workspaces/new\">{t('new.button')}</Link>\n        </Button>\n      </PageHeader>\n      {!data ? (\n        <Skeleton className=\"h-48 w-full\" />\n      ) : data.length === 0 ? (\n        <Card>\n          <CardHeader>\n            <CardTitle>{t('empty.title')}</CardTitle>\n            <CardDescription>{t('empty.body')}</CardDescription>\n          </CardHeader>\n          <CardFooter>\n            <Button asChild>\n              <Link to=\"/workspaces/new\">{t('new.button')}</Link>\n            </Button>\n          </CardFooter>\n        </Card>\n      ) : (\n        <div className=\"grid items-start gap-6 @4xl/main:grid-cols-2\">\n          {data.map((workspace) => (\n            <Card key={workspace.id}>\n              <CardHeader>\n                <div className=\"flex items-center justify-between gap-2\">\n                  <CardTitle>{workspace.name}</CardTitle>\n                  <StatusBadge status={workspace.status} />\n                </div>\n                <CardDescription>\n                  {workspace.address} ·{' '}\n                  {workspace.managed\n                    ? t('managed')\n                    : workspace.subscription?.renewsOn\n                      ? t('planRenews', {\n                          plan: workspace.plan.name,\n                          date: formatDate(workspace.subscription.renewsOn),\n                        })\n                      : t('plan', { plan: workspace.plan.name })}\n                </CardDescription>\n              </CardHeader>\n              <CardContent className=\"flex flex-col gap-4\">\n                <StatusMessage status={workspace.status} />\n                <SetupProgress status={workspace.status} />\n                <Notices status={workspace.status} />\n                {hasUsage(workspace.status) && <UsageBars usage={workspace.usage} />}\n              </CardContent>\n              <CardFooter className=\"flex justify-between gap-2\">\n                <StatusActions\n                  status={workspace.status}\n                  url={workspace.url}\n                  workspaceId={workspace.id}\n                />\n                <Button asChild size=\"sm\" variant=\"ghost\">\n                  <Link to={`/workspaces/${workspace.id}`}>{t('details')}</Link>\n                </Button>\n              </CardFooter>\n            </Card>\n          ))}\n        </div>\n      )}\n    </>\n  );\n}\n","import { Trans, useTranslation } from 'react-i18next';\nimport { Card, CardContent } from '@/components/ui/card';\nimport { PageHeader } from '@/components/layout/AppLayout';\nimport { runtimeConfig } from '@/lib/runtime-config';\n\nexport function SupportPage() {\n  const { t } = useTranslation('app');\n  const email = runtimeConfig().supportEmail;\n  return (\n    <>\n      <PageHeader title={t('support.title')} />\n      <Card>\n        <CardContent className=\"py-6\">\n          <p>\n            <Trans\n              t={t}\n              i18nKey=\"support.body\"\n              values={{ email }}\n              components={{\n                mail: (\n                  <a\n                    href={`mailto:${email}`}\n                    className=\"font-medium underline underline-offset-4\"\n                  />\n                ),\n              }}\n            />\n          </p>\n        </CardContent>\n      </Card>\n    </>\n  );\n}\n","import { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router';\nimport logo from '@/assets/brand/logo-white.png';\nimport background from '@/assets/landing/map-background.jpg';\nimport { usePageHeading } from '@/lib/page';\n\n// The page eyefibr.com shows today (the coming-soon gate of the old site),\n// with the old navbar's Dashboard button in the top right (D-059). The inline\n// logo and the paragraph margin reproduce the browser defaults the original\n// page relied on, which Tailwind's base styles reset.\nconst SYSTEM_FONT = '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif';\n\nexport function LandingPage() {\n  const { t } = useTranslation();\n  const heading = usePageHeading();\n  return (\n    <main\n      className=\"relative flex min-h-screen items-center justify-center overflow-hidden\"\n      style={{ fontFamily: SYSTEM_FONT }}\n    >\n      <div\n        aria-hidden=\"true\"\n        className=\"absolute inset-0 scale-110 bg-cover bg-center bg-no-repeat blur-[16px]\"\n        style={{ backgroundImage: `url(${background})` }}\n      />\n      <div aria-hidden=\"true\" className=\"absolute inset-0 bg-black/40\" />\n\n      <header className=\"absolute top-0 right-0 z-10 p-6\">\n        {/* bg-black/15 (not on eyefibr.com): on phones the pill sits over a light part of\n            the photo, where white text alone is 4.25:1 (WCAG 1.4.3 asks 4.5:1). */}\n        <Link\n          to=\"/login\"\n          className=\"inline-block rounded-[30px] border-2 border-white bg-black/15 px-[37px] py-[6px] text-sm font-semibold text-white transition-colors hover:bg-white hover:text-[#7052fb] focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-black/40 focus-visible:outline-none\"\n        >\n          {t('landing.dashboard')}\n        </Link>\n      </header>\n\n      <div className=\"relative z-10 max-w-[32rem] p-8 text-center text-white\">\n        {/* The logo is the page's heading; h1 keeps the inline layout (no margins, inherited size). */}\n        <h1 ref={heading} tabIndex={-1} className=\"outline-none\">\n          <img\n            src={logo}\n            alt={t('landing.logoAlt')}\n            className=\"mb-6 inline h-auto w-48 align-baseline\"\n          />\n        </h1>\n        <p className=\"my-[1em] text-[1.05rem] leading-normal\">{t('landing.message')}</p>\n      </div>\n    </main>\n  );\n}\n","import { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router';\nimport { usePageHeading } from '@/lib/page';\n\n/** An address no route serves. Signed-out visitors following the link are\n * asked to sign in first. */\nexport function NotFoundPage() {\n  const { t } = useTranslation();\n  const heading = usePageHeading(t('notFound.title'));\n  return (\n    <main className=\"flex min-h-full flex-col items-center justify-center gap-3 p-6 text-center\">\n      <h1 ref={heading} tabIndex={-1} className=\"text-2xl font-semibold outline-none\">\n        {t('notFound.title')}\n      </h1>\n      <p className=\"text-muted-foreground\">{t('notFound.body')}</p>\n      <Link to=\"/workspaces\" className=\"text-primary underline underline-offset-4\">\n        {t('notFound.link')}\n      </Link>\n    </main>\n  );\n}\n","import { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { createBrowserRouter, Navigate, RouterProvider, type RouteObject } from 'react-router';\nimport { AppLayout } from '@/components/layout/AppLayout';\nimport { AccountPage } from '@/features/account/AccountPage';\nimport { PublicOnly, RequireEnrolment, RequireVerified } from '@/features/auth/guards';\nimport { InvitationPage } from '@/features/auth/pages/InvitationPage';\nimport { LoginPage } from '@/features/auth/pages/LoginPage';\nimport { ResetConfirmPage, ResetRequestPage } from '@/features/auth/pages/ResetPasswordPages';\nimport { SignupPage } from '@/features/auth/pages/SignupPage';\nimport { TwoFactorSetupPage } from '@/features/auth/pages/TwoFactorSetupPage';\nimport { VerifyEmailPage } from '@/features/auth/pages/VerifyEmailPage';\nimport { BillingPage } from '@/features/billing/BillingPage';\nimport { ChangePage } from '@/features/workspaces/change/ChangePage';\nimport { NewWorkspacePage } from '@/features/workspaces/new/NewWorkspacePage';\nimport { WorkspaceDetailPage } from '@/features/workspaces/WorkspaceDetailPage';\nimport { WorkspacesPage } from '@/features/workspaces/WorkspacesPage';\nimport { SupportPage } from '@/pages/app-pages';\nimport { LandingPage } from '@/pages/landing';\nimport { NotFoundPage } from '@/pages/not-found';\n\n/** Every route of the app (design 06). Exported so tests can mount it in memory. */\nexport const routes: RouteObject[] = [\n  { path: '/', element: <LandingPage /> },\n  { path: '/verify-email/:token', element: <VerifyEmailPage /> },\n  {\n    element: <PublicOnly />,\n    children: [\n      { path: '/login', element: <LoginPage /> },\n      { path: '/signup', element: <SignupPage /> },\n      { path: '/invite/:token', element: <InvitationPage /> },\n      { path: '/reset-password', element: <ResetRequestPage /> },\n      { path: '/reset-password/:uid/:token', element: <ResetConfirmPage /> },\n    ],\n  },\n  {\n    element: <RequireEnrolment />,\n    children: [{ path: '/2fa/setup', element: <TwoFactorSetupPage /> }],\n  },\n  {\n    element: <RequireVerified />,\n    children: [\n      {\n        element: <AppLayout />,\n        children: [\n          { path: '/workspaces', element: <WorkspacesPage /> },\n          { path: '/workspaces/new', element: <NewWorkspacePage /> },\n          { path: '/workspaces/:id', element: <WorkspaceDetailPage /> },\n          { path: '/workspaces/:id/change', element: <ChangePage /> },\n          { path: '/billing', element: <BillingPage /> },\n          { path: '/account', element: <AccountPage /> },\n          { path: '/support', element: <SupportPage /> },\n        ],\n      },\n    ],\n  },\n  { path: '/dashboard/*', element: <Navigate to=\"/workspaces\" replace /> },\n  { path: '*', element: <NotFoundPage /> },\n];\n\nexport function createQueryClient() {\n  return new QueryClient({\n    defaultOptions: {\n      queries: { retry: 1, refetchOnWindowFocus: true, staleTime: 30_000 },\n      mutations: { retry: false },\n    },\n  });\n}\n\nconst queryClient = createQueryClient();\nconst router = createBrowserRouter(routes);\n\nexport function App() {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <RouterProvider router={router} />\n    </QueryClientProvider>\n  );\n}\n","import { StrictMode } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { App } from '@/App';\nimport '@/i18n';\nimport '@/styles/globals.css';\n\nconst root = document.getElementById('root');\nif (!root) throw new Error('Missing #root element');\n\ncreateRoot(root).render(\n  <StrictMode>\n    <App />\n  </StrictMode>,\n);\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","jsxRuntimeModule","require$$0","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","REACT_VIEW_TRANSITION_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","assign","emptyObject","Component","props","context","updater","partialState","callback","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","noop","ReactSharedInternals","hasOwnProperty","ReactElement","refProp","cloneAndReplaceKey","oldElement","newKey","isValidElement","object","escape","escaperLookup","match","userProvidedKeyEscapeRegex","getElementKey","element","index","resolveThenable","thenable","fulfilledValue","error","mapIntoArray","children","array","escapedPrefix","nameSoFar","invokeCallback","c","nextNamePrefix","i","mapChildren","func","result","count","child","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","event","startTransition","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","addTransitionType","transition","transitionTypes","Children","forEachFunc","forEachContext","n","react_production","size","fn","childArray","defaultValue","childrenLength","render","compare","usable","action","initialState","permalink","deps","Context","value","initialValue","create","ref","passthrough","reducer","initialArg","init","subscribe","getSnapshot","getServerSnapshot","reactModule","push","heap","node","a","parentIndex","parent","peek","pop","first","last","length","halfLength","leftIndex","left","rightIndex","right","b","diff","exports","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","needsPaint","localSetTimeout","localClearTimeout","localSetImmediate","advanceTimers","currentTime","timer","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","startTime","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","continuationCallback","channel","port","ms","task","fps","eventHandler","priorityLevel","options","timeout","parentPriorityLevel","schedulerModule","React","formatProdErrorMessage","code","url","Internals","REACT_RECOVERABLE_TYPE","REACT_OPTIMISTIC_KEY","createPortal$1","containerInfo","implementation","getCrossOriginStringAs","as","input","reactDom_production","reason","container","previousTransition","previousUpdatePriority","href","crossOrigin","integrity","fetchPriority","form","checkDCE","err","reactDomModule","Scheduler","require$$1","ReactDOM","require$$2","isValidContainer","getNearestMountedFiber","fiber","nextNode","getSuspenseInstanceFromFiber","suspenseState","getActivityInstanceFromFiber","activityState","assertIsMounted","findCurrentFiberUsingSlowPath","alternate","parentA","parentB","didFindChild","child$0","findCurrentHostFiberImpl","tag","traverseVisibleInstancesAndTextInstances","searchWithinHosts","getFragmentParentInstanceOrContainerFiber","fiberIsPortaledIntoHost","foundPortalParent","getFragmentInstanceOrTextInstanceSiblings","parentHostFiber","findFragmentInstanceOrTextInstanceSiblings","self","state","getInstanceFromHostFiber","searchTarget","searchBoundary","isFiberPrecedingCheck","target","boundary","isFiberFollowingCheck","getParentForFragmentAncestors","inst","getLowestCommonAncestor","instA","instB","getParent","depthA","tempA","tempB","REACT_LEGACY_ELEMENT_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_LEGACY_HIDDEN_TYPE","REACT_MEMO_CACHE_SENTINEL","REACT_CLIENT_REFERENCE","getComponentNameFromType","innerType","ReactDOMSharedInternals","sharedNotPendingObject","valueStack","createCursor","cursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","getOwnHostContext","getChildHostContextProd","popHostContainer","pushHostContext","stateHook","HostTransitionContext","JSCompiler_inline_result","popHostContext","prefix","suffix","describeBuiltInComponentFrame","name","x","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","RunInRootFrame","Fake","control","x$1","prevProps","x$2","sample","namePropDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","frame","describeFiber","childFiber","getStackByFiberInDevAndProd","workInProgress","info","previous","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","now","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","clz32","clz32Fallback","log","LN2","nextTransitionUpdateLane","nextTransitionDeferredLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","getEntangledLanes","allEntangledLanes","index$4","lane","computeExpirationTime","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markRootFinished","finishedLanes","remainingLanes","spawnedLane","updatedLanes","suspendedRetryLanes","previouslyPendingLanes","entanglements","expirationTimes","hiddenUpdates","index$7","hiddenUpdatesForLane","update","markSpawnedDeferredLane","entangledLanes","spawnedLaneIndex","markRootEntangled","rootEntangledLanes","index$8","getBumpedLaneForHydration","renderLane","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","runWithPriority","priority","previousPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","internalLoadPendingKey","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","parentNode","getParentHydrationBoundary","getInstanceFromNode","getNodeFromInstance","getResourcesFromRoot","resources","markNodeAsHoistable","clearPendingLoadOnNode","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","attributeName","viewTransitionMutationContext","pushMutationContext","prev","setValueForAttribute","prefix$10","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","getToStringValue","isCheckable","elem","trackValueOnNode","valueField","currentValue","descriptor","get","set","track","updateValueIfChanged","tracker","lastValue","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","updateInput","lastDefaultValue","checked","defaultChecked","setDefaultValue","initInput","isHydrating","updateOptions","multiple","propValue","setDefaultSelected","updateTextarea","initTextarea","setTextContent","text","firstChild","unitlessNumbers","setValueForStyle","style","styleName","isCustomProperty","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","tagName","aliases","isJavaScriptProtocol","sanitizeURL","noop$1","currentReplayingEvent","getEventTarget","nativeEvent","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","otherNode","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","stateNode","canUseDOM","passiveBrowserEventsSupported","startText","fallbackText","getData","start","startValue","startLength","end","endValue","endLength","minEnd","getEventCharCode","keyCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","EventInterface","SyntheticEvent","UIEventInterface","SyntheticUIEvent","lastMovementX","lastMovementY","lastMouseEvent","MouseEventInterface","getEventModifierState","SyntheticMouseEvent","DragEventInterface","SyntheticDragEvent","FocusEventInterface","SyntheticFocusEvent","AnimationEventInterface","SyntheticAnimationEvent","ClipboardEventInterface","SyntheticClipboardEvent","CompositionEventInterface","SyntheticCompositionEvent","normalizeKey","translateToKey","modifierKeyToProp","modifierStateGetter","keyArg","KeyboardEventInterface","SyntheticKeyboardEvent","PointerEventInterface","SyntheticPointerEvent","SubmitEventInterface","SyntheticSubmitEvent","TouchEventInterface","SyntheticTouchEvent","TransitionEventInterface","SyntheticTransitionEvent","WheelEventInterface","SyntheticWheelEvent","ToggleEventInterface","SyntheticToggleEvent","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","getNativeBeforeInputChars","getFallbackBeforeInputChars","supportedInputTypes","isTextInputElement","nodeName","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$318","isSupported$jscomp$inline_474","element$jscomp$inline_475","stopWatchingForValueChange","handlePropertyChange","handleEventsForInputEventPolyfill","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","is","y","objectIs","shallowEqual","objA","objB","keysA","keysB","currentKey","getActiveElement","doc","getLeafNode","getNodeForCharacterOffset","offset","nodeEnd","containsNode","outerNode","innerNode","getActiveElementDeep","hasSelectionCapabilities","skipSelectionChangeEvent","activeElement","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","prefixedEventNames","getVendorPrefixedEventName","prefixMap","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","globalClientIdCounter$1","getViewTransitionName","instance","pendingEffectsRoot","globalClientId","getClassNameByType","classByType","className","activeTypes","pendingTransitionTypes","getViewTransitionClassName","defaultClass","eventClass","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","queue","pending","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","mode","createFiberImplClass","shouldConstruct","createWorkInProgress","current","resetWorkInProgress","createFiberFromTypeAndProps","owner","fiberTag","isHostHoistableType","createFiberFromFragment","elements","createFiberFromText","content","createFiberFromDehydratedFragment","dehydratedNode","createFiberFromPortal","portal","CapturedStacks","createCapturedValueAtFiber","source","existing","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","restoreSuspendedTreeContext","suspendedContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","listenToNonDelegatedEvent","mediaEventTypes","checkForUnmatchedText","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratableInstanceAfterHydrationBoundary","isSingletonScope","previousHydratableOnEnteringScopedSingleton","getNextHydratable","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","nextValue","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","list","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","AbortControllerLocal","listeners","signal","listener","scheduleCallback$2","NormalPriority","CacheContext","createCache","releaseCache","cache","queueTransitionTypes","queued","transitionType","entangledTransitionTypes","claimQueuedTransitionTypes","claimed","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","entangleAsyncAction","entangledListeners","requestTransitionLane","resolve","pingEngtangledActionScope","chainThenableValue","thenableWithOverride","prevOnStartTransitionFinish","globalMostRecentTransitionTime","root$28","firstScheduledRoot","root$29","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pushTransition","offscreenWorkInProgress","prevCachePool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","fulfilledThenable","rejectedThenable","suspendedThenable","resolveLazy","lazyType","getSuspendedThenable","rejectedReason","thenableState$1","thenableIndexCounter$1","unwrapThenable","coerceRef","throwOnInvalidObjectTypeImpl","returnFiber","newChild","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","textContent","updateElement","elementType","updateFragment","updatePortal","fragment","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildrenArray","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","reconcileChildrenIterator","step","reconcileChildFibersImpl","firstChildFiber","reconcileChildFibers","mountChildFibers","hasForceUpdate","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","updateQueue","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","entangledActionThenable","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","firstBaseUpdate","lastBaseUpdate","pendingQueue","lastPendingUpdate","firstPendingUpdate","newState","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","callbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","reuseHiddenContextOnStack","popHiddenContext","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushDehydratedActivitySuspenseHandler","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","pushSuspenseListContext","newContext","popSuspenseListContext","findFirstSuspended","row","isSuspenseInstancePending","isSuspenseInstanceFallback","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","createFunctionComponentUpdateQueue","use","useMemoCache","memoCache","basicStateReducer","updateReducer","updateReducerImpl","baseQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$64","revertLane","rerenderReducer","dispatch","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","pushSimpleEffect","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","setState","isRenderPhaseUpdate","actionNode","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$70","nextState","onActionSuccess","notifyActionListeners","actionStateReducer","oldState","mountActionState","initialStateProp","ssrFormState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","currentStateHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","useEffectEventImpl","componentUpdateQueue","events","updateEvent","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","pendingState","finishedState","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","provider","root$73","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","eagerState","throwIfDuringRender","identifierPrefix","idWithLeadingBit","booleanOrThenable","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","checkShouldComponentUpdate","oldProps","newProps","nextContext","callComponentWillReceiveProps","resolveClassComponentProps","baseProps","propName$77","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","e$78","logCaughtError","onCaughtError","e$79","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","legacyErrorBoundariesThatAlreadyFailed","stack","throwException","rootRenderLanes","renderDidSuspendDelayIfPossible","workInProgressRootExitStatus","attachPingListener","wrapperError","workInProgressRootConcurrentErrors","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateSimpleMemoComponent","checkScheduledUpdateOrContext","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","bailoutOffscreenComponent","nextBaseLanes","remainingChildLanes","mountActivityChildren","mountWorkInProgressOffscreenFiber","retryActivityComponentWithoutHydrating","updateActivityComponent","didSuspend","canHydrateHydrationBoundary","dehydrated","markRef","replayFunctionComponent","updateClassComponent","contextType","unresolvedOldProps","oldContext","contextType$jscomp$0","mountHostRootWithoutHydrating","SUSPENDED_MARKER","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","mountSuspensePrimaryChildren","dehydrated$96","updateDehydratedSuspenseComponent","primaryChildren","offscreenProps","retrySuspenseComponentWithoutHydrating","didPrimaryChildrenDefer","suspenseInstance","digest","scheduleSuspenseWorkOnFiber","findLastContentRow","lastContentRow","currentRow","initSuspenseListRenderState","isBackwards","tail","tailMode","renderState","reverseChildren","nextRow","updateSuspenseListComponent","revealOrder","suspenseContext","shouldForceFallback","updateContextProvider","attemptEarlyBailoutIfNoScheduledUpdate","state$108","primaryChildLanes","beginWork","$$typeof","getResource","createHoistableInstance","resolveSingletonInstance","canHydrateInstance","canHydrateTextInstance","markUpdate","preloadInstanceAndSuspendIfNeeded","maySuspendCommit","shouldRemainOnPreviousScreen","preloadResourceAndSuspendIfNeeded","resource","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","tailNode","lastTailNode","bubbleProperties","completedWork","didBailout","newChildLanes","subtreeFlags","child$113","completeWork","nextResource","ownerDocument","getOwnerDocumentFromRootContainer","setInitialProperties","listenToAllSupportedEvents","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","flags","finishedWork","lastEffect","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","destroy","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","safelyAttachRef","instanceToUse","createViewTransitionInstance","fragmentInstance","FragmentInstance","addFragmentHandleToFiber","safelyDetachRef","error$148","commitNewChildToFragmentInstances","parentFragmentInstances","commitNewChildToFragmentInstance","commitFragmentInstanceInsertionEffects","isFragmentInstanceParent","isFragmentInstanceHostBoundary","commitFragmentInstanceDeletionEffects","deleteChildFromFragmentInstance","commitHostMount","commitHostUpdate","domElement","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","attributes","shouldStartViewTransition","appearingViewTransitions","trackEnterViewTransitions","placement","viewTransitionCancelableChildren","pushViewTransitionCancelableScope","prevChildren","viewTransitionHostInstanceIdx","applyViewTransitionToHostInstances","collectMeasurements","stopAtNestedViewTransitions","applyViewTransitionToHostInstancesRecursive","inViewport","measurement","measureInstance","applyViewTransitionName","restoreViewTransitionOnHostInstances","restoreViewTransitionName","commitAppearingPairViewTransitions","commitEnterViewTransitions","gesture","scheduleViewTransitionEvent","commitDeletedPairViewTransitions","deletion","pairs","pair","commitExitViewTransitions","commitNestedViewTransitions","changedParent","restorePairedViewTransitions","restoreEnterOrExitViewTransitions","restoreNestedViewTransitions","measureViewTransitionHostInstancesRecursive","parentViewTransition","newName","oldName","previousMeasurements","previousMeasurement","nextMeasurement","newRect","measureNestedViewTransitions","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","offscreenDirectParentIsHidden","needsFormReset","PossiblyWeakSet","nextEffect","viewTransitionContextChanged","inUpdateViewTransition","rootViewTransitionAffected","rootViewTransitionNameCanceled","commitBeforeMutationEffects","committedLanes","eventsEnabled","_enabled","selection","anchorOffset","focusNode","indexWithinAnchor","indexWithinFocus","next","selectionInformation","commitBeforeMutationEffects_complete","isViewTransitionEligible$jscomp$0","isViewTransitionEligible","resolvedPrevProps","clearContainerSparingly","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","error$146","commitActivityHydrationCallbacks","commitSuspenseHydrationCallbacks","retryDehydratedSuspenseBoundary","registerSuspenseInstanceRetry","newOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","hideOrUnhideAllChildren","parentFiber","hideOrUnhideAllChildrenOnFiber","display","hideOrUnhideNearestPortals","instance$jscomp$1","hideOrUnhideDehydratedBoundary","isHidden$jscomp$0","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearHydrationBoundary","retryIfBlockedOn","getRetryCache","retryCache","attachSuspenseRetryListeners","wakeables","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","commitMutationEffectsOnFiber","currentHoistableRoot","ii","_eventPayloads$ii2","commitReconciliationEffects","getHydratableHoistableCache","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","prevOffscreenSubtreeIsHidden","prevOffscreenSubtreeWasHidden","prevOffscreenDirectParentIsHidden$166","recursivelyTraverseDisappearLayoutEffects","hostParentFiber","parent$jscomp$0","parent$149","before$150","parent$151","before$152","recursivelyTraverseAfterMutationEffects","commitAfterMutationEffectsOnFiber","layoutEffectTraversalFlags$jscomp$0","layoutEffectTraversalFlags","finishedRoot$jscomp$0","includeWorkInProgressEffects","hiddenCallbacks","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","id","onPostCommit","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","suspendedState","accumulateSuspenseyCommitOnFiber","suspendResource","suspendInstance","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","sibling","DefaultAsyncDispatcher","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","pendingViewTransition","pendingViewTransitionEvents","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","exitStatus","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","wasRootDehydrated","scheduleTimeout","completeRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","onUnsuspend","waitForCommitToBeReady","completeRoot","check","didAttemptEntireTree","index$6","flushSyncWorkAcrossRoots_impl","resetWorkInProgressStack","timeoutHandle","cancelTimeout","handleThrow","thrownValue","pushDispatcher","prevDispatcher","pushAsyncDispatcher","prevAsyncDispatcher","shouldYieldForPrerendering","prevExecutionContext","unitOfWork","throwAndUnwindWorkLoop","workLoopSync","thrownValue$184","performUnitOfWork","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","workLoopConcurrentByScheduler","thrownValue$186","suspendedReason","unwindUnitOfWork","skipSiblings","flushPendingEffects","commitRoot","scheduleCallback$1","flushPassiveEffects","startViewTransition","flushMutationEffects","flushLayoutEffects","flushAfterMutationEffects","flushSpawnedWork","reportViewTransitionError","onRecoverableError","rootMutationHasEffect","curFocusedElem","priorFocusedElem","priorSelectionRange","win","start$jscomp$0","end$jscomp$0","startMarker","endMarker","range","rootHasLayoutEffect","committedViewTransition","passiveSubtreeMask","releaseRootPooledCache","recoverableError","renderPriority","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","retryLane","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleImmediateRootScheduleTask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$190","performSyncWorkOnRoot","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$5","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","scheduleMicrotask","actionScopeLane","coerceFormActionProp","actionProp","extractEvents$1","maybeTargetInst","submitter","i$jscomp$inline_1667","eventName$jscomp$inline_1668","domEventName$jscomp$inline_1669","capitalizedEvent$jscomp$inline_1670","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","currentTarget","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","dispatchEvent","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","targetFiber","captureName","_instance2","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","setProp","setPropOnCustomElement","hasSrc","hasSrcSet","propKey","propValue$204","emptyProps","lastProps","lastProp","propKey$221","propKey$237","propKey$242","propKey$247","propKey$252","isLikelyStaticResource","initiatorType","estimateBandwidth","bits","resourceEntries","entry","transferSize","duration","overlapEntry","overlapStartTime","overlapTransferSize","overlapInitiatorType","namespaceURI","parentNamespace","rootContainerInstance","internalInstanceHandle","currentPopstateTransitionEvent","localPromise","localRequestAnimationFrame","handleErrorInNextTick","parentInstance","hydrationInstance","depth","clearSingletonPreambleContribution","node$jscomp$0","nextNode$jscomp$0","rect","viewTransitionName","createMeasurement","computedStyle","forceLayout","waitForImageToLoad","rootContainer","mutationCallback","layoutCallback","afterMutationCallback","spawnedWorkCallback","passiveCallback","errorCallback","ownerWindow","pendingNavigation","previousFontLoadingStatus","blockingPromises","suspenseyImages","imgBytes","suspenseyImage","estimateImageBytes","estimatedBytesWithinLimit","viewTransitionAnimations","animations","animation","effect","pseudoElement","height","unchangedDimensions","j","keyframe","w","ViewTransitionPseudoElement","pseudo","keyframes","selector","fragmentFiber","optionsOrUseCapture","cleanup","indexOfEventListener","attachedListener","getAttachOptions","addEventListenerToChild","_listeners$index","removeEventListenerFromChild","opts","normalizeListenerOptions","eventListeners","item","temp","_eventListeners$i","focusOptions","setFocusOnFiberIfFocusable","setFocusIfFocusable","collectChildren","collection","blurActiveElementWithinFragment","observer","observeChild","observers","unobserveChild","pendingIntersectionUnobserves","intersectionUnobserveScheduled","schedulePendingIntersectionUnobserve","requestPostPaintCallback","rects","collectClientRects","getRootNodeOptions","parentHostInstance","parentHostInstanceFromDOM","firstResult","lastResult","otherNodeIsWithinFirstOrLastChild","validateDocumentPositionWithFiberTree","documentPosition","precedingBoundaryFiber","followingBoundaryFiber","otherFiber","scrollTextNodeIntoView","textNode","resolvedAlignToTop","alignToTop","hostSiblings","addFragmentHandleToInstance","childInstance","_eventListeners$i3","writeIdx","_eventListeners$i4","anyProps","nodeType","data","targetInstance","handleFocus","didFocus","time","preloadPropsMap","preconnectsSet","rootNode","previousDispatcher","flushSyncWork","requestFormReset","prefetchDNS","preconnect","preload","preloadModule","preinitScript","preinitStyle","preinitModuleScript","previousWasRendering","wasRendering","formInst","globalDocument","preconnectAs","rel","limitedEscapedHref","preloadSelector","getStyleKey","getScriptKey","getStylesheetSelectorFromKey","getScriptSelectorFromKey","precedence","adoptPreloadPropsForStylesheet","link","reject","insertStylesheet","src","scripts","adoptPreloadPropsForScript","currentProps","currentResource","styles$268","resource$269","preloadStylesheet","stylesheetPropsFromRawProps","rawProps","preloadProps","hoistableRoot","styleProps","instance$274","linkInstance","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","hostContext","onUnsuspendImg","timeoutOffset","insertSuspendedStylesheets","commit","stylesheetTimer","unsuspend","imgTimer","checkIfFullyUnsuspended","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","onDefaultTransitionIndicator","formState","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","attemptHydrationAtCurrentPriority","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","nearestMounted","hasScheduledReplayAttempt","queuedFocus","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queuedExplicitHydrationTargets","accumulateOrCreateContinuousQueuedReplayableEvent","existingQueuedEvent","pointerId","attemptExplicitHydrationTarget","queuedTarget","attemptReplayContinuousQueuedEvent","queuedEvent","targetContainers","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","map","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","formProps","defaultOnDefaultTransitionIndicator","handleNavigate","pendingResolve","handleNavigateComplete","isCancelled","startFakeNavigation","currentEntry","ReactDOMRoot","internalRoot","ReactDOMHydrationRoot","isomorphicReactPackageVersion$jscomp$inline_2043","componentOrElement","internals$jscomp$inline_2586","hook$jscomp$inline_2587","reactDomClient_production","clientModule","QueryClientContext","React.createContext","useQueryClient","queryClient","client","React.useContext","QueryClientProvider","React.useEffect","jsx","defaultTimeoutProvider","delay","timeoutId","intervalId","TimeoutManager","#provider","#providerCalled","timeoutManager","systemSetTimeoutZero","isServer","functionalUpdate","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveQueryValue","query","matchQuery","filters","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","status","mutationKey","hashKey","_","val","isPlainObject","bKeys","hasOwn","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","copy","equalItems","aItem","bItem","v","shallowEqualObjects","o","hasObjectPrototype","objectPrototype","prot","sleep","replaceData","prevData","addToEnd","items","max","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","shouldThrowError","throwOnError","params","addConsumeAwareSignal","getSignal","onCancelled","consumed","isServerFn","isServer$1","Subscribable","FocusManager","#focused","#cleanup","#setup","onFocus","setup","focused","isFocused","focusManager","defaultScheduler","createNotifyManager","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","flush","originalQueue","args","notifyManager","OnlineManager","#online","onOnline","onlineListener","offlineListener","online","onlineManager","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","createRetryer","isRetryCancelled","continueFn","promiseResolve","promiseReject","promise","isResolved","cancel","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","canResume","continueResolve","run","promiseOrValue","initialPromise","retryDelay","shouldRetry","Removable","#gcTimeout","newGcTime","infiniteQueryBehavior","pages","direction","oldPages","oldPageParams","currentPage","fetchFn","cancelled","addSignalProperty","queryFn","fetchPage","param","queryFnContext","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","Query","#queryType","#initialState","#revertState","#cache","#client","#retryer","#defaultOptions","#abortSignalConsumed","getDefaultState","defaultState","successState","newData","#dispatch","abortController","retryer","fetchState","dataUpdatedAt","hasData","initialDataUpdatedAt","QueryObserver","#currentQuery","#currentQueryInitialState","#currentResult","#currentResultState","#currentResultOptions","#selectError","#selectFn","#selectResult","#lastQueryWithDefinedData","#staleTimeoutId","#refetchIntervalId","#currentRefetchInterval","#trackedProps","shouldFetchOnMount","#executeFetch","#updateTimers","shouldFetchOn","#clearStaleTimeout","#clearRefetchInterval","prevOptions","prevQuery","#updateQuery","mounted","shouldFetchOptionally","#updateStaleTimeout","nextRefetchInterval","#computeRefetchInterval","#updateRefetchInterval","onPropTracked","defaultedOptions","unsubscribe","resolveEarly","cachePromise","#shouldScheduleTimer","nextInterval","prevResult","prevResultState","prevResultOptions","queryInitialState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","skipSelect","placeholderData","selectError","isFetching","isPending","isError","isLoading","isStale","nextResult","notifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","shouldLoadOnMount","field","Mutation","#observers","#mutationCache","variables","onContinue","mutationFnContext","restored","isPaused","e","MutationCache","#mutations","#scopes","#mutationId","scopeFor","scopedMutations","firstPendingMutation","m","defaultedFilters","pausedMutations","MutationObserver","#currentMutation","#mutateOptions","#updateResult","#notify","mutateOptions","onMutateResult","QueryCache","#queries","queryHash","queries","QueryClient","#queryCache","#queryDefaults","#mutationDefaults","#mountCount","#unsubscribeFocus","#unsubscribeOnline","cachedData","queryCache","matched","queriesToRefetch","defaultedCancelOptions","promises","queryData","select","defaults","queryDefault","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","isRestoring","subscribed","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","onStoreChange","useQuery","useMutation","mutate","__typeError","msg","__accessCheck","obj","member","__privateGet","getter","__privateAdd","__privateSet","setter","ABSOLUTE_URL_REGEX","PROTOCOL_RELATIVE_URL_REGEX","normalizeProtocolRelativeUrl","protocol","PopStateEventType","isLocation","createBrowserHistory","createBrowserLocation","window2","globalHistory","maskedLocation","pathname","search","hash","createLocation","createBrowserHref","to","createPath","getUrlBasedHistory","invariant","message","warning","cond","createKey","getHistoryState","location","mask","parsePath","path","parsedPath","hashIndex","searchIndex","getLocation","createHref2","validateLocation","v5Compat","getIndex","handlePop","nextIndex","delta","history","historyState","replace2","createURL","createBrowserURLImpl","windowImpl","isAbsolute","base","_map","RouterContextProvider","unsupportedLazyRouteObjectKeys","isUnsupportedLazyRouteObjectKey","unsupportedLazyRouteFunctionKeys","isUnsupportedLazyRouteFunctionKey","isIndexRoute","route","convertRoutesToDataRoutes","routes","mapRouteProperties2","parentPath","manifest","allowInPlaceMutations","treePath","indexRoute","mergeRouteUpdates","pathOrLayoutRoute","updates","matchRoutes","locationArg","basename","matchRoutesImpl","allowPartial","precomputedBranches","stripBasename","branches","flattenAndRankRoutes","matches","decoded","decodePath","matchRouteBranch","convertRouteMatchToUiMatch","loaderData","flattenRoutes","rankRouteBranches","parentsMeta","_hasParentOptionalSegments","flattenRoute","hasParentOptionalSegments","relativePath","meta","joinPaths","routesMeta","computeScore","meta2","matcher","compilePath","exploded","explodeOptionalSegments","segments","rest","isOptional","required","restExploded","subpath","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","s","initialScore","score","segment","branch","matchedParams","matchedPathname","remainingPathname","pattern","matchPathImpl","matchPath","normalizePathname","compiledParams","pathnameBase","removeTrailingSlash","captureGroups","memo2","paramName","splatValue","caseSensitive","regexpSource","str","nextChar","startIndex","prependBasename","isAbsoluteUrl","resolvePath","fromPathname","toPathname","removeDoubleSlashes","resolvePathname","normalizeSearch","normalizeHash","getInvalidPathError","char","dest","getPathContributingMatches","getResolveToMatches","pathMatches","idx","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","from","routePathnameIndex","toSegments","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","minLength","SUPPORTED_ERROR_TYPES","ErrorResponseImpl","statusText","data2","internal","isRouteErrorResponse","getRoutePattern","parts","isBrowser","parseToInfo","_to","absoluteURL","isExternal","currentUrl","targetUrl","UninstrumentedSymbol","getRouteInstrumentationUpdates","fns","aggregated","keys","instrumented","wrapImpl","lazyObject","lazyFn","instrumentations","original","getHandlerInfo","middleware","instrumentClientSideRouter","router","navigate","instrumentedNavigate","getRouterInfo","fetch2","instrumentedFetch","impls","getInfo","recurseRight","impl","handlerPromise","callHandler","request","getReadonlyRequest","getReadonlyContext","frozen","ctx","objectProtoNames","thing","proto","DEFAULT_NAVIGATION_URL","getNavigatorCurrentUrl","navigator","isSameOrigin","isExplicitUrl","destination","validateNavigationTarget","resolved","externalPolicy","originalUrl","resolvedUrl","originalIsExternal","resolvedIsExternal","validMutationMethodsArr","validMutationMethods","validRequestMethodsArr","validRequestMethods","redirectStatusCodes","redirectPreserveMethodStatusCodes","IDLE_NAVIGATION","IDLE_FETCHER","IDLE_BLOCKER","defaultMapRouteProperties","TRANSITIONS_STORAGE_KEY","ResetLoaderDataSymbol","_routes","_branches","_hmrRoutes","_hmrBranches","DataRoutes","createRouter","routerWindow","isBrowser3","hydrationRouteProperties2","_mapRouteProperties","dataRoutes","dataStrategyImpl","defaultDataStrategyWithMiddleware","future","unlistenHistory","subscribers","bufferedInitialStateUpdate","savedScrollPositions2","getScrollRestorationKey2","getScrollPosition","initialScrollRestored","initialMatches","initialMatchesIsFOW","initialErrors","initialized","renderFallback","getInternalRouterError","getShortCircuitMatches","checkFogOfWar","routeHasLoaderOrMiddleware","errors","relevantMatches","getRouteHydrationStatus","fogOfWar","pendingAction","pendingPopstateNavigationDfd","pendingPreventScrollReset","pendingNavigationController","pendingViewTransitionEnabled","appliedViewTransitions","removePageHideEventListener","isUninterruptedRevalidation","isRevalidationRequired","cancelledFetcherLoads","fetchControllers","incrementingLoadId","pendingNavigationLoadId","fetchReloadIds","fetchRedirectIds","fetchLoadMatches","activeFetchers","fetchersQueuedForDeletion","blockerFunctions","unblockBlockerHistoryUpdate","pendingRevalidationDfd","initialize","historyAction","blockerKey","shouldBlockNavigation","nextHistoryUpdatePromise","updateBlocker","blockers","updateState","startNavigation","restoreAppliedTransitions","_saveAppliedTransitions","persistAppliedTransitions","dispose","deleteFetcher","deleteBlocker","newErrors","matchRoute","unmountedFetchers","mountedFetchers","fetcher","subscriber","completeNavigation","flushSync","isActionReload","isMutationMethod","actionData","mergeLoaderData","k","restoreScrollPosition","getSavedScrollPosition","preventScrollReset","viewTransitionOpts","priorPaths","toPaths","createDeferred","normalizedPath","normalizeTo","submission","normalizeNavigateOptions","maskPath","partialPath","currentLocation","nextLocation","userReplace","revalidate","interruptActiveLoads","saveScrollPosition","routesToUse","isHashChangeOnly","notFoundMatches","handleNavigational404","loadingNavigation","createClientSideRequest","scopedContext","pendingActionResult","findNearestBoundary","actionResult","handleAction","routeId","isErrorResult","getLoadingNavigation","shortCircuited","updatedMatches","workingFetchers","handleLoaders","getActionDataForCommit","isFogOfWar","initialHydration","navigation","getSubmittingNavigation","discoverResult","discoverRoutes","matches2","boundaryId","actionMatch","getTargetMatch","dsMatches","getTargetedDataStrategyMatches","results","callDataStrategy","isRedirectResult","normalizeRedirectLocation","startRedirectNavigation","boundaryMatch","overrideNavigation","fetcherSubmission","callSiteDefaultShouldRevalidate","activeSubmission","getSubmissionFromNavigation","shouldUpdateNavigationState","getUpdatedActionData","revalidatingFetchers","getMatchesToLoad","workingFetchers2","didUpdateFetcherRedirects2","markFetchRedirectsDone","getUpdatedRevalidatingFetchers","rf","abortFetcher","abortPendingFetchRevalidations","f","loaderResults","fetcherResults","callLoadersAndMaybeResolveData","redirect2","findRedirect","processLoaderData","didUpdateFetcherRedirects","didAbortFetchLoads","abortStaleFetchLoads","shouldUpdateFetchers","revalidatingFetcher","getLoadingFetcher","setFetcherError","handleFetcherAction","handleFetcherLoader","requestMatches","existingFetcher","updateFetcherState","getSubmittingFetcher","fetchRequest","originatingLoadId","fetchMatches","actionResults","match2","getDoneFetcher","revalidationRequest","loadId","loadFetcher","staleKey","existingFetcher2","r","fetcherIsMounted","getRedirectStateWithDoneFetcher","finalFetchers","isNavigation","originalLocation","redirectLocation","isDocumentReload","redirectNavigationType","formMethod","formAction","formEncType","fetcherKey","dataResults","callDataStrategyImpl","isRedirectDataStrategyResult","response","normalizeRelativeRoutingRedirectResponse","convertDataStrategyResultToDataResult","fetchersToLoad","loaderResultsPromise","fetcherResultsPromise","acc","getFetcher","resetFetcher","fetchers","queueFetcherForDeletion","controller","markFetchersDone","doneFetcher","doneKeys","didUpdateFetchers","landedId","yeetedKeys","getBlocker","blocker","newBlocker","entries","blockerFunction","enableScrollRestoration","positions","getPosition","getKey","getScrollKey","activeBranches","partialMatches","localManifest","patchRoutesImpl","newMatches","newPartialMatches","compareMatches","_internalSetRoutes","newRoutes","patchRoutes","unstable_allowElementMutations","isSubmissionNavigation","fromRouteId","relative","contextualMatches","activeRouteMatch","nakedIndex","hasNakedIndexQuery","indexValues","qs","isFetcher","isValidMethod","getInvalidBodyError","stripHashFromPath","json","searchParams","convertFormDataToSearchParams","convertSearchParamsToFormData","lazyRoutePropertiesToSkip","hasPatchRoutesOnNavigation","nextUrl","maxIdx","actionStatus","shouldSkipRevalidation","baseShouldRevalidateArgs","forceShouldLoad","shouldLoad2","isNewLoader","getDataStrategyMatch","defaultShouldRevalidate","isNewRouteInstance","shouldRevalidateArgs","shouldLoad","shouldRevalidateLoader","isMidInitialLoad","fetcherMatches","fetcherMatch","fetchController","fetcherDsMatches","hasError","currentLoaderData","currentMatch","isNew","isMissingData","currentPath","loaderMatch","arg","routeChoice","allowElementMutations","childrenToPatch","uniqueChildren","newRoute","existingRoute","existingRoute2","isSameRoute","existingRouteTyped","newRouteTyped","aChild","bChild","lazyRoutePropertyCache","loadLazyRouteProperty","routeToUpdate","cachedPromise","propertyPromise","isUnsupported","isStaticallyDefined","lazyRouteFunctionCache","loadLazyRoute","lazyRoutePromise2","lazyRoute","routeUpdates","lazyRouteProperty","lazyValue","lazyKeys","lazyPropertyPromises","lazyHandlerPromise","lazyRoutePromise","defaultDataStrategy","matchesToLoad","keyedResults","runClientMiddlewarePipeline","runMiddlewarePipeline","isRedirectResponse","isDataStrategyResults","errorHandler","maxBoundaryIdx","boundaryRouteId","processResult","isResult","dataFnArgs","tuples","callRouteMiddleware","middlewares","tuple","getDataStrategyMatchLazyPromises","lazyMiddlewarePromise","lazyRoutePromises","isUsingNewApi","_lazyPromises","handlerOverride","lazy","loader","isMiddlewareOnlyRoute","callLoaderOrAction","targetMatch","isStaticHandler","dataStrategyArgs","createDataFunctionUrl","cb","typedDataStrategyArgs","onReject","isAction","runHandler","abortPromise","actualHandler","handlerError","handler2","parseResponseBody","contentType","dataStrategyResult","isResponse","isDataWithResponseInit","dataWithResponseInitToErrorResponse","trimmedMatches","invalidProtocols","hasInvalidProtocol","historyInstance","normalizedLocation","isSameBasename","parsed","processRouteLoaderData","skipLoaderErrorBubbling","statusCode","foundError","loaderHeaders","pendingError","newLoaderData","mergedLoaderData","merged","method","errorMessage","isDataStrategyResult","isRedirectStatusCode","_window","sessionPositions","res","rej","DataRouterContext","DataRouterStateContext","RSCRouterContext","useIsRSCRouterContext","ViewTransitionContext","FetchersContext","AwaitContext","NavigationContext","LocationContext","RouteContext","RouteErrorContext","ERROR_DIGEST_BASE","ERROR_DIGEST_REDIRECT","ERROR_DIGEST_ROUTE_ERROR_RESPONSE","decodeRedirectErrorDigest","decodeRouteErrorResponseDigest","useHref","useInRouterContext","React2.useContext","useResolvedPath","joinedPathname","useLocation","navigateEffectWarning","useIsomorphicLayoutEffect","React2.useLayoutEffect","useNavigate","isDataRoute","useNavigateStable","useNavigateUnstable","dataRouterContext","routePathnamesJson","activeRef","React2.useRef","React2.useCallback","OutletContext","React2.createContext","useOutlet","outlet","React2.useMemo","React2.createElement","useParams","useRoutesImpl","dataRouterOpts","parentMatches","routeMatch","parentParams","parentPathname","parentPathnameBase","parentRoute","warningOnce","locationFromContext","parentSegments","_renderMatches","DefaultErrorComponent","useRouteError","lightgrey","preStyles","codeStyles","devInfo","React2.Fragment","defaultErrorElement","RenderErrorBoundary","React2.Component","RSCErrorHandler","errorRedirectHandledMap","existingRedirect","redirectPromise","RenderedRoute","routeContext","dataRouterState","renderedMatches","errorIndex","fallbackIndex","errors2","needsToRunLoader","onErrorHandler","onError","shouldRenderHydrateFallback","errorElement","hydrateFallbackElement","getChildren","getDataRouterConsoleError","hookName","useDataRouterContext","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","alreadyWarned","alreadyWarned2","warnOnce","condition","USE_OPTIMISTIC","useOptimisticImpl","React3","stableUseOptimisticSetter","useOptimisticSafe","mapRouteProperties","React3.createElement","hydrationRouteProperties","Deferred","RouterProvider","reactDomFlushSyncImpl","useTransitions","_state","setStateImpl","React3.useState","setOptimisticState","vtContext","setVtContext","renderDfd","setRenderDfd","setTransition","interruption","setInterruption","fetcherData","React3.useRef","React3.useCallback","deletedFetchers","isViewTransitionAvailable","React3.startTransition","getOptimisticRouterState","t","React3.useLayoutEffect","React3.useEffect","renderPromise","transition2","React3.useMemo","state2","React3.Fragment","Router","MemoizedDataRoutes","React3.memo","DataRoutes2","isStatic","Navigate","React3.useContext","jsonPath","Outlet","basenameProp","locationProp","navigationType","staticProp","navigationContext","locationContext","trailingPathname","defaultMethod","defaultEncType","isHtmlElement","isButtonElement","isFormElement","isInputElement","isModifiedEvent","shouldProcessLinkClick","createSearchParams","getSearchParamsForLocation","locationSearch","defaultSearchParams","_formDataSupportsSubmitter","isFormDataSubmitterSupported","supportedFormEncTypes","getFormEncType","encType","getFormSubmissionInfo","body","attr","invariant2","singleFetchUrl","reqUrl","trailingSlashAware","extension","loadRouteModule","routeModulesCache","routeModule","isHtmlLinkDescriptor","getKeyedPrefetchLinks","routeModules","links","mod","dedupeLinkDescriptors","getNewMatchesForLinks","nextMatches","currentMatches","matchPathChanged","manifestRoute","getModuleLinkHrefs","includeHydrateFallback","dedupeHrefs","hrefs","sortKeys","sorted","descriptors","preloads","deduped","useDataRouterContext2","React8.useContext","useDataRouterStateContext","FrameworkContext","React8.createContext","useFrameworkContext","usePrefetchBehavior","prefetch","theirElementProps","frameworkContext","maybePrefetch","setMaybePrefetch","React8.useState","shouldPrefetch","setShouldPrefetch","onBlur","onMouseEnter","onMouseLeave","onTouchStart","React8.useRef","React8.useEffect","setIntent","cancelIntent","composeEventHandlers","theirHandler","ourHandler","PrefetchPageLinks","linkProps","rsc","contextNonce","React8.useMemo","React8.createElement","RSCPrefetchPageLinksImpl","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","dataHrefs","hasSomeRoutesWithShouldRevalidate","targetRoutes","React8.Fragment","newMatchesForData","newMatchesForAssets","routesParams","foundOptOutRoute","m2","moduleHrefs","mergeRefs","refs","isBrowser2","createBrowserRouter","parseHydrationData","deserializeErrors","serialized","ErrorConstructor","Link","React10.forwardRef","onClick","discover","reloadDocument","viewTransition","forwardedRef","React10.useContext","maskedHref","prefetchRef","prefetchHandlers","internalOnClick","useLinkClickHandler","handleClick","isSpaLink","React10.createElement","React10.Fragment","NavLink","ariaCurrentProp","classNameProp","routerState","isTransitioning","useViewTransitionState","nextLocationPathname","endSlashPosition","renderProps","ariaCurrent","Form","onSubmit","submit","useSubmit","useFormAction","submitHandler","submitMethod","doSubmit","React10.startTransition","getDataRouterConsoleError2","useDataRouterContext3","replaceProp","React10.useCallback","doNavigate","useSearchParams","defaultInit","defaultSearchParamsRef","React10.useRef","hasSetSearchParamsRef","React10.useMemo","setSearchParams","nextInit","navigateOptions","newSearchParams","fetcherId","getUniqueFetcherId","currentRouteId","routerFetch","routerNavigate","nextPath","toKebabCase","string","toLucideIconData","iconName","iconNode","toCamelCase","out","upperNext","toPascalCase","camelCase","mergeClasses","classes","defaultAttributes","isDefined","buildLucideIconNode","icon","attributeNames","getAttributeName","viewBoxWidth","viewBoxHeight","aliasClassNames","alias","iconClassNames","classNamesFromClassName","calculatedStrokeWidth","attrs","attrName","nextAttrs","buildLucideIconForReact","hasA11yProp","prop","LucideContext","createContext","useLucideContext","useContext","Icon","forwardRef","color","width","strokeWidth","absoluteStrokeWidth","nonScalingStroke","contextSize","contextStrokeWidth","contextAbsoluteStrokeWidth","contextNonScalingStroke","contextColor","contextClass","hasAccessibleProp","svgAttributes","builtIconNode","createElement","createLucideIcon","iconDataOrName","iconData","__iconData","Check","ChevronDown","ChevronUp","CircleAlert","CircleCheck","Copy","CreditCard","Download","Info","LayoutGrid","LifeBuoy","LoaderCircle","LogOut","Menu","Monitor","OctagonX","Shield","TriangleAlert","User","X","isString","defer","makeString","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","Empty","stackIndex","setPath","newValue","p","pushPath","concat","getPath","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","RegExpCache","capacity","regExpFromCache","regExpNew","chars","looksLikeObjectPathRegExpCache","looksLikeObjectPath","nsSeparator","keySeparator","possibleChars","ki","deepFind","tokens","getCleanedCode","consoleLogger","Logger","concreteLogger","lvl","debugOnly","moduleName","baseLogger","EventEmitter","numListeners","wrapper","numTimesAdded","nonEmptyBundles","ResourceStore","ns","lng","ignoreJSONStructure","deep","pack","bundle","postProcessor","module","processors","translator","processor","PATH_KEY","createProxy","proxy","keysFromSelector","strict","nsList","shouldHandleAsObject","Translator","services","opt","isObject","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","lastKey","returnDetails","appendNamespaceToCIMode","resUsedKey","resExactUsedKey","noObject","joinArrays","handleAsObjectInI18nFormat","needsPluralHandling","hasDefaultValue","defaultValueSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","resForObjHndl","handleAsObject","resType","resTypeIsArray","newKeyToUse","deepKey","usedDefault","usedKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","send","l","specificDefaultValue","defaultForMissing","language","suffixes","skipOnVariables","nestBef","nb","na","nestAft","postProcess","postProcessorNames","found","exactUsedKey","usedLng","usedNS","extracted","needsContextHandling","codes","finalKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","possibleKey","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","formattedCode","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackLng","fallbackLngKey","hasCacheableFallback","usesUncacheableOptionsFallback","cacheable","cacheKey","fallbackCacheKey","cached","fallbackCodes","addCode","fc","formattedFc","suffixesOrder","dummyRule","PluralResolver","languageUtils","cleanedCode","rule","lngPart","pluralCategory1","pluralCategory2","pluralCategory","deepFindWithDefaults","regexSafe","Interpolator","escape$1","escapeValue","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","getOrResetRegExp","existingRegExp","replaces","handleFormat","missingInterpolationHandler","todo","matchedVar","safeValue","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","nestingRegexp","lastEnd","formatters","keyEndIndex","parseFormatStr","formatStr","formatName","formatOptions","optStr","trimmedKey","createCachedFormatter","optForCache","frm","createNonCachedFormatter","Formatter","cf","formatter","format","rawFormats","formats","mem","formatted","valOptions","removePending","q","Connector","backend","store","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","loaded","loadedKeys","fcName","tried","wait","resolver","fallbackValue","isUpdate","clb","ret","transformOptions","bindMemberFunctions","I18n","defOpts","createClassOnDemand","ClassOrObject","lu","deferred","load","finish","usedCallback","append","li","lngInLngs","setLngProps","done","setLng","fl","keyPrefix","fixedOpts","scopeNs","fixedT","explicitCallNs","selectorOpts","resultKey","lastLng","loadNotPending","loadState","preResult","loadLng","preloaded","newLngs","ti","rtlLngs","forkResourceStore","mergedOptions","clonedData","mergedInterpolation","mergedForInterpolator","voidElements","attrRE","parseTag","tagMatch","reg","arr","eq","tagRE","tagNameRE","whitespaceRE","rawTextRE","sentinel","empty","restoreSentinels","parse","html","components","allowedTags","restoreNeeded","isAllowed","pos","am","nameMatch","level","inComponent","rawUntil","htmlLower","lts","gts","secondLt","quote","validSplit","firstPart","secondPart","isOpen","isComment","nextMatch","isText","nextTag","comment","isRawText","closeIndex","contentEnd","attrString","buff","stringifyNode","tagEnd","stringify","token","rootEl","warn","i18n","loadedClb","loadNamespaces","loadLanguages","hasLoadedNamespace","i18nInstance","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","unescape","defaultOptions","setDefaults","getDefaults","setI18n","getI18n","hasChildren","checkLength","getAsArray","hasValidReactChildren","mergeProps","newTarget","getValuesFromChildren","values","childs","nodesToString","i18nOptions","i18nKey","stringNode","childrenArray","keepArray","childIndex","childPropsCount","shouldKeepChild","childChildren","cnt","renderNodes","knownComponentsMap","targetString","combinedTOpts","shouldUnescape","emptyChildrenButNeedsHandling","keep","knownNames","ast","HTML","renderInner","rootReactNode","mappedChildren","mapAST","pushTranslatedJSX","inner","isVoid","cloneElement","Fragment","freshProps","override","reactNode","astNode","reactNodes","astNodes","keepTagOccurrence","translationContent","tmp","isElement","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","occurrence","seen","rn","innerScope","wrapTextNodes","unescapeFn","fixComponentProps","component","translation","componentKey","comp","Componentized","generateArrayComponents","generateObjectComponents","componentMap","generateComponents","isComponentsMap","Trans","tOptions","i18nFromProps","tFromProps","additionalProps","reactI18nextOptions","transDefaultProps","mergedTOptions","mergedShouldUnescape","mergedValues","mergedComponents","nodeAsString","keyFromSelector","hashTransKey","valuesFromChildren","interpolationOverride","generatedComponents","indexedChildren","componentsMap","useAsParent","initReactI18next","I18nContext","ReportNamespaces","i18nFromContext","defaultNSFromContext","TransWithoutContext","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","_useState","forceUpdate","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","shimModule","notReadyT","optsOrDefaultValue","notReadySnapshot","dummySubscribe","useTranslation","useMemo","useSuspense","bindI18n","bindI18nStore","nsOrContext","unstableNamespaces","revisionRef","useRef","useCallback","wrappedCallback","snapshotRef","calculatedReady","currentLng","currentRevision","keyPrefixKey","lastSnapshot","newSnapshot","loadCount","setLoadCount","ready","useSyncExternalStore","pendingTranslationLoad","onLoaded","finalI18n","wrapperRef","wrapperLangRef","languageKey","createI18nWrapper","lang","i18nWrapper","effectiveT","inDevelopment","__insertCSS","head","getAsset","SuccessIcon","InfoIcon","WarningIcon","ErrorIcon","bars","Loader","visible","CloseIcon","useIsDocumentHidden","isDocumentHidden","setIsDocumentHidden","toastsCounter","MAX_HISTORY_SIZE","getToastId","_data_id","toast","toRemove","pendingDismissal","wasDismissed","dismissible","alreadyPending","shouldDismiss","originalPromise","isHttpResponse","promiseData","description","toastSettings","unwrap","ToastState","toastFunction","basicToast","getHistory","getToasts","VISIBLE_TOASTS_AMOUNT","VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","TOAST_LIFETIME","TOAST_WIDTH","GAP","SWIPE_THRESHOLD","TIME_BEFORE_UNMOUNT","cn","getDefaultSwipeDirections","position","directions","Toast","_toast_classNames","_toast_classNames1","_toast_classNames2","_toast_classNames3","_toast_classNames4","_toast_classNames5","_toast_classNames6","_toast_classNames7","_toast_classNames8","ToasterInvert","unstyled","interacting","setHeights","visibleToasts","heights","toasts","expanded","removeToast","defaultRichColors","closeButtonFromToaster","cancelButtonStyle","actionButtonStyle","descriptionClassName","durationFromToaster","gap","expandByDefault","classNames","icons","closeButtonAriaLabel","swipeDirection","setSwipeDirection","swipeOutDirection","setSwipeOutDirection","setMounted","removed","setRemoved","swiping","setSwiping","swipeOut","setSwipeOut","isSwiped","setIsSwiped","offsetBeforeRemove","setOffsetBeforeRemove","initialHeight","setInitialHeight","remainingTime","dragStartTime","toastRef","isFront","isVisible","toastType","toastTypeKey","toastClassname","toastDescriptionClassname","heightIndex","closeButton","_toast_closeButton","closeTimerStartTimeRef","lastCloseTimerStartTimeRef","pointerStartRef","toastsHeightBefore","curr","reducerIndex","swipeDirections","_props_swipeDirections","invert","disabled","toastNode","h","originalHeight","newHeight","deleteToast","elapsedTime","getLoadingIcon","_toast_richColors","_icons_close","_toastRef_current","_toastRef_current1","_dragStartTime_current","swipeAmountX","swipeAmountY","timeTaken","swipeAmount","velocity","_toastRef_current2","_toastRef_current3","_window_getSelection","yDelta","xDelta","getDampening","dampenedDelta","getDocumentDirection","dirAttribute","assignOffset","defaultOffset","mobileOffset","isMobile","assignAll","Toaster","hotkey","expand","theme","richColors","toastOptions","dir","customAriaLabel","containerAriaLabel","setToasts","filteredToasts","possiblePositions","setExpanded","setInteracting","actualTheme","setActualTheme","listRef","hotkeyLabel","lastFocusedElementRef","isFocusWithinRef","toastToRemove","_toasts_find","indexOfExistingToast","darkMediaQuery","handleKeyDown","_listRef_current","_listRef_current1","_heights_","_toastOptions_duration","_toastOptions_closeButton","logo","P","U","PS","counts","DZ","z","GROUP_COUNT","customValidatorNames","edgeStart","labelStart","labelText","edgeTarget","N","sizes","nodeGroup","vlistPat","vlistOps","vlistRef","vlistGroup","nodeVlist","A","V","SETS","tails","AA","AG","AS","litAnchor","litGroup","litPool","poolText","poolOffsets","tailRef","nextRef","adjGid","adjStart","adjTgt","patGid","patTgt","postfixLookupGroups","orderSensitiveModifiers","tables_generated_default","IS_JSC","EXTERNAL","DEAD","fnv","spanHash","len","createEngine","T","validatorImpls","adjRow","maxAdj","CLAIM_PER_TOKEN","vgStart","postfixLookupSet","nodeCount","nodeHasLit","litMaxLen","litNoArb","c0","LIT_SIZE","litTable","off","litProbe","anchor","ok","cacheSize","RAW_PREFIX","FULL_PREFIX","FPL","vCustom","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","aKind","aLabelS","aLabelE","aValS","aValE","isWordCode","isUniWS","analyzeArb","cl","spanEq","fractionRegex","tshirtRegex","isNumStr","spanIsNamedContainerQuery","c11","VKIND","VLABELS","VFALL","runValidator","op","L","orderSensitive","internSpan","imp","make","bucket","outer","en","ctxByHash","ctxByCanon","nextCtxId","MAX_CTX","canonicalizeContext","raw","important","mods","dB","dP","canonical","dynByHash","nextDynId","MAX_DYN","newDynId","ID_LIMIT","TOKEN_TABLE","memoHash","memoStr","memoGid","memoCtx","memoFlags","memoTick","memoPut","way0","ts","te","gid","ctxId","slot","memoReset","cap","tokI32","tokStart","tokEnd","tokGid","tokCtx","tokFlags","growTokens","nf","ckptCap","ckptNode","ckptTail","claim0","CLAIM_TABLE","claimShift","claimKeys","claimEpochs","epoch","claimTest","resolveAt","bs","endPos","nodeAt","ckptAt","colon","tailStart","nodeId","tlen","g","vl","pat","vs","ve","g0","mergeClassList","tokenCount","totalTokenChars","sawNonSpaceWS","th","hitAt","pts","depthB","depthP","lastColon","lastSlash","pc","modStart","be","prefixShift","postfixEnd","feedStart","lp","le","ckptTop","slashNode","slashCkpt","cc","arrived","es","ee","ls","nv","nt","endNode","hasPostfix","gidFull","didDrop","runStart","runEnd","u","DOOR_SIZE","door","doorBase","doorEpoch","prevCache","cacheMap","prevCacheMap","cacheCount","doorMarks","rotateDoor","mergeCached","wasSeen","mergeCachedMap","seenBefore","mergeString","twJoin","resolveValue","clsxMode","joinArgs","BUCKET_CAP","BUCKET_MISS_CAP","BUCKET_SKIP","CHURN_SIZE","wrapClsx","fresh","mergeUncached","argCache","prevArgCache","argCount","lastHit","churnKey","churnOwn","churnVal","churnTick","churnLookup","own","join","match3","v0","v1","v2","matchN","vals","ea","resolveArgs","probed","nArgs","pred","firstIdx","truthy","hasResolvedValue","hit","joined","mergeSingleValue","lh","pa","la","__defProp","__name","setRef","composeRefs","hasCleanup","cleanups","useComposedRefs","createSlot","ownerName","Slot2","React.forwardRef","slotProps","slottableElement","hasSlottable","useUnwrappedLazy","React.Children","maybeSlottable","isSlottable","slottable","isLazyComponent","getSlottableElementFromSlottable","React.cloneElement","React.isValidElement","slottableElementRef","getElementRef","composedRef","createSlottableError","createSlotError","mergedProps","React.Fragment","Slot","SLOTTABLE_IDENTIFIER","createSlottable","Slottable2","childProps","overrideProps","slotPropValue","childPropValue","concatAriaDescribedby","mayWarn","isPromiseLike","unwrapped","ids","NODES","Primitive","primitive","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","ReactDOM.flushSync","VISUALLY_HIDDEN_STYLES","createContext2","rootComponentName","defaultContext","Provider","React.useMemo","useContext2","consumerName","optional","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","createScope","scopeContexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","React.useLayoutEffect","createCollection","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","React.useRef","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","composedRefs","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","__instanciated","OrderedDict","_a","_keys","has","finalSize","relativeIndex","toSafeInteger","targetIndex","existingKey","entryKey","entryValue","currentIndex","deleted","at","thisArg","callbackfn","hasInitialValue","accumulator","compareFn","reversed","actualIndex","toSafeIndex","number","createCollection2","createContextScope2","CollectionStableContextProvider","useStableCollectionContext","CollectionStatefulContextProvider","useStatefulCollectionContext","jsx2","CollectionInit","useInitCollection","collectionElement","setCollectionElement","React2.useState","useComposedRefs2","setCollection","registryRef","getCollection","registry","isInDocumentOrder","sortByDocumentPosition","React2.useEffect","getChildListObserver","createSlot2","React2.forwardRef","itemDataRef","memoizedItemData","registerElement","registeredRef","registered","useGetCollection","isElementPreceding","dict","mutationsList","originalEventHandler","ourEventHandler","checkForDefaultPrevented","getOwnerWindow","getOwnerDocument","activeDescendant","isFrame","useReactEffectEvent","useReactInsertionEffect","useEffectEvent","useInsertionEffect","useControllableState","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","setValue","value2","isFunction","prevValueRef","SYNC_STATE","useControllableStateReducer","userArgs","controlledState","onChangeProp","internalState","React2.useReducer","uncontrolledState","useStateMachine","machine","React.useReducer","Presence","present","presence","usePresence","React2.Children","useStableComposedRefs","React2.cloneElement","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","mountAnimationNameRef","getAnimationName","wasPresent","prevAnimationName","currentAnimationName","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","node2","refsRef","currentRefs","useReactId","useId","deterministicId","setId","reactId","Direction","DirectionContext","useDirection","localDir","globalDir","useCallbackRef","callbackRef","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","deferPointerDownOutside","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","force","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","isDeferredPointerDownOutsideRef","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","focusOutside","useFocusOutside","isHighestLayer","dispatchUpdate","handleUpdate","useDismissableLayerSurface","IS_TRUE","dismissableSurfaces","shouldHandlePointerDownOutside","handlePointerDownOutside","isPointerInsideReactTreeRef","isPointerDownOutsideRef","interceptedOutsideInteractionEventsRef","handleClickRef","resetOutsideInteraction","isOutsideInteractionIntercepted","handleInteractionCapture","surface","handleInteractionBubble","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","wasOutsideInteractionIntercepted","handleAndDispatchCustomEvent","eventDetail","outsideInteractionEvents","timerId","handleFocusOutside","isFocusInsideReactTreeRef","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","setContainer","onMountAutoFocus","onUnmountAutoFocus","branchesRef","isTargetInScope","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","UnmountEvent","unmountEvent","isTabKey","focusedElement","container2","getTabbableEdges","FocusScopeBranchContext","FocusScopeBranchProvider","useFocusScopeBranchRegistry","setNodes","useFocusScopeBranch","candidates","candidate","findVisible","walker","isHiddenInput","canUseCheckVisibility","upTo","isSelectableInput","createFocusScopesStack","activeFocusScope","arrayRemove","updatedArray","Portal","containerProp","portalProps","ReactDOM.createPortal","guards","FocusGuards","useFocusGuards","createFocusGuard","__assign","__rest","__spreadArray","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","currentValues","useMergeRefs","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","buffer","assigned","medium","cbs","executeQueue","cycle","filter","createSidecarMedium","SideCar","sideCar","Target","React.createElement","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","_b","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","nonce","injectStyles","css","insertStyleTag","stylesheetSingleton","counter","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","getOffset","cs","top","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","scroll_1","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","allow_1","el","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","anchorNode","isTouchingSelection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","createDialogScope","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","defaultOpen","onOpenChange","modal","triggerRef","contentRef","branchNodes","branchRegistry","open","setOpen","titleCount","setTitleCount","descriptionCount","setDescriptionCount","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PORTAL_NAME","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","registerDismissableSurface","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","ariaDescribedby","DialogTitle","titleProps","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","ROOT_NAME","createAlertDialogContext","createAlertDialogScope","useDialogScope","AlertDialog","__scopeAlertDialog","alertDialogProps","dialogScope","DialogPrimitive.Root","AlertDialogTrigger","DialogPrimitive.Trigger","AlertDialogPortal","DialogPrimitive.Portal","AlertDialogOverlay","DialogPrimitive.Overlay","AlertDialogContentProvider","useAlertDialogContentContext","AlertDialogContent","cancelRef","DialogPrimitive.Content","AlertDialogTitle","DialogPrimitive.Title","AlertDialogDescription","DialogPrimitive.Description","AlertDialogAction","actionProps","DialogPrimitive.Close","CANCEL_NAME","AlertDialogCancel","cancelProps","AVATAR_NAME","createAvatarContext","createAvatarScope","ImageLoadingStatus","STATIC_IMAGE_COUNT_STATE","AvatarProvider","useAvatarContext","Avatar","__scopeAvatar","avatarProps","imageLoadingStatus","setImageLoadingStatus","imageCount","setImageCount","useImageCount","FALLBACK_NAME","AvatarFallback","delayMs","fallbackProps","canRender","setCanRender","useImageLoadingStatus","loadingStatus","setLoadingStatus","referrerPolicy","image","handleLoad","image2","getImageLoadingStatus","handleError","useUpdateImageCount","useSize","setSize","rAF","resizeObserver","borderSizeEntry","borderSize","CHECKBOX_NAME","createCheckboxContext","createCheckboxScope","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","onCheckedChange","internal_do_not_use_render","setChecked","setControl","bubbleInput","setBubbleInput","userClick","setUserClick","isFormControl","isIndeterminate","CheckboxTrigger","onKeyDown","checkboxProps","onUserClick","initialCheckedStateRef","reset","hasConsumerStoppedPropagation","prevChecked","Checkbox","jsxs","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","indicatorProps","BUBBLE_INPUT_NAME","controlSize","shouldStopClickPropagationRef","prevCheckedRef","handledUserClickRef","pendingUserClickRef","inputProto","checkedChanged","isNewUserClick","pendingUserClick","isPendingUserChange","defaultCheckedRef","sides","min","round","floor","createCoords","oppositeSideMap","evaluate","getSide","getAlignment","getOppositeAxis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","padding","_padding$top","_padding$right","_padding$bottom","_padding$left","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","platform","strategy","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","MAX_RESET_COUNT","computePosition","platformWithDetectOverflow","statefulPlacement","resetCount","middlewareData","currentMiddleware","nextX","nextY","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","center","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextPlacement","d","resetPlacement","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","clampCoord","coord","limitedCoords","limitShift","_rawOffset$mainAxis","_rawOffset$crossAxis","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","shiftData","noShift","availableHeight","availableWidth","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","getComputedStyle","isTableElement","isTopLayer","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","frameElement","getFrameElement","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","SCROLLBAR_MAX","getViewportRect","isLayoutViewport","visualViewport","layoutRelativeClientCoords","bodyStyles","bodyMarginInline","reservedWidth","gutter","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","getClippingElementAncestors","cachedResult","lastKeptComputedStyle","elementIsFixed","currentNodeIsContaining","lastPosition","ancestor","getClippingRect","clippingAncestors","firstRect","bottom","getDimensions","getRectRelativeToOffsetParent","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","ancestorResize","io","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","handleResize","autoUpdate","ancestorScroll","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","platformWithCache","computePosition$1","isClient","deepEqual","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","Sticky","UpdatePositionStrategy","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","setAnchor","placementState","setPlacementState","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","onAnchorChange","anchorRef","previousAnchor","sideAndAlign","getSideAndAlignFromPlacement","placedSide","placedAlign","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","handlePlaced","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","_isHydrated","useIsHydrated","isHydrated","setIsHydrated","useReactSyncExternalStore","React2","useIsHydratedModern","useIsHydrated2","ENTRY_FOCUS","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","Orientation","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","currentTabStopId","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","tabStopId","prevCount","isKeyboardFocus","entryFocusEvent","activeItem","currentItem","candidateNodes","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","MENU_NAME","createMenuContext","createMenuScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","__scopeMenu","popperScope","isUsingKeyboardRef","handleOpenChange","handlePointer","handleBlur","PopperPrimitive.Root","MenuAnchor","PopperPrimitive.Anchor","MenuPortal","MenuContentProvider","useMenuContentContext","MenuContent","rootContext","MenuRootContentModal","MenuRootContentNonModal","MenuContentImpl","disableOutsideScroll","rovingFocusGroupScope","currentItemId","setCurrentItemId","branchNode","setBranchNode","isModal","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","scrollLockWrapperProps","handleTypeaheadSearch","getNextMatch","newItem","updateSearch","isPointerMovingToSubmenu","isPointerInGraceArea","intent","RovingFocusGroup.Root","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","whenMouse","pointerXHasChanged","newDir","MenuLabel","labelProps","ITEM_SELECT","MenuItem","onSelect","contentContext","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","MenuItemImpl","textValue","setIsFocused","RovingFocusGroup.Item","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","ITEM_INDICATOR_NAME","ItemIndicatorProvider","useItemIndicatorContext","MenuSeparator","separatorProps","SUB_NAME","MenuSubProvider","useMenuSubContext","getCheckedState","normalizedSearch","currentMatchIndex","wrappedValues","isPointInPolygon","point","polygon","inside","jj","xi","yi","xj","yj","area","cursorPos","DROPDOWN_MENU_NAME","createDropdownMenuContext","createDropdownMenuScope","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","menuScope","MenuPrimitive.Root","DropdownMenuTrigger","MenuPrimitive.Anchor","DropdownMenuPortal","MenuPrimitive.Portal","DropdownMenuContent","MenuPrimitive.Content","isRightClick","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuSeparator","MenuPrimitive.Separator","Label","PROGRESS_NAME","DEFAULT_MAX","createProgressContext","createProgressScope","ProgressProvider","useProgressContext","Progress","__scopeProgress","valueProp","getValueLabel","defaultGetValueLabel","progressProps","isValidMaxNumber","getInvalidMaxError","isValidValueNumber","getInvalidValueError","valueLabel","isNumber","getProgressState","ProgressIndicator","maxValue","componentName","RADIO_NAME","createRadioContext","createRadioScope","RadioProviderImpl","useRadioContext","RadioProvider","__scopeRadio","onCheck","RadioTrigger","radioProps","RadioIndicator","RadioBubbleInput","ARROW_KEYS","createRadioGroupContext","createRadioGroupScope","useRadioScope","RadioGroup","__scopeRadioGroup","onValueChange","initialValueRef","associatedForm","Primitive2","ITEM_PROVIDER_NAME","ITEM_TRIGGER_NAME","RadioGroupItemProvider","radioScope","isDisabled","RadioGroupItemTrigger","isArrowKeyPressedRef","handleKeyUp","composeEventHandlers2","RadioGroupItem","jsxs2","Fragment2","RadioGroupItemBubbleInput","bubbleProps","RadioGroupIndicator","Position","OPEN_KEYS","SELECT_NAME","createSelectContext","createSelectScope","SelectProviderImpl","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","SelectProvider","__scopeSelect","autoComplete","trigger","setTrigger","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","triggerPointerDownPosRef","hasConsumerStoppedPropagationRef","userSelection","setUserSelection","handleUserSelect","nativeOptionsSet","setNativeOptionsSet","contentId","nativeSelectKey","handleNativeOptionAdd","handleNativeOptionRemove","optionsSet","Select","providerProps","SelectBubbleInput","SelectTrigger","pointerTypeRef","resetTypeahead","useTypeaheadSearch","enabledItems","nextItem","findNextItem","handleOpen","pointerEvent","shouldShowPlaceholder","isTypingAhead","VALUE_NAME","SelectValue","placeholder","valueProps","onValueNodeHasChildrenChange","showPlaceholder","SelectIcon","iconProps","SelectPortal","SelectContent","setFragment","SelectContentImpl","SelectContentFragment","SelectContentProvider","CONTENT_MARGIN","useSelectContentContext","viewport","setViewport","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","setIsPositioned","firstValidItemFoundRef","firstItemFoundRef","firstItemTextFoundRef","firstItem","restItems","lastItem","focusSelectedItem","pointerMoveDelta","handlePointerMove","handlePointerUp","close","itemRefCallback","isFirstItem","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","currentElement","popperProps","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","handleScrollButtonChange","SelectViewportProvider","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","SelectGroupContextProvider","useSelectGroupContext","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","isSelected","setTextValue","handleItemRefCallback","textId","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","handleItemTextRefCallback","nativeOption","onNativeOptionAdd","onNativeOptionRemove","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","nativeOptions","selectValue","handledUserSelectionRef","isDispatchingUserSelectionRef","hasEmptyValueOption","selectProto","isNewUserSelection","valueChanged","isUserInteraction","bubbles","onSearchChange","handleSearchChange","currentItemIndex","wrappedItems","DEFAULT_ORIENTATION","ORIENTATIONS","Separator","decorative","orientationProp","domProps","isValidOrientation","ariaOrientation","semanticProps","ActivationMode","TABS_NAME","createTabsContext","createTabsScope","TabsProvider","useTabsContext","Tabs","__scopeTabs","activationMode","tabsProps","TAB_LIST_NAME","TabsList","listProps","TabsTrigger","triggerId","makeTriggerId","makeContentId","isAutomaticActivation","TabsContent","isMountAnimationPreventedRef","baseId","AvatarPrimitive.Root","AvatarPrimitive.Fallback","clsx","falsyToString","cx","cva","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","buttonVariants","Button","Slot.Root","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Trigger","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Content","inset","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","M","S","R","t.createContext","t.useContext","t.memo","t.createElement","useTheme","Sonner","CircleCheckIcon","TriangleAlertIcon","OctagonXIcon","Loader2Icon","ApiError","csrfToken","UNSAFE","toErrorBody","api","headers","authApi","email","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","defaultNS","auth","app","account","billing","workspaces","formatLocale","formatDate","formatRelative","seconds","units","unit","formatMoney","cents","currency","SESSION_KEY","useSession","useRefreshSession","useResetSession","SERVER_PAGES","isServerPage","safeNext","loadPage","billingApi","returnTo","billingKeys","usePaymentIssues","session","usePaymentRecovery","outcomes","outcome","PaymentIssueBanner","issues","RetryOnReturn","returning","PaymentMethodsCard","PaymentIssuesCard","issue","applyApiError","setError","fields","unplaced","messages","SITE","usePageHeading","title","focusKey","heading","NAV","LayoutGridIcon","CreditCardIcon","UserIcon","LifeBuoyIcon","initials","user","part","NAV_LINK","NavItems","PhoneNav","leaving","MenuIcon","UserMenu","compact","resetSession","signOut","ShieldIcon","LogOutIcon","UnverifiedBanner","resend","AppLayout","PageHeader","TabsPrimitive.Root","tabsListVariants","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content","isCheckBoxInput","isFileInput","isDateObject","isNullOrUndefined","isObjectType","getEventValue","FIELD_PATH_RE","stringToPath","getNullAncestorValue","formValues","defaultValues","isNameInFieldArray","names","isWeb","cloneObject","isBlobInstance","isFileListInstance","isArray","prototype","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","REGISTER_VALIDATION_RULES","FORM_ERROR_TYPE","ROOT_ERROR_TYPE","PROTOTYPE_KEYWORDS","IS_KEY_RE","isKey","isUndefined","isBoolean","tempPath","objValue","HookFormControlContext","useFormControlContext","getProxyFormState","localProxyFormState","isRoot","_key","tempObject","prototypeCopy","isPrimitive","isEmptyObjectWithCustomPrototype","object1","object2","isErrorObject","visited","keys1","keys2","visitedPairs","ws","val1","val2","useResyncOnReconnect","getInitialValue","_connected","_initialized","_prevValue","_renderCount","resyncIfNeeded","getCurrentValue","snapshot","useFormState","formControl","getCurrentFormState","updateFormState","_localProxyFormState","generateWatchOutput","_names","isGlobal","fieldName","useWatch","compute","_defaultValue","_compute","_prevControl","_prevName","getInitialOutput","updateValue","_computeFormValues","getCurrentOutput","refreshValue","computedFormValues","_refreshValue","_getCurrentOutput","controlChanged","prevName","nameChanged","useController","shouldUnregister","isArrayField","defaultValueMemo","_props","_proxyRef","_registerProps","fieldState","elm","_shouldUnregisterField","updateMounted","Controller","getValidationModes","isWatched","isBlurEvent","watchName","iterateFieldsByAction","fieldsNames","_f","updateFieldArrayRootError","existingErrors","fieldArrayErrors","isEmptyObject","isRadioInput","isRegex","appendErrors","validateAllFieldCriteria","defaultResult","validResult","getCheckboxValue","defaultReturn","getRadioValue","getValidateError","getValueAndMessage","validationData","validateField","disabledFieldNames","shouldUseNativeValidation","isFieldArray","maxLength","validate","valueAsNumber","mount","_c","inputValue","inputRef","setCustomValidity","validityMessage","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueNumber","valueDate","convertTimeToDate","isTime","isWeek","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","fieldError","convertToArrayPayload","baseGet","updatePath","isEmptyArray","unset","childObject","HookFormContext","createSubject","_observers","_iterationCount","extractFormValues","fieldsState","fieldValue","isEdited","isMultipleSelect","live","isDirtyContainer","collectDirtyFieldNames","dirtyTree","cachedDirtyFields","objectHasFunction","isTraversable","isRegisteredLeaf","fieldRef","isEmptyDirtyContainer","clearDirtyField","markFieldsDirty","fieldRefs","getDirtyFields","dirtyFieldsFromValues","getFieldArrayItemNames","getFieldValueAs","valueAsDate","setValueAs","getFieldValue","getResolverOptions","_fields","criteriaMode","getRuleValue","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","hasValidation","schemaErrorLookup","shouldRenderFormState","formStateData","_proxyFormState","isNameMatch","currentName","signalName","shouldSubscribeByName","skipValidation","isTouched","isSubmitted","reValidateMode","unsetEmptyArray","replaceDirtyFieldsInPlace","dirtyFields","nextDirtyFields","DEFAULT_FORM_STATE","createFormControl","_options","_formState","_defaultValues","_formValues","_dirtyFieldsStale","delayErrorCallbacks","timers","_valuesSubscribers","_validationModeBeforeSubmit","_validationModeAfterSubmit","defaultProxyFormState","_proxySubscribeFormState","_isTracked","_hasValuesSubscriber","_subjects","_setValidCallId","_resetCallId","shouldDisplayAllAssociatedErrors","debounce","cancelDelayedError","cancelDelayedErrorTree","_setValid","shouldUpdateValid","callId","isValid","_runSchema","_updateIsValidating","executeBuiltInValidation","isValidating","_updateDirtyFields","_setFieldArray","shouldSetValues","shouldUpdateFieldsAndState","fieldValues","rootError","touchedFieldsArray","shouldUpdateTouchedFields","touchedFields","dirtyFieldsArray","_getDirty","updateErrors","_setErrors","hasErrors","hasExplicitNullIntermediate","isStaleArrayField","ownerDepth","ownerPreActionLength","updateValidAndValue","shouldSkipSetValueAs","wasUnsetInFormValues","isEditedBeforeReady","updateTouchAndDirty","setFieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","output","isCurrentFieldPristine","defaultFieldValue","dirtyValue","didResyncDirtyFields","isPreviousFieldTouched","shouldRenderByError","previousFieldError","updatedFormState","executeSchemaAndUpdateState","resetCallId","isFieldArrayRootError","hasNestedFields","validateForm","clearErrors","onlyCheckValid","isFieldArrayRoot","isPromiseFunction","shouldTrackIsValidatingState","_removeUnmounted","unregister","_getWatch","_getFieldArray","skipClone","skipRender","skipValueRender","optionRef","checkboxRef","radioRef","setFieldValues","fieldKey","_setValue","skipStateEmit","cloneValue","previousValue","isValueUnchanged","watched","emittedName","fieldArrayItemNames","itemName","setValues","updatedFormValues","isFieldValueUpdated","_updateIsFieldValueUpdated","hasNoValidationEffect","shouldSkipValidation","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","getValues","getErrors","getFieldState","targetFormState","inputName","currentError","currentRef","types","restOfErrorTree","watch","valuesSubscriber","_subscribe","trackedKeys","_setDisabledField","disabledStateChanged","register","disabledIsDefined","shouldRevalidateRemount","nextField","radioOrCheckbox","newField","_focusError","_disableForm","currentField","handleSubmit","onValid","onInvalid","onValidError","resetField","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","fieldsToCheck","isDirty","existingValue","setFocus","_setFormState","methods","newDirtyFields","RESET_OPTIONS","useForm","_formControl","_values","_formControlProp","_hadValidate","previousOptions","removedOptions","getEnumValues","numericValues","joinValues","separator","stringifyPrimitive","jsonStringifyReplacer","Cached","nullish","cleanRegex","assignProp","rawShape","def","desc","sourceShape","schema","deferProp","putProp","mirrorShape","wrap","mirrorProps","mergeDefs","defs","mergedDescriptors","esc","slugify","captureStackTrace","_args","allowsEval","globalConfig","F","shallowClone","propertyKeyTypes","escapeRegex","normalizeParams","_params","optionalKeys","shape","NUMBER_FORMAT_RANGES","BIGINT_FORMAT_RANGES","pick","currDef","checks","newShape","maskedKeys","omit","omitted","extend","existingShape","extended","safeExtend","merge","partial","Class","selected","aborted","explicitlyAborted","prefixIssues","iss","unwrapMessage","sizeCaps","defChecks","caps","attachSchema","finalizeIssue","traits","schemaError","full","highSurrogate","codePointLength","getLengthableOrigin","parsedType","members","table","defineBound","enumerable","derived","computes","claim","installing","broke","breaker","defineLazyInternal","installLazyProp","CONSTANT_CATCH","constantCatch","_zodDesc","_E","newError","Definition","E","saved","$constructor","initializer","zodProto","protoMembers","ctorProto","up","installMembers","Parent","pp","$ZodAsyncError","$ZodEncodeError","newConfig","_getMessage","internals","util.jsonStringifyReplacer","_setMessage","_messageDesc","_issuesDesc","_installedToString","$ZodError","flattenError","mapper","fieldErrors","formErrors","sub","formatError","processError","fullpath","terminal","finalizeParams","callee","_parse","_Err","_ctx","core.$ZodAsyncError","util.finalizeIssue","core.config","util.captureStackTrace","_parseAsync","_safeParse","failure","Err","_safeParseAsync","COMPILE_INVALID","COMPILE_FALLBACK","validator","validateFallback","fallbackRun","validateAsync","_encode","_decode","_encodeAsync","parseAsync","_decodeAsync","_safeEncode","_safeDecode","_safeEncodeAsync","_safeDecodeAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","nanoidOfLength","guid","uuid","version","_emoji","emoji","ipv4","ipv6","cidrv4","cidrv6","base64","base64url","httpProtocol","e164","dateSource","date","timeSource","hhmm","datetime","qualified","timeRegex","anyString","lowercase","uppercase","$ZodCheck","core.$constructor","_whenHasLength","util.nullish","$ZodCheckMaxLength","util.codePointLength","origin","util.getLengthableOrigin","$ZodCheckMinLength","$ZodCheckLengthEquals","tooBig","$ZodCheckStringFormat","$ZodCheckRegex","$ZodCheckLowerCase","regexes.lowercase","$ZodCheckUpperCase","regexes.uppercase","$ZodCheckIncludes","escapedRegex","util.escapeRegex","$ZodCheckStartsWith","$ZodCheckEndsWith","$ZodCheckOverwrite","Doc","closed","lines","minIndent","dedented","line","$ZodType","runChecks","isAborted","util.aborted","asyncResult","util.explicitlyAborted","currLen","util.attachSchema","handleCanaryResult","canary","checkResult","util.hide","standardProps","util.own","toStandardResult","$ZodString","regexes.anyString","$ZodStringFormat","checks.$ZodCheckStringFormat","$ZodGUID","regexes.guid","$ZodUUID","regexes.uuid","$ZodEmail","regexes.email","URL_BAD_FORMAT","URL_UNPARSEABLE","canParseURL","validateURL","trimmed","parseURLObject","regexes.httpProtocol","URLStatic","asciiTabOrNewline","stripTabAndNewline","urlHostnameOk","hostname","urlProtocolOk","$ZodURL","$ZodEmoji","regexes.emoji","$ZodNanoID","regexes.nanoid","regexes.nanoidOfLength","$ZodCUID","regexes.cuid","$ZodCUID2","regexes.cuid2","$ZodULID","regexes.ulid","$ZodXID","regexes.xid","$ZodKSUID","regexes.ksuid","$ZodISODateTime","regexes.datetime","$ZodISODate","regexes.date","$ZodISOTime","regexes.time","$ZodISODuration","regexes.duration","$ZodIPv4","regexes.ipv4","ipv6Alphabet","isValidIPv6","$ZodIPv6","regexes.ipv6","$ZodCIDRv4","regexes.cidrv4","isValidCIDRv6","address","prefixNum","$ZodCIDRv6","regexes.cidrv6","isValidBase64","base64Charset","$ZodBase64","base64urlCharset","isValidBase64URL","padded","$ZodBase64URL","$ZodE164","regexes.e164","isValidJWT","algorithm","tokensParts","header","parsedHeader","$ZodJWT","$ZodUnknown","$ZodNever","capSize","util.sizeCaps","arraySize","handleArrayResult","final","util.prefixIssues","$ZodArray","memo","core.globalConfig","proms","abortEarly","handlePropertyResult","optin","optout","isPresent","isOptionalOut","NO_SYMBOL_KEYS","normalizeDef","ownSymbols","symbolKeys","allKeys","okeys","util.optionalKeys","handleCatchall","unrecognized","keySet","_catchall","$ZodObject","sh","newSh","_normalized","util.cached","util.defineLazyInternal","zod","propValues","util.assignProp","util.isObject","catchall","$ZodObjectJIT","superParse","generateFastpass","normalized","syms","parseStr","prefixStr","util.esc","isOptionalIn","fastpass","jit","fastEnabled","util.allowsEval","handleUnionResults","nonaborted","$ZodUnion","patterns","util.cleanRegex","async","$ZodIntersection","handleIntersectionResults","mergeValues","util.isPlainObject","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","unrecKeys","unrecIssue","keyIssues","collect","bothKeys","$ZodEnum","util.getEnumValues","valuesSet","patternValues","util.propertyKeyTypes","$ZodTransform","core.$ZodEncodeError","_out","handleOptionalResult","$ZodOptional","$ZodExactOptional","$ZodNullable","$ZodDefault","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","handleCatchResult","$ZodCatch","$ZodPipe","handlePipeResult","$ZodReadonly","handleReadonlyResult","$ZodCustom","checks.$ZodCheck","handleRefineResult","_iss","util.issue","$ZodCyclicError","STATE","NO_ISSUES","cloneIssues","recursive","NONE","ASSUMED","PROVEN","isRecursive","answer","spread","util.rawShape","settle","bucketFor","handoff","_inst","wrapped","isBackEdge","isRecursiveInst","rechecked","lastCtx","lastBucket","walked","memoizer","backEdges","Sizable","getSizing","FormatDictionary","TypeDictionary","getTypeName","expected","receivedType","util.parsedType","received","util.stringifyPrimitive","util.joinValues","adj","sizing","_issue","$ZodRegistry","_meta","pm","globalRegistry","snapshotChecks","_string","util.normalizeParams","_email","_guid","_uuid","_uuidv4","_uuidv6","_uuidv7","_url","_nanoid","_cuid","_cuid2","_ulid","_xid","_ksuid","_ipv4","_ipv6","_cidrv4","_cidrv6","_base64","_base64url","_e164","_jwt","_isoDateTime","_isoDate","_isoTime","_isoDuration","_unknown","_never","_maxLength","maximum","checks.$ZodCheckMaxLength","_minLength","minimum","checks.$ZodCheckMinLength","_length","checks.$ZodCheckLengthEquals","_regex","checks.$ZodCheckRegex","_lowercase","checks.$ZodCheckLowerCase","_uppercase","checks.$ZodCheckUpperCase","_includes","includes","checks.$ZodCheckIncludes","_startsWith","checks.$ZodCheckStartsWith","_endsWith","checks.$ZodCheckEndsWith","_overwrite","tx","checks.$ZodCheckOverwrite","_normalize","_trim","_toLowerCase","_toUpperCase","_slugify","util.slugify","_array","_refine","_superRefine","_check","assignProps","sources","initializeContext","handleUnrepresentable","processSchema","overrideSchema","_json","isTransforming","encodeJSONPointerSegment","extractDefs","idToSchema","makeURI","defsSegment","externalId","uriGenerator","uriPrefix","defUriPrefix","defId","extractToDef","ext","compactTypeUnion","FOLDABLE_KEYS","UNION_KEYS","undeclaredConstraint","extra","foldObjects","objects","properties","other","folded","constraints","constraint","foldIntersection","allOf","unions","union","keyword","finalize","flattenRef","zodSchema","_cached","refSeen","refSchema","parentSeen","rewrite","carriers","rootMetaId","finalized","createStandardJSONSchemaMethod","_schema","createToJSONSchemaMethod","libraryOptions","narrowMin","agg","narrowMax","narrowBoth","addDivisor","addPattern","intersectMime","mime","setFormat","minContributor","maxContributor","formatContributor","ranges","contributors","aggregateChecks","bag","formatMap","exactPatterns","regexes.base64","regexes.base64url","exactPattern","stringProcessor","contentEncoding","laxFormat","patternList","regex","neverProcessor","unknownProcessor","enumProcessor","customProcessor","transformProcessor","arrayProcessor","inputOptin","objectProcessor","requiredKeys","unionProcessor","isExclusive","intersectionProcessor","isSimpleIntersection","nullableProcessor","nonoptionalProcessor","UNREPRESENTABLE_DEFAULT","serializeDefaultValue","unrepresentable","defaultProcessor","prefaultProcessor","catchProcessor","catchValue","pipeProcessor","inIsTransform","readonlyProcessor","optionalProcessor","_installedErrorProtos","_lazyMethod","core.formatError","core.flattenError","ZodRealError","core._parse","core._parseAsync","safeParse","core._safeParse","safeParseAsync","core._safeParseAsync","encode","core._encode","decode","core._decode","encodeAsync","core._encodeAsync","decodeAsync","core._decodeAsync","safeEncode","core._safeEncode","safeDecode","core._safeDecode","safeEncodeAsync","core._safeEncodeAsync","safeDecodeAsync","core._safeDecodeAsync","_ensureDefaultLocale","_ensureDefaultMemoizer","core.memoizer","ZodType","core.$ZodType","chks","util.mergeDefs","core.clone","refine","refinement","superRefine","checks.overwrite","exactOptional","nullable","nonoptional","intersection","pipe","_default","prefault","_catch","readonly","core.globalRegistry","core.standardProps","parse.parse","parse.parseAsync","parse.safeParse","parse.safeParseAsync","parse.validate","parse.validateAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","_ZodString","core.$ZodString","processors.stringProcessor","util.derived","processors.aggregateChecks","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","checks.slugify","ZodString","core._email","ZodEmail","core._url","ZodURL","core._jwt","ZodJWT","core._emoji","ZodEmoji","core._guid","ZodGUID","core._uuid","ZodUUID","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","ZodNanoID","core._cuid","ZodCUID","core._cuid2","ZodCUID2","core._ulid","ZodULID","core._base64","ZodBase64","core._base64url","ZodBase64URL","core._xid","ZodXID","core._ksuid","ZodKSUID","core._ipv4","ZodIPv4","core._ipv6","ZodIPv6","core._cidrv4","ZodCIDRv4","core._cidrv6","ZodCIDRv6","core._e164","ZodE164","core._isoDateTime","ZodISODateTime","core._isoDate","ZodISODate","core._isoTime","ZodISOTime","core._isoDuration","ZodISODuration","core._string","ZodStringFormat","core.$ZodStringFormat","core.$ZodISODateTime","core.$ZodISODate","core.$ZodISOTime","core.$ZodISODuration","core.$ZodEmail","core.$ZodGUID","core.$ZodUUID","core.$ZodURL","core.$ZodEmoji","core.$ZodNanoID","core.$ZodCUID","core.$ZodCUID2","core.$ZodULID","core.$ZodXID","core.$ZodKSUID","core.$ZodIPv4","core.$ZodIPv6","core.$ZodCIDRv4","core.$ZodCIDRv6","core.$ZodBase64","core.$ZodBase64URL","core.$ZodE164","core.$ZodJWT","ZodUnknown","core.$ZodUnknown","processors.unknownProcessor","unknown","core._unknown","ZodNever","core.$ZodNever","processors.neverProcessor","never","core._never","ZodArray","core.$ZodArray","processors.arrayProcessor","core._array","ZodObject","core.$ZodObjectJIT","processors.objectProcessor","util.installLazyProp","_enum","incoming","util.extend","util.safeExtend","util.merge","util.pick","util.omit","util.partial","ZodOptional","ZodExactOptional","util.required","ZodNonOptional","ZodUnion","core.$ZodUnion","processors.unionProcessor","ZodIntersection","core.$ZodIntersection","processors.intersectionProcessor","ZodEnum","core.$ZodEnum","processors.enumProcessor","newEntries","ZodTransform","core.$ZodTransform","processors.transformProcessor","core.$ZodOptional","processors.optionalProcessor","core.$ZodExactOptional","ZodNullable","core.$ZodNullable","processors.nullableProcessor","ZodDefault","core.$ZodDefault","processors.defaultProcessor","util.shallowClone","ZodPrefault","core.$ZodPrefault","processors.prefaultProcessor","core.$ZodNonOptional","processors.nonoptionalProcessor","ZodCatch","core.$ZodCatch","processors.catchProcessor","core.util.constantCatch","ZodPipe","core.$ZodPipe","processors.pipeProcessor","in_","ZodReadonly","core.$ZodReadonly","processors.readonlyProcessor","ZodCustom","core.$ZodCustom","processors.customProcessor","core._refine","core._superRefine","badgeVariants","Badge","LabelPrimitive.Root","SeparatorPrimitive.Root","FieldSet","FieldLegend","FieldGroup","fieldVariants","Field","FieldContent","FieldLabel","FieldTitle","FieldDescription","FieldError","uniqueErrors","Input","Spinner","alertVariants","Alert","AlertDescription","FormAlert","AlertCircleIcon","accountApi","ProfileCard","refreshSession","z.object","z.string","zodResolver","save","EmailCard","formError","setFormError","z.email","change","AlertDialogPrimitive.Root","AlertDialogPrimitive.Trigger","AlertDialogPrimitive.Portal","AlertDialogPrimitive.Overlay","AlertDialogPrimitive.Content","AlertDialogHeader","AlertDialogFooter","AlertDialogPrimitive.Title","AlertDialogPrimitive.Description","AlertDialogPrimitive.Action","AlertDialogPrimitive.Cancel","showCloseButton","XIcon","DialogHeader","DialogFooter","Skeleton","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","CheckIcon","BackupCodesPanel","onDone","doneLabel","setSaved","copied","setCopied","download","CopyIcon","DownloadIcon","kt","xt","Gt","ht","St","Et","bt","Pt","wt","_t","Tt","Z.useRef","Z.useEffect","Ot","Lt","Ct","jt","Mt","h.useState","I","h.useMemo","h.useCallback","G","ot","h.useEffect","Nt","e.createContext","$t","e.forwardRef","Ft","ft","mt","pt","Rt","rt","e.useState","D","O","e.useCallback","e.useMemo","e.useRef","K","J","Y","e.useImperativeHandle","e.useEffect","B","C","Bt","Wt","W","et","At","vt","gt","Ht","Q","ct","it","H","st","lt","ut","It","dt","yt","e.createElement","tt","Dt","e.Fragment","Qt","InputOTP","containerClassName","OTPInput","InputOTPGroup","InputOTPSlot","inputOTPContext","OTPInputContext","hasFakeCaret","CodeInput","onComplete","invalid","REGEXP_ONLY_DIGITS","QrSetup","instruction","groupedKey","describeUserAgent","ua","browser","os","PasswordCard","CodeForm","label","submitLabel","allowBackup","setCode","AuthenticatorCard","setSetup","confirm","BackupCodesCard","setCodes","generate","ConfirmSignOut","onConfirm","SessionRow","onRevoke","MonitorIcon","SessionsCard","sessions","revoke","revokeOthers","others","AccountPage","setParams","tab","FullPageSpinner","SignedInDestination","serverPage","RequireVerified","RequireEnrolment","PublicOnly","background","AuthLayout","footer","InvitationPage","accept","organisation","DEFAULTS","readRuntimeConfig","runtimeConfig","LoginPage","CodeStep","CredentialsStep","login","useBackup","setUseBackup","verify","startOver","BackToLogin","ResetRequestPage","ResetConfirmPage","uid","FIELDS","SignupPage","signup","TwoFactorSetupPage","backupCodes","setBackupCodes","VerifyEmailPage","started","RadioGroupPrimitive.Root","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","SelectPrimitive.Root","SelectPrimitive.Value","SelectPrimitive.Trigger","SelectPrimitive.Icon","ChevronDownIcon","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText","SelectPrimitive.ScrollUpButton","ChevronUpIcon","SelectPrimitive.ScrollDownButton","COUNTRY_CODES","EU","isEu","countryOptions","collator","toValues","profile","userEmail","BillingDetailsCard","countries","kind","country","taxIdValue","company","taxLabel","showVerification","TextField","VerificationBadge","VerificationHint","hint","TONES","Textarea","ResellerCard","latest","ResellerState","note","RequestDialog","setMessage","BillingPage","workspacesApi","changeId","workspaceKeys","changing","priceOf","interval","price","intervalsOf","catalog","plan","feature","included","MAX_PACKS","PlanPicker","packsHint","featuresHint","intervals","plans","packs","features","choosePlan","per","shown","vatNote","LIMITS","Limit","quantity","chosen","currentOf","workspace","same","prorationDate","ChangePage","offer","setSelection","setQuote","wanted","review","choice","back","changes","money","BillingStep","onBack","onNext","editing","setEditing","summary","STEPS","KEY","EMPTY","loadDraft","stored","saveDraft","draft","clearDraft","firstOpenStep","purchase","consents","ReactPropTypesSecret","ReactPropTypesSecret_1","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","propFullName","secret","getShim","ReactPropTypes","propTypesModule","_arrayLikeToArray","_arrayWithHoles","_defineProperty","_toPropertyKey","_iterableToArrayLimit","_nonIterableRest","ownKeys","_objectSpread2","_objectWithoutProperties","_objectWithoutPropertiesLoose","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","_typeof","useAttachEvent","cbDefined","cbRef","decoratedCb","usePrevious","isUnknownObject","isPromise","isStripe","PLAIN_OBJECT_STR","isEqual","leftArray","rightArray","leftPlainObject","rightPlainObject","leftKeys","rightKeys","_i","extractAllowedOptionsUpdates","immutableKeys","newOptions","isUpdated","INVALID_STRIPE_ERROR$1","validateStripe","maybeStripe","errorMsg","parseStripeProp","stripe","registerWithStripeJs","ElementsContext","parseElementsContext","useCase","PropTypes","CheckoutContext","CheckoutSdkContext","useElementsOrCheckoutContextWithUseCase","useCaseString","checkout","_excluded","capitalized","createElementComponent","customDisplayName","displayName","ClientElement","_ref$options","onReady","onEscape","onLoadError","onLoaderStart","onNetworksChange","onCancel","onShippingAddressChange","onShippingRateChange","onSavedPaymentMethodRemove","onSavedPaymentMethodUpdate","onAvailablePaymentMethodsChange","checkoutSdk","_React$useState","_React$useState2","setElement","elementRef","domNode","readyCallback","newElement","elementsSdk","formSdk","restOptions","ServerElement","Element","EmbeddedCheckoutContext","useEmbeddedCheckoutContext","INVALID_STRIPE_ERROR","EmbeddedCheckoutProvider","rawStripeProp","embeddedCheckoutPromise","loadedStripe","setContext","setStripeAndInitEmbeddedCheckout","embeddedCheckout","prevStripe","EmbeddedCheckoutClientElement","_useEmbeddedCheckoutC","isMounted","EmbeddedCheckoutServerElement","_ref2","EmbeddedCheckout","RELEASE_TRAIN","runtimeVersionToUrlVersion","ORIGIN","STRIPE_JS_URL","V3_URL_REGEX","STRIPE_JS_URL_REGEX","isStripeJSURL","findScript","script","injectScript","queryString","headOrBody","registerWrapper","stripePromise$1","onErrorListener","onLoadListener","cause","onLoad","loadScript","_script$parentNode","initStripe","pk","isTestKey","expectedVersion","stripePromise","loadCalled","getStripePromise","loadStripe","_len","PayStep","workspaceId","paid","PlanStep","offered","WORKSPACE_FIELDS","ignoreGone","ReviewStep","onWorkspaceErrors","onCheckout","onPaid","accepted","setAccepted","allAccepted","consent","NAME","useDebounced","settled","setSettled","WorkspaceStep","available","problem","nameError","complete","NewWorkspacePage","setDraft","setErrors","requested","go","StatusBadge","StatusMessage","SetupProgress","steps","Notices","without","notices","notice","StatusActions","CancelCheckout","PaymentButtons","hasUsage","CHANGE_NOTICES","SubscriptionControls","actions","failed","undo","undoCancel","renews","ProgressPrimitive.Root","ProgressPrimitive.Indicator","UsageBars","usage","WorkspaceDetailPage","WorkspacesPage","SupportPage","SYSTEM_FONT","LandingPage","NotFoundPage","createQueryClient","App","createRoot","StrictMode"],"mappings":"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Ae,UAAU,cACzB,KACN53C,EAAa,IACrB,MAAa43C,IAAmB53C,IAAeA,EAAa,KAC5D,CACA,CACE,OAAAu3C,GAAoBv3C,EACb,IACT,CACA,SAAShB,GAAiBgL,EAAc,CACtC,OAAQA,EAAY,CAClB,IAAK,eACL,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,OACL,IAAK,MACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,SACL,IAAK,kBACL,IAAK,YACL,IAAK,mBACL,IAAK,iBACL,IAAK,oBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,mBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,WACL,IAAK,SACL,IAAK,cACH,MAAO,GACT,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,SACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACH,MAAO,GACT,IAAK,UACH,OAAQrP,EAAuB,EAAE,CAC/B,KAAKC,EACH,MAAO,GACT,KAAKC,GACH,MAAO,GACT,KAAKC,GACL,KAAKC,GACH,MAAO,IACT,KAAKC,GACH,MAAO,WACT,QACE,MAAO,GACjB,CACI,QACE,MAAO,GACb,CACA,CACA,IAAI68C,GAA4B,GAC9BC,GAAc,KACdC,GAAa,KACbC,GAAc,KACdC,GAAiB,IAAI,IACrBC,GAAwB,IAAI,IAC5BC,GAAiC,CAAA,EACjCT,GACE,sPAAsP,MACpP,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,CAC9B,UAAA72J,EACA,GAAG9lB,CACL,EAAkE,CAChE,OACEiyD,EAAAA,IAAC6wK,GAAA,CACC,YAAU,4BACV,UAAW/8G,GACT,4GACAjgG,CAAA,EAED,GAAG9lB,EAEJ,eAACqiO,GAAA,CAAA,CAAgB,CAAA,CAAA,CAGvB,CCjKO,MAAMU,GAAgB,CAC3B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAC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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,148,149,152,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,204,234,235,236,237,238]}