{"version":3,"file":"server.mjs","sources":["../../../virtual:nuxt:%2Fapp%2F.nuxt%2Ffetch.mjs","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fglobal-polyfills.mjs","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fnuxt.config.mjs","../../../node_modules/nuxt/dist/app/nuxt.js","../../../node_modules/nuxt/dist/app/components/injections.js","../../../node_modules/nuxt/dist/app/utils.js","../../../node_modules/nuxt/dist/app/composables/router.js","../../../node_modules/nuxt/dist/app/composables/error.js","../../../node_modules/nuxt/dist/head/runtime/composables/v3.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Froute-rules.mjs","../../../node_modules/nuxt/dist/app/composables/manifest.js","../../../node_modules/nuxt/dist/app/composables/payload.js","../../../node_modules/@pinia/nuxt/dist/runtime/payload-plugin.js","../../../node_modules/nuxt/dist/head/runtime/island-head.js","../../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js","../../../node_modules/nuxt/dist/pages/runtime/utils.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Froutes.mjs","../../../node_modules/nuxt/dist/app/components/utils.js","../../../node_modules/nuxt/dist/pages/runtime/router.options.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Frouter.options.mjs","../../../node_modules/nuxt/dist/pages/runtime/validate.js","../../../node_modules/nuxt/dist/app/middleware/route-rules.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fmiddleware.mjs","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fcomponents.islands.mjs","../../../node_modules/nuxt/dist/pages/runtime/plugins/router.js","../../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js","../../../node_modules/nuxt/dist/app/components/server-placeholder.js","../../../node_modules/nuxt/dist/app/components/client-only.js","../../../node_modules/nuxt/dist/app/composables/state.js","../../../node_modules/nuxt/dist/app/composables/ssr.js","../../../node_modules/nuxt/dist/app/composables/cookie.js","../../../node_modules/nuxt/dist/app/composables/url.js","../../../node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fcomponents.plugin.mjs","../../../node_modules/@intlify/shared/dist/shared.mjs","../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/head.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/routing/routing.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/routing/head.js","../../../node_modules/@intlify/utils/dist/shared/utils.9f8159f5.mjs","../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/routing.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/routing/utils.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fi18n-options.mjs","../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/messages.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/compatibility.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/utils.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/domain.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/locales.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/context.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/browser.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/detection.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/utils.js","../../../node_modules/@intlify/message-compiler/dist/message-compiler.mjs","../../../node_modules/@intlify/core-base/dist/core-base.mjs","../../../node_modules/vue-i18n/dist/vue-i18n.mjs","../../../node_modules/@nuxtjs/i18n/dist/runtime/composables/index.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/plugins/switch-locale-path-ssr.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/plugins/route-locale-detect.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/plugins/preload.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/routing/i18n.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/vue-i18n.js","../../../node_modules/@nuxtjs/i18n/dist/runtime/plugins/i18n.js","../../../stores/auth.ts","../../../plugins/api.ts","../../../node_modules/@nuxtjs/i18n/dist/runtime/plugins/ssg-detect.js","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Fplugins.server.mjs","../../../virtual:nuxt:%2Fapp%2F.nuxt%2Flayouts.mjs","../../../node_modules/nuxt/dist/app/components/nuxt-layout.js","../../../node_modules/nuxt/dist/app/components/route-provider.js","../../../node_modules/nuxt/dist/pages/runtime/page.js","../../../app.vue","../../../node_modules/nuxt/dist/app/components/nuxt-error-page.vue","../../../node_modules/nuxt/dist/app/components/nuxt-root.vue","../../../node_modules/nuxt/dist/app/entry.js"],"sourcesContent":["import { $fetch } from 'ofetch'\nimport { baseURL } from '#internal/nuxt/paths'\nif (!globalThis.$fetch) {\n globalThis.$fetch = $fetch.create({\n baseURL: baseURL()\n })\n}","\nif (!(\"global\" in globalThis)) {\n globalThis.global = globalThis;\n}","export const appBaseURL = \"/\"\n\nexport const appBuildAssetsDir = \"/_nuxt/\"\n\nexport const appCdnURL = \"\"\n\nexport const appHead = {\"meta\":[{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"},{\"charset\":\"utf-8\"}],\"link\":[],\"style\":[],\"script\":[],\"noscript\":[]}\n\nexport const appLayoutTransition = false\n\nexport const appPageTransition = false\n\nexport const appViewTransition = false\n\nexport const appKeepalive = false\n\nexport const appRootId = \"__nuxt\"\n\nexport const appRootTag = \"div\"\n\nexport const appRootAttrs = {\"id\":\"__nuxt\"}\n\nexport const appTeleportTag = \"div\"\n\nexport const appTeleportId = \"teleports\"\n\nexport const appTeleportAttrs = {\"id\":\"teleports\"}\n\nexport const appSpaLoaderTag = \"div\"\n\nexport const appSpaLoaderAttrs = {\"id\":\"__nuxt-loader\"}\n\nexport const renderJsonPayloads = true\n\nexport const componentIslands = false\n\nexport const payloadExtraction = false\n\nexport const cookieStore = true\n\nexport const appManifest = true\n\nexport const remoteComponentIslands = false\n\nexport const selectiveClient = false\n\nexport const devPagesDir = null\n\nexport const devRootDir = null\n\nexport const devLogs = false\n\nexport const nuxtLinkDefaults = {\"componentName\":\"NuxtLink\",\"prefetch\":true,\"prefetchOn\":{\"visibility\":true}}\n\nexport const asyncDataDefaults = {\"value\":null,\"errorValue\":null,\"deep\":true}\n\nexport const resetAsyncDataToUndefined = true\n\nexport const nuxtDefaultErrorValue = null\n\nexport const fetchDefaults = {}\n\nexport const vueAppRootContainer = '#__nuxt'\n\nexport const viewTransition = false\n\nexport const appId = \"nuxt-app\"\n\nexport const outdatedBuildInterval = 3600000\n\nexport const multiApp = false\n\nexport const chunkErrorEvent = \"vite:preloadError\"\n\nexport const crawlLinks = false\n\nexport const spaLoadingTemplateOutside = false\n\nexport const purgeCachedData = true\n\nexport const granularCachedData = false\n\nexport const pendingWhenIdle = true\n\nexport const alwaysRunFetchOnKeyChange = true","import { effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, reactive, shallowReactive } from \"vue\";\nimport { createHooks } from \"hookable\";\nimport { getContext } from \"unctx\";\nimport { appId, chunkErrorEvent, multiApp } from \"#build/nuxt.config.mjs\";\nexport function getNuxtAppCtx(id = appId || \"nuxt-app\") {\n return getContext(id, {\n asyncContext: !!__NUXT_ASYNC_CONTEXT__ && import.meta.server\n });\n}\nexport const NuxtPluginIndicator = \"__nuxt_plugin\";\nexport function createNuxtApp(options) {\n let hydratingCount = 0;\n const nuxtApp = {\n _id: options.id || appId || \"nuxt-app\",\n _scope: effectScope(),\n provide: void 0,\n globalName: \"nuxt\",\n versions: {\n get nuxt() {\n return __NUXT_VERSION__;\n },\n get vue() {\n return nuxtApp.vueApp.version;\n }\n },\n payload: shallowReactive({\n ...options.ssrContext?.payload || {},\n data: shallowReactive({}),\n state: reactive({}),\n once: /* @__PURE__ */ new Set(),\n _errors: shallowReactive({})\n }),\n static: {\n data: {}\n },\n runWithContext(fn) {\n if (nuxtApp._scope.active && !getCurrentScope()) {\n return nuxtApp._scope.run(() => callWithNuxt(nuxtApp, fn));\n }\n return callWithNuxt(nuxtApp, fn);\n },\n isHydrating: import.meta.client,\n deferHydration() {\n if (!nuxtApp.isHydrating) {\n return () => {\n };\n }\n hydratingCount++;\n let called = false;\n return () => {\n if (called) {\n return;\n }\n called = true;\n hydratingCount--;\n if (hydratingCount === 0) {\n nuxtApp.isHydrating = false;\n return nuxtApp.callHook(\"app:suspense:resolve\");\n }\n };\n },\n _asyncDataPromises: {},\n _asyncData: shallowReactive({}),\n _payloadRevivers: {},\n ...options\n };\n if (import.meta.server) {\n nuxtApp.payload.serverRendered = true;\n }\n if (import.meta.server && nuxtApp.ssrContext) {\n nuxtApp.payload.path = nuxtApp.ssrContext.url;\n nuxtApp.ssrContext.nuxt = nuxtApp;\n nuxtApp.ssrContext.payload = nuxtApp.payload;\n nuxtApp.ssrContext.config = {\n public: nuxtApp.ssrContext.runtimeConfig.public,\n app: nuxtApp.ssrContext.runtimeConfig.app\n };\n }\n if (import.meta.client) {\n const __NUXT__ = multiApp ? window.__NUXT__?.[nuxtApp._id] : window.__NUXT__;\n if (__NUXT__) {\n for (const key in __NUXT__) {\n switch (key) {\n case \"data\":\n case \"state\":\n case \"_errors\":\n Object.assign(nuxtApp.payload[key], __NUXT__[key]);\n break;\n default:\n nuxtApp.payload[key] = __NUXT__[key];\n }\n }\n }\n }\n nuxtApp.hooks = createHooks();\n nuxtApp.hook = nuxtApp.hooks.hook;\n if (import.meta.server) {\n const contextCaller = async function(hooks, args) {\n for (const hook of hooks) {\n await nuxtApp.runWithContext(() => hook(...args));\n }\n };\n nuxtApp.hooks.callHook = (name, ...args) => nuxtApp.hooks.callHookWith(contextCaller, name, ...args);\n }\n nuxtApp.callHook = nuxtApp.hooks.callHook;\n nuxtApp.provide = (name, value) => {\n const $name = \"$\" + name;\n defineGetter(nuxtApp, $name, value);\n defineGetter(nuxtApp.vueApp.config.globalProperties, $name, value);\n };\n defineGetter(nuxtApp.vueApp, \"$nuxt\", nuxtApp);\n defineGetter(nuxtApp.vueApp.config.globalProperties, \"$nuxt\", nuxtApp);\n if (import.meta.client) {\n if (chunkErrorEvent) {\n window.addEventListener(chunkErrorEvent, (event) => {\n nuxtApp.callHook(\"app:chunkError\", { error: event.payload });\n if (event.payload?.message?.includes(\"Unable to preload CSS\")) {\n event.preventDefault();\n }\n });\n }\n window.useNuxtApp ||= useNuxtApp;\n const unreg = nuxtApp.hook(\"app:error\", (...args) => {\n console.error(\"[nuxt] error caught during app initialization\", ...args);\n });\n nuxtApp.hook(\"app:mounted\", unreg);\n }\n const runtimeConfig = import.meta.server ? options.ssrContext.runtimeConfig : nuxtApp.payload.config;\n nuxtApp.provide(\"config\", import.meta.client && import.meta.dev ? wrappedConfig(runtimeConfig) : runtimeConfig);\n return nuxtApp;\n}\nexport function registerPluginHooks(nuxtApp, plugin) {\n if (plugin.hooks) {\n nuxtApp.hooks.addHooks(plugin.hooks);\n }\n}\nexport async function applyPlugin(nuxtApp, plugin) {\n if (typeof plugin === \"function\") {\n const { provide } = await nuxtApp.runWithContext(() => plugin(nuxtApp)) || {};\n if (provide && typeof provide === \"object\") {\n for (const key in provide) {\n nuxtApp.provide(key, provide[key]);\n }\n }\n }\n}\nexport async function applyPlugins(nuxtApp, plugins) {\n const resolvedPlugins = /* @__PURE__ */ new Set();\n const unresolvedPlugins = [];\n const parallels = [];\n let error = void 0;\n let promiseDepth = 0;\n async function executePlugin(plugin) {\n const unresolvedPluginsForThisPlugin = plugin.dependsOn?.filter((name) => plugins.some((p) => p._name === name) && !resolvedPlugins.has(name)) ?? [];\n if (unresolvedPluginsForThisPlugin.length > 0) {\n unresolvedPlugins.push([new Set(unresolvedPluginsForThisPlugin), plugin]);\n } else {\n const promise = applyPlugin(nuxtApp, plugin).then(async () => {\n if (plugin._name) {\n resolvedPlugins.add(plugin._name);\n await Promise.all(unresolvedPlugins.map(async ([dependsOn, unexecutedPlugin]) => {\n if (dependsOn.has(plugin._name)) {\n dependsOn.delete(plugin._name);\n if (dependsOn.size === 0) {\n promiseDepth++;\n await executePlugin(unexecutedPlugin);\n }\n }\n }));\n }\n }).catch((e) => {\n if (!plugin.parallel && !nuxtApp.payload.error) {\n throw e;\n }\n error ||= e;\n });\n if (plugin.parallel) {\n parallels.push(promise);\n } else {\n await promise;\n }\n }\n }\n for (const plugin of plugins) {\n if (import.meta.server && nuxtApp.ssrContext?.islandContext && plugin.env?.islands === false) {\n continue;\n }\n registerPluginHooks(nuxtApp, plugin);\n }\n for (const plugin of plugins) {\n if (import.meta.server && nuxtApp.ssrContext?.islandContext && plugin.env?.islands === false) {\n continue;\n }\n await executePlugin(plugin);\n }\n await Promise.all(parallels);\n if (promiseDepth) {\n for (let i = 0; i < promiseDepth; i++) {\n await Promise.all(parallels);\n }\n }\n if (error) {\n throw nuxtApp.payload.error || error;\n }\n}\n// @__NO_SIDE_EFFECTS__\nexport function defineNuxtPlugin(plugin) {\n if (typeof plugin === \"function\") {\n return plugin;\n }\n const _name = plugin._name || plugin.name;\n delete plugin.name;\n return Object.assign(plugin.setup || (() => {\n }), plugin, { [NuxtPluginIndicator]: true, _name });\n}\nexport const definePayloadPlugin = defineNuxtPlugin;\nexport function isNuxtPlugin(plugin) {\n return typeof plugin === \"function\" && NuxtPluginIndicator in plugin;\n}\nexport function callWithNuxt(nuxt, setup, args) {\n const fn = () => args ? setup(...args) : setup();\n const nuxtAppCtx = getNuxtAppCtx(nuxt._id);\n if (import.meta.server) {\n return nuxt.vueApp.runWithContext(() => nuxtAppCtx.callAsync(nuxt, fn));\n } else {\n nuxtAppCtx.set(nuxt);\n return nuxt.vueApp.runWithContext(fn);\n }\n}\nexport function tryUseNuxtApp(id) {\n let nuxtAppInstance;\n if (hasInjectionContext()) {\n nuxtAppInstance = getCurrentInstance()?.appContext.app.$nuxt;\n }\n nuxtAppInstance ||= getNuxtAppCtx(id).tryUse();\n return nuxtAppInstance || null;\n}\nexport function useNuxtApp(id) {\n const nuxtAppInstance = tryUseNuxtApp(id);\n if (!nuxtAppInstance) {\n if (import.meta.dev) {\n throw new Error(\"[nuxt] A composable that requires access to the Nuxt instance was called outside of a plugin, Nuxt hook, Nuxt middleware, or Vue setup function. This is probably not a Nuxt bug. Find out more at `https://nuxt.com/docs/guide/concepts/auto-imports#vue-and-nuxt-composables`.\");\n } else {\n throw new Error(\"[nuxt] instance unavailable\");\n }\n }\n return nuxtAppInstance;\n}\n// @__NO_SIDE_EFFECTS__\nexport function useRuntimeConfig(_event) {\n return useNuxtApp().$config;\n}\nfunction defineGetter(obj, key, val) {\n Object.defineProperty(obj, key, { get: () => val });\n}\nexport function defineAppConfig(config) {\n return config;\n}\nconst loggedKeys = /* @__PURE__ */ new Set();\nfunction wrappedConfig(runtimeConfig) {\n if (!import.meta.dev || import.meta.server) {\n return runtimeConfig;\n }\n const keys = [];\n for (const key in runtimeConfig) {\n keys.push(`\\`${key}\\``);\n }\n const lastKey = keys.pop();\n return new Proxy(runtimeConfig, {\n get(target, p, receiver) {\n if (typeof p === \"string\" && p !== \"public\" && !(p in target) && !p.startsWith(\"__v\")) {\n if (!loggedKeys.has(p)) {\n loggedKeys.add(p);\n console.warn(`[nuxt] Could not access \\`${p}\\`. The only available runtime config keys on the client side are ${keys.join(\", \")} and ${lastKey}. See https://nuxt.com/docs/guide/going-further/runtime-config for more information.`);\n }\n }\n return Reflect.get(target, p, receiver);\n }\n });\n}\n","export const LayoutMetaSymbol = Symbol(\"layout-meta\");\nexport const PageRouteSymbol = Symbol(\"route\");\n","import { captureStackTrace } from \"errx\";\nexport function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nconst distURL = import.meta.url.replace(/\\/app\\/.*$/, \"/\");\nexport function getUserTrace() {\n if (!import.meta.dev) {\n return [];\n }\n const trace = captureStackTrace();\n const start = trace.findIndex((entry) => !entry.source.startsWith(distURL));\n const end = [...trace].reverse().findIndex((entry) => !entry.source.includes(\"node_modules\") && !entry.source.startsWith(distURL));\n if (start === -1 || end === -1) {\n return [];\n }\n return trace.slice(start, end > 0 ? -end : void 0).map((i) => ({\n ...i,\n source: i.source.replace(/^file:\\/\\//, \"\")\n }));\n}\nexport function getUserCaller() {\n if (!import.meta.dev) {\n return null;\n }\n const { source, line, column } = captureStackTrace().find((entry) => !entry.source.startsWith(distURL)) ?? {};\n if (!source) {\n return null;\n }\n return {\n source: source.replace(/^file:\\/\\//, \"\"),\n line,\n column\n };\n}\n","import { getCurrentInstance, hasInjectionContext, inject, onScopeDispose } from \"vue\";\nimport { sanitizeStatusCode } from \"h3\";\nimport { decodePath, encodePath, hasProtocol, isScriptProtocol, joinURL, parseQuery, parseURL, withQuery } from \"ufo\";\nimport { useNuxtApp, useRuntimeConfig } from \"../nuxt.js\";\nimport { PageRouteSymbol } from \"../components/injections.js\";\nimport { createError, showError } from \"./error.js\";\nimport { getUserTrace } from \"../utils.js\";\nexport const useRouter = () => {\n return useNuxtApp()?.$router;\n};\nexport const useRoute = () => {\n if (import.meta.dev && !getCurrentInstance() && isProcessingMiddleware()) {\n const middleware = useNuxtApp()._processingMiddleware;\n const trace = getUserTrace().map(({ source, line, column }) => `at ${source}:${line}:${column}`).join(\"\\n\");\n console.warn(`[nuxt] \\`useRoute\\` was called within middleware${typeof middleware === \"string\" ? ` (\\`${middleware}\\`)` : \"\"}. This may lead to misleading results. Instead, use the (to, from) arguments passed to the middleware to access the new and old routes. Learn more: https://nuxt.com/docs/3.x/directory-structure/middleware#accessing-route-in-middleware` + (\"\\n\" + trace));\n }\n if (hasInjectionContext()) {\n return inject(PageRouteSymbol, useNuxtApp()._route);\n }\n return useNuxtApp()._route;\n};\nexport const onBeforeRouteLeave = (guard) => {\n const unsubscribe = useRouter().beforeEach((to, from, next) => {\n if (to === from) {\n return;\n }\n return guard(to, from, next);\n });\n onScopeDispose(unsubscribe);\n};\nexport const onBeforeRouteUpdate = (guard) => {\n const unsubscribe = useRouter().beforeEach(guard);\n onScopeDispose(unsubscribe);\n};\n// @__NO_SIDE_EFFECTS__\nexport function defineNuxtRouteMiddleware(middleware) {\n return middleware;\n}\nexport const addRouteMiddleware = (name, middleware, options = {}) => {\n const nuxtApp = useNuxtApp();\n const global = options.global || typeof name !== \"string\";\n const mw = typeof name !== \"string\" ? name : middleware;\n if (!mw) {\n console.warn(\"[nuxt] No route middleware passed to `addRouteMiddleware`.\", name);\n return;\n }\n if (global) {\n nuxtApp._middleware.global.push(mw);\n } else {\n nuxtApp._middleware.named[name] = mw;\n }\n};\nconst isProcessingMiddleware = () => {\n try {\n if (useNuxtApp()._processingMiddleware) {\n return true;\n }\n } catch {\n return false;\n }\n return false;\n};\nconst HTML_ATTR_UNSAFE_RE = /[&\"'<>]/g;\nconst HTML_ATTR_ENCODE_MAP = {\n \"&\": \"%26\",\n '\"': \"%22\",\n \"'\": \"%27\",\n \"<\": \"%3C\",\n \">\": \"%3E\"\n};\nfunction encodeForHtmlAttr(value) {\n return value.replace(HTML_ATTR_UNSAFE_RE, (c) => HTML_ATTR_ENCODE_MAP[c]);\n}\nexport const navigateTo = (to, options) => {\n to ||= \"/\";\n const toPath = typeof to === \"string\" ? to : \"path\" in to ? resolveRouteObject(to) : useRouter().resolve(to).href;\n if (import.meta.client && options?.open) {\n const { protocol } = new URL(toPath, window.location.href);\n if (protocol && isScriptProtocol(protocol)) {\n throw new Error(`Cannot navigate to a URL with '${protocol}' protocol.`);\n }\n const { target = \"_blank\", windowFeatures = {} } = options.open;\n const features = [];\n for (const [feature, value] of Object.entries(windowFeatures)) {\n if (value !== void 0) {\n features.push(`${feature.toLowerCase()}=${value}`);\n }\n }\n open(toPath, target, features.join(\", \"));\n return Promise.resolve();\n }\n const isExternalHost = hasProtocol(toPath, { acceptRelative: true });\n const isExternal = options?.external || isExternalHost;\n if (isExternal) {\n if (!options?.external) {\n throw new Error(\"Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.\");\n }\n const { protocol } = new URL(toPath, import.meta.client ? window.location.href : \"http://localhost\");\n if (protocol && isScriptProtocol(protocol)) {\n throw new Error(`Cannot navigate to a URL with '${protocol}' protocol.`);\n }\n }\n const inMiddleware = isProcessingMiddleware();\n if (import.meta.client && !isExternal && inMiddleware) {\n if (options?.replace) {\n if (typeof to === \"string\") {\n const { pathname, search, hash } = parseURL(to);\n return {\n path: pathname,\n ...search && { query: parseQuery(search) },\n ...hash && { hash },\n replace: true\n };\n }\n return { ...to, replace: true };\n }\n return to;\n }\n const router = useRouter();\n const nuxtApp = useNuxtApp();\n if (import.meta.server) {\n if (nuxtApp.ssrContext) {\n const fullPath = typeof to === \"string\" || isExternal ? toPath : router.resolve(to).fullPath || \"/\";\n const location2 = isExternal ? toPath : joinURL(useRuntimeConfig().app.baseURL, fullPath);\n const redirect = async function(response) {\n await nuxtApp.callHook(\"app:redirected\");\n const encodedHeader = encodeURL(location2, isExternalHost);\n const encodedLoc = encodeForHtmlAttr(encodedHeader);\n nuxtApp.ssrContext[\"~renderResponse\"] = {\n statusCode: sanitizeStatusCode(options?.redirectCode || 302, 302),\n body: `
`,\n headers: { location: encodedHeader }\n };\n return response;\n };\n if (!isExternal && inMiddleware) {\n router.afterEach((final) => final.fullPath === fullPath ? redirect(false) : void 0);\n return to;\n }\n return redirect(!inMiddleware ? void 0 : (\n /* abort route navigation */\n false\n ));\n }\n }\n if (isExternal) {\n nuxtApp._scope.stop();\n if (options?.replace) {\n location.replace(toPath);\n } else {\n location.href = toPath;\n }\n if (inMiddleware) {\n if (!nuxtApp.isHydrating) {\n return false;\n }\n return new Promise(() => {\n });\n }\n return Promise.resolve();\n }\n const encodedTo = typeof to === \"string\" ? encodeRoutePath(to) : to;\n return options?.replace ? router.replace(encodedTo) : router.push(encodedTo);\n};\nexport const abortNavigation = (err) => {\n if (import.meta.dev && !isProcessingMiddleware()) {\n throw new Error(\"abortNavigation() is only usable inside a route middleware handler.\");\n }\n if (!err) {\n return false;\n }\n err = createError(err);\n if (err.fatal) {\n useNuxtApp().runWithContext(() => showError(err));\n }\n throw err;\n};\nexport const setPageLayout = (layout, props) => {\n const nuxtApp = useNuxtApp();\n if (import.meta.server) {\n if (import.meta.dev && getCurrentInstance() && nuxtApp.payload.state._layout !== layout) {\n console.warn(\"[nuxt] `setPageLayout` should not be called to change the layout on the server within a component as this will cause hydration errors.\");\n }\n nuxtApp.payload.state._layout = layout;\n nuxtApp.payload.state._layoutProps = props;\n }\n if (import.meta.dev && nuxtApp.isHydrating && nuxtApp.payload.serverRendered && nuxtApp.payload.state._layout !== layout) {\n console.warn(\"[nuxt] `setPageLayout` should not be called to change the layout during hydration as this will cause hydration errors.\");\n }\n const inMiddleware = isProcessingMiddleware();\n if (inMiddleware || import.meta.server || nuxtApp.isHydrating) {\n const unsubscribe = useRouter().beforeResolve((to) => {\n to.meta.layout = layout;\n to.meta.layoutProps = props;\n unsubscribe();\n });\n }\n if (!inMiddleware) {\n const route = useRoute();\n route.meta.layout = layout;\n route.meta.layoutProps = props;\n if (import.meta.client) {\n const unsubscribe = useRouter().beforeResolve((to, from) => {\n if (to.path === from.path) {\n to.meta.layout = layout;\n to.meta.layoutProps = props;\n } else {\n unsubscribe();\n }\n });\n onScopeDispose(unsubscribe, true);\n }\n }\n};\nexport function resolveRouteObject(to) {\n return withQuery(to.path || \"\", to.query || {}) + (to.hash || \"\");\n}\nexport function encodeURL(location2, isExternalHost = false) {\n const url = new URL(location2, \"http://localhost\");\n if (!isExternalHost) {\n const pathname = url.pathname.replace(/^\\/{2,}/, \"/\");\n return pathname + url.search + url.hash;\n }\n if (location2.startsWith(\"//\")) {\n return url.toString().replace(url.protocol, \"\");\n }\n return url.toString();\n}\nexport function encodeRoutePath(url) {\n const parsed = parseURL(url);\n return encodePath(decodePath(parsed.pathname)) + parsed.search + parsed.hash;\n}\n","import { createError as createH3Error } from \"h3\";\nimport { toRef } from \"vue\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport { useRouter } from \"./router.js\";\nimport { nuxtDefaultErrorValue } from \"#build/nuxt.config.mjs\";\nexport const NUXT_ERROR_SIGNATURE = \"__nuxt_error\";\nexport const useError = /* @__NO_SIDE_EFFECTS__ */ () => toRef(useNuxtApp().payload, \"error\");\nexport const showError = (error) => {\n const nuxtError = createError(error);\n try {\n const error2 = /* @__PURE__ */ useError();\n if (import.meta.client) {\n const nuxtApp = useNuxtApp();\n nuxtApp.hooks.callHook(\"app:error\", nuxtError);\n }\n error2.value ||= nuxtError;\n } catch {\n throw nuxtError;\n }\n return nuxtError;\n};\nexport const clearError = async (options = {}) => {\n const nuxtApp = useNuxtApp();\n const error = /* @__PURE__ */ useError();\n nuxtApp.callHook(\"app:error:cleared\", options);\n if (options.redirect) {\n await useRouter().replace(options.redirect);\n }\n error.value = nuxtDefaultErrorValue;\n};\nexport const isNuxtError = (error) => !!error && typeof error === \"object\" && NUXT_ERROR_SIGNATURE in error;\nexport const createError = (error) => {\n if (typeof error !== \"string\" && error.statusText) {\n error.message ??= error.statusText;\n }\n const nuxtError = createH3Error(error);\n Object.defineProperty(nuxtError, NUXT_ERROR_SIGNATURE, {\n value: true,\n configurable: false,\n writable: false\n });\n Object.defineProperty(nuxtError, \"status\", {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n get: () => nuxtError.statusCode,\n configurable: true\n });\n Object.defineProperty(nuxtError, \"statusText\", {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n get: () => nuxtError.statusMessage,\n configurable: true\n });\n return nuxtError;\n};\n","import { hasInjectionContext, inject } from \"vue\";\nimport {\n useHead as headCore,\n useHeadSafe as headSafe,\n headSymbol,\n useSeoMeta as seoMeta,\n useServerHead as serverHead,\n useServerHeadSafe as serverHeadSafe,\n useServerSeoMeta as serverSeoMeta\n} from \"@unhead/vue\";\nimport { tryUseNuxtApp } from \"#app/nuxt\";\nexport function injectHead(nuxtApp) {\n const nuxt = nuxtApp || tryUseNuxtApp();\n return nuxt?.ssrContext?.head || nuxt?.runWithContext(() => {\n if (hasInjectionContext()) {\n return inject(headSymbol);\n }\n });\n}\nexport function useHead(input, options = {}) {\n const head = injectHead(options.nuxt);\n if (head) {\n return headCore(input, { head, ...options });\n }\n}\nexport function useHeadSafe(input, options = {}) {\n const head = injectHead(options.nuxt);\n if (head) {\n return headSafe(input, { head, ...options });\n }\n}\nexport function useSeoMeta(input, options = {}) {\n const head = injectHead(options.nuxt);\n if (head) {\n return seoMeta(input, { head, ...options });\n }\n}\nexport function useServerHead(input, options = {}) {\n const head = injectHead(options.nuxt);\n if (head) {\n return serverHead(input, { head, ...options });\n }\n}\nexport function useServerHeadSafe(input, options = {}) {\n const head = injectHead(options.nuxt);\n if (head) {\n return serverHeadSafe(input, { head, ...options });\n }\n}\nexport function useServerSeoMeta(input, options = {}) {\n const head = injectHead(options.nuxt);\n if (head) {\n return serverSeoMeta(input, { head, ...options });\n }\n}\n","\n import { defu } from 'defu'\n const matcher = (m,p)=>{return [];}\n export default (path) => defu({}, ...matcher('', typeof path === 'string' ? path.toLowerCase() : path).map(r => r.data).reverse())\n ","import { useNuxtApp, useRuntimeConfig } from \"../nuxt.js\";\nimport { appManifest as isAppManifestEnabled } from \"#build/nuxt.config.mjs\";\nimport { buildAssetsURL } from \"#internal/nuxt/paths\";\nimport _routeRulesMatcher from \"#build/route-rules.mjs\";\nconst routeRulesMatcher = _routeRulesMatcher;\nlet manifest;\nfunction fetchManifest() {\n if (!isAppManifestEnabled) {\n throw new Error(\"[nuxt] app manifest should be enabled with `experimental.appManifest`\");\n }\n let _manifest;\n if (import.meta.server) {\n _manifest = import(\n /* webpackIgnore: true */\n /* @vite-ignore */\n \"#app-manifest\"\n );\n } else {\n _manifest = $fetch(buildAssetsURL(`builds/meta/${useRuntimeConfig().app.buildId}.json`), {\n responseType: \"json\"\n }).then((res) => {\n if (!res || typeof res !== \"object\" || !Array.isArray(res.prerendered)) {\n throw new Error(\"[nuxt] Received malformed app manifest. Ensure that `builds/meta/*.json` is served as JSON by your hosting/proxy and not rewritten to an HTML fallback.\");\n }\n return res;\n });\n }\n manifest = _manifest;\n _manifest.catch((e) => {\n if (manifest === _manifest) {\n manifest = void 0;\n }\n console.error(\"[nuxt] Error fetching app manifest.\", e);\n });\n return _manifest;\n}\nexport function getAppManifest() {\n if (!isAppManifestEnabled) {\n throw new Error(\"[nuxt] app manifest should be enabled with `experimental.appManifest`\");\n }\n if (import.meta.server) {\n useNuxtApp().ssrContext[\"~preloadManifest\"] = true;\n }\n return manifest || fetchManifest();\n}\nexport function getRouteRules(arg) {\n const path = typeof arg === \"string\" ? arg : arg.path;\n try {\n return routeRulesMatcher(path.toLowerCase());\n } catch (e) {\n console.error(\"[nuxt] Error matching route rules.\", e);\n return {};\n }\n}\n","import { hasProtocol, joinURL } from \"ufo\";\nimport { parse } from \"devalue\";\nimport { getCurrentInstance, onServerPrefetch, reactive } from \"vue\";\nimport { useNuxtApp, useRuntimeConfig } from \"../nuxt.js\";\nimport { useHead } from \"./head.js\";\nimport { useRoute } from \"./router.js\";\nimport { getAppManifest, getRouteRules } from \"./manifest.js\";\nimport { appId, appManifest, multiApp, payloadExtraction, renderJsonPayloads } from \"#build/nuxt.config.mjs\";\nexport async function loadPayload(url, opts = {}) {\n if (import.meta.server || !payloadExtraction) {\n return null;\n }\n if (await shouldLoadPayload(url)) {\n const payloadURL = await _getPayloadURL(url, opts);\n return await _importPayload(payloadURL) || null;\n }\n return null;\n}\nlet linkRelType;\nfunction detectLinkRelType() {\n if (import.meta.server) {\n return \"preload\";\n }\n if (linkRelType) {\n return linkRelType;\n }\n const relList = document.createElement(\"link\").relList;\n linkRelType = relList && relList.supports && relList.supports(\"prefetch\") ? \"prefetch\" : \"preload\";\n return linkRelType;\n}\nexport function preloadPayload(url, opts = {}) {\n const nuxtApp = useNuxtApp();\n const promise = shouldLoadPayload(url).then(async (shouldPreload) => {\n if (!shouldPreload) {\n return;\n }\n const payloadURL = await _getPayloadURL(url, opts);\n const link = renderJsonPayloads ? { rel: detectLinkRelType(), as: \"fetch\", crossorigin: \"anonymous\", href: payloadURL } : { rel: \"modulepreload\", crossorigin: \"\", href: payloadURL };\n if (import.meta.server) {\n nuxtApp.runWithContext(() => useHead({ link: [link] }));\n } else {\n const linkEl = document.createElement(\"link\");\n for (const key of Object.keys(link)) {\n linkEl[key === \"crossorigin\" ? \"crossOrigin\" : key] = link[key];\n }\n document.head.appendChild(linkEl);\n return new Promise((resolve, reject) => {\n linkEl.addEventListener(\"load\", () => resolve());\n linkEl.addEventListener(\"error\", () => reject());\n });\n }\n });\n if (import.meta.server) {\n onServerPrefetch(() => promise);\n }\n return promise;\n}\nconst filename = renderJsonPayloads ? \"_payload.json\" : \"_payload.js\";\nasync function _getPayloadURL(url, opts = {}) {\n const u = new URL(url, \"http://localhost\");\n if (u.host !== \"localhost\" || hasProtocol(u.pathname, { acceptRelative: true })) {\n throw new Error(\"Payload URL must not include hostname: \" + url);\n }\n const config = useRuntimeConfig();\n const hash = opts.hash || (opts.fresh || import.meta.dev ? Date.now() : config.app.buildId);\n const cdnURL = config.app.cdnURL;\n const baseOrCdnURL = cdnURL && await isPrerendered(url) ? cdnURL : config.app.baseURL;\n return joinURL(baseOrCdnURL, u.pathname, filename + (hash ? `?${hash}` : \"\"));\n}\nasync function _importPayload(payloadURL) {\n if (import.meta.server || !payloadExtraction) {\n return null;\n }\n try {\n if (renderJsonPayloads) {\n const res = await fetch(payloadURL, import.meta.dev ? {} : { cache: \"force-cache\" });\n if (!res.ok) {\n if (import.meta.dev) {\n console.warn(`[nuxt] Cannot load payload ${payloadURL}: ${res.status} ${res.statusText}`);\n }\n return null;\n }\n return await parsePayload(await res.text());\n } else {\n return await import(\n /* webpackIgnore: true */\n /* @vite-ignore */\n payloadURL\n ).then((r) => r.default || r);\n }\n } catch (err) {\n console.warn(\"[nuxt] Cannot load payload \", payloadURL, err);\n }\n return null;\n}\nfunction _shouldLoadPrerenderedPayload(rules) {\n if (rules.redirect) {\n return false;\n }\n if (rules.prerender) {\n return true;\n }\n}\nasync function _isPrerenderedInManifest(url) {\n if (!appManifest) {\n return false;\n }\n url = url === \"/\" ? url : url.replace(/\\/$/, \"\");\n try {\n const manifest = await getAppManifest();\n return manifest.prerendered.includes(url);\n } catch {\n return false;\n }\n}\nexport async function shouldLoadPayload(url = useRoute().path) {\n const rules = getRouteRules({ path: url });\n if (rules.ssr === false) {\n return false;\n }\n const res = _shouldLoadPrerenderedPayload(rules);\n if (res !== void 0) {\n return res;\n }\n if (rules.payload) {\n return true;\n }\n const prerendered = await _isPrerenderedInManifest(url);\n return prerendered;\n}\nexport async function isPrerendered(url = useRoute().path) {\n const res = _shouldLoadPrerenderedPayload(getRouteRules({ path: url }));\n if (res !== void 0) {\n return res;\n }\n const prerendered = await _isPrerenderedInManifest(url);\n return prerendered;\n}\nlet payloadCache = null;\nexport async function getNuxtClientPayload() {\n if (import.meta.server) {\n return null;\n }\n if (payloadCache) {\n return payloadCache;\n }\n const el = multiApp ? document.querySelector(`[data-nuxt-data=\"${appId}\"]`) : document.getElementById(\"__NUXT_DATA__\");\n if (!el) {\n return {};\n }\n const inlineData = await parsePayload(el.textContent || \"\");\n const externalData = el.dataset.src ? await _importPayload(el.dataset.src) : void 0;\n payloadCache = {\n ...inlineData,\n ...externalData,\n ...multiApp ? window.__NUXT__?.[appId] : window.__NUXT__\n };\n if (payloadCache.config?.public) {\n payloadCache.config.public = reactive(payloadCache.config.public);\n }\n return payloadCache;\n}\nexport async function parsePayload(payload) {\n return await parse(payload, useNuxtApp()._payloadRevivers);\n}\nexport function definePayloadReducer(name, reduce) {\n if (import.meta.server) {\n useNuxtApp().ssrContext[\"~payloadReducers\"][name] = reduce;\n }\n}\nexport function definePayloadReviver(name, revive) {\n if (import.meta.dev && getCurrentInstance()) {\n console.warn(\"[nuxt] [definePayloadReviver] This function must be called in a Nuxt plugin that is `unshift`ed to the beginning of the Nuxt plugins array.\");\n }\n if (import.meta.client) {\n useNuxtApp()._payloadRevivers[name] = revive;\n }\n}\n","import {\n definePayloadPlugin,\n definePayloadReducer,\n definePayloadReviver\n} from \"#imports\";\nimport { shouldHydrate } from \"pinia\";\nconst payloadPlugin = definePayloadPlugin(() => {\n definePayloadReducer(\n \"skipHydrate\",\n // We need to return something truthy to be treated as a match\n (data) => !shouldHydrate(data) && 1\n );\n definePayloadReviver(\"skipHydrate\", (_data) => void 0);\n});\nexport default payloadPlugin;\n","export function freezeHead(head) {\n const realPush = head.push;\n head.push = () => ({ dispose: () => {\n }, patch: () => {\n }, _poll: () => {\n } });\n return () => {\n head.push = realPush;\n };\n}\n","import { createHead as createClientHead, renderDOMHead } from \"@unhead/vue/client\";\nimport { defineNuxtPlugin } from \"#app/nuxt\";\nimport { freezeHead } from \"../island-head.js\";\nimport unheadOptions from \"#build/unhead-options.mjs\";\nexport default defineNuxtPlugin({\n name: \"nuxt:head\",\n enforce: \"pre\",\n setup(nuxtApp) {\n const head = import.meta.server ? nuxtApp.ssrContext.head : createClientHead(unheadOptions);\n if (import.meta.server && nuxtApp.ssrContext.islandContext) {\n const unfreeze = freezeHead(head);\n nuxtApp.hooks.hookOnce(\"app:created\", unfreeze);\n }\n nuxtApp.vueApp.use(head);\n if (import.meta.client) {\n let pauseDOMUpdates = true;\n const syncHead = async () => {\n pauseDOMUpdates = false;\n await renderDOMHead(head);\n };\n head.hooks.hook(\"dom:beforeRender\", (context) => {\n context.shouldRender = !pauseDOMUpdates;\n });\n nuxtApp.hooks.hook(\"page:start\", () => {\n pauseDOMUpdates = true;\n });\n nuxtApp.hooks.hook(\"page:finish\", () => {\n if (!nuxtApp.isHydrating) {\n syncHead();\n }\n });\n nuxtApp.hooks.hook(\"app:error\", syncHead);\n nuxtApp.hooks.hook(\"app:suspense:resolve\", syncHead);\n const originalPush = head.push.bind(head);\n head.push = ((input, options) => {\n const entry = originalPush(input, options);\n const originalDispose = entry.dispose.bind(entry);\n entry.dispose = () => {\n const transitionPromise = nuxtApp[\"~transitionPromise\"];\n if (transitionPromise) {\n transitionPromise.then(originalDispose);\n } else {\n originalDispose();\n }\n };\n return entry;\n });\n }\n }\n});\n","import { KeepAlive, h } from \"vue\";\nconst ROUTE_KEY_PARENTHESES_RE = /(:\\w+)\\([^)]+\\)/g;\nconst ROUTE_KEY_SYMBOLS_RE = /(:\\w+)[?+*]/g;\nconst ROUTE_KEY_NORMAL_RE = /:\\w+/g;\nconst interpolatePath = (route, match) => {\n return match.path.replace(ROUTE_KEY_PARENTHESES_RE, \"$1\").replace(ROUTE_KEY_SYMBOLS_RE, \"$1\").replace(ROUTE_KEY_NORMAL_RE, (r) => route.params[r.slice(1)]?.toString() || \"\");\n};\nexport const generateRouteKey = (routeProps, override) => {\n const matchedRoute = routeProps.route.matched.find((m) => m.components?.default === routeProps.Component.type);\n const source = override ?? matchedRoute?.meta.key ?? (matchedRoute && interpolatePath(routeProps.route, matchedRoute));\n return typeof source === \"function\" ? source(routeProps.route) : source;\n};\nexport const wrapInKeepAlive = (props, children) => {\n return { default: () => import.meta.client && props ? h(KeepAlive, props === true ? {} : props, children) : children };\n};\nexport function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n","\nif (import.meta.hot) {\n import.meta.hot.accept((mod) => {\n const router = import.meta.hot.data.router\n const generateRoutes = import.meta.hot.data.generateRoutes\n if (!router || !generateRoutes) {\n import.meta.hot.invalidate('[nuxt] Cannot replace routes because there is no active router. Reloading.')\n return\n }\n const addedRoutes = router.getRoutes().filter(r => !r._initial)\n router.clearRoutes()\n const routes = generateRoutes(mod.default || mod)\n function addRoutes (routes) {\n for (const route of routes) {\n router.addRoute(route)\n }\n for (const route of router.getRoutes()) {\n route._initial = true\n }\n for (const route of addedRoutes) {\n router.addRoute(route)\n }\n router.isReady().then(() => {\n // Resolve the current path against the new routes to get updated meta\n const newRoute = router.resolve(router.currentRoute.value.fullPath)\n // Clear old meta values and assign new ones\n for (const key of Object.keys(router.currentRoute.value.meta)) {\n delete router.currentRoute.value.meta[key]\n }\n Object.assign(router.currentRoute.value.meta, newRoute.meta)\n })\n }\n if (routes && 'then' in routes) {\n routes.then(addRoutes)\n } else {\n addRoutes(routes)\n }\n })\n}\n\nexport function handleHotUpdate(_router, _generateRoutes) {\n if (import.meta.hot) {\n import.meta.hot.data ||= {}\n import.meta.hot.data.router = _router\n import.meta.hot.data.generateRoutes = _generateRoutes\n for (const route of _router.getRoutes()) {\n route._initial = true\n }\n }\n}\nimport { default as indexndqPXFtP262szLmLJV4PriPTgAg5k_457f05QyTfosBXQMeta } from \"/app/pages/index.vue?macro=true\";\nimport { default as loginKGJhNRZhH4FU_45RnHfId5ZCGRhKzPnQPbdAbdNd47TwsMeta } from \"/app/pages/login.vue?macro=true\";\nimport { default as indexwqqxPBLNl0Gqxy2G7X4gCBzRids0_eE4yk9P0pmntIkMeta } from \"/app/pages/users/index.vue?macro=true\";\nimport { default as indexmGB0sc77z4nVdouTyxGPwq1E4nqHwF5EhzkXRcpUofYMeta } from \"/app/pages/garages/index.vue?macro=true\";\nimport { default as index9qRM9nI7Gyr8BPZ_gGFwOwjNijuAYckitFxr7XMDgfUMeta } from \"/app/pages/persons/index.vue?macro=true\";\nimport { default as index4QOTtNxyMkSDhg1SvMqdYexX0LysiSHughzzK0HxGl0Meta } from \"/app/pages/packages/index.vue?macro=true\";\nimport { default as indexCTKEPceD8pI2A58K0Zb4Fm8lioQIkzU5JCB5NECysdsMeta } from \"/app/pages/users/[id]/index.vue?macro=true\";\nimport { default as indexmFHuXm1TRDyTx4rDob8_G9bfnp43YCs_HCFMFiG56X4Meta } from \"/app/pages/permissions/index.vue?macro=true\";\nimport { default as indexAuxdrh0pHX6Iqtqd32rOzygNETRCVAwmUBNefBquEOoMeta } from \"/app/pages/garages/[id]/index.vue?macro=true\";\nimport { default as index0VmlyIG5RuXIkfq88QlX2JIssZiRgzqGmBH_NO_l51sMeta } from \"/app/pages/persons/[id]/index.vue?macro=true\";\nexport default [\n {\n name: \"index\",\n path: \"/\",\n meta: {\"middleware\":\"auth\"},\n component: () => import(\"/app/pages/index.vue\")\n },\n {\n name: \"login\",\n path: \"/login\",\n meta: loginKGJhNRZhH4FU_45RnHfId5ZCGRhKzPnQPbdAbdNd47TwsMeta || {},\n component: () => import(\"/app/pages/login.vue\")\n },\n {\n name: \"users\",\n path: \"/users\",\n meta: {\"middleware\":\"auth\"},\n component: () => import(\"/app/pages/users/index.vue\")\n },\n {\n name: \"garages\",\n path: \"/garages\",\n meta: {\"middleware\":\"auth\"},\n component: () => import(\"/app/pages/garages/index.vue\")\n },\n {\n name: \"persons\",\n path: \"/persons\",\n meta: {\"middleware\":\"auth\"},\n component: () => import(\"/app/pages/persons/index.vue\")\n },\n {\n name: \"packages\",\n path: \"/packages\",\n meta: {\"middleware\":\"auth\"},\n component: () => import(\"/app/pages/packages/index.vue\")\n },\n {\n name: \"users-id\",\n path: \"/users/:id()\",\n component: () => import(\"/app/pages/users/[id]/index.vue\")\n },\n {\n name: \"permissions\",\n path: \"/permissions\",\n meta: {\"middleware\":\"auth\"},\n component: () => import(\"/app/pages/permissions/index.vue\")\n },\n {\n name: \"garages-id\",\n path: \"/garages/:id()\",\n component: () => import(\"/app/pages/garages/[id]/index.vue\")\n },\n {\n name: \"persons-id\",\n path: \"/persons/:id()\",\n component: () => import(\"/app/pages/persons/[id]/index.vue\")\n }\n]","import { Transition, createStaticVNode, h } from \"vue\";\nimport { defu } from \"defu\";\nimport { isString, isPromise, isArray, isObject } from \"@vue/shared\";\nimport { START_LOCATION } from \"#build/pages\";\nexport const _wrapInTransition = (props, children) => {\n return { default: () => import.meta.client && props ? h(Transition, props === true ? {} : props, children) : children.default?.() };\n};\nconst ROUTE_KEY_PARENTHESES_RE = /(:\\w+)\\([^)]+\\)/g;\nconst ROUTE_KEY_SYMBOLS_RE = /(:\\w+)[?+*]/g;\nconst ROUTE_KEY_NORMAL_RE = /:\\w+/g;\nfunction generateRouteKey(route) {\n const source = route?.meta.key ?? route.path.replace(ROUTE_KEY_PARENTHESES_RE, \"$1\").replace(ROUTE_KEY_SYMBOLS_RE, \"$1\").replace(ROUTE_KEY_NORMAL_RE, (r) => route.params[r.slice(1)]?.toString() || \"\");\n return typeof source === \"function\" ? source(route) : source;\n}\nexport function isChangingPage(to, from) {\n if (to === from || from === START_LOCATION) {\n return false;\n }\n if (generateRouteKey(to) !== generateRouteKey(from)) {\n return true;\n }\n const areComponentsSame = to.matched.every(\n (comp, index) => comp.components && comp.components.default === from.matched[index]?.components?.default\n );\n if (areComponentsSame) {\n return false;\n }\n return true;\n}\nexport function createBuffer() {\n let appendable = false;\n const buffer = [];\n return {\n getBuffer() {\n return buffer;\n },\n push(item) {\n const isStringItem = isString(item);\n if (appendable && isStringItem) {\n buffer[buffer.length - 1] += item;\n } else {\n buffer.push(item);\n }\n appendable = isStringItem;\n if (isPromise(item) || isArray(item) && item.hasAsync) {\n buffer.hasAsync = true;\n }\n }\n };\n}\nexport function vforToArray(source) {\n if (isArray(source)) {\n return source;\n } else if (isString(source)) {\n return source.split(\"\");\n } else if (typeof source === \"number\") {\n if (import.meta.dev && !Number.isInteger(source)) {\n console.warn(`The v-for range expect an integer value but got ${source}.`);\n }\n const array = [];\n for (let i = 0; i < source; i++) {\n array[i] = i;\n }\n return array;\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n return Array.from(\n source,\n (item) => item\n );\n } else {\n const keys = Object.keys(source);\n const array = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n array[i] = source[key];\n }\n return array;\n }\n }\n return [];\n}\nexport function getFragmentHTML(element, withoutSlots = false) {\n if (element) {\n if (element.nodeName === \"#comment\" && element.nodeValue === \"[\") {\n return getFragmentChildren(element, [], withoutSlots);\n }\n if (withoutSlots) {\n const clone = element.cloneNode(true);\n clone.querySelectorAll(\"[data-island-slot]\").forEach((n) => {\n n.innerHTML = \"\";\n });\n return [clone.outerHTML];\n }\n return [element.outerHTML];\n }\n}\nfunction getFragmentChildren(element, blocks = [], withoutSlots = false) {\n if (element && element.nodeName) {\n if (isEndFragment(element)) {\n return blocks;\n } else if (!isStartFragment(element)) {\n const clone = element.cloneNode(true);\n if (withoutSlots) {\n clone.querySelectorAll?.(\"[data-island-slot]\").forEach((n) => {\n n.innerHTML = \"\";\n });\n }\n blocks.push(clone.outerHTML);\n }\n getFragmentChildren(element.nextSibling, blocks, withoutSlots);\n }\n return blocks;\n}\nexport function elToStaticVNode(el, staticNodeFallback) {\n const fragment = el ? getFragmentHTML(el) : staticNodeFallback ? [staticNodeFallback] : void 0;\n if (fragment) {\n return createStaticVNode(fragment.join(\"\"), fragment.length);\n }\n return h(\"div\");\n}\nexport function isStartFragment(element) {\n return element.nodeName === \"#comment\" && element.nodeValue === \"[\";\n}\nexport function isEndFragment(element) {\n return element.nodeName === \"#comment\" && element.nodeValue === \"]\";\n}\nexport function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function _mergeTransitionProps(routeProps) {\n const _props = [];\n for (const prop of routeProps) {\n if (!prop) {\n continue;\n }\n _props.push({\n ...prop,\n onAfterLeave: prop.onAfterLeave ? toArray(prop.onAfterLeave) : void 0,\n onBeforeLeave: prop.onBeforeLeave ? toArray(prop.onBeforeLeave) : void 0\n });\n }\n return defu(..._props);\n}\n","import { START_LOCATION } from \"vue-router\";\nimport { useNuxtApp } from \"#app/nuxt\";\nimport { isChangingPage } from \"#app/components/utils\";\nimport { useRouter } from \"#app/composables/router\";\nexport default {\n scrollBehavior(to, from, savedPosition) {\n const nuxtApp = useNuxtApp();\n const hashScrollBehaviour = useRouter().options?.scrollBehaviorType ?? \"auto\";\n if (to.path.replace(/\\/$/, \"\") === from.path.replace(/\\/$/, \"\")) {\n if (from.hash && !to.hash) {\n return { left: 0, top: 0 };\n }\n if (to.hash) {\n return { el: to.hash, top: _getHashElementScrollMarginTop(to.hash), behavior: hashScrollBehaviour };\n }\n return false;\n }\n const routeAllowsScrollToTop = typeof to.meta.scrollToTop === \"function\" ? to.meta.scrollToTop(to, from) : to.meta.scrollToTop;\n if (routeAllowsScrollToTop === false) {\n return false;\n }\n if (from === START_LOCATION) {\n return _calculatePosition(to, from, savedPosition, hashScrollBehaviour);\n }\n return new Promise((resolve) => {\n const doScroll = () => {\n requestAnimationFrame(() => resolve(_calculatePosition(to, from, savedPosition, hashScrollBehaviour)));\n };\n nuxtApp.hooks.hookOnce(\"page:loading:end\", () => {\n const transitionPromise = nuxtApp[\"~transitionPromise\"];\n if (transitionPromise) {\n transitionPromise.then(doScroll);\n } else {\n doScroll();\n }\n });\n });\n }\n};\nfunction _getHashElementScrollMarginTop(selector) {\n try {\n const elem = document.querySelector(selector);\n if (elem) {\n return (Number.parseFloat(getComputedStyle(elem).scrollMarginTop) || 0) + (Number.parseFloat(getComputedStyle(document.documentElement).scrollPaddingTop) || 0);\n }\n } catch {\n }\n return 0;\n}\nfunction _calculatePosition(to, from, savedPosition, defaultHashScrollBehaviour) {\n if (savedPosition) {\n return savedPosition;\n }\n if (to.hash) {\n return {\n el: to.hash,\n top: _getHashElementScrollMarginTop(to.hash),\n behavior: isChangingPage(to, from) ? defaultHashScrollBehaviour : \"instant\"\n };\n }\n return {\n left: 0,\n top: 0\n };\n}\n","import routerOptions0 from \"/app/node_modules/nuxt/dist/pages/runtime/router.options.js\";\nconst configRouterOptions = {\n hashMode: false,\n scrollBehaviorType: \"auto\"\n}\nexport const hashMode = false\nexport default {\n...configRouterOptions,\n...routerOptions0,\n}","import { createError } from \"#app/composables/error\";\nimport { defineNuxtRouteMiddleware } from \"#app/composables/router\";\nexport default defineNuxtRouteMiddleware(async (to, from) => {\n if (!to.meta?.validate) {\n return;\n }\n const result = await Promise.resolve(to.meta.validate(to));\n if (result === true) {\n return;\n }\n const error = createError({\n fatal: import.meta.client,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n status: result && (result.status || result.statusCode) || 404,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n statusText: result && (result.statusText || result.statusMessage) || `Page Not Found: ${to.fullPath}`,\n data: {\n path: to.fullPath\n }\n });\n if (typeof window !== \"undefined\") {\n window.history.pushState({}, \"\", from.fullPath);\n }\n return error;\n});\n","import { hasProtocol } from \"ufo\";\nimport { defineNuxtRouteMiddleware } from \"../composables/router.js\";\nimport { getRouteRules } from \"../composables/manifest.js\";\nexport default defineNuxtRouteMiddleware((to) => {\n if (import.meta.server || import.meta.test) {\n return;\n }\n const rules = getRouteRules({ path: to.path });\n if (rules.redirect) {\n const path = rules.redirect.includes(\"#\") ? rules.redirect : rules.redirect + to.hash;\n if (hasProtocol(path, { acceptRelative: true })) {\n window.location.href = path;\n return false;\n }\n return path;\n }\n});\n","import validate from \"/app/node_modules/nuxt/dist/pages/runtime/validate.js\";\nimport manifest_45route_45rule from \"/app/node_modules/nuxt/dist/app/middleware/route-rules.js\";\nexport const globalMiddleware = [\n validate,\n manifest_45route_45rule\n]\nexport const namedMiddleware = {\n auth: () => import(\"/app/middleware/auth.ts\")\n}","import { defineAsyncComponent } from 'vue'\nexport const islandComponents = import.meta.client ? Object.create(null) : Object.assign(Object.create(null), {\n\n})\nexport const pageIslandRoutes = import.meta.client ? Object.create(null) : Object.assign(Object.create(null), {\n\n})","import { isReadonly, reactive, shallowReactive, shallowRef } from \"vue\";\nimport { START_LOCATION, createMemoryHistory, createRouter, createWebHashHistory, createWebHistory } from \"vue-router\";\nimport { isSamePath, withoutBase } from \"ufo\";\nimport { toArray } from \"../utils.js\";\nimport { getRouteRules } from \"#app/composables/manifest\";\nimport { defineNuxtPlugin, useRuntimeConfig } from \"#app/nuxt\";\nimport { clearError, createError, isNuxtError, showError, useError } from \"#app/composables/error\";\nimport { navigateTo } from \"#app/composables/router\";\nimport _routes, { handleHotUpdate } from \"#build/routes\";\nimport routerOptions, { hashMode } from \"#build/router.options.mjs\";\nimport { globalMiddleware, namedMiddleware } from \"#build/middleware\";\nimport { pageIslandRoutes } from \"#build/components.islands.mjs\";\nfunction createCurrentLocation(base, location, renderedPath) {\n const { pathname, search, hash } = location;\n const hashPos = base.indexOf(\"#\");\n if (hashPos > -1) {\n const slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1;\n let pathFromHash = hash.slice(slicePos);\n if (pathFromHash[0] !== \"/\") {\n pathFromHash = \"/\" + pathFromHash;\n }\n return withoutBase(pathFromHash, \"\");\n }\n const displayedPath = withoutBase(pathname, base);\n const path = !renderedPath || isSamePath(displayedPath, renderedPath) ? displayedPath : renderedPath;\n return path + (path.includes(\"?\") ? \"\" : search) + hash;\n}\nconst plugin = defineNuxtPlugin({\n name: \"nuxt:router\",\n enforce: \"pre\",\n async setup(nuxtApp) {\n let routerBase = useRuntimeConfig().app.baseURL;\n if (hashMode && !routerBase.includes(\"#\")) {\n routerBase += \"#\";\n }\n const history = routerOptions.history?.(routerBase) ?? (import.meta.client ? hashMode ? createWebHashHistory(routerBase) : createWebHistory(routerBase) : createMemoryHistory(routerBase));\n const routes = routerOptions.routes ? await routerOptions.routes(_routes) ?? _routes : _routes;\n let startPosition;\n const router = createRouter({\n ...routerOptions,\n scrollBehavior: (to, from, savedPosition) => {\n if (from === START_LOCATION) {\n startPosition = savedPosition;\n return;\n }\n if (routerOptions.scrollBehavior) {\n router.options.scrollBehavior = routerOptions.scrollBehavior;\n if (\"scrollRestoration\" in window.history) {\n const unsub = router.beforeEach(() => {\n unsub();\n window.history.scrollRestoration = \"manual\";\n });\n }\n return routerOptions.scrollBehavior(to, START_LOCATION, startPosition || savedPosition);\n }\n },\n history,\n routes\n });\n if (import.meta.hot) {\n handleHotUpdate(router, routerOptions.routes ? routerOptions.routes : (routes2) => routes2);\n }\n if (import.meta.client && \"scrollRestoration\" in window.history) {\n window.history.scrollRestoration = \"auto\";\n }\n nuxtApp.vueApp.use(router);\n const previousRoute = shallowRef(router.currentRoute.value);\n router.afterEach((_to, from) => {\n previousRoute.value = from;\n });\n Object.defineProperty(nuxtApp.vueApp.config.globalProperties, \"previousRoute\", {\n get: () => previousRoute.value\n });\n const initialURL = import.meta.server ? nuxtApp.ssrContext.url : createCurrentLocation(routerBase, window.location, nuxtApp.payload.path);\n const _route = shallowRef(router.currentRoute.value);\n const syncCurrentRoute = () => {\n _route.value = router.currentRoute.value;\n };\n router.afterEach((to, from) => {\n const lastTo = to.matched.at(-1)?.components?.default;\n const lastFrom = from.matched.at(-1)?.components?.default;\n if (lastTo === lastFrom) {\n syncCurrentRoute();\n return;\n }\n if (to.matched.length < from.matched.length && to.matched.every((m, i) => m.components?.default === from.matched[i]?.components?.default)) {\n syncCurrentRoute();\n }\n });\n const route = { sync: syncCurrentRoute };\n for (const key in _route.value) {\n Object.defineProperty(route, key, {\n get: () => _route.value[key],\n enumerable: true\n });\n }\n nuxtApp._route = shallowReactive(route);\n nuxtApp._middleware ||= {\n global: [],\n named: {}\n };\n const error = useError();\n const isServerPage = import.meta.server && nuxtApp.ssrContext?.islandContext?.name?.startsWith(\"page_\");\n if (import.meta.client || !nuxtApp.ssrContext?.islandContext || isServerPage) {\n router.afterEach(async (to, _from, failure) => {\n delete nuxtApp._processingMiddleware;\n if (import.meta.client && !nuxtApp.isHydrating && error.value) {\n await nuxtApp.runWithContext(clearError);\n }\n if (failure) {\n await nuxtApp.callHook(\"page:loading:end\");\n }\n if (import.meta.server && failure?.type === 4) {\n return;\n }\n if (import.meta.server && to.redirectedFrom && to.fullPath !== initialURL) {\n await nuxtApp.runWithContext(() => navigateTo(to.fullPath || \"/\"));\n }\n });\n }\n try {\n if (import.meta.server) {\n await router.push(initialURL);\n }\n await router.isReady();\n } catch (error2) {\n await nuxtApp.runWithContext(() => showError(error2));\n }\n const resolvedInitialRoute = import.meta.client && initialURL !== router.currentRoute.value.fullPath ? router.resolve(initialURL) : router.currentRoute.value;\n const hasDeferredRoute = import.meta.client && nuxtApp.isHydrating && nuxtApp.payload.prerenderedAt && nuxtApp.payload.path && initialURL !== nuxtApp.payload.path && isSamePath(router.currentRoute.value.path, nuxtApp.payload.path);\n syncCurrentRoute();\n if (import.meta.server && nuxtApp.ssrContext?.islandContext && !isServerPage) {\n return { provide: { router } };\n }\n const initialLayout = nuxtApp.payload.state._layout;\n router.beforeEach(async (to, from) => {\n await nuxtApp.callHook(\"page:loading:start\");\n to.meta = reactive(to.meta);\n if (nuxtApp.isHydrating && initialLayout && !isReadonly(to.meta.layout)) {\n to.meta.layout = initialLayout;\n }\n nuxtApp._processingMiddleware = true;\n if (import.meta.client || !nuxtApp.ssrContext?.islandContext || isServerPage) {\n const middlewareEntries = /* @__PURE__ */ new Set([...globalMiddleware, ...nuxtApp._middleware.global]);\n for (const component of to.matched) {\n const componentMiddleware = component.meta.middleware;\n if (!componentMiddleware) {\n continue;\n }\n for (const entry of toArray(componentMiddleware)) {\n middlewareEntries.add(entry);\n }\n }\n const routeRules = getRouteRules({ path: to.path });\n if (routeRules.appMiddleware) {\n for (const key in routeRules.appMiddleware) {\n if (routeRules.appMiddleware[key]) {\n middlewareEntries.add(key);\n } else {\n middlewareEntries.delete(key);\n }\n }\n }\n for (const entry of middlewareEntries) {\n const middleware = typeof entry === \"string\" ? nuxtApp._middleware.named[entry] || await namedMiddleware[entry]?.().then((r) => r.default || r) : entry;\n if (!middleware) {\n if (import.meta.dev) {\n throw new Error(`Unknown route middleware: '${entry}'. Valid middleware: ${Object.keys(namedMiddleware).map((mw) => `'${mw}'`).join(\", \")}.`);\n }\n throw new Error(`Unknown route middleware: '${entry}'.`);\n }\n try {\n if (import.meta.dev) {\n nuxtApp._processingMiddleware = middleware._path || (typeof entry === \"string\" ? entry : true);\n }\n const result = await nuxtApp.runWithContext(() => middleware(to, from));\n if (import.meta.server || !nuxtApp.payload.serverRendered && nuxtApp.isHydrating) {\n if (result === false || result instanceof Error) {\n const error2 = result || createError({\n status: 404,\n statusText: `Page Not Found: ${initialURL}`\n });\n await nuxtApp.runWithContext(() => showError(error2));\n return false;\n }\n }\n if (result === true) {\n continue;\n }\n if (result === false) {\n return result;\n }\n if (result) {\n if (isNuxtError(result) && result.fatal) {\n await nuxtApp.runWithContext(() => showError(result));\n }\n return result;\n }\n } catch (err) {\n const error2 = createError(err);\n if (error2.fatal) {\n await nuxtApp.runWithContext(() => showError(error2));\n }\n return error2;\n }\n }\n }\n });\n if (isServerPage) {\n router.beforeResolve((to) => {\n const expected = pageIslandRoutes[nuxtApp.ssrContext.islandContext.name];\n const actual = to.matched.find((m) => m.components?.default?.__nuxt_island)?.components?.default;\n if (!expected || expected !== actual?.__nuxt_island) {\n nuxtApp.ssrContext[\"~renderResponse\"] = {\n statusCode: 400,\n statusMessage: \"Invalid island request path\"\n };\n return false;\n }\n });\n }\n router.onError(async () => {\n delete nuxtApp._processingMiddleware;\n await nuxtApp.callHook(\"page:loading:end\");\n });\n router.afterEach((to) => {\n if (to.matched.length === 0 && !error.value) {\n return nuxtApp.runWithContext(() => showError(createError({\n status: 404,\n fatal: false,\n statusText: `Page not found: ${to.fullPath}`,\n data: {\n path: to.fullPath\n }\n })));\n }\n });\n nuxtApp.hooks.hookOnce(\"app:created\", async () => {\n try {\n if (\"name\" in resolvedInitialRoute) {\n resolvedInitialRoute.name = void 0;\n }\n if (hasDeferredRoute) {\n const payloadRoute = router.resolve(nuxtApp.payload.path);\n if (\"name\" in payloadRoute) {\n payloadRoute.name = void 0;\n }\n await router.replace({ ...payloadRoute, force: true });\n nuxtApp.hooks.hookOnce(\"app:suspense:resolve\", async () => {\n await router.replace({ ...resolvedInitialRoute, force: true });\n });\n } else {\n await router.replace({\n ...resolvedInitialRoute,\n force: true\n });\n }\n router.options.scrollBehavior = routerOptions.scrollBehavior;\n } catch (error2) {\n await nuxtApp.runWithContext(() => showError(error2));\n }\n });\n return { provide: { router } };\n }\n});\nexport default plugin;\n","import { isReactive, isRef, isShallow, toRaw } from \"vue\";\nimport { definePayloadReducer } from \"../composables/payload.js\";\nimport { isNuxtError } from \"../composables/error.js\";\nimport { defineNuxtPlugin } from \"../nuxt.js\";\nimport { componentIslands } from \"#build/nuxt.config.mjs\";\nimport { isValidIslandKey } from \"./utils.js\";\nconst reducers = [\n [\"NuxtError\", (data) => isNuxtError(data) && data.toJSON()],\n [\"EmptyShallowRef\", (data) => isRef(data) && isShallow(data) && !data.value && (typeof data.value === \"bigint\" ? \"0n\" : JSON.stringify(data.value) || \"_\")],\n [\"EmptyRef\", (data) => isRef(data) && !data.value && (typeof data.value === \"bigint\" ? \"0n\" : JSON.stringify(data.value) || \"_\")],\n [\"ShallowRef\", (data) => isRef(data) && isShallow(data) && data.value],\n [\"ShallowReactive\", (data) => isReactive(data) && isShallow(data) && toRaw(data)],\n [\"Ref\", (data) => isRef(data) && data.value],\n [\"Reactive\", (data) => isReactive(data) && toRaw(data)]\n];\nif (componentIslands) {\n reducers.push([\"Island\", (data) => data && data?.__nuxt_island && isValidIslandKey(data.__nuxt_island.key) && data.__nuxt_island]);\n}\nexport default defineNuxtPlugin({\n name: \"nuxt:revive-payload:server\",\n setup() {\n for (const [reducer, fn] of reducers) {\n definePayloadReducer(reducer, fn);\n }\n }\n});\n","import { createElementBlock, defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"ServerPlaceholder\",\n render() {\n return createElementBlock(\"div\");\n }\n});\n","import { cloneVNode, createElementBlock, defineComponent, getCurrentInstance, h, onMounted, provide, shallowRef } from \"vue\";\nimport { isPromise } from \"@vue/shared\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport ServerPlaceholder from \"./server-placeholder.js\";\nimport { elToStaticVNode } from \"./utils.js\";\nexport const clientOnlySymbol = Symbol.for(\"nuxt:client-only\");\nconst STATIC_DIV = \"\";\nexport default defineComponent({\n name: \"ClientOnly\",\n inheritAttrs: false,\n props: [\"fallback\", \"placeholder\", \"placeholderTag\", \"fallbackTag\"],\n ...import.meta.dev && {\n slots: Object\n },\n setup(props, { slots, attrs }) {\n const mounted = shallowRef(false);\n onMounted(() => {\n mounted.value = true;\n });\n if (import.meta.dev) {\n const nuxtApp = useNuxtApp();\n nuxtApp._isNuxtPageUsed = true;\n nuxtApp._isNuxtLayoutUsed = true;\n }\n const vm = getCurrentInstance();\n if (vm) {\n vm._nuxtClientOnly = true;\n }\n provide(clientOnlySymbol, true);\n return () => {\n if (mounted.value) {\n const vnodes = slots.default?.();\n if (vnodes && vnodes.length === 1) {\n return [cloneVNode(vnodes[0], attrs)];\n }\n return vnodes;\n }\n const slot = slots.fallback || slots.placeholder;\n if (slot) {\n return h(slot);\n }\n const fallbackStr = props.fallback || props.placeholder || \"\";\n const fallbackTag = props.fallbackTag || props.placeholderTag || \"span\";\n return createElementBlock(fallbackTag, attrs, fallbackStr);\n };\n }\n});\nconst cache = /* @__PURE__ */ new WeakMap();\n// @__NO_SIDE_EFFECTS__\nexport function createClientOnly(component) {\n if (import.meta.server) {\n return ServerPlaceholder;\n }\n if (cache.has(component)) {\n return cache.get(component);\n }\n const clone = { ...component };\n if (clone.render) {\n clone.render = (ctx, cache2, $props, $setup, $data, $options) => {\n if ($setup.mounted$ ?? ctx.mounted$) {\n const res = component.render?.bind(ctx)(ctx, cache2, $props, $setup, $data, $options);\n return res.children === null || typeof res.children === \"string\" ? cloneVNode(res) : h(res);\n }\n return elToStaticVNode(ctx._.vnode.el, STATIC_DIV);\n };\n } else {\n clone.template &&= `\n ${component.template}\n ${STATIC_DIV}\n `;\n }\n clone.setup = (props, ctx) => {\n const nuxtApp = useNuxtApp();\n const mounted$ = shallowRef(nuxtApp.isHydrating === false);\n const instance = getCurrentInstance();\n if (nuxtApp.isHydrating) {\n const attrs = { ...instance.attrs };\n const directives = extractDirectives(instance);\n for (const key in attrs) {\n delete instance.attrs[key];\n }\n onMounted(() => {\n Object.assign(instance.attrs, attrs);\n instance.vnode.dirs = directives;\n });\n }\n onMounted(() => {\n mounted$.value = true;\n });\n const setupState = component.setup?.(props, ctx) || {};\n if (isPromise(setupState)) {\n return Promise.resolve(setupState).then((setupState2) => {\n if (typeof setupState2 !== \"function\") {\n setupState2 ||= {};\n setupState2.mounted$ = mounted$;\n return setupState2;\n }\n return (...args) => {\n if (mounted$.value || !nuxtApp.isHydrating) {\n const res = setupState2(...args);\n return res.children === null || typeof res.children === \"string\" ? cloneVNode(res) : h(res);\n }\n return elToStaticVNode(instance?.vnode.el, STATIC_DIV);\n };\n });\n } else {\n if (typeof setupState === \"function\") {\n return (...args) => {\n if (mounted$.value) {\n const res = setupState(...args);\n const attrs = clone.inheritAttrs !== false ? ctx.attrs : void 0;\n return res.children === null || typeof res.children === \"string\" ? cloneVNode(res, attrs) : h(res, attrs);\n }\n return elToStaticVNode(instance?.vnode.el, STATIC_DIV);\n };\n }\n return Object.assign(setupState, { mounted$ });\n }\n };\n cache.set(component, clone);\n return clone;\n}\nfunction extractDirectives(instance) {\n if (!instance || !instance.vnode.dirs) {\n return null;\n }\n const directives = instance.vnode.dirs;\n instance.vnode.dirs = null;\n return directives;\n}\n","import { isRef, toRef } from \"vue\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport { toArray } from \"../utils.js\";\nconst useStateKeyPrefix = \"$s\";\nexport function useState(...args) {\n const autoKey = typeof args[args.length - 1] === \"string\" ? args.pop() : void 0;\n if (typeof args[0] !== \"string\") {\n args.unshift(autoKey);\n }\n const [_key, init] = args;\n if (!_key || typeof _key !== \"string\") {\n throw new TypeError(\"[nuxt] [useState] key must be a string: \" + _key);\n }\n if (init !== void 0 && typeof init !== \"function\") {\n throw new Error(\"[nuxt] [useState] init must be a function: \" + init);\n }\n const key = useStateKeyPrefix + _key;\n const nuxtApp = useNuxtApp();\n const state = toRef(nuxtApp.payload.state, key);\n if (state.value === void 0 && init) {\n const initialValue = init();\n if (isRef(initialValue)) {\n nuxtApp.payload.state[key] = initialValue;\n return initialValue;\n }\n state.value = initialValue;\n }\n return state;\n}\nexport function clearNuxtState(keys) {\n const nuxtApp = useNuxtApp();\n const _allKeys = Object.keys(nuxtApp.payload.state).filter((key) => key.startsWith(useStateKeyPrefix)).map((key) => key.substring(useStateKeyPrefix.length));\n const _keys = !keys ? _allKeys : typeof keys === \"function\" ? _allKeys.filter(keys) : toArray(keys);\n for (const _key of _keys) {\n const key = useStateKeyPrefix + _key;\n if (key in nuxtApp.payload.state) {\n nuxtApp.payload.state[key] = void 0;\n }\n }\n}\n","import { setResponseStatus as _setResponseStatus, appendHeader, getRequestHeader, getRequestHeaders, getResponseHeader, removeResponseHeader, setResponseHeader } from \"h3\";\nimport { computed, getCurrentInstance, ref } from \"vue\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport { toArray } from \"../utils.js\";\nimport { useHead } from \"./head.js\";\nexport function useRequestEvent(nuxtApp) {\n if (import.meta.client) {\n return;\n }\n nuxtApp ||= useNuxtApp();\n return nuxtApp.ssrContext?.event;\n}\nexport function useRequestHeaders(include) {\n if (import.meta.client) {\n return {};\n }\n const event = useRequestEvent();\n const _headers = event ? getRequestHeaders(event) : {};\n if (!include || !event) {\n return _headers;\n }\n const headers = /* @__PURE__ */ Object.create(null);\n for (const _key of include) {\n const key = _key.toLowerCase();\n const header = _headers[key];\n if (header) {\n headers[key] = header;\n }\n }\n return headers;\n}\nexport function useRequestHeader(header) {\n if (import.meta.client) {\n return void 0;\n }\n const event = useRequestEvent();\n return event ? getRequestHeader(event, header) : void 0;\n}\nexport function useRequestFetch() {\n if (import.meta.client) {\n return globalThis.$fetch;\n }\n return useRequestEvent()?.$fetch || globalThis.$fetch;\n}\nexport function setResponseStatus(arg1, arg2, arg3) {\n if (import.meta.client) {\n return;\n }\n if (arg1 && typeof arg1 !== \"number\") {\n return _setResponseStatus(arg1, arg2, arg3);\n }\n const event = useRequestEvent();\n if (event) {\n return _setResponseStatus(event, arg1, arg2);\n }\n}\nexport function useResponseHeader(header) {\n if (import.meta.client) {\n if (import.meta.dev) {\n return computed({\n get: () => void 0,\n set: () => console.warn(\"[nuxt] Setting response headers is not supported in the browser.\")\n });\n }\n return ref();\n }\n const event = useRequestEvent();\n return computed({\n get() {\n return getResponseHeader(event, header);\n },\n set(newValue) {\n if (!newValue) {\n return removeResponseHeader(event, header);\n }\n return setResponseHeader(event, header, newValue);\n }\n });\n}\nexport function prerenderRoutes(path) {\n if (!import.meta.server || !import.meta.prerender) {\n return;\n }\n const paths = toArray(path);\n appendHeader(useRequestEvent(), \"x-nitro-prerender\", paths.map((p) => encodeURIComponent(p)).join(\", \"));\n}\nconst PREHYDRATE_ATTR_KEY = \"data-prehydrate-id\";\nexport function onPrehydrate(callback, key) {\n if (import.meta.client) {\n return;\n }\n if (typeof callback !== \"string\") {\n throw new TypeError(\"[nuxt] To transform a callback into a string, `onPrehydrate` must be processed by the Nuxt build pipeline. If it is called in a third-party library, make sure to add the library to `build.transpile`.\");\n }\n const vm = getCurrentInstance();\n if (vm && key) {\n vm.attrs[PREHYDRATE_ATTR_KEY] ||= \"\";\n key = \":\" + key + \":\";\n if (!vm.attrs[PREHYDRATE_ATTR_KEY].includes(key)) {\n vm.attrs[PREHYDRATE_ATTR_KEY] += key;\n }\n }\n const code = vm && key ? `document.querySelectorAll('[${PREHYDRATE_ATTR_KEY}*=${JSON.stringify(key)}]').forEach` + callback : callback + \"()\";\n useHead({\n script: [{\n key: vm && key ? key : void 0,\n tagPosition: \"bodyClose\",\n tagPriority: \"critical\",\n innerHTML: code\n }]\n });\n return vm && key ? vm.attrs[PREHYDRATE_ATTR_KEY] : void 0;\n}\n","import { customRef, getCurrentScope, nextTick, onScopeDispose, ref, watch } from \"vue\";\nimport { parse, serialize } from \"cookie-es\";\nimport { deleteCookie, getCookie, getRequestHeader, setCookie } from \"h3\";\nimport destr from \"destr\";\nimport { isEqual } from \"ohash\";\nimport { klona } from \"klona\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport { useRequestEvent } from \"./ssr.js\";\nimport { cookieStore } from \"#build/nuxt.config.mjs\";\nconst CookieDefaults = {\n path: \"/\",\n watch: true,\n decode: (val) => {\n const decoded = decodeURIComponent(val);\n const parsed = destr(decoded);\n if (typeof parsed === \"number\" && (!Number.isFinite(parsed) || String(parsed) !== decoded)) {\n return decoded;\n }\n return parsed;\n },\n encode: (val) => encodeURIComponent(typeof val === \"string\" ? val : JSON.stringify(val))\n};\nconst store = import.meta.client && cookieStore ? globalThis.cookieStore : void 0;\nexport function useCookie(name, _opts) {\n const opts = { ...CookieDefaults, ..._opts };\n opts.filter ??= (key) => key === name;\n const cookies = readRawCookies(opts) || {};\n let delay;\n if (opts.maxAge !== void 0) {\n delay = opts.maxAge * 1e3;\n } else if (opts.expires) {\n delay = opts.expires.getTime() - Date.now();\n }\n const hasExpired = delay !== void 0 && delay <= 0;\n const shouldSetInitialClientCookie = import.meta.client && (hasExpired || cookies[name] === void 0 || cookies[name] === null);\n const cookieValue = klona(hasExpired ? void 0 : cookies[name] ?? opts.default?.());\n const cookie = import.meta.client && delay && !hasExpired ? cookieRef(cookieValue, delay, opts.watch && opts.watch !== \"shallow\") : ref(cookieValue);\n if (import.meta.dev && hasExpired) {\n console.warn(`[nuxt] not setting cookie \\`${name}\\` as it has already expired.`);\n }\n if (import.meta.client) {\n let channel = null;\n try {\n if (!store && typeof BroadcastChannel !== \"undefined\") {\n channel = new BroadcastChannel(`nuxt:cookies:${name}`);\n }\n } catch {\n }\n const callback = (force = false) => {\n if (!force) {\n if (opts.readonly || isEqual(cookie.value, cookies[name])) {\n return;\n }\n }\n writeClientCookie(name, cookie.value, opts);\n cookies[name] = klona(cookie.value);\n channel?.postMessage({ value: opts.encode(cookie.value) });\n };\n const handleChange = (data) => {\n const value = data.refresh ? readRawCookies(opts)?.[name] : opts.decode(data.value);\n watchPaused = true;\n cookie.value = value;\n cookies[name] = klona(value);\n nextTick(() => {\n watchPaused = false;\n });\n };\n let watchPaused = false;\n const hasScope = !!getCurrentScope();\n if (hasScope) {\n onScopeDispose(() => {\n watchPaused = true;\n callback();\n channel?.close();\n });\n }\n if (store) {\n const changeHandler = (event) => {\n const changedCookie = event.changed.find((c) => c.name === name);\n const removedCookie = event.deleted.find((c) => c.name === name);\n if (changedCookie) {\n handleChange({ value: changedCookie.value });\n }\n if (removedCookie) {\n handleChange({ value: null });\n }\n };\n store.addEventListener(\"change\", changeHandler);\n if (hasScope) {\n onScopeDispose(() => store.removeEventListener(\"change\", changeHandler));\n }\n } else if (channel) {\n channel.onmessage = ({ data }) => handleChange(data);\n }\n if (opts.watch) {\n watch(\n cookie,\n () => {\n if (watchPaused) {\n return;\n }\n callback();\n },\n { deep: opts.watch !== \"shallow\" }\n );\n }\n if (shouldSetInitialClientCookie) {\n callback(shouldSetInitialClientCookie);\n }\n } else if (import.meta.server) {\n const nuxtApp = useNuxtApp();\n const writeFinalCookieValue = () => {\n if (opts.readonly || isEqual(cookie.value, cookies[name])) {\n return;\n }\n nuxtApp._cookies ||= {};\n if (name in nuxtApp._cookies) {\n if (isEqual(cookie.value, nuxtApp._cookies[name])) {\n return;\n }\n if (import.meta.dev) {\n console.warn(`[nuxt] cookie \\`${name}\\` was previously set to \\`${opts.encode(nuxtApp._cookies[name])}\\` and is being overridden to \\`${opts.encode(cookie.value)}\\`. This may cause unexpected issues.`);\n }\n }\n nuxtApp._cookies[name] = cookie.value;\n writeServerCookie(useRequestEvent(nuxtApp), name, cookie.value, opts);\n };\n const unhook = nuxtApp.hooks.hookOnce(\"app:rendered\", writeFinalCookieValue);\n nuxtApp.hooks.hookOnce(\"app:error\", () => {\n unhook();\n return writeFinalCookieValue();\n });\n }\n return cookie;\n}\nexport function refreshCookie(name) {\n if (import.meta.server || store || typeof BroadcastChannel === \"undefined\") {\n return;\n }\n try {\n const channel = new BroadcastChannel(`nuxt:cookies:${name}`);\n channel.postMessage({ refresh: true });\n channel.close();\n } catch {\n }\n}\nfunction readRawCookies(opts = {}) {\n if (import.meta.server) {\n return parse(getRequestHeader(useRequestEvent(), \"cookie\") || \"\", opts);\n } else if (import.meta.client) {\n return parse(document.cookie, opts);\n }\n}\nfunction serializeCookie(name, value, opts = {}) {\n if (value === null || value === void 0) {\n return serialize(name, value, { ...opts, maxAge: -1 });\n }\n return serialize(name, value, opts);\n}\nfunction writeClientCookie(name, value, opts = {}) {\n if (import.meta.client) {\n document.cookie = serializeCookie(name, value, opts);\n }\n}\nfunction writeServerCookie(event, name, value, opts = {}) {\n if (event) {\n if (value !== null && value !== void 0) {\n return setCookie(event, name, value, opts);\n }\n if (getCookie(event, name) !== void 0) {\n return deleteCookie(event, name, opts);\n }\n }\n}\nconst MAX_TIMEOUT_DELAY = 2147483647;\nfunction cookieRef(value, delay, shouldWatch) {\n let timeout;\n let unsubscribe;\n let elapsed = 0;\n const internalRef = shouldWatch ? ref(value) : { value };\n if (getCurrentScope()) {\n onScopeDispose(() => {\n unsubscribe?.();\n clearTimeout(timeout);\n });\n }\n return customRef((track, trigger) => {\n if (shouldWatch) {\n unsubscribe = watch(internalRef, trigger);\n }\n function scheduleTimeout() {\n const timeRemaining = delay - elapsed;\n const timeoutLength = timeRemaining < MAX_TIMEOUT_DELAY ? timeRemaining : MAX_TIMEOUT_DELAY;\n timeout = setTimeout(() => {\n elapsed += timeoutLength;\n if (elapsed < delay) {\n return scheduleTimeout();\n }\n internalRef.value = void 0;\n trigger();\n }, timeoutLength);\n }\n function createExpirationTimeout() {\n elapsed = 0;\n clearTimeout(timeout);\n scheduleTimeout();\n }\n return {\n get() {\n track();\n return internalRef.value;\n },\n set(newValue) {\n createExpirationTimeout();\n internalRef.value = newValue;\n trigger();\n }\n };\n });\n}\n","import { getRequestURL } from \"h3\";\nimport { useRequestEvent } from \"./ssr.js\";\nexport function useRequestURL(opts) {\n if (import.meta.server) {\n return getRequestURL(useRequestEvent(), opts);\n }\n return new URL(globalThis.location.href);\n}\n","import { createPinia, setActivePinia } from \"pinia\";\nimport { defineNuxtPlugin, useNuxtApp } from \"#app\";\nimport { toRaw } from \"vue\";\nconst plugin = defineNuxtPlugin({\n name: \"pinia\",\n setup(nuxtApp) {\n const pinia = createPinia();\n nuxtApp.vueApp.use(pinia);\n setActivePinia(pinia);\n if (nuxtApp.payload && nuxtApp.payload.pinia) {\n pinia.state.value = nuxtApp.payload.pinia;\n }\n return {\n provide: {\n pinia\n }\n };\n },\n hooks: {\n \"app:rendered\"() {\n const nuxtApp = useNuxtApp();\n nuxtApp.payload.pinia = toRaw(nuxtApp.$pinia).state.value;\n setActivePinia(void 0);\n }\n }\n});\nexport default plugin;\n","\nimport { defineNuxtPlugin } from '#app/nuxt'\nexport default defineNuxtPlugin({\n name: 'nuxt:global-components',\n})\n","/*!\n * shared v11.4.2\n * (c) 2026 kazuya kawaguchi\n * Released under the MIT License.\n */\nfunction warn(msg, err) {\n if (typeof console !== 'undefined') {\n console.warn(`[intlify] ` + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n if (!hasWarned[msg]) {\n hasWarned[msg] = true;\n warn(msg);\n }\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif ((process.env.NODE_ENV !== 'production')) {\n const perf = inBrowser && window.performance;\n if (perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n // @ts-ignore browser compat\n perf.clearMeasures) {\n mark = (tag) => {\n perf.mark(tag);\n };\n measure = (name, startTag, endTag) => {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n };\n }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n .replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nconst _create = Object.create;\nconst create = (obj = null) => _create(obj);\nlet _globalThis;\nconst getGlobalThis = () => {\n // prettier-ignore\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : create()));\n};\nfunction escapeHtml(rawText) {\n return rawText\n .replace(/&/g, '&') // escape `&` first to avoid double escaping\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/') // escape `/` to prevent closing tags or JavaScript URLs\n .replace(/=/g, '='); // escape `=` to prevent attribute injection\n}\nfunction escapeAttributeValue(value) {\n return value\n .replace(/&(?![a-zA-Z0-9#]{2,6};)/g, '&') // escape unescaped `&`\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n}\nfunction sanitizeTranslatedHtml(html) {\n // Escape dangerous characters in attribute values\n // Process attributes with double quotes\n html = html.replace(/(\\w+)\\s*=\\s*\"([^\"]*)\"/g, (_, attrName, attrValue) => `${attrName}=\"${escapeAttributeValue(attrValue)}\"`);\n // Process attributes with single quotes\n html = html.replace(/(\\w+)\\s*=\\s*'([^']*)'/g, (_, attrName, attrValue) => `${attrName}='${escapeAttributeValue(attrValue)}'`);\n // Detect and neutralize event handler attributes\n const eventHandlerPattern = /\\s*on\\w+\\s*=\\s*[\"']?[^\"'>]+[\"']?/gi;\n if (eventHandlerPattern.test(html)) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('Potentially dangerous event handlers detected in translation. ' +\n 'Consider removing onclick, onerror, etc. from your translation messages.');\n }\n // Neutralize event handler attributes by escaping 'on'\n html = html.replace(/(\\s+)(on)(\\w+\\s*=)/gi, '$1on$3');\n }\n // Disable javascript: URLs in various contexts\n const javascriptUrlPattern = [\n // In href, src, action, formaction attributes\n /(\\s+(?:href|src|action|formaction)\\s*=\\s*[\"']?)\\s*javascript:/gi,\n // In style attributes within url()\n /(style\\s*=\\s*[\"'][^\"']*url\\s*\\(\\s*)javascript:/gi\n ];\n javascriptUrlPattern.forEach(pattern => {\n html = html.replace(pattern, '$1javascript:');\n });\n return html;\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isBoolean = (val) => typeof val === 'boolean';\nconst isSymbol = (val) => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\n// for converting list and named values to displayed strings.\nconst toDisplayString = (val) => {\n return val == null\n ? ''\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\n ? JSON.stringify(val, null, 2)\n : String(val);\n};\nfunction join(items, separator = '') {\n return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n const lines = source.split(/\\r?\\n/);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\n const lineLength = lines[j].length;\n if (j === i) {\n // push underline\n const pad = start - (count - lineLength) + 1;\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + 1;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n const events = new Map();\n const emitter = {\n events,\n on(event, handler) {\n const handlers = events.get(event);\n const added = handlers && handlers.push(handler);\n if (!added) {\n events.set(event, [handler]);\n }\n },\n off(event, handler) {\n const handlers = events.get(event);\n if (handlers) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n },\n emit(event, payload) {\n (events.get(event) || [])\n .slice()\n .map(handler => handler(payload));\n (events.get('*') || [])\n .slice()\n .map(handler => handler(event, payload));\n }\n };\n return emitter;\n}\n\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction deepCopy(src, des) {\n // src and des should both be objects, and none of them can be a array\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n throw new Error('Invalid value');\n }\n const stack = [{ src, des }];\n while (stack.length) {\n const { src, des } = stack.pop();\n // using `Object.keys` which skips prototype properties\n Object.keys(src).forEach(key => {\n if (key === '__proto__') {\n return;\n }\n // if src[key] is an object/array, set des[key]\n // to empty object/array to prevent setting by reference\n if (isObject(src[key]) && !isObject(des[key])) {\n des[key] = Array.isArray(src[key]) ? [] : create();\n }\n if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {\n // replace with src[key] when:\n // src[key] or des[key] is not an object, or\n // src[key] or des[key] is an array\n des[key] = src[key];\n }\n else {\n // src[key] and des[key] are both objects, merge them\n stack.push({ src: src[key], des: des[key] });\n }\n });\n }\n}\n\nexport { assign, create, createEmitter, deepCopy, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, join, makeSymbol, mark, measure, objectToString, sanitizeTranslatedHtml, toDisplayString, toTypeString, warn, warnOnce };\n","import { hasProtocol, joinURL, withQuery } from \"ufo\";\nconst strictSeo = __I18N_STRICT_SEO__;\nexport function localeHead(options, currentLanguage = options.getCurrentLanguage(), currentDirection = options.getCurrentDirection()) {\n const metaObject = {\n htmlAttrs: {},\n link: [],\n meta: []\n };\n if (options.dir) {\n metaObject.htmlAttrs.dir = currentDirection;\n }\n if (options.lang && currentLanguage) {\n metaObject.htmlAttrs.lang = currentLanguage;\n }\n if (options.seo) {\n const alternateLinks = getHreflangLinks(options);\n metaObject.link = metaObject.link.concat(\n alternateLinks,\n getCanonicalLink(options)\n );\n metaObject.meta = metaObject.meta.concat(\n getOgUrl(options),\n getCurrentOgLocale(options),\n getAlternateOgLocales(\n options,\n strictSeo ? alternateLinks.map((x) => x.hreflang).filter((x) => x !== \"x-default\") : options.locales.map((x) => x.language || x.code)\n )\n );\n }\n return metaObject;\n}\nfunction createLocaleMap(locales) {\n const localeMap = /* @__PURE__ */ new Map();\n for (const locale of locales) {\n if (!locale.language) {\n console.warn(\"Locale `language` ISO code is required to generate alternate link\");\n continue;\n }\n const [language, region] = locale.language.split(\"-\");\n if (language && region && (locale.isCatchallLocale || !localeMap.has(language))) {\n localeMap.set(language, locale);\n }\n localeMap.set(locale.language, locale);\n }\n return localeMap;\n}\nfunction getHreflangLinks(options) {\n if (!options.hreflangLinks) {\n return [];\n }\n const links = [];\n const localeMap = createLocaleMap(options.locales);\n for (const [language, locale] of localeMap.entries()) {\n const link = getHreflangLink(language, locale, options);\n if (!link) {\n continue;\n }\n links.push(link);\n if (options.defaultLocale && options.defaultLocale === locale.code && links[0].hreflang !== \"x-default\") {\n links.unshift(\n strictSeo ? { rel: \"alternate\", href: link.href, hreflang: \"x-default\" } : { [options.key]: \"i18n-xd\", rel: \"alternate\", href: link.href, hreflang: \"x-default\" }\n );\n }\n }\n return links;\n}\nfunction getHreflangLink(language, locale, options, routeWithoutQuery = options.strictCanonicals ? options.getRouteWithoutQuery() : void 0) {\n const localePath = options.getLocalizedRoute(locale.code, routeWithoutQuery);\n if (!localePath) {\n return void 0;\n }\n const href = withQuery(\n hasProtocol(localePath) ? localePath : joinURL(options.baseUrl, localePath),\n options.strictCanonicals ? getCanonicalQueryParams(options) : {}\n );\n return strictSeo ? { rel: \"alternate\", href, hreflang: language } : { [options.key]: `i18n-alt-${language}`, rel: \"alternate\", href, hreflang: language };\n}\nfunction getCanonicalUrl(options, route = options.getCurrentRoute()) {\n const currentRoute = options.getLocaleRoute(\n Object.assign({}, route, { path: void 0, name: options.getRouteBaseName(route) })\n );\n if (!currentRoute) {\n return \"\";\n }\n return withQuery(joinURL(options.baseUrl, currentRoute.path), getCanonicalQueryParams(options));\n}\nfunction getCanonicalLink(options, href = getCanonicalUrl(options)) {\n if (!href) {\n return [];\n }\n return [strictSeo ? { rel: \"canonical\", href } : { [options.key]: \"i18n-can\", rel: \"canonical\", href }];\n}\nfunction getCanonicalQueryParams(options, route = options.getCurrentRoute()) {\n const currentRoute = options.getLocaleRoute(\n Object.assign({}, route, { path: void 0, name: options.getRouteBaseName(route) })\n );\n const currentRouteQuery = currentRoute?.query ?? {};\n const params = {};\n for (const param of options.canonicalQueries.filter((x) => x in currentRouteQuery)) {\n params[param] ??= [];\n for (const val of toArray(currentRouteQuery[param])) {\n params[param].push(val || \"\");\n }\n }\n return params;\n}\nfunction getOgUrl(options, href = getCanonicalUrl(options)) {\n if (!href) {\n return [];\n }\n return [\n strictSeo ? { property: \"og:url\", content: href } : { [options.key]: \"i18n-og-url\", property: \"og:url\", content: href }\n ];\n}\nfunction getCurrentOgLocale(options, currentLanguage = options.getCurrentLanguage()) {\n if (!currentLanguage) {\n return [];\n }\n return [\n strictSeo ? { property: \"og:locale\", content: formatOgLanguage(currentLanguage) } : { [options.key]: \"i18n-og\", property: \"og:locale\", content: formatOgLanguage(currentLanguage) }\n ];\n}\nfunction getAlternateOgLocales(options, languages, currentLanguage = options.getCurrentLanguage()) {\n const alternateLocales = languages.filter((locale) => locale && locale !== currentLanguage);\n return alternateLocales.map(\n (locale) => strictSeo ? {\n property: \"og:locale:alternate\",\n content: formatOgLanguage(locale)\n } : {\n [options.key]: `i18n-og-alt-${locale}`,\n property: \"og:locale:alternate\",\n content: formatOgLanguage(locale)\n }\n );\n}\nfunction formatOgLanguage(val = \"\") {\n return val.replace(/-/g, \"_\");\n}\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n","import { hasProtocol, parsePath, parseQuery } from \"ufo\";\nimport { assign, isString } from \"@intlify/shared\";\nexport function localePath(ctx, route, locale = ctx.getLocale()) {\n if (isString(route) && hasProtocol(route, { acceptRelative: true })) {\n return route;\n }\n try {\n return resolveRoute(ctx, route, locale).fullPath;\n } catch {\n return \"\";\n }\n}\nexport function localeRoute(ctx, route, locale = ctx.getLocale()) {\n try {\n return resolveRoute(ctx, route, locale);\n } catch {\n return;\n }\n}\nfunction normalizeRawLocation(route) {\n if (!isString(route)) {\n return assign({}, route);\n }\n if (route[0] === \"/\") {\n const { pathname: path, search, hash } = parsePath(route);\n return { path, query: parseQuery(search), hash };\n }\n return { name: route };\n}\nfunction resolveRoute(ctx, route, locale) {\n const normalized = normalizeRawLocation(route);\n const resolved = ctx.router.resolve(ctx.resolveLocalizedRouteObject(normalized, locale));\n if (resolved.name) {\n return resolved;\n }\n return ctx.router.resolve(route);\n}\nexport function switchLocalePath(ctx, locale, route = ctx.router.currentRoute.value) {\n const name = ctx.getRouteBaseName(route);\n if (!name) {\n return \"\";\n }\n const routeCopy = {\n name,\n params: assign(\n {},\n route.params,\n ctx.getLocalizedDynamicParams(locale)\n ),\n fullPath: route.fullPath,\n query: route.query,\n hash: route.hash,\n path: route.path,\n meta: route.meta\n };\n const path = localePath(ctx, routeCopy, locale);\n return ctx.afterSwitchLocalePath(path, locale);\n}\n","import { computed, getCurrentScope, onScopeDispose, ref, useHead, useRequestEvent, watch } from \"#imports\";\nimport { assign } from \"@intlify/shared\";\nimport { localeHead as _localeHead } from \"#i18n-kit/head\";\nimport { localeRoute, switchLocalePath } from \"./routing.js\";\nfunction createHeadContext(ctx, config, locale = ctx.getLocale(), locales = ctx.getLocales(), baseUrl = ctx.getBaseUrl()) {\n const currentLocale = locales.find((l) => l.code === locale) || { code: locale };\n const canonicalQueries = typeof config.seo === \"object\" && config.seo?.canonicalQueries || [];\n if (!baseUrl && !__DIFFERENT_DOMAINS__ && !__MULTI_DOMAIN_LOCALES__) {\n if (__I18N_STRICT_SEO__) {\n throw new Error(\"I18n `baseUrl` is required to generate valid SEO tag links.\");\n }\n console.warn(\"I18n `baseUrl` is required to generate valid SEO tag links.\");\n }\n return {\n ...config,\n key: __I18N_STRICT_SEO__ ? \"key\" : \"id\",\n locales,\n baseUrl,\n canonicalQueries,\n hreflangLinks: ctx.routingOptions.hreflangLinks,\n defaultLocale: ctx.routingOptions.defaultLocale,\n strictCanonicals: __I18N_STRICT_SEO__ || ctx.routingOptions.strictCanonicals,\n getRouteBaseName: ctx.getRouteBaseName,\n getCurrentRoute: () => ctx.router.currentRoute.value,\n getCurrentLanguage: () => currentLocale.language,\n getCurrentDirection: () => currentLocale.dir || __DEFAULT_DIRECTION__,\n getLocaleRoute: (route) => localeRoute(ctx, route),\n getLocalizedRoute: (locale2, route) => switchLocalePath(ctx, locale2, route),\n getRouteWithoutQuery: () => {\n try {\n return assign({}, ctx.router.resolve({ query: {} }), { meta: ctx.router.currentRoute.value.meta });\n } catch {\n return void 0;\n }\n }\n };\n}\nexport function localeHead(ctx, { dir = true, lang = true, seo = true }) {\n return _localeHead(createHeadContext(ctx, { dir, lang, seo }));\n}\nexport function _useLocaleHead(ctx, options) {\n const metaObject = ref(_localeHead(createHeadContext(ctx, options)));\n if (import.meta.client) {\n const unsub = watch([() => ctx.router.currentRoute.value, () => ctx.getLocale()], () => {\n metaObject.value = _localeHead(createHeadContext(ctx, options));\n __I18N_STRICT_SEO__ && ctx.head?.patch(metaObject.value);\n });\n if (getCurrentScope()) {\n onScopeDispose(unsub);\n }\n }\n __I18N_STRICT_SEO__ && ctx.head?.patch(metaObject.value);\n return metaObject;\n}\nexport function _useSetI18nParams(ctx, seo, router = ctx.router) {\n const head = __I18N_STRICT_SEO__ ? ctx.head : useHead({});\n const evt = __I18N_STRICT_SEO__ && import.meta.server && useRequestEvent();\n const _i18nParams = ref({});\n const i18nParams = computed({\n get() {\n return router.currentRoute.value.meta[__DYNAMIC_PARAMS_KEY__];\n },\n set(val) {\n _i18nParams.value = val;\n router.currentRoute.value.meta[__DYNAMIC_PARAMS_KEY__] = val;\n if (evt && evt?.context.nuxtI18n?.slp) {\n evt.context.nuxtI18n.slp = val;\n }\n }\n });\n const unsub = watch(\n () => router.currentRoute.value.fullPath,\n () => {\n router.currentRoute.value.meta[__DYNAMIC_PARAMS_KEY__] = _i18nParams.value;\n __I18N_STRICT_SEO__ && updateState();\n }\n );\n if (getCurrentScope()) {\n onScopeDispose(unsub);\n }\n function updateState() {\n ctx.metaState = _localeHead(createHeadContext(ctx, ctxOptions.value));\n head?.patch(ctx.metaState);\n }\n const ctxOptions = ref({\n ...ctx.seoSettings,\n key: __I18N_STRICT_SEO__ ? \"key\" : \"id\",\n seo: seo ?? ctx.seoSettings.seo\n });\n return function(params) {\n i18nParams.value = { ...params };\n __I18N_STRICT_SEO__ && updateState();\n if (!__I18N_STRICT_SEO__) {\n const val = _localeHead(createHeadContext(ctx, ctxOptions.value));\n head?.patch(val);\n }\n };\n}\n","const objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nfunction isURL(val) {\n return toTypeString(val) === \"[object URL]\";\n}\nfunction isURLSearchParams(val) {\n return toTypeString(val) === \"[object URLSearchParams]\";\n}\nfunction isLocale(val) {\n return toTypeString(val) === \"[object Intl.Locale]\";\n}\nfunction toLocale(val) {\n return isLocale(val) ? val : new Intl.Locale(val);\n}\nfunction validateLangTag(lang) {\n try {\n Intl.getCanonicalLocales(lang);\n return true;\n } catch {\n return false;\n }\n}\nfunction parseAcceptLanguage(value) {\n return value.split(\",\").map((tag) => tag.split(\";\")[0]).filter(\n (tag) => !(tag === \"*\" || tag === \"\")\n );\n}\nfunction normalizeLanguageName(langName) {\n const [lang] = langName.split(\".\");\n return lang.replace(/_/g, \"-\");\n}\nfunction createPathIndexLanguageParser(index = 0) {\n return (path) => {\n const rawPath = typeof path === \"string\" ? path : path.pathname;\n const normalizedPath = rawPath.split(\"?\")[0];\n const parts = normalizedPath.split(\"/\");\n if (parts[0] === \"\") {\n parts.shift();\n }\n return parts.length > index ? parts[index] || \"\" : \"\";\n };\n}\nlet pathLanguageParser = /* @__PURE__ */ createPathIndexLanguageParser();\nfunction registerPathLanguageParser(parser) {\n pathLanguageParser = parser;\n}\n\nconst DEFAULT_LANG_TAG = \"en-US\";\nconst DEFAULT_COOKIE_NAME = \"i18n_locale\";\nconst ACCEPT_LANGUAGE_HEADER = \"accept-language\";\n\nfunction parseDefaultHeader(input) {\n return [input];\n}\nfunction getHeaderLanguagesWithGetter(getter, {\n name = ACCEPT_LANGUAGE_HEADER,\n parser = parseDefaultHeader\n} = {}) {\n const langString = getter();\n return langString ? name === ACCEPT_LANGUAGE_HEADER ? parser === parseDefaultHeader ? parseAcceptLanguage(langString) : parser(langString) : parser(langString) : [];\n}\nfunction getLocaleWithGetter(getter) {\n return toLocale(getter());\n}\nfunction validateLocale(locale) {\n if (!(isLocale(locale) || typeof locale === \"string\" && validateLangTag(locale))) {\n throw new SyntaxError(`locale is invalid: ${locale.toString()}`);\n }\n}\nfunction mapToLocaleFromLanguageTag(getter, ...args) {\n return Reflect.apply(getter, null, args).map(\n (lang) => getLocaleWithGetter(() => lang)\n );\n}\nfunction getExistCookies(name, getter) {\n let setCookies = getter();\n if (!Array.isArray(setCookies)) {\n setCookies = [setCookies];\n }\n setCookies = setCookies.filter(\n (cookieValue) => cookieValue && !cookieValue.startsWith(name + \"=\")\n );\n return setCookies;\n}\nfunction getPathLanguage(path, { lang = DEFAULT_LANG_TAG, parser = pathLanguageParser } = {}) {\n return (parser || pathLanguageParser)(path) || lang;\n}\nfunction getPathLocale(path, { lang = DEFAULT_LANG_TAG, parser = pathLanguageParser } = {}) {\n return new Intl.Locale(getPathLanguage(path, { lang, parser }));\n}\nfunction getURLSearchParams(input) {\n if (isURLSearchParams(input)) {\n return input;\n } else if (isURL(input)) {\n return input.searchParams;\n } else {\n return new URLSearchParams(input);\n }\n}\nfunction getQueryLanguage(query, { lang = DEFAULT_LANG_TAG, name = \"lang\" } = {}) {\n const queryParams = getURLSearchParams(query);\n return queryParams.get(name) || lang;\n}\nfunction getQueryLocale(query, { lang = DEFAULT_LANG_TAG, name = \"locale\" } = {}) {\n return new Intl.Locale(getQueryLanguage(query, { lang, name }));\n}\n\nexport { ACCEPT_LANGUAGE_HEADER as A, DEFAULT_LANG_TAG as D, getLocaleWithGetter as a, DEFAULT_COOKIE_NAME as b, getExistCookies as c, getPathLocale as d, pathLanguageParser as e, getQueryLocale as f, getHeaderLanguagesWithGetter as g, createPathIndexLanguageParser as h, isLocale as i, parseAcceptLanguage as j, validateLangTag as k, mapToLocaleFromLanguageTag as m, normalizeLanguageName as n, parseDefaultHeader as p, registerPathLanguageParser as r, validateLocale as v };\n","import { createPathIndexLanguageParser } from \"@intlify/utils\";\nconst separator = __ROUTE_NAME_SEPARATOR__ || \"___\";\nconst defaultSuffix = __ROUTE_NAME_DEFAULT_SUFFIX__ || \"default\";\nexport const defaultRouteNameSuffix = separator + defaultSuffix;\nexport function normalizeRouteName(routeName) {\n if (typeof routeName === \"string\") {\n return routeName;\n }\n if (routeName != null) {\n return routeName.toString();\n }\n return \"\";\n}\nexport function getRouteBaseName(route) {\n return normalizeRouteName(typeof route === \"object\" ? route?.name : route).split(separator)[0];\n}\nexport function getLocalizedRouteName(routeName, locale, isDefault) {\n return !isDefault ? routeName + separator + locale : routeName + separator + locale + defaultRouteNameSuffix;\n}\nconst pathLanguageParser = createPathIndexLanguageParser(0);\nexport const getLocaleFromRoutePath = (path) => pathLanguageParser(path);\nexport const getLocaleFromRouteName = (name) => name.split(separator).at(1) ?? \"\";\nfunction normalizeInput(input) {\n return typeof input !== \"object\" ? String(input) : String(input?.name || input?.path || \"\");\n}\nexport function getLocaleFromRoute(route) {\n const input = normalizeInput(route);\n if (input[0] === \"/\") {\n return getLocaleFromRoutePath(input);\n }\n const fromName = getLocaleFromRouteName(input);\n if (fromName) {\n return fromName;\n }\n if (typeof route === \"object\" && route?.path) {\n return getLocaleFromRoutePath(String(route.path));\n }\n return \"\";\n}\n","import { assign } from \"@intlify/shared\";\nimport { getLocalizedRouteName, normalizeRouteName } from \"#i18n-kit/routing\";\nexport function createLocaleRouteNameGetter(defaultLocale) {\n if (!__I18N_ROUTING__ && !__DIFFERENT_DOMAINS__) {\n return (routeName) => normalizeRouteName(routeName);\n }\n if (__I18N_STRATEGY__ === \"prefix_and_default\") {\n return (name, locale) => getLocalizedRouteName(normalizeRouteName(name), locale, locale === defaultLocale);\n }\n return (name, locale) => getLocalizedRouteName(normalizeRouteName(name), locale, false);\n}\nexport function createLocalizedRouteByPathResolver(router) {\n if (!__I18N_ROUTING__) {\n return (route) => route;\n }\n if (__I18N_STRATEGY__ === \"prefix\") {\n return (route, locale) => {\n const targetPath = \"/\" + locale + (route.path === \"/\" ? \"\" : route.path);\n const _route = router.options.routes.find((r) => r.path === targetPath);\n if (_route != null) {\n return router.resolve(assign({}, route, _route, { path: targetPath }));\n }\n return route;\n };\n }\n return (route) => router.resolve(route);\n}\n","// @ts-nocheck\n\nexport const localeCodes = [\n \"hu\",\n \"en\"\n]\nexport const localeLoaders = {\n hu: [\n {\n key: \"locale_hu_46json_ee06c965\",\n load: () => import(\"#nuxt-i18n/ee06c965\" /* webpackChunkName: \"locale_hu_46json_ee06c965\" */),\n cache: true\n }\n ],\n en: [\n {\n key: \"locale_en_46json_0b63539c\",\n load: () => import(\"#nuxt-i18n/0b63539c\" /* webpackChunkName: \"locale_en_46json_0b63539c\" */),\n cache: true\n }\n ]\n}\nexport const vueI18nConfigs = []\nexport const normalizedLocales = [\n {\n code: \"hu\",\n iso: \"hu-HU\",\n name: \"Magyar\",\n language: undefined\n },\n {\n code: \"en\",\n iso: \"en-GB\",\n name: \"English\",\n language: undefined\n }\n]\n\n","import { create, deepCopy, isFunction, toTypeString } from \"@intlify/shared\";\nimport { useNuxtApp } from \"#app\";\nimport { createDefu } from \"defu\";\nconst cacheMessages = /* @__PURE__ */ new Map();\nconst merger = createDefu((obj, key, value) => {\n if (key === \"messages\" || key === \"datetimeFormats\" || key === \"numberFormats\") {\n obj[key] ??= create(null);\n deepCopy(value, obj[key]);\n return true;\n }\n});\nexport async function loadVueI18nOptions(vueI18nConfigs) {\n const nuxtApp = useNuxtApp();\n let vueI18nOptions = { messages: create(null) };\n for (const configFile of vueI18nConfigs) {\n const resolver = await configFile().then((x) => isModule(x) ? x.default : x);\n const resolved = isFunction(resolver) ? await nuxtApp.runWithContext(() => resolver()) : resolver;\n vueI18nOptions = merger(create(null), resolved, vueI18nOptions);\n }\n vueI18nOptions.fallbackLocale ??= false;\n return vueI18nOptions;\n}\nconst isModule = (val) => toTypeString(val) === \"[object Module]\";\nasync function getLocaleMessages(locale, loader) {\n const nuxtApp = useNuxtApp();\n try {\n const getter = await nuxtApp.runWithContext(loader.load).then((x) => isModule(x) ? x.default : x);\n return isFunction(getter) ? await nuxtApp.runWithContext(() => getter(locale)) : getter;\n } catch (e) {\n throw new Error(`Failed loading locale (${locale}): ` + e.message);\n }\n}\nexport async function getLocaleMessagesMerged(locale, loaders = []) {\n const nuxtApp = useNuxtApp();\n const messages = await Promise.all(\n loaders.map((loader) => nuxtApp.runWithContext(() => getLocaleMessages(locale, loader)))\n );\n const merged = {};\n for (const message of messages) {\n deepCopy(message, merged);\n }\n return merged;\n}\nexport async function getLocaleMessagesMergedCached(locale, loaders = []) {\n const nuxtApp = useNuxtApp();\n const messages = await Promise.all(loaders.map(async (loader) => {\n const cached = getCachedMessages(loader);\n const messages2 = cached || await nuxtApp.runWithContext(() => getLocaleMessages(locale, loader));\n if (!cached && loader.cache !== false) {\n cacheMessages.set(loader.key, { ttl: Date.now() + __I18N_CACHE_LIFETIME__ * 1e3, value: messages2 });\n }\n return messages2;\n }));\n const merged = {};\n for (const message of messages) {\n deepCopy(message, merged);\n }\n return merged;\n}\nfunction getCachedMessages(loader) {\n if (!__I18N_CACHE__) {\n return;\n }\n if (loader.cache === false) {\n return;\n }\n const cache = cacheMessages.get(loader.key);\n if (cache == null) {\n return;\n }\n return __I18N_CACHE_LIFETIME__ === 0 || cache.ttl > Date.now() ? cache.value : void 0;\n}\n","export function getI18nTarget(i18n) {\n return i18n != null && \"global\" in i18n && \"mode\" in i18n ? i18n.global : i18n;\n}\nexport function getComposer(i18n) {\n const target = getI18nTarget(i18n);\n return \"__composer\" in target ? target.__composer : target;\n}\n","import { useRuntimeConfig } from \"#imports\";\nimport { isString } from \"@intlify/shared\";\nexport function useRuntimeI18n(nuxtApp, event) {\n if (!nuxtApp) {\n return useRuntimeConfig(event).public.i18n;\n }\n return nuxtApp.$config.public.i18n;\n}\nexport function useI18nDetection(nuxtApp) {\n const detectBrowserLanguage = useRuntimeI18n(nuxtApp).detectBrowserLanguage;\n const detect = detectBrowserLanguage || {};\n return {\n ...detect,\n enabled: !!detectBrowserLanguage,\n cookieKey: detect.cookieKey || __DEFAULT_COOKIE_KEY__\n };\n}\nexport function resolveRootRedirect(config) {\n if (!config) {\n return void 0;\n }\n return {\n path: \"/\" + (isString(config) ? config : config.path).replace(/^\\//, \"\"),\n code: !isString(config) && config.statusCode || 302\n };\n}\nexport function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n","import { hasProtocol } from \"ufo\";\nimport { normalizedLocales } from \"#build/i18n-options.mjs\";\nimport { toArray } from \"./utils.js\";\nexport function matchDomainLocale(locales, host, pathLocale) {\n const normalizeDomain = (domain = \"\") => domain.replace(/https?:\\/\\//, \"\");\n const matches = locales.filter(\n (locale) => normalizeDomain(locale.domain) === host || toArray(locale.domains).includes(host)\n );\n if (matches.length <= 1) {\n return matches[0]?.code;\n }\n return (\n // match by current path locale\n matches.find((l) => l.code === pathLocale)?.code || matches.find((l) => l.defaultForDomains?.includes(host) ?? l.domainDefault)?.code\n );\n}\nexport function domainFromLocale(domainLocales, url, locale) {\n const lang = normalizedLocales.find((x) => x.code === locale);\n const domain = domainLocales?.[locale]?.domain || lang?.domain || lang?.domains?.find((v) => v === url.host);\n if (!domain) {\n import.meta.dev && console.warn(\"[nuxt-i18n] Could not find domain name for locale \" + locale);\n return;\n }\n if (hasProtocol(domain, { strict: true })) {\n return domain;\n }\n return url.protocol + \"//\" + domain;\n}\n","import { localeCodes, localeLoaders, normalizedLocales } from \"#build/i18n-options.mjs\";\nimport { isArray, isString } from \"@intlify/shared\";\nexport function createLocaleConfigs(fallbackLocale) {\n const localeConfigs = {};\n for (const locale of localeCodes) {\n const fallbacks = getFallbackLocaleCodes(fallbackLocale, [locale]);\n const cacheable = isLocaleWithFallbacksCacheable(locale, fallbacks);\n localeConfigs[locale] = { fallbacks, cacheable };\n }\n return localeConfigs;\n}\nfunction getFallbackLocaleCodes(fallback, locales) {\n if (fallback === false) {\n return [];\n }\n if (isArray(fallback)) {\n return fallback;\n }\n let fallbackLocales = [];\n if (isString(fallback)) {\n if (locales.every((locale) => locale !== fallback)) {\n fallbackLocales.push(fallback);\n }\n return fallbackLocales;\n }\n const targets = [...locales, \"default\"];\n for (const locale of targets) {\n if (locale in fallback == false) {\n continue;\n }\n fallbackLocales = [...fallbackLocales, ...fallback[locale].filter(Boolean)];\n }\n return fallbackLocales;\n}\nexport function isLocaleCacheable(locale) {\n return localeLoaders[locale] != null && localeLoaders[locale].every((loader) => loader.cache !== false);\n}\nexport function isLocaleWithFallbacksCacheable(locale, fallbackLocales) {\n return isLocaleCacheable(locale) && fallbackLocales.every((fallbackLocale) => isLocaleCacheable(fallbackLocale));\n}\nexport function getDefaultLocaleForDomain(host) {\n return normalizedLocales.find((l) => !!l.defaultForDomains?.includes(host))?.code;\n}\nexport const isSupportedLocale = (locale) => localeCodes.includes(locale || \"\");\nexport const resolveSupportedLocale = (locale) => isSupportedLocale(locale) ? locale : void 0;\n","import { isRef, unref } from \"vue\";\nimport { useCookie, useRequestURL, useState } from \"#imports\";\nimport { localeLoaders } from \"#build/i18n-options.mjs\";\nimport { getLocaleMessagesMergedCached } from \"./shared/messages.js\";\nimport { createBaseUrlGetter, createComposableContext } from \"./utils.js\";\nimport { getI18nTarget } from \"./compatibility.js\";\nimport { domainFromLocale } from \"./shared/domain.js\";\nimport { isSupportedLocale } from \"./shared/locales.js\";\nimport { resolveRootRedirect, useI18nDetection, useRuntimeI18n } from \"./shared/utils.js\";\nimport { joinURL } from \"ufo\";\nimport { isString } from \"@intlify/shared\";\nexport const useLocaleConfigs = () => useState(\n \"i18n:cached-locale-configs\",\n () => void 0\n);\nexport const useResolvedLocale = () => useState(\"i18n:resolved-locale\", () => \"\");\nfunction useI18nCookie({ cookieCrossOrigin, cookieDomain, cookieSecure, cookieKey }) {\n const date = /* @__PURE__ */ new Date();\n return useCookie(cookieKey || __DEFAULT_COOKIE_KEY__, {\n path: \"/\",\n readonly: false,\n expires: new Date(date.setDate(date.getDate() + 365)),\n sameSite: cookieCrossOrigin ? \"none\" : \"lax\",\n domain: cookieDomain || void 0,\n secure: cookieCrossOrigin || cookieSecure\n });\n}\nexport function createNuxtI18nContext(nuxt, vueI18n, defaultLocale) {\n const i18n = getI18nTarget(vueI18n);\n const runtimeI18n = useRuntimeI18n(nuxt);\n const detectConfig = useI18nDetection(nuxt);\n const serverLocaleConfigs = useLocaleConfigs();\n const localeCookie = useI18nCookie(detectConfig);\n const loadMap = /* @__PURE__ */ new Set();\n const getLocaleConfig = (locale) => serverLocaleConfigs.value[locale];\n const getDomainFromLocale = (locale) => domainFromLocale(runtimeI18n.domainLocales, useRequestURL({ xForwardedHost: true }), locale);\n const baseUrl = createBaseUrlGetter(nuxt, runtimeI18n.baseUrl, defaultLocale, getDomainFromLocale);\n const resolvedLocale = useResolvedLocale();\n if (__I18N_SERVER_REDIRECT__ && import.meta.server && nuxt.ssrContext?.event?.context?.nuxtI18n?.detectLocale) {\n resolvedLocale.value = nuxt.ssrContext.event.context.nuxtI18n.detectLocale;\n }\n const loadMessagesFromClient = async (locale) => {\n const locales = getLocaleConfig(locale)?.fallbacks ?? [];\n if (!locales.includes(locale)) {\n locales.push(locale);\n }\n for (const k of locales) {\n const msg = await nuxt.runWithContext(() => getLocaleMessagesMergedCached(k, localeLoaders[k]));\n i18n.mergeLocaleMessage(k, msg);\n }\n };\n const loadMessagesFromServer = async (locale) => {\n if (locale in localeLoaders === false) {\n return;\n }\n const headers = getLocaleConfig(locale)?.cacheable ? {} : { \"Cache-Control\": \"no-cache\" };\n const prefix = import.meta.client && __I18N_CDN__ ? nuxt.$config.app.cdnURL || \"\" : \"\";\n const url = joinURL(prefix, __I18N_SERVER_ROUTE__, __I18N_LOCALE_HASHES__[locale], locale, \"messages.json\");\n const messages = await $fetch(url, { headers });\n for (const k of Object.keys(messages)) {\n i18n.mergeLocaleMessage(k, messages[k]);\n }\n };\n const ctx = {\n vueI18n,\n initial: true,\n preloaded: false,\n config: runtimeI18n,\n rootRedirect: resolveRootRedirect(runtimeI18n.rootRedirect),\n redirectStatusCode: runtimeI18n.redirectStatusCode ?? 302,\n dynamicResourcesSSG: !__IS_SSR__ || !__I18N_FULL_STATIC__ && (import.meta.prerender || __IS_SSG__),\n getDefaultLocale: () => defaultLocale,\n getLocale: () => unref(i18n.locale),\n setLocale: async (locale) => {\n const oldLocale = ctx.getLocale();\n if (locale === oldLocale || !isSupportedLocale(locale)) {\n return;\n }\n if (isRef(i18n.locale)) {\n i18n.locale.value = locale;\n } else {\n i18n.locale = locale;\n }\n await nuxt.callHook(\"i18n:localeSwitched\", { newLocale: locale, oldLocale });\n resolvedLocale.value = locale;\n },\n setLocaleSuspend: async (locale) => {\n if (!isSupportedLocale(locale)) {\n return;\n }\n ctx.vueI18n.__pendingLocale = locale;\n ctx.vueI18n.__pendingLocalePromise = new Promise((resolve) => {\n ctx.vueI18n.__resolvePendingLocalePromise = async () => {\n ctx.setCookieLocale(locale);\n await ctx.setLocale(locale);\n ctx.vueI18n.__pendingLocale = void 0;\n resolve();\n };\n });\n if (import.meta.server || nuxt.isHydrating || !ctx.config.skipSettingLocaleOnNavigate) {\n await ctx.vueI18n.__resolvePendingLocalePromise?.();\n }\n },\n getLocales: () => unref(i18n.locales).map((x) => isString(x) ? { code: x } : x),\n setCookieLocale: (locale) => {\n if (detectConfig.useCookie && isSupportedLocale(locale)) {\n localeCookie.value = locale;\n }\n },\n getBaseUrl: (locale) => {\n if (locale) {\n return joinURL(getDomainFromLocale(locale) || baseUrl(), nuxt.$config.app.baseURL);\n }\n return joinURL(baseUrl(), nuxt.$config.app.baseURL);\n },\n loadMessages: async (locale) => {\n if (nuxt.isHydrating && loadMap.has(locale)) {\n return;\n }\n try {\n return ctx.dynamicResourcesSSG || import.meta.dev ? await loadMessagesFromClient(locale) : await loadMessagesFromServer(locale);\n } catch (e) {\n console.warn(`Failed to load messages for locale \"${locale}\"`, e);\n } finally {\n loadMap.add(locale);\n }\n },\n composableCtx: void 0\n };\n ctx.composableCtx = createComposableContext(ctx, nuxt);\n return ctx;\n}\nexport function useNuxtI18nContext(nuxt) {\n if (nuxt._nuxtI18n == null) {\n throw new Error(\"Nuxt I18n context has not been set up yet.\");\n }\n return nuxt._nuxtI18n;\n}\n","function matchBrowserLocale(locales, browserLocales) {\n const matchedLocales = [];\n for (const [index, browserCode] of browserLocales.entries()) {\n const matchedLocale = locales.find((l) => l.language?.toLowerCase() === browserCode.toLowerCase());\n if (matchedLocale) {\n matchedLocales.push({ code: matchedLocale.code, score: 1 - index / browserLocales.length });\n break;\n }\n }\n for (const [index, browserCode] of browserLocales.entries()) {\n const languageCode = browserCode.split(\"-\")[0].toLowerCase();\n const matchedLocale = locales.find((l) => l.language?.split(\"-\")[0].toLowerCase() === languageCode);\n if (matchedLocale) {\n matchedLocales.push({ code: matchedLocale.code, score: 0.999 - index / browserLocales.length });\n break;\n }\n }\n return matchedLocales;\n}\nfunction compareBrowserLocale(a, b) {\n if (a.score === b.score) {\n return b.code.length - a.code.length;\n }\n return b.score - a.score;\n}\nexport function findBrowserLocale(locales, browserLocales) {\n const matchedLocales = matchBrowserLocale(\n locales.map((l) => ({ code: l.code, language: l.language || l.code })),\n browserLocales\n );\n return matchedLocales.sort(compareBrowserLocale).at(0)?.code ?? \"\";\n}\n","import { getCookie, getRequestHeader, getRequestURL } from \"h3\";\nimport { normalizedLocales } from \"#build/i18n-options.mjs\";\nimport { getLocaleFromRoute, getLocaleFromRoutePath } from \"#i18n-kit/routing\";\nimport { findBrowserLocale } from \"#i18n-kit/browser\";\nimport { parseAcceptLanguage } from \"@intlify/utils\";\nimport { matchDomainLocale } from \"./domain.js\";\nimport { useRuntimeI18n } from \"../shared/utils.js\";\nimport { useCookie } from \"#app\";\nconst getCookieLocale = (event, cookieName) => (import.meta.client ? useCookie(cookieName).value : getCookie(event, cookieName)) || void 0;\nconst getRouteLocale = (event, route) => getLocaleFromRoute(route);\nconst getHeaderLocale = (event) => findBrowserLocale(normalizedLocales, parseAcceptLanguage(getRequestHeader(event, \"accept-language\") || \"\"));\nconst getNavigatorLocale = (event) => findBrowserLocale(normalizedLocales, navigator.languages);\nconst getHostLocale = (event, path, domainLocales) => {\n const host = import.meta.client ? new URL(window.location.href).host : getRequestURL(event, { xForwardedHost: true }).host;\n const locales = normalizedLocales.map((l) => ({\n ...l,\n domain: domainLocales[l.code]?.domain ?? l.domain\n }));\n return matchDomainLocale(locales, host, getLocaleFromRoutePath(path));\n};\nexport const useDetectors = (event, config, nuxtApp) => {\n if (import.meta.server && !event) {\n throw new Error(\"H3Event is required for server-side locale detection\");\n }\n const runtimeI18n = useRuntimeI18n(nuxtApp);\n return {\n cookie: () => getCookieLocale(event, config.cookieKey),\n header: () => import.meta.server ? getHeaderLocale(event) : void 0,\n navigator: () => import.meta.client ? getNavigatorLocale(event) : void 0,\n host: (path) => getHostLocale(event, path, runtimeI18n.domainLocales),\n route: (path) => getRouteLocale(event, path)\n };\n};\n","import { isEqual, joinURL, withTrailingSlash, withoutTrailingSlash } from \"ufo\";\nimport { isFunction, isString } from \"@intlify/shared\";\nimport { navigateTo, useHead, useNuxtApp, useRequestEvent, useRequestURL, useRouter } from \"#imports\";\nimport { createLocaleRouteNameGetter, createLocalizedRouteByPathResolver } from \"./routing/utils.js\";\nimport { getRouteBaseName } from \"#i18n-kit/routing\";\nimport {\n localePath,\n switchLocalePath\n} from \"./routing/routing.js\";\nimport { useNuxtI18nContext } from \"./context.js\";\nimport { getDefaultLocaleForDomain, isSupportedLocale } from \"./shared/locales.js\";\nimport { useDetectors } from \"./shared/detection.js\";\nimport { useI18nDetection } from \"./shared/utils.js\";\nexport const isRouteLocationPathRaw = (val) => !!val.path && !val.name;\nexport function useComposableContext(nuxtApp) {\n const context = nuxtApp?._nuxtI18n?.composableCtx;\n if (!context) {\n throw new Error(\n \"i18n context is not initialized. Ensure the i18n plugin is installed and the composable is used within a Vue component or setup function.\"\n );\n }\n return context;\n}\nconst formatTrailingSlash = __TRAILING_SLASH__ ? withTrailingSlash : withoutTrailingSlash;\nexport function createComposableContext(ctx, nuxtApp = useNuxtApp()) {\n const router = useRouter();\n const detectors = useDetectors(useRequestEvent(), useI18nDetection(nuxtApp), nuxtApp);\n const defaultLocale = ctx.getDefaultLocale();\n const getLocalizedRouteName = createLocaleRouteNameGetter(defaultLocale);\n function resolveLocalizedRouteByName(route, locale) {\n route.name = getRouteBaseName(route.name || router.currentRoute.value);\n const localizedName = getLocalizedRouteName(route.name, locale);\n if (router.hasRoute(localizedName)) {\n route.name = localizedName;\n if (__I18N_COMPACT_ROUTES__ && route.params) {\n delete route.params.locale;\n }\n } else if (__I18N_COMPACT_ROUTES__ && isSupportedLocale(locale) && getCompactRouteNames().has(route.name)) {\n route.params = { ...route.params || {}, locale };\n return route;\n }\n route.name = localizedName;\n return route;\n }\n const routeByPathResolver = createLocalizedRouteByPathResolver(router);\n let compactRouteRecords;\n function getCompactRouteNames() {\n if (compactRouteRecords) {\n return compactRouteRecords;\n }\n compactRouteRecords = /* @__PURE__ */ new Set();\n if (__I18N_COMPACT_ROUTES__) {\n for (const r of router.getRoutes()) {\n if (r.name != null && /^\\/:locale\\(/.test(r.path)) {\n compactRouteRecords.add(String(r.name));\n }\n }\n }\n return compactRouteRecords;\n }\n function resolveLocalizedRouteByPath(input, locale) {\n const route = routeByPathResolver(input, locale);\n const baseName = getRouteBaseName(route);\n if (baseName) {\n const localizedName = getLocalizedRouteName(baseName, locale);\n if (router.hasRoute(localizedName)) {\n route.name = localizedName;\n return route;\n }\n if (__I18N_COMPACT_ROUTES__ && getCompactRouteNames().has(baseName)) {\n const compacted = route;\n compacted.name = baseName;\n compacted.params = { ...compacted.params || {}, locale };\n return compacted;\n }\n route.name = localizedName;\n return route;\n }\n if (prefixable(locale, defaultLocale)) {\n route.path = \"/\" + locale + route.path;\n }\n route.path = formatTrailingSlash(route.path, true);\n return route;\n }\n const composableCtx = {\n router,\n _head: void 0,\n get head() {\n this._head ??= useHead({});\n return this._head;\n },\n metaState: { htmlAttrs: {}, meta: [], link: [] },\n seoSettings: {\n dir: __I18N_STRICT_SEO__,\n lang: __I18N_STRICT_SEO__,\n seo: __I18N_STRICT_SEO__\n },\n localePathPayload: getLocalePathPayload(),\n routingOptions: {\n defaultLocale,\n strictCanonicals: ctx.config.experimental.alternateLinkCanonicalQueries ?? true,\n hreflangLinks: !(!__I18N_ROUTING__ && !__DIFFERENT_DOMAINS__)\n },\n getLocale: ctx.getLocale,\n getLocales: ctx.getLocales,\n getBaseUrl: ctx.getBaseUrl,\n getRouteBaseName,\n getRouteLocalizedParams: () => router.currentRoute.value.meta[__DYNAMIC_PARAMS_KEY__] ?? {},\n getLocalizedDynamicParams: (locale) => {\n if (__I18N_STRICT_SEO__ && import.meta.client && nuxtApp.isHydrating && composableCtx.localePathPayload) {\n return composableCtx.localePathPayload[locale] || {};\n }\n return composableCtx.getRouteLocalizedParams()?.[locale];\n },\n afterSwitchLocalePath: (path, locale) => {\n const params = composableCtx.getRouteLocalizedParams();\n if (__I18N_STRICT_SEO__ && locale && Object.keys(params).length && !params[locale]) {\n return \"\";\n }\n if (__MULTI_DOMAIN_LOCALES__ && __I18N_STRATEGY__ === \"prefix_except_default\") {\n const defaultLocale2 = getDefaultLocaleForDomain(useRequestURL({ xForwardedHost: true }).host);\n if (locale !== defaultLocale2 || detectors.route(path) !== defaultLocale2) {\n return path;\n }\n return path.slice(locale.length + 1);\n }\n if (__DIFFERENT_DOMAINS__) {\n return joinURL(ctx.getBaseUrl(locale), path);\n }\n return path;\n },\n resolveLocalizedRouteObject: (route, locale) => {\n return isRouteLocationPathRaw(route) ? resolveLocalizedRouteByPath(route, locale) : resolveLocalizedRouteByName(route, locale);\n }\n };\n return composableCtx;\n}\nfunction getLocalePathPayload(nuxtApp = useNuxtApp()) {\n const payload = import.meta.client && document.querySelector(`[data-nuxt-i18n-slp=\"${nuxtApp._id}\"]`)?.textContent;\n return JSON.parse(payload || \"{}\");\n}\nexport async function loadAndSetLocale(nuxtApp, locale) {\n const ctx = useNuxtI18nContext(nuxtApp);\n const oldLocale = ctx.getLocale();\n if (locale === oldLocale && !ctx.initial && (!ctx.vueI18n.__pendingLocale || ctx.vueI18n.__pendingLocale === locale)) {\n return locale;\n }\n const data = { oldLocale, newLocale: locale, initialSetup: ctx.initial, context: nuxtApp };\n let override = await nuxtApp.callHook(\"i18n:beforeLocaleSwitch\", data);\n if (override != null && import.meta.dev) {\n console.warn(\"[nuxt-i18n] Do not return in `i18n:beforeLocaleSwitch`, mutate `data.newLocale` instead.\");\n }\n override ??= data.newLocale;\n if (isSupportedLocale(override)) {\n locale = override;\n }\n await ctx.loadMessages(locale);\n await ctx.setLocaleSuspend(locale);\n return locale;\n}\nfunction skipDetect(detect, path, pathLocale) {\n if (!__I18N_ROUTING__) {\n return false;\n }\n if (detect.redirectOn === \"root\" && path !== \"/\") {\n return true;\n }\n if (detect.redirectOn === \"no prefix\" && !detect.alwaysRedirect && isSupportedLocale(pathLocale)) {\n return true;\n }\n return false;\n}\nexport function detectLocale(nuxtApp, route) {\n const detectConfig = useI18nDetection(nuxtApp);\n const detectors = useDetectors(useRequestEvent(nuxtApp), detectConfig, nuxtApp);\n const ctx = useNuxtI18nContext(nuxtApp);\n const path = isString(route) ? route : route.path;\n function* detect() {\n if (ctx.initial && detectConfig.enabled && !skipDetect(detectConfig, path, detectors.route(path))) {\n yield detectors.cookie();\n yield detectors.header();\n yield detectors.navigator();\n yield detectConfig.fallbackLocale;\n }\n if (__DIFFERENT_DOMAINS__ || __MULTI_DOMAIN_LOCALES__) {\n yield detectors.host(path);\n }\n if (__I18N_ROUTING__) {\n yield detectors.route(route);\n }\n }\n for (const detected of detect()) {\n if (detected && isSupportedLocale(detected)) {\n return detected;\n }\n }\n return ctx.getLocale() || ctx.getDefaultLocale() || \"\";\n}\nexport function navigate(nuxtApp, to, locale) {\n if (!__I18N_ROUTING__ || __DIFFERENT_DOMAINS__) {\n return;\n }\n const ctx = useNuxtI18nContext(nuxtApp);\n const _ctx = useComposableContext(nuxtApp);\n if (to.path === \"/\" && ctx.rootRedirect) {\n return navigateTo(localePath(_ctx, ctx.rootRedirect.path, locale), { redirectCode: ctx.rootRedirect.code });\n }\n if (ctx.vueI18n.__pendingLocale && useNuxtApp()._processingMiddleware) {\n return;\n }\n const detectors = useDetectors(useRequestEvent(), useI18nDetection(nuxtApp), nuxtApp);\n if (detectors.route(to) === locale) {\n return;\n }\n const destination = switchLocalePath(_ctx, locale, to) || localePath(_ctx, to.fullPath, locale);\n if (isEqual(destination, to.fullPath)) {\n return;\n }\n return navigateTo(destination, { redirectCode: ctx.redirectStatusCode });\n}\nexport function prefixable(currentLocale, defaultLocale) {\n return !__DIFFERENT_DOMAINS__ && __I18N_ROUTING__ && (currentLocale !== defaultLocale || __I18N_STRATEGY__ === \"prefix\");\n}\nexport function createBaseUrlGetter(nuxt, baseUrl, defaultLocale, getDomainFromLocale) {\n if (isFunction(baseUrl)) {\n import.meta.dev && console.warn(\"[nuxt-i18n] Configuring baseUrl as a function is deprecated and will be removed in v11.\");\n return () => baseUrl(nuxt);\n }\n return () => {\n if (__DIFFERENT_DOMAINS__ && defaultLocale) {\n return (getDomainFromLocale(defaultLocale) || baseUrl) ?? \"\";\n }\n return baseUrl ?? \"\";\n };\n}\n","/*!\n * message-compiler v11.4.2\n * (c) 2026 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, join, isString } from '@intlify/shared';\n\nconst LOCATION_STUB = {\n start: { line: 1, column: 1, offset: 0 },\n end: { line: 1, column: 1, offset: 0 }\n};\nfunction createPosition(line, column, offset) {\n return { line, column, offset };\n}\nfunction createLocation(start, end, source) {\n const loc = { start, end };\n if (source != null) {\n loc.source = source;\n }\n return loc;\n}\n\nconst CompileErrorCodes = {\n // tokenizer error codes\n EXPECTED_TOKEN: 1,\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n UNKNOWN_ESCAPE_SEQUENCE: 4,\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n UNBALANCED_CLOSING_BRACE: 6,\n UNTERMINATED_CLOSING_BRACE: 7,\n EMPTY_PLACEHOLDER: 8,\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\n INVALID_LINKED_FORMAT: 10,\n // parser error codes\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\n // generator error codes\n UNHANDLED_CODEGEN_NODE_TYPE: 15,\n // minifier error codes\n UNHANDLED_MINIFIER_NODE_TYPE: 16\n};\n// Special value for higher-order compilers to pick up the last code\n// to avoid collision of error codes.\n// This should always be kept as the last item.\nconst COMPILE_ERROR_CODES_EXTEND_POINT = 17;\n/** @internal */\nconst errorMessages = {\n // tokenizer error messages\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n // parser error messages\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n // generator error messages\n [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n // minimizer error messages\n [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n const { domain, messages, args } = options;\n const msg = (process.env.NODE_ENV !== 'production')\n ? format((messages || errorMessages)[code] || '', ...(args || []))\n : code;\n const error = new SyntaxError(String(msg));\n error.code = code;\n if (loc) {\n error.location = loc;\n }\n error.domain = domain;\n return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n throw error;\n}\n\n// eslint-disable-next-line no-useless-escape\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = (source) => RE_HTML_TAG.test(source);\n\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n const _buf = str;\n let _index = 0;\n let _line = 1;\n let _column = 1;\n let _peekOffset = 0;\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n const isLF = (index) => _buf[index] === CHAR_LF;\n const isPS = (index) => _buf[index] === CHAR_PS;\n const isLS = (index) => _buf[index] === CHAR_LS;\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n const index = () => _index;\n const line = () => _line;\n const column = () => _column;\n const peekOffset = () => _peekOffset;\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n const currentChar = () => charAt(_index);\n const currentPeek = () => charAt(_index + _peekOffset);\n function next() {\n _peekOffset = 0;\n if (isLineEnd(_index)) {\n _line++;\n _column = 0;\n }\n if (isCRLF(_index)) {\n _index++;\n }\n _index++;\n _column++;\n return _buf[_index];\n }\n function peek() {\n if (isCRLF(_index + _peekOffset)) {\n _peekOffset++;\n }\n _peekOffset++;\n return _buf[_index + _peekOffset];\n }\n function reset() {\n _index = 0;\n _line = 1;\n _column = 1;\n _peekOffset = 0;\n }\n function resetPeek(offset = 0) {\n _peekOffset = offset;\n }\n function skipToPeek() {\n const target = _index + _peekOffset;\n while (target !== _index) {\n next();\n }\n _peekOffset = 0;\n }\n return {\n index,\n line,\n column,\n peekOffset,\n charAt,\n currentChar,\n currentPeek,\n next,\n peek,\n reset,\n resetPeek,\n skipToPeek\n };\n}\n\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n const location = options.location !== false;\n const _scnr = createScanner(source);\n const currentOffset = () => _scnr.index();\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n const _initLoc = currentPosition();\n const _initOffset = currentOffset();\n const _context = {\n currentType: 13 /* TokenTypes.EOF */,\n offset: _initOffset,\n startLoc: _initLoc,\n endLoc: _initLoc,\n lastType: 13 /* TokenTypes.EOF */,\n lastOffset: _initOffset,\n lastStartLoc: _initLoc,\n lastEndLoc: _initLoc,\n braceNest: 0,\n inLinked: false,\n text: ''\n };\n const context = () => _context;\n const { onError } = options;\n function emitError(code, pos, offset, ...args) {\n const ctx = context();\n pos.column += offset;\n pos.offset += offset;\n if (onError) {\n const loc = location ? createLocation(ctx.startLoc, pos) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$3,\n args\n });\n onError(err);\n }\n }\n function getToken(context, type, value) {\n context.endLoc = currentPosition();\n context.currentType = type;\n const token = { type };\n if (location) {\n token.loc = createLocation(context.startLoc, context.endLoc);\n }\n if (value != null) {\n token.value = value;\n }\n return token;\n }\n const getEndToken = (context) => getToken(context, 13 /* TokenTypes.EOF */);\n function eat(scnr, ch) {\n if (scnr.currentChar() === ch) {\n scnr.next();\n return ch;\n }\n else {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n return '';\n }\n }\n function peekSpaces(scnr) {\n let buf = '';\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n buf += scnr.currentPeek();\n scnr.peek();\n }\n return buf;\n }\n function skipSpaces(scnr) {\n const buf = peekSpaces(scnr);\n scnr.skipToPeek();\n return buf;\n }\n function isIdentifierStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 95 // _\n );\n }\n function isNumberStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function isNamedIdentifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isListIdentifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n const ret = isNumberStart(ch);\n scnr.resetPeek();\n return ret;\n }\n function isLiteralStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDotStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 7 /* TokenTypes.LinkedAlias */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedModifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 8 /* TokenTypes.LinkedDot */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDelimiterStart(scnr, context) {\n const { currentType } = context;\n if (!(currentType === 7 /* TokenTypes.LinkedAlias */ ||\n currentType === 11 /* TokenTypes.LinkedModifier */)) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedReferStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 9 /* TokenTypes.LinkedDelimiter */) {\n return false;\n }\n const fn = () => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return isIdentifierStart(scnr.peek());\n }\n else if (ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n ch === \":\" /* TokenChars.LinkedDelimiter */ ||\n ch === \".\" /* TokenChars.LinkedDot */ ||\n ch === CHAR_SP ||\n !ch) {\n return false;\n }\n else if (ch === CHAR_LF) {\n scnr.peek();\n return fn();\n }\n else {\n // other characters\n return isTextStart(scnr, false);\n }\n };\n const ret = fn();\n scnr.resetPeek();\n return ret;\n }\n function isPluralStart(scnr) {\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n scnr.resetPeek();\n return ret;\n }\n function isTextStart(scnr, reset = true) {\n const fn = (hasSpace = false, prev = '') => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return hasSpace;\n }\n else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n return hasSpace;\n }\n else if (ch === \"|\" /* TokenChars.Pipe */) {\n return !(prev === CHAR_SP || prev === CHAR_LF);\n }\n else if (ch === CHAR_SP) {\n scnr.peek();\n return fn(true, CHAR_SP);\n }\n else if (ch === CHAR_LF) {\n scnr.peek();\n return fn(true, CHAR_LF);\n }\n else {\n return true;\n }\n };\n const ret = fn();\n reset && scnr.resetPeek();\n return ret;\n }\n function takeChar(scnr, fn) {\n const ch = scnr.currentChar();\n if (ch === EOF) {\n return EOF;\n }\n if (fn(ch)) {\n scnr.next();\n return ch;\n }\n return null;\n }\n function isIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || // _\n cc === 36 // $\n );\n }\n function takeIdentifierChar(scnr) {\n return takeChar(scnr, isIdentifier);\n }\n function isNamedIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || // _\n cc === 36 || // $\n cc === 45 // -\n );\n }\n function takeNamedIdentifierChar(scnr) {\n return takeChar(scnr, isNamedIdentifier);\n }\n function isDigit(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function takeDigit(scnr) {\n return takeChar(scnr, isDigit);\n }\n function isHexDigit(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 48 && cc <= 57) || // 0-9\n (cc >= 65 && cc <= 70) || // A-F\n (cc >= 97 && cc <= 102)); // a-f\n }\n function takeHexDigit(scnr) {\n return takeChar(scnr, isHexDigit);\n }\n function getDigits(scnr) {\n let ch = '';\n let num = '';\n while ((ch = takeDigit(scnr))) {\n num += ch;\n }\n return num;\n }\n function readText(scnr) {\n let buf = '';\n while (true) {\n const ch = scnr.currentChar();\n if (ch === '\\\\') {\n const nextCh = scnr.peek();\n if (nextCh === \"{\" /* TokenChars.BraceLeft */ ||\n nextCh === \"}\" /* TokenChars.BraceRight */ ||\n nextCh === \"@\" /* TokenChars.LinkedAlias */ ||\n nextCh === \"|\" /* TokenChars.Pipe */ ||\n nextCh === '\\\\') {\n buf += ch + nextCh;\n scnr.next();\n scnr.next();\n }\n else {\n scnr.resetPeek();\n buf += ch;\n scnr.next();\n }\n }\n else if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n ch === \"}\" /* TokenChars.BraceRight */ ||\n ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n !ch) {\n break;\n }\n else if (ch === CHAR_SP || ch === CHAR_LF) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n }\n else if (isPluralStart(scnr)) {\n break;\n }\n else {\n buf += ch;\n scnr.next();\n }\n }\n else {\n buf += ch;\n scnr.next();\n }\n }\n return buf;\n }\n function readNamedIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let name = '';\n while ((ch = takeNamedIdentifierChar(scnr))) {\n name += ch;\n }\n // Check if takeNamedIdentifierChar stoped because of invalid characters\n const currentChar = scnr.currentChar();\n if (currentChar &&\n currentChar !== '}' &&\n currentChar !== EOF &&\n currentChar !== CHAR_SP &&\n currentChar !== CHAR_LF &&\n currentChar !== '\\u3000') {\n const invalidPart = readInvalidIdentifier(scnr);\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, name + invalidPart);\n return name + invalidPart;\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return name;\n }\n function readListIdentifier(scnr) {\n skipSpaces(scnr);\n let value = '';\n if (scnr.currentChar() === '-') {\n scnr.next();\n value += `-${getDigits(scnr)}`;\n }\n else {\n value += getDigits(scnr);\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return value;\n }\n function isLiteral(ch) {\n return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;\n }\n function readLiteral(scnr) {\n skipSpaces(scnr);\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n let ch = '';\n let literal = '';\n while ((ch = takeChar(scnr, isLiteral))) {\n if (ch === '\\\\') {\n literal += readEscapeSequence(scnr);\n }\n else {\n literal += ch;\n }\n }\n const current = scnr.currentChar();\n if (current === CHAR_LF || current === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n // TODO: Is it correct really?\n if (current === CHAR_LF) {\n scnr.next();\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n }\n return literal;\n }\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n return literal;\n }\n function readEscapeSequence(scnr) {\n const ch = scnr.currentChar();\n switch (ch) {\n case '\\\\':\n case `\\'`: // eslint-disable-line no-useless-escape\n scnr.next();\n return `\\\\${ch}`;\n case 'u':\n return readUnicodeEscapeSequence(scnr, ch, 4);\n case 'U':\n return readUnicodeEscapeSequence(scnr, ch, 6);\n default:\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n return '';\n }\n }\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\n eat(scnr, unicode);\n let sequence = '';\n for (let i = 0; i < digits; i++) {\n const ch = takeHexDigit(scnr);\n if (!ch) {\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n break;\n }\n sequence += ch;\n }\n return `\\\\${unicode}${sequence}`;\n }\n function isInvalidIdentifier(ch) {\n return (ch !== \"{\" /* TokenChars.BraceLeft */ &&\n ch !== \"}\" /* TokenChars.BraceRight */ &&\n ch !== CHAR_SP &&\n ch !== CHAR_LF);\n }\n function readInvalidIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let identifiers = '';\n while ((ch = takeChar(scnr, isInvalidIdentifier))) {\n identifiers += ch;\n }\n return identifiers;\n }\n function readLinkedModifier(scnr) {\n let ch = '';\n let name = '';\n while ((ch = takeIdentifierChar(scnr))) {\n name += ch;\n }\n return name;\n }\n function readLinkedRefer(scnr) {\n const fn = (buf) => {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n ch === \"(\" /* TokenChars.ParenLeft */ ||\n ch === \")\" /* TokenChars.ParenRight */ ||\n !ch) {\n return buf;\n }\n else if (ch === CHAR_SP) {\n return buf;\n }\n else if (ch === CHAR_LF || ch === DOT) {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n else {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n };\n return fn('');\n }\n function readPlural(scnr) {\n skipSpaces(scnr);\n const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n skipSpaces(scnr);\n return plural;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInPlaceholder(scnr, context) {\n let token = null;\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n if (context.braceNest >= 1) {\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n skipSpaces(scnr);\n context.braceNest++;\n return token;\n case \"}\" /* TokenChars.BraceRight */:\n if (context.braceNest > 0 &&\n context.currentType === 2 /* TokenTypes.BraceLeft */) {\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n context.braceNest--;\n context.braceNest > 0 && skipSpaces(scnr);\n if (context.inLinked && context.braceNest === 0) {\n context.inLinked = false;\n }\n return token;\n case \"@\" /* TokenChars.LinkedAlias */:\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = readTokenInLinked(scnr, context) || getEndToken(context);\n context.braceNest = 0;\n return token;\n default: {\n let validNamedIdentifier = true;\n let validListIdentifier = true;\n let validLiteral = true;\n if (isPluralStart(scnr)) {\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (context.braceNest > 0 &&\n (context.currentType === 4 /* TokenTypes.Named */ ||\n context.currentType === 5 /* TokenTypes.List */ ||\n context.currentType === 6 /* TokenTypes.Literal */)) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n context.braceNest = 0;\n return readToken(scnr, context);\n }\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\n token = getToken(context, 4 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\n token = getToken(context, 5 /* TokenTypes.List */, readListIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if ((validLiteral = isLiteralStart(scnr, context))) {\n token = getToken(context, 6 /* TokenTypes.Literal */, readLiteral(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n token = getToken(context, 12 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n skipSpaces(scnr);\n return token;\n }\n break;\n }\n }\n return token;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInLinked(scnr, context) {\n const { currentType } = context;\n let token = null;\n const ch = scnr.currentChar();\n if ((currentType === 7 /* TokenTypes.LinkedAlias */ ||\n currentType === 8 /* TokenTypes.LinkedDot */ ||\n currentType === 11 /* TokenTypes.LinkedModifier */ ||\n currentType === 9 /* TokenTypes.LinkedDelimiter */) &&\n (ch === CHAR_LF || ch === CHAR_SP)) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n switch (ch) {\n case \"@\" /* TokenChars.LinkedAlias */:\n scnr.next();\n token = getToken(context, 7 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n context.inLinked = true;\n return token;\n case \".\" /* TokenChars.LinkedDot */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 8 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n case \":\" /* TokenChars.LinkedDelimiter */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 9 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n default:\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isLinkedDotStart(scnr, context) ||\n isLinkedDelimiterStart(scnr, context)) {\n skipSpaces(scnr);\n return readTokenInLinked(scnr, context);\n }\n if (isLinkedModifierStart(scnr, context)) {\n skipSpaces(scnr);\n return getToken(context, 11 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n }\n if (isLinkedReferStart(scnr, context)) {\n skipSpaces(scnr);\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n // scan the placeholder\n return readTokenInPlaceholder(scnr, context) || token;\n }\n else {\n return getToken(context, 10 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n }\n }\n if (currentType === 7 /* TokenTypes.LinkedAlias */) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n context.braceNest = 0;\n context.inLinked = false;\n return readToken(scnr, context);\n }\n }\n // TODO: We need refactoring of token parsing ...\n function readToken(scnr, context) {\n let token = { type: 13 /* TokenTypes.EOF */ };\n if (context.braceNest > 0) {\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n }\n if (context.inLinked) {\n return readTokenInLinked(scnr, context) || getEndToken(context);\n }\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n case \"}\" /* TokenChars.BraceRight */:\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n scnr.next();\n return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n case \"@\" /* TokenChars.LinkedAlias */:\n return readTokenInLinked(scnr, context) || getEndToken(context);\n default: {\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isTextStart(scnr)) {\n return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n }\n break;\n }\n }\n return token;\n }\n function nextToken() {\n const { currentType, offset, startLoc, endLoc } = _context;\n _context.lastType = currentType;\n _context.lastOffset = offset;\n _context.lastStartLoc = startLoc;\n _context.lastEndLoc = endLoc;\n _context.offset = currentOffset();\n _context.startLoc = currentPosition();\n if (_scnr.currentChar() === EOF) {\n return getToken(_context, 13 /* TokenTypes.EOF */);\n }\n return readToken(_scnr, _context);\n }\n return {\n nextToken,\n currentOffset,\n currentPosition,\n context\n };\n}\n\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\n// Text context escape sequences: \\\\, \\@, \\{, \\}, \\|\nconst TEXT_ESCAPES = /\\\\([\\\\@{}|])/g;\nfunction fromTextEscapeSequence(_match, char) {\n return char;\n}\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n switch (match) {\n case `\\\\\\\\`:\n return `\\\\`;\n // eslint-disable-next-line no-useless-escape\n case `\\\\\\'`:\n // eslint-disable-next-line no-useless-escape\n return `\\'`;\n default: {\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n return String.fromCodePoint(codePoint);\n }\n // invalid ...\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\n return '�';\n }\n }\n}\nfunction createParser(options = {}) {\n const location = options.location !== false;\n const { onError } = options;\n function emitError(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onError) {\n const loc = location ? createLocation(start, end) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$2,\n args\n });\n onError(err);\n }\n }\n function startNode(type, offset, loc) {\n const node = { type };\n if (location) {\n node.start = offset;\n node.end = offset;\n node.loc = { start: loc, end: loc };\n }\n return node;\n }\n function endNode(node, offset, pos, type) {\n if (location) {\n node.end = offset;\n if (node.loc) {\n node.loc.end = pos;\n }\n }\n }\n function parseText(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n node.value = value.replace(TEXT_ESCAPES, fromTextEscapeSequence);\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseList(tokenizer, index) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(5 /* NodeTypes.List */, offset, loc);\n node.index = parseInt(index, 10);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseNamed(tokenizer, key) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n node.key = key;\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLiteral(tokenizer, value) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinkedModifier(tokenizer) {\n const token = tokenizer.nextToken();\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\n const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n if (token.type !== 11 /* TokenTypes.LinkedModifier */) {\n // empty modifier\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n node.value = '';\n endNode(node, offset, loc);\n return {\n nextConsumeToken: token,\n node\n };\n }\n // check token\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.value = token.value || '';\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node\n };\n }\n function parseLinkedKey(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinked(tokenizer) {\n const context = tokenizer.context();\n const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n let token = tokenizer.nextToken();\n if (token.type === 8 /* TokenTypes.LinkedDot */) {\n const parsed = parseLinkedModifier(tokenizer);\n linkedNode.modifier = parsed.node;\n token = parsed.nextConsumeToken || tokenizer.nextToken();\n }\n // asset check token\n if (token.type !== 9 /* TokenTypes.LinkedDelimiter */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n token = tokenizer.nextToken();\n // skip brace left\n if (token.type === 2 /* TokenTypes.BraceLeft */) {\n token = tokenizer.nextToken();\n }\n switch (token.type) {\n case 10 /* TokenTypes.LinkedKey */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n break;\n case 4 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseNamed(tokenizer, token.value || '');\n break;\n case 5 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseList(tokenizer, token.value || '');\n break;\n case 6 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\n break;\n default: {\n // empty key\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n const nextContext = tokenizer.context();\n const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n emptyLinkedKeyNode.value = '';\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n linkedNode.key = emptyLinkedKeyNode;\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n return {\n nextConsumeToken: token,\n node: linkedNode\n };\n }\n }\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node: linkedNode\n };\n }\n function parseMessage(tokenizer) {\n const context = tokenizer.context();\n const startOffset = context.currentType === 1 /* TokenTypes.Pipe */\n ? tokenizer.currentOffset()\n : context.offset;\n const startLoc = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.endLoc\n : context.startLoc;\n const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n node.items = [];\n let nextToken = null;\n do {\n const token = nextToken || tokenizer.nextToken();\n nextToken = null;\n switch (token.type) {\n case 0 /* TokenTypes.Text */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseText(tokenizer, token.value || ''));\n break;\n case 5 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseList(tokenizer, token.value || ''));\n break;\n case 4 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseNamed(tokenizer, token.value || ''));\n break;\n case 6 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseLiteral(tokenizer, token.value || ''));\n break;\n case 7 /* TokenTypes.LinkedAlias */: {\n const parsed = parseLinked(tokenizer);\n node.items.push(parsed.node);\n nextToken = parsed.nextConsumeToken || null;\n break;\n }\n }\n } while (context.currentType !== 13 /* TokenTypes.EOF */ &&\n context.currentType !== 1 /* TokenTypes.Pipe */);\n // adjust message node loc\n const endOffset = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.lastOffset\n : tokenizer.currentOffset();\n const endLoc = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.lastEndLoc\n : tokenizer.currentPosition();\n endNode(node, endOffset, endLoc);\n return node;\n }\n function parsePlural(tokenizer, offset, loc, msgNode) {\n const context = tokenizer.context();\n let hasEmptyMessage = msgNode.items.length === 0;\n const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n node.cases = [];\n node.cases.push(msgNode);\n do {\n const msg = parseMessage(tokenizer);\n if (!hasEmptyMessage) {\n hasEmptyMessage = msg.items.length === 0;\n }\n node.cases.push(msg);\n } while (context.currentType !== 13 /* TokenTypes.EOF */);\n if (hasEmptyMessage) {\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseResource(tokenizer) {\n const context = tokenizer.context();\n const { offset, startLoc } = context;\n const msgNode = parseMessage(tokenizer);\n if (context.currentType === 13 /* TokenTypes.EOF */) {\n return msgNode;\n }\n else {\n return parsePlural(tokenizer, offset, startLoc, msgNode);\n }\n }\n function parse(source) {\n const tokenizer = createTokenizer(source, assign({}, options));\n const context = tokenizer.context();\n const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n if (location && node.loc) {\n node.loc.source = source;\n }\n node.body = parseResource(tokenizer);\n if (options.onCacheKey) {\n node.cacheKey = options.onCacheKey(source);\n }\n // assert whether achieved to EOF\n if (context.currentType !== 13 /* TokenTypes.EOF */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n return { parse };\n}\nfunction getTokenCaption(token) {\n if (token.type === 13 /* TokenTypes.EOF */) {\n return 'EOF';\n }\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n const _context = {\n ast,\n helpers: new Set()\n };\n const context = () => _context;\n const helper = (name) => {\n _context.helpers.add(name);\n return name;\n };\n return { context, helper };\n}\nfunction traverseNodes(nodes, transformer) {\n for (let i = 0; i < nodes.length; i++) {\n traverseNode(nodes[i], transformer);\n }\n}\nfunction traverseNode(node, transformer) {\n // TODO: if we need pre-hook of transform, should be implemented to here\n switch (node.type) {\n case 1 /* NodeTypes.Plural */:\n traverseNodes(node.cases, transformer);\n transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n break;\n case 2 /* NodeTypes.Message */:\n traverseNodes(node.items, transformer);\n break;\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n traverseNode(linked.key, transformer);\n transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n break;\n }\n case 5 /* NodeTypes.List */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"list\" /* HelperNameMap.LIST */);\n break;\n case 4 /* NodeTypes.Named */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n break;\n }\n // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n const transformer = createTransformer(ast);\n transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n // traverse\n ast.body && traverseNode(ast.body, transformer);\n // set meta information\n const context = transformer.context();\n ast.helpers = Array.from(context.helpers);\n}\n\nfunction optimize(ast) {\n const body = ast.body;\n if (body.type === 2 /* NodeTypes.Message */) {\n optimizeMessageNode(body);\n }\n else {\n body.cases.forEach(c => optimizeMessageNode(c));\n }\n return ast;\n}\nfunction optimizeMessageNode(message) {\n if (message.items.length === 1) {\n const item = message.items[0];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n message.static = item.value;\n delete item.value; // optimization for size\n }\n }\n else {\n const values = [];\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n break;\n }\n if (item.value == null) {\n break;\n }\n values.push(item.value);\n }\n if (values.length === message.items.length) {\n message.static = join(values);\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n delete item.value; // optimization for size\n }\n }\n }\n }\n}\n\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n node.t = node.type;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */: {\n const resource = node;\n minify(resource.body);\n resource.b = resource.body;\n delete resource.body;\n break;\n }\n case 1 /* NodeTypes.Plural */: {\n const plural = node;\n const cases = plural.cases;\n for (let i = 0; i < cases.length; i++) {\n minify(cases[i]);\n }\n plural.c = cases;\n delete plural.cases;\n break;\n }\n case 2 /* NodeTypes.Message */: {\n const message = node;\n const items = message.items;\n for (let i = 0; i < items.length; i++) {\n minify(items[i]);\n }\n message.i = items;\n delete message.items;\n if (message.static) {\n message.s = message.static;\n delete message.static;\n }\n break;\n }\n case 3 /* NodeTypes.Text */:\n case 9 /* NodeTypes.Literal */:\n case 8 /* NodeTypes.LinkedModifier */:\n case 7 /* NodeTypes.LinkedKey */: {\n const valueNode = node;\n if (valueNode.value) {\n valueNode.v = valueNode.value;\n delete valueNode.value;\n }\n break;\n }\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n minify(linked.key);\n linked.k = linked.key;\n delete linked.key;\n if (linked.modifier) {\n minify(linked.modifier);\n linked.m = linked.modifier;\n delete linked.modifier;\n }\n break;\n }\n case 5 /* NodeTypes.List */: {\n const list = node;\n list.i = list.index;\n delete list.index;\n break;\n }\n case 4 /* NodeTypes.Named */: {\n const named = node;\n named.k = named.key;\n delete named.key;\n break;\n }\n default:\n if ((process.env.NODE_ENV !== 'production')) {\n throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n domain: ERROR_DOMAIN$1,\n args: [node.type]\n });\n }\n }\n delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///