{"version":3,"file":"index.js","names":[],"sources":["esm/index.js"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { dirname, extname, join, relative, sep } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { resolvePath } from \"@vxrn/utils\";\nimport { cssToReactNativeRuntime } from \"react-native-css-interop/css-to-rn/index.js\";\nimport { configuration, isNativeWorkletsEnabled } from \"./configure\";\nimport { debug, runtimePublicPath, validParsers } from \"./constants\";\nimport {\n  getBabelOptions,\n  transformBabel,\n  transformOxcReactCompiler\n} from \"./transformBabel\";\nimport { shouldSourceMap } from \"./transformSWC\";\nimport {\n  prepareWorkletsForReactCompiler,\n  shouldTransformWorklets,\n  transformWorklets\n} from \"./transformWorklets\";\nimport { getCachedTransform, logCacheStats, setCachedTransform } from \"./cache\";\nexport * from \"./configure\";\nexport * from \"./transformBabel\";\nexport * from \"./transformFlow\";\nexport * from \"./transformSWC\";\nexport * from \"./transformWorklets\";\nexport * from \"./reactNativeCodegen\";\nexport * from \"./transformHermesLoops\";\nexport * from \"./transformHermesAsync\";\nexport * from \"./transformHermesClasses\";\nimport { clearTransformCache } from \"./cache\";\nimport { JS_GLOBALS } from \"./worklets/globals\";\nimport { getClosureVariables } from \"./worklets/scope\";\nexport * from \"./transformMixedNativeModule\";\nconst perfStats = {\n  babel: {\n    totalCalls: 0,\n    totalTransforms: 0,\n    totalTime: 0,\n    byEnvironment: {}\n  },\n  optimizeDeps: {\n    byEnvironment: {}\n  }\n};\nfunction logPerfSummary() {\n  if (!process.env.DEBUG_COMPILER_PERF) {\n    return;\n  }\n  console.info(\"\\n\\u{1F4CA} [Compiler Performance Summary]\");\n  console.info(\n    `Babel: ${perfStats.babel.totalTransforms} transforms / ${perfStats.babel.totalCalls} calls (${(perfStats.babel.totalTransforms / Math.max(perfStats.babel.totalCalls, 1) * 100).toFixed(1)}% transform rate)`\n  );\n  console.info(`Babel total time: ${perfStats.babel.totalTime}ms`);\n  for (const [env, stats] of Object.entries(perfStats.babel.byEnvironment)) {\n    if (stats.transforms > 0) {\n      console.info(\n        `  ${env}: ${stats.transforms} transforms, ${stats.time}ms (${(stats.time / stats.transforms).toFixed(1)}ms avg)`\n      );\n    }\n  }\n  for (const [env, stats] of Object.entries(perfStats.optimizeDeps.byEnvironment)) {\n    const elapsed = Date.now() - stats.startTime;\n    console.info(\n      `optimizeDeps ${env}: checked ${stats.filesChecked} files, transformed ${stats.filesTransformed} (${elapsed}ms)`\n    );\n  }\n}\nconst compilerLog = {\n  compiled: 0,\n  cached: 0,\n  time: 0,\n  // typed loose because the dom lib types setTimeout as number, but node gives\n  // us a Timeout we need to unref so the debounce never holds the process open\n  timer: null\n};\nfunction logCompiled(cached, ms) {\n  if (cached) {\n    compilerLog.cached++;\n  } else {\n    compilerLog.compiled++;\n    compilerLog.time += ms;\n  }\n  if (compilerLog.timer) clearTimeout(compilerLog.timer);\n  compilerLog.timer = setTimeout(() => {\n    const total = compilerLog.compiled + compilerLog.cached;\n    const detail = compilerLog.compiled ? `${compilerLog.compiled} compiled in ${compilerLog.time}ms${compilerLog.cached ? `, ${compilerLog.cached} cached` : \"\"}` : `all cached`;\n    console.info(` \\u{1FA84} [compiler] ${total} file${total === 1 ? \"\" : \"s\"} (${detail})`);\n    compilerLog.compiled = 0;\n    compilerLog.cached = 0;\n    compilerLog.time = 0;\n    compilerLog.timer = null;\n  }, 500);\n  compilerLog.timer.unref?.();\n}\nasync function performBabelTransform({\n  id,\n  code,\n  projectRoot,\n  environment,\n  production,\n  reactForRNVersion,\n  optionsIn\n}) {\n  perfStats.babel.totalCalls++;\n  if (!perfStats.babel.byEnvironment[environment]) {\n    perfStats.babel.byEnvironment[environment] = { calls: 0, transforms: 0, time: 0 };\n  }\n  perfStats.babel.byEnvironment[environment].calls++;\n  const transformProps = {\n    id,\n    code,\n    projectRoot,\n    development: !production,\n    environment,\n    reactForRNVersion\n  };\n  const userTransform = optionsIn?.transform?.(transformProps);\n  if (userTransform === false) {\n    return null;\n  }\n  if (userTransform !== \"swc\" && userTransform !== \"oxc\") {\n    let babelOptions = getBabelOptions({\n      ...transformProps,\n      userSetting: userTransform\n    });\n    if (!babelOptions && shouldTransformWorklets({ id, code })) {\n      babelOptions = { plugins: [] };\n    }\n    if (babelOptions) {\n      const hasCompilerPlugin = babelOptions.plugins?.some(\n        (x) => Array.isArray(x) && x[0] === \"babel-plugin-react-compiler\"\n      );\n      const userBabelConfigPath = typeof babelOptions.configFile === \"string\" ? babelOptions.configFile : null;\n      const cached = getCachedTransform(id, code, environment, userBabelConfigPath);\n      if (cached) {\n        perfStats.babel.byEnvironment[environment].transforms++;\n        if (hasCompilerPlugin && (cached.code.includes(\"react/compiler-runtime\") || cached.code.includes(\"react-compiler-runtime\"))) {\n          debug?.(` \\u{1FA84} [compiler] ${relative(process.cwd(), id)} (cached)`);\n          logCompiled(true, 0);\n        }\n        debug?.(`[babel/cached] ${id}`);\n        return cached;\n      }\n      const isWorkletPlugin = (entry) => {\n        if (!entry) return false;\n        const name = typeof entry === \"string\" ? entry : Array.isArray(entry) ? entry[0] : null;\n        return typeof name === \"string\" && (name.includes(\"react-native-worklets\") || name.includes(\"react-native-reanimated\"));\n      };\n      const workletEntry = babelOptions.plugins?.find(isWorkletPlugin);\n      const workletPluginOptions = Array.isArray(workletEntry) ? workletEntry[1] : void 0;\n      const useWorklets = isNativeWorkletsEnabled() && (Boolean(workletEntry) || shouldTransformWorklets({ id, code }));\n      let curCode = code;\n      let workletPreparation = null;\n      let compilerOut = null;\n      const compilerPluginIndex = babelOptions.plugins?.findIndex(\n        (x) => Array.isArray(x) && x[0] === \"babel-plugin-react-compiler\"\n      ) ?? -1;\n      if (compilerPluginIndex !== -1) {\n        const compilerPluginConfig = babelOptions.plugins[compilerPluginIndex];\n        const compilerPluginOptions = compilerPluginConfig[1] || {};\n        const useBabelCompiler = compilerPluginOptions.compiler === \"babel\" || process.env.ONE_REACT_COMPILER === \"babel\" || process.env.VXRN_REACT_COMPILER === \"babel\";\n        if (!useBabelCompiler) {\n          if (useWorklets) {\n            workletPreparation = prepareWorkletsForReactCompiler(\n              id,\n              curCode,\n              shouldSourceMap()\n            );\n            if (workletPreparation) curCode = workletPreparation.code;\n          }\n          compilerOut = await transformOxcReactCompiler(\n            id,\n            curCode,\n            compilerPluginOptions,\n            shouldSourceMap()\n          );\n          if (compilerOut) curCode = compilerOut.code;\n          babelOptions.plugins.splice(compilerPluginIndex, 1);\n        }\n      }\n      let workletsOut = null;\n      if (useWorklets) {\n        workletsOut = await transformWorklets(id, curCode, shouldSourceMap(), {\n          projectRoot,\n          ...workletPluginOptions\n        });\n        babelOptions.plugins = babelOptions.plugins?.filter(\n          (entry) => !isWorkletPlugin(entry)\n        );\n        curCode = workletsOut.code;\n      }\n      const startTime = Date.now();\n      let babelOut = null;\n      if (babelOptions.plugins?.length === 0 && !babelOptions.configFile && !babelOptions.babelrc) {\n        let finalMap = void 0;\n        if (shouldSourceMap()) {\n          const intermediateMaps = [\n            workletPreparation?.map,\n            compilerOut?.map,\n            workletsOut?.map\n          ].filter(Boolean);\n          if (intermediateMaps.length === 1) {\n            finalMap = intermediateMaps[0];\n          } else if (intermediateMaps.length > 1) {\n            const remapping = (await import(\"@jridgewell/remapping\")).default;\n            finalMap = remapping(intermediateMaps.slice().reverse(), () => null);\n          }\n        }\n        babelOut = { code: curCode, map: finalMap };\n      } else {\n        const babelOptsWithMap = shouldSourceMap() && (workletsOut?.map || compilerOut?.map || workletPreparation?.map) ? { ...babelOptions, sourceMaps: true } : babelOptions;\n        babelOut = await transformBabel(id, curCode, babelOptsWithMap);\n        if (shouldSourceMap() && babelOut?.map) {\n          const priorMaps = [\n            workletPreparation?.map,\n            compilerOut?.map,\n            workletsOut?.map\n          ].filter(Boolean);\n          if (priorMaps.length > 0) {\n            const remapping = (await import(\"@jridgewell/remapping\")).default;\n            babelOut.map = remapping(\n              [babelOut.map, ...priorMaps.slice().reverse()],\n              () => null\n            );\n          }\n        }\n      }\n      const babelTime = Date.now() - startTime;\n      if (babelOut?.code) {\n        perfStats.babel.totalTransforms++;\n        perfStats.babel.totalTime += babelTime;\n        perfStats.babel.byEnvironment[environment].transforms++;\n        perfStats.babel.byEnvironment[environment].time += babelTime;\n        if (hasCompilerPlugin && (babelOut.code.includes(\"react/compiler-runtime\") || babelOut.code.includes(\"react-compiler-runtime\"))) {\n          debug?.(` \\u{1FA84} [compiler] ${relative(process.cwd(), id)} (${babelTime}ms)`);\n          logCompiled(false, babelTime);\n        }\n        debug?.(`[babel] ${id}`);\n        const outCode = `${babelOut.code}\n// vxrn-did-babel`;\n        const result = { code: outCode, map: babelOut.map };\n        setCachedTransform(id, code, result, environment, userBabelConfigPath);\n        return result;\n      }\n    }\n  }\n  return null;\n}\nasync function createVXRNCompilerPlugin(optionsIn) {\n  const reactVersion = await (async () => {\n    const path = resolvePath(\"react/package.json\");\n    const json = JSON.parse(await readFile(path, \"utf-8\"));\n    return json.version;\n  })();\n  const envNames = {\n    ios: true,\n    android: true,\n    client: true,\n    ssr: true\n  };\n  function getEnvName(name) {\n    if (name === \"worker\") return \"ssr\";\n    if (!envNames[name]) throw new Error(`Invalid env: ${name}`);\n    return name;\n  }\n  const reactForRNVersion = reactVersion.split(\".\")[0];\n  const cssTransformCache = /* @__PURE__ */ new Map();\n  const rolldownPath = resolvePath(\"rolldown\");\n  const rolldownNodeMods = rolldownPath.slice(\n    0,\n    rolldownPath.indexOf(sep + \"node_modules\")\n  );\n  let config;\n  return [\n    {\n      name: \"one:compiler-resolve-refresh-runtime\",\n      apply: \"serve\",\n      enforce: \"pre\",\n      // Run before Vite default resolve to avoid syscalls\n      resolveId: (id) => id === runtimePublicPath || id === `${runtimePublicPath}.map` ? id : void 0,\n      load: (id) => {\n        const basePath = dirname(fileURLToPath(import.meta.url));\n        if (id === runtimePublicPath) {\n          return readFileSync(join(basePath, \"refresh-runtime.mjs\"), \"utf-8\").replace(\n            /\\/\\/# sourceMappingURL=.*/,\n            \"\"\n          );\n        }\n        if (id === `${runtimePublicPath}.map`) {\n          return JSON.stringify({ version: 3, sources: [], mappings: \"\" });\n        }\n        return void 0;\n      }\n    },\n    {\n      name: `one:compiler-css-to-js`,\n      // only .css files can match, so let rust reject everything else\n      transform: {\n        filter: { id: /\\.css$/ },\n        handler(codeIn, id) {\n          const environment = getEnvName(this.environment.name);\n          if (configuration.enableNativeCSS && (environment === \"ios\" || environment === \"android\")) {\n            {\n              const data = JSON.stringify(\n                cssToReactNativeRuntime(codeIn, { inlineRem: 16 })\n              );\n              const code = `require(\"nativewind/dist/index.js\").require().StyleSheet.registerCompiled(${data})`;\n              const newId = `${id}.js`;\n              const cssId = newId.replace(rolldownNodeMods + sep, \"\");\n              cssTransformCache.set(cssId, code);\n              return {\n                code,\n                id: newId,\n                map: null\n              };\n            }\n          }\n        }\n      },\n      generateBundle(_, bundle) {\n        const environment = getEnvName(this.environment.name);\n        if (configuration.enableNativeCSS && (environment === \"ios\" || environment === \"android\")) {\n          const rootJSName = Object.keys(bundle).find((i) => {\n            const chunk = bundle[i];\n            return chunk.type == \"chunk\" && chunk.fileName.match(/.[cm]?js(?:\\?.+)?$/) != null;\n          });\n          if (!rootJSName) {\n            throw new Error(`Can't find root js, internal one error`);\n          }\n          const rootJS = bundle[rootJSName];\n          const cssAssets = Object.keys(bundle).filter(\n            (i) => bundle[i].fileName.endsWith(\".css.js\")\n          );\n          for (const name of cssAssets) {\n            delete bundle[name];\n            const jsCSS = cssTransformCache.get(name);\n            rootJS.code = `\n${jsCSS}\n${rootJS.code}\n`;\n          }\n        }\n      }\n    },\n    {\n      name: \"one:compiler\",\n      enforce: \"pre\",\n      config: () => {\n        const nodeModulesFilter = /node_modules[/\\\\].*\\.(tsx?|jsx?|mjs|cjs)$/;\n        const createEnvironmentConfig = (environment) => {\n          if (!perfStats.optimizeDeps.byEnvironment[environment]) {\n            perfStats.optimizeDeps.byEnvironment[environment] = {\n              filesChecked: 0,\n              filesTransformed: 0,\n              startTime: Date.now()\n            };\n          }\n          return {\n            optimizeDeps: {\n              rolldownOptions: {\n                plugins: [\n                  {\n                    name: `transform-before-optimize-deps-${environment}`,\n                    async transform(code, id) {\n                      if (!nodeModulesFilter.test(id)) {\n                        return null;\n                      }\n                      perfStats.optimizeDeps.byEnvironment[environment].filesChecked++;\n                      const production = process.env.NODE_ENV === \"production\" || process.env.NODE_ENV === \"test\";\n                      debug?.(`[rolldown optimizeDeps] ${id}`);\n                      const result = await performBabelTransform({\n                        id,\n                        code,\n                        projectRoot: config.root,\n                        environment,\n                        production,\n                        reactForRNVersion,\n                        optionsIn\n                      });\n                      if (!result) {\n                        return null;\n                      }\n                      perfStats.optimizeDeps.byEnvironment[environment].filesTransformed++;\n                      return {\n                        code: result.code,\n                        map: result.map\n                      };\n                    },\n                    buildEnd() {\n                      if (process.env.DEBUG_COMPILER_PERF) {\n                        const stats = perfStats.optimizeDeps.byEnvironment[environment];\n                        const elapsed = Date.now() - stats.startTime;\n                        console.info(\n                          `[optimizeDeps ${environment}] Done: ${stats.filesChecked} files checked, ${stats.filesTransformed} transformed (${elapsed}ms)`\n                        );\n                      }\n                      const allDone = Object.keys(perfStats.optimizeDeps.byEnvironment).length >= 2;\n                      if (allDone) {\n                        logCacheStats();\n                        logPerfSummary();\n                      }\n                    }\n                  }\n                ]\n              }\n            },\n            define: {\n              \"process.env.NATIVEWIND_OS\": JSON.stringify(\n                environment === \"ios\" || environment === \"android\" ? \"native\" : \"web\"\n              )\n            }\n          };\n        };\n        return {\n          environments: {\n            ios: createEnvironmentConfig(\"ios\"),\n            android: createEnvironmentConfig(\"android\"),\n            client: createEnvironmentConfig(\"client\"),\n            ssr: createEnvironmentConfig(\"ssr\")\n          }\n        };\n      },\n      configResolved(resolvedConfig) {\n        config = resolvedConfig;\n      },\n      async transform(codeIn, _id) {\n        let code = codeIn;\n        const environment = getEnvName(this.environment.name);\n        const isNative = environment === \"ios\" || environment === \"android\";\n        const production = config.command === \"build\" || process.env.NODE_ENV === \"production\" || JSON.parse(\n          this.environment.config?.define?.[\"process.env.NODE_ENV\"] || '\"\"'\n        ) === \"production\";\n        const isEntry = _id.includes(\"one-entry-native\");\n        if (isEntry) {\n          if (isNative && !production) {\n            code = `import '@vxrn/vite-native-client'\n${code}`;\n          }\n          if (isNative && configuration.enableNativewind) {\n            code = `import * as x from 'nativewind'\n${code}`;\n          }\n          return code;\n        }\n        const id = _id.split(\"?\")[0];\n        const extension = extname(id);\n        if (extension === \".css\" || !validParsers.has(extension)) {\n          return;\n        }\n        if (id.includes(`virtual:`)) {\n          return;\n        }\n        if (codeIn.endsWith(`// vxrn-did-babel`)) {\n          debug?.(`[skip babel] ${id}`);\n          return;\n        }\n        return performBabelTransform({\n          id,\n          code: codeIn,\n          projectRoot: config.root,\n          environment,\n          production,\n          reactForRNVersion,\n          optionsIn\n        });\n      }\n    },\n    // wraps client-side TSX/JSX with React Refresh preamble + import.meta.hot.accept\n    // runs after vite:oxc (no enforce:'pre') so it sees the already-transformed code\n    {\n      name: \"one:react-refresh-web\",\n      apply: \"serve\",\n      transform(code, _id) {\n        if (this.environment.name !== \"client\") return;\n        if (code.includes(runtimePublicPath)) return;\n        if (/[?&](?:worker|sharedworker|raw|url)\\b/.test(_id)) return;\n        const id = _id.split(\"?\")[0];\n        if (id.includes(\"node_modules\")) return;\n        if (id.includes(\"virtual:\")) return;\n        if (id === runtimePublicPath) return;\n        const ext = extname(id);\n        if (ext !== \".tsx\" && ext !== \".jsx\") return;\n        const hasRefreshCalls = /\\$RefreshReg\\$\\(/.test(code);\n        let out = `import * as RefreshRuntime from \"${runtimePublicPath}\";\n\n`;\n        if (hasRefreshCalls) {\n          out += `if (!window.$RefreshReg$) throw new Error(\"React refresh preamble was not loaded. Something is wrong.\");\nconst prevRefreshReg = window.$RefreshReg$;\nconst prevRefreshSig = window.$RefreshSig$;\nwindow.$RefreshReg$ = RefreshRuntime.getRefreshReg(\"${id}\");\nwindow.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;\n\n`;\n        }\n        out += code;\n        if (hasRefreshCalls) {\n          out += `\n\nwindow.$RefreshReg$ = prevRefreshReg;\nwindow.$RefreshSig$ = prevRefreshSig;\n`;\n        }\n        out += `\nRefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {\n  RefreshRuntime.registerExportsForReactRefresh(\"${id}\", currentExports);\n  import.meta.hot.accept((nextExports) => {\n    if (!nextExports) return;\n    const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate(\"${id}\", currentExports, nextExports);\n    if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);\n  });\n});\n`;\n        return { code: out, map: null };\n      }\n    }\n  ];\n}\nexport {\n  JS_GLOBALS,\n  clearTransformCache,\n  createVXRNCompilerPlugin,\n  getClosureVariables\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,YAAY;CAChB,OAAO;EACL,YAAY;EACZ,iBAAiB;EACjB,WAAW;EACX,eAAe,CAAC;CAClB;CACA,cAAc,EACZ,eAAe,CAAC,EAClB;AACF;AACA,SAAS,iBAAiB;CACxB,IAAI,CAAC,QAAQ,IAAI,qBAAqB;EACpC;CACF;CACA,QAAQ,KAAK,qCAA4C;CACzD,QAAQ,KACN,UAAU,UAAU,MAAM,gBAAgB,gBAAgB,UAAU,MAAM,WAAW,WAAW,UAAU,MAAM,kBAAkB,KAAK,IAAI,UAAU,MAAM,YAAY,CAAC,IAAI,IAAG,CAAE,QAAQ,CAAC,EAAE,kBAC9L;CACA,QAAQ,KAAK,qBAAqB,UAAU,MAAM,UAAU,GAAG;CAC/D,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,MAAM,aAAa,GAAG;EACxE,IAAI,MAAM,aAAa,GAAG;GACxB,QAAQ,KACN,KAAK,IAAI,IAAI,MAAM,WAAW,eAAe,MAAM,KAAK,OAAO,MAAM,OAAO,MAAM,WAAU,CAAE,QAAQ,CAAC,EAAE,QAC3G;EACF;CACF;CACA,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,aAAa,aAAa,GAAG;EAC/E,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM;EACnC,QAAQ,KACN,gBAAgB,IAAI,YAAY,MAAM,aAAa,sBAAsB,MAAM,iBAAiB,IAAI,QAAQ,IAC9G;CACF;AACF;AACA,MAAM,cAAc;CAClB,UAAU;CACV,QAAQ;CACR,MAAM;CAGN,OAAO;AACT;AACA,SAAS,YAAY,QAAQ,IAAI;CAC/B,IAAI,QAAQ;EACV,YAAY;CACd,OAAO;EACL,YAAY;EACZ,YAAY,QAAQ;CACtB;CACA,IAAI,YAAY,OAAO,aAAa,YAAY,KAAK;CACrD,YAAY,QAAQ,iBAAiB;EACnC,MAAM,QAAQ,YAAY,WAAW,YAAY;EACjD,MAAM,SAAS,YAAY,WAAW,GAAG,YAAY,SAAS,eAAe,YAAY,KAAK,IAAI,YAAY,SAAS,KAAK,YAAY,OAAO,WAAW,OAAO;EACjK,QAAQ,KAAK,yBAAyB,MAAM,OAAO,UAAU,IAAI,KAAK,IAAI,IAAI,OAAO,EAAE;EACvF,YAAY,WAAW;EACvB,YAAY,SAAS;EACrB,YAAY,OAAO;EACnB,YAAY,QAAQ;CACtB,GAAG,GAAG;CACN,YAAY,MAAM,QAAQ;AAC5B;AACA,eAAe,sBAAsB,EACnC,IACA,MACA,aACA,aACA,YACA,mBACA,aACC;CACD,UAAU,MAAM;CAChB,IAAI,CAAC,UAAU,MAAM,cAAc,cAAc;EAC/C,UAAU,MAAM,cAAc,eAAe;GAAE,OAAO;GAAG,YAAY;GAAG,MAAM;EAAE;CAClF;CACA,UAAU,MAAM,cAAc,YAAY,CAAC;CAC3C,MAAM,iBAAiB;EACrB;EACA;EACA;EACA,aAAa,CAAC;EACd;EACA;CACF;CACA,MAAM,gBAAgB,WAAW,YAAY,cAAc;CAC3D,IAAI,kBAAkB,OAAO;EAC3B,OAAO;CACT;CACA,IAAI,kBAAkB,SAAS,kBAAkB,OAAO;EACtD,IAAI,eAAe,gBAAgB;GACjC,GAAG;GACH,aAAa;EACf,CAAC;EACD,IAAI,CAAC,gBAAgB,wBAAwB;GAAE;GAAI;EAAK,CAAC,GAAG;GAC1D,eAAe,EAAE,SAAS,CAAC,EAAE;EAC/B;EACA,IAAI,cAAc;GAChB,MAAM,oBAAoB,aAAa,SAAS,MAC7C,MAAM,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,6BACtC;GACA,MAAM,sBAAsB,OAAO,aAAa,eAAe,WAAW,aAAa,aAAa;GACpG,MAAM,SAAS,mBAAmB,IAAI,MAAM,aAAa,mBAAmB;GAC5E,IAAI,QAAQ;IACV,UAAU,MAAM,cAAc,YAAY,CAAC;IAC3C,IAAI,sBAAsB,OAAO,KAAK,SAAS,wBAAwB,KAAK,OAAO,KAAK,SAAS,wBAAwB,IAAI;KAC3H,QAAQ,yBAAyB,SAAS,QAAQ,IAAI,GAAG,EAAE,EAAE,UAAU;KACvE,YAAY,MAAM,CAAC;IACrB;IACA,QAAQ,kBAAkB,IAAI;IAC9B,OAAO;GACT;GACA,MAAM,mBAAmB,UAAU;IACjC,IAAI,CAAC,OAAO,OAAO;IACnB,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK;IACnF,OAAO,OAAO,SAAS,aAAa,KAAK,SAAS,uBAAuB,KAAK,KAAK,SAAS,yBAAyB;GACvH;GACA,MAAM,eAAe,aAAa,SAAS,KAAK,eAAe;GAC/D,MAAM,uBAAuB,MAAM,QAAQ,YAAY,IAAI,aAAa,KAAK,KAAK;GAClF,MAAM,cAAc,wBAAwB,MAAM,QAAQ,YAAY,KAAK,wBAAwB;IAAE;IAAI;GAAK,CAAC;GAC/G,IAAI,UAAU;GACd,IAAI,qBAAqB;GACzB,IAAI,cAAc;GAClB,MAAM,sBAAsB,aAAa,SAAS,WAC/C,MAAM,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,6BACtC,KAAK,CAAC;GACN,IAAI,wBAAwB,CAAC,GAAG;IAC9B,MAAM,uBAAuB,aAAa,QAAQ;IAClD,MAAM,wBAAwB,qBAAqB,MAAM,CAAC;IAC1D,MAAM,mBAAmB,sBAAsB,aAAa,WAAW,QAAQ,IAAI,uBAAuB,WAAW,QAAQ,IAAI,wBAAwB;IACzJ,IAAI,CAAC,kBAAkB;KACrB,IAAI,aAAa;MACf,qBAAqB,gCACnB,IACA,SACA,gBAAgB,CAClB;MACA,IAAI,oBAAoB,UAAU,mBAAmB;KACvD;KACA,cAAc,MAAM,0BAClB,IACA,SACA,uBACA,gBAAgB,CAClB;KACA,IAAI,aAAa,UAAU,YAAY;KACvC,aAAa,QAAQ,OAAO,qBAAqB,CAAC;IACpD;GACF;GACA,IAAI,cAAc;GAClB,IAAI,aAAa;IACf,cAAc,MAAM,kBAAkB,IAAI,SAAS,gBAAgB,GAAG;KACpE;KACA,GAAG;IACL,CAAC;IACD,aAAa,UAAU,aAAa,SAAS,QAC1C,UAAU,CAAC,gBAAgB,KAAK,CACnC;IACA,UAAU,YAAY;GACxB;GACA,MAAM,YAAY,KAAK,IAAI;GAC3B,IAAI,WAAW;GACf,IAAI,aAAa,SAAS,WAAW,KAAK,CAAC,aAAa,cAAc,CAAC,aAAa,SAAS;IAC3F,IAAI,WAAW,KAAK;IACpB,IAAI,gBAAgB,GAAG;KACrB,MAAM,mBAAmB;MACvB,oBAAoB;MACpB,aAAa;MACb,aAAa;KACf,CAAC,CAAC,OAAO,OAAO;KAChB,IAAI,iBAAiB,WAAW,GAAG;MACjC,WAAW,iBAAiB;KAC9B,OAAO,IAAI,iBAAiB,SAAS,GAAG;MACtC,MAAM,aAAa,MAAM,OAAO,yBAAwB,CAAE;MAC1D,WAAW,UAAU,iBAAiB,MAAM,CAAC,CAAC,QAAQ,SAAS,IAAI;KACrE;IACF;IACA,WAAW;KAAE,MAAM;KAAS,KAAK;IAAS;GAC5C,OAAO;IACL,MAAM,mBAAmB,gBAAgB,MAAM,aAAa,OAAO,aAAa,OAAO,oBAAoB,OAAO;KAAE,GAAG;KAAc,YAAY;IAAK,IAAI;IAC1J,WAAW,MAAM,eAAe,IAAI,SAAS,gBAAgB;IAC7D,IAAI,gBAAgB,KAAK,UAAU,KAAK;KACtC,MAAM,YAAY;MAChB,oBAAoB;MACpB,aAAa;MACb,aAAa;KACf,CAAC,CAAC,OAAO,OAAO;KAChB,IAAI,UAAU,SAAS,GAAG;MACxB,MAAM,aAAa,MAAM,OAAO,yBAAwB,CAAE;MAC1D,SAAS,MAAM,UACb,CAAC,SAAS,KAAK,GAAG,UAAU,MAAM,CAAC,CAAC,QAAQ,CAAC,SACvC,IACR;KACF;IACF;GACF;GACA,MAAM,YAAY,KAAK,IAAI,IAAI;GAC/B,IAAI,UAAU,MAAM;IAClB,UAAU,MAAM;IAChB,UAAU,MAAM,aAAa;IAC7B,UAAU,MAAM,cAAc,YAAY,CAAC;IAC3C,UAAU,MAAM,cAAc,YAAY,CAAC,QAAQ;IACnD,IAAI,sBAAsB,SAAS,KAAK,SAAS,wBAAwB,KAAK,SAAS,KAAK,SAAS,wBAAwB,IAAI;KAC/H,QAAQ,yBAAyB,SAAS,QAAQ,IAAI,GAAG,EAAE,EAAE,IAAI,UAAU,IAAI;KAC/E,YAAY,OAAO,SAAS;IAC9B;IACA,QAAQ,WAAW,IAAI;IACvB,MAAM,UAAU,GAAG,SAAS,KAAK;;IAEjC,MAAM,SAAS;KAAE,MAAM;KAAS,KAAK,SAAS;IAAI;IAClD,mBAAmB,IAAI,MAAM,QAAQ,aAAa,mBAAmB;IACrE,OAAO;GACT;EACF;CACF;CACA,OAAO;AACT;AACA,eAAe,yBAAyB,WAAW;CACjD,MAAM,eAAe,OAAO,YAAY;EACtC,MAAM,OAAO,YAAY,oBAAoB;EAC7C,MAAM,OAAO,KAAK,MAAM,MAAM,SAAS,MAAM,OAAO,CAAC;EACrD,OAAO,KAAK;CACd,EAAC,CAAE;CACH,MAAM,WAAW;EACf,KAAK;EACL,SAAS;EACT,QAAQ;EACR,KAAK;CACP;CACA,SAAS,WAAW,MAAM;EACxB,IAAI,SAAS,UAAU,OAAO;EAC9B,IAAI,CAAC,SAAS,OAAO,MAAM,IAAI,MAAM,gBAAgB,MAAM;EAC3D,OAAO;CACT;CACA,MAAM,oBAAoB,aAAa,MAAM,GAAG,CAAC,CAAC;CAClD,MAAM,oCAAoC,IAAI,IAAI;CAClD,MAAM,eAAe,YAAY,UAAU;CAC3C,MAAM,mBAAmB,aAAa,MACpC,GACA,aAAa,QAAQ,MAAM,cAAc,CAC3C;CACA,IAAI;CACJ,OAAO;EACL;GACE,MAAM;GACN,OAAO;GACP,SAAS;GAET,YAAY,OAAO,OAAO,qBAAqB,OAAO,GAAG,kBAAkB,QAAQ,KAAK,KAAK;GAC7F,OAAO,OAAO;IACZ,MAAM,WAAW,QAAQ,cAAc,YAAY,GAAG,CAAC;IACvD,IAAI,OAAO,mBAAmB;KAC5B,OAAO,aAAa,KAAK,UAAU,qBAAqB,GAAG,OAAO,CAAC,CAAC,QAClE,6BACA,EACF;IACF;IACA,IAAI,OAAO,GAAG,kBAAkB,OAAO;KACrC,OAAO,KAAK,UAAU;MAAE,SAAS;MAAG,SAAS,CAAC;MAAG,UAAU;KAAG,CAAC;IACjE;IACA,OAAO,KAAK;GACd;EACF;EACA;GACE,MAAM;GAEN,WAAW;IACT,QAAQ,EAAE,IAAI,SAAS;IACvB,QAAQ,QAAQ,IAAI;KAClB,MAAM,cAAc,WAAW,KAAK,YAAY,IAAI;KACpD,IAAI,cAAc,oBAAoB,gBAAgB,SAAS,gBAAgB,YAAY;MACzF;OACE,MAAM,OAAO,KAAK,UAChB,wBAAwB,QAAQ,EAAE,WAAW,GAAG,CAAC,CACnD;OACA,MAAM,OAAO,6EAA6E,KAAK;OAC/F,MAAM,QAAQ,GAAG,GAAG;OACpB,MAAM,QAAQ,MAAM,QAAQ,mBAAmB,KAAK,EAAE;OACtD,kBAAkB,IAAI,OAAO,IAAI;OACjC,OAAO;QACL;QACA,IAAI;QACJ,KAAK;OACP;MACF;KACF;IACF;GACF;GACA,eAAe,GAAG,QAAQ;IACxB,MAAM,cAAc,WAAW,KAAK,YAAY,IAAI;IACpD,IAAI,cAAc,oBAAoB,gBAAgB,SAAS,gBAAgB,YAAY;KACzF,MAAM,aAAa,OAAO,KAAK,MAAM,CAAC,CAAC,MAAM,MAAM;MACjD,MAAM,QAAQ,OAAO;MACrB,OAAO,MAAM,QAAQ,WAAW,MAAM,SAAS,MAAM,oBAAoB,KAAK;KAChF,CAAC;KACD,IAAI,CAAC,YAAY;MACf,MAAM,IAAI,MAAM,wCAAwC;KAC1D;KACA,MAAM,SAAS,OAAO;KACtB,MAAM,YAAY,OAAO,KAAK,MAAM,CAAC,CAAC,QACnC,MAAM,OAAO,EAAE,CAAC,SAAS,SAAS,SAAS,CAC9C;KACA,KAAK,MAAM,QAAQ,WAAW;MAC5B,OAAO,OAAO;MACd,MAAM,QAAQ,kBAAkB,IAAI,IAAI;MACxC,OAAO,OAAO;EACxB,MAAM;EACN,OAAO,KAAK;;KAEJ;IACF;GACF;EACF;EACA;GACE,MAAM;GACN,SAAS;GACT,cAAc;IACZ,MAAM,oBAAoB;IAC1B,MAAM,2BAA2B,gBAAgB;KAC/C,IAAI,CAAC,UAAU,aAAa,cAAc,cAAc;MACtD,UAAU,aAAa,cAAc,eAAe;OAClD,cAAc;OACd,kBAAkB;OAClB,WAAW,KAAK,IAAI;MACtB;KACF;KACA,OAAO;MACL,cAAc,EACZ,iBAAiB,EACf,SAAS,CACP;OACE,MAAM,kCAAkC;OACxC,MAAM,UAAU,MAAM,IAAI;QACxB,IAAI,CAAC,kBAAkB,KAAK,EAAE,GAAG;SAC/B,OAAO;QACT;QACA,UAAU,aAAa,cAAc,YAAY,CAAC;QAClD,MAAM,aAAa,QAAQ,IAAI,aAAa,gBAAgB,QAAQ,IAAI,aAAa;QACrF,QAAQ,2BAA2B,IAAI;QACvC,MAAM,SAAS,MAAM,sBAAsB;SACzC;SACA;SACA,aAAa,OAAO;SACpB;SACA;SACA;SACA;QACF,CAAC;QACD,IAAI,CAAC,QAAQ;SACX,OAAO;QACT;QACA,UAAU,aAAa,cAAc,YAAY,CAAC;QAClD,OAAO;SACL,MAAM,OAAO;SACb,KAAK,OAAO;QACd;OACF;OACA,WAAW;QACT,IAAI,QAAQ,IAAI,qBAAqB;SACnC,MAAM,QAAQ,UAAU,aAAa,cAAc;SACnD,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM;SACnC,QAAQ,KACN,iBAAiB,YAAY,UAAU,MAAM,aAAa,kBAAkB,MAAM,iBAAiB,gBAAgB,QAAQ,IAC7H;QACF;QACA,MAAM,UAAU,OAAO,KAAK,UAAU,aAAa,aAAa,CAAC,CAAC,UAAU;QAC5E,IAAI,SAAS;SACX,cAAc;SACd,eAAe;QACjB;OACF;MACF,CACF,EACF,EACF;MACA,QAAQ,EACN,6BAA6B,KAAK,UAChC,gBAAgB,SAAS,gBAAgB,YAAY,WAAW,KAClE,EACF;KACF;IACF;IACA,OAAO,EACL,cAAc;KACZ,KAAK,wBAAwB,KAAK;KAClC,SAAS,wBAAwB,SAAS;KAC1C,QAAQ,wBAAwB,QAAQ;KACxC,KAAK,wBAAwB,KAAK;IACpC,EACF;GACF;GACA,eAAe,gBAAgB;IAC7B,SAAS;GACX;GACA,MAAM,UAAU,QAAQ,KAAK;IAC3B,IAAI,OAAO;IACX,MAAM,cAAc,WAAW,KAAK,YAAY,IAAI;IACpD,MAAM,WAAW,gBAAgB,SAAS,gBAAgB;IAC1D,MAAM,aAAa,OAAO,YAAY,WAAW,QAAQ,IAAI,aAAa,gBAAgB,KAAK,MAC7F,KAAK,YAAY,QAAQ,SAAS,2BAA2B,MAC/D,MAAM;IACN,MAAM,UAAU,IAAI,SAAS,kBAAkB;IAC/C,IAAI,SAAS;KACX,IAAI,YAAY,CAAC,YAAY;MAC3B,OAAO;EACjB;KACQ;KACA,IAAI,YAAY,cAAc,kBAAkB;MAC9C,OAAO;EACjB;KACQ;KACA,OAAO;IACT;IACA,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;IAC1B,MAAM,YAAY,QAAQ,EAAE;IAC5B,IAAI,cAAc,UAAU,CAAC,aAAa,IAAI,SAAS,GAAG;KACxD;IACF;IACA,IAAI,GAAG,SAAS,UAAU,GAAG;KAC3B;IACF;IACA,IAAI,OAAO,SAAS,mBAAmB,GAAG;KACxC,QAAQ,gBAAgB,IAAI;KAC5B;IACF;IACA,OAAO,sBAAsB;KAC3B;KACA,MAAM;KACN,aAAa,OAAO;KACpB;KACA;KACA;KACA;IACF,CAAC;GACH;EACF;EAGA;GACE,MAAM;GACN,OAAO;GACP,UAAU,MAAM,KAAK;IACnB,IAAI,KAAK,YAAY,SAAS,UAAU;IACxC,IAAI,KAAK,SAAS,iBAAiB,GAAG;IACtC,IAAI,wCAAwC,KAAK,GAAG,GAAG;IACvD,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,SAAS,cAAc,GAAG;IACjC,IAAI,GAAG,SAAS,UAAU,GAAG;IAC7B,IAAI,OAAO,mBAAmB;IAC9B,MAAM,MAAM,QAAQ,EAAE;IACtB,IAAI,QAAQ,UAAU,QAAQ,QAAQ;IACtC,MAAM,kBAAkB,mBAAmB,KAAK,IAAI;IACpD,IAAI,MAAM,oCAAoC,kBAAkB;;;IAGhE,IAAI,iBAAiB;KACnB,OAAO;;;sDAGqC,GAAG;;;;IAIjD;IACA,OAAO;IACP,IAAI,iBAAiB;KACnB,OAAO;;;;;IAKT;IACA,OAAO;;mDAEoC,GAAG;;;wFAGkC,GAAG;;;;;IAKnF,OAAO;KAAE,MAAM;KAAK,KAAK;IAAK;GAChC;EACF;CACF;AACF"}