@jpkme/diff-review 0.1.7 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +38 -15
  2. package/bin/diff-review.mjs +156 -34
  3. package/lib/acp-policy.mjs +136 -0
  4. package/lib/acp-policy.test.mjs +83 -0
  5. package/lib/acp-shell.mjs +379 -0
  6. package/lib/acp-shell.test.mjs +127 -0
  7. package/lib/acp.mjs +368 -0
  8. package/lib/acp.test.mjs +58 -0
  9. package/lib/agent-login.mjs +105 -0
  10. package/lib/agents.mjs +102 -14
  11. package/lib/agents.test.mjs +4 -6
  12. package/lib/check-report.mjs +31 -12
  13. package/lib/check-report.test.mjs +1 -0
  14. package/lib/extract-cache.test.mjs +162 -0
  15. package/lib/extract.mjs +197 -1
  16. package/lib/model-label.mjs +263 -0
  17. package/lib/model-label.test.mjs +77 -0
  18. package/lib/models-cache.mjs +75 -0
  19. package/lib/models-cache.test.mjs +50 -0
  20. package/lib/output-name.mjs +8 -0
  21. package/lib/prompt.mjs +178 -31
  22. package/lib/review-dir.mjs +108 -0
  23. package/lib/review-meta.mjs +35 -0
  24. package/lib/review-meta.test.mjs +41 -0
  25. package/lib/review-prep.mjs +63 -0
  26. package/lib/review.test.mjs +1 -0
  27. package/lib/validate.mjs +28 -11
  28. package/lib/validate.test.mjs +25 -0
  29. package/lib/wait-output.mjs +46 -23
  30. package/lib/wait-output.test.mjs +25 -1
  31. package/package.json +3 -1
  32. package/schema.json +9 -10
  33. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css +1 -0
  34. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css.br +0 -0
  35. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css.gz +0 -0
  36. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css +1 -0
  37. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css.br +0 -0
  38. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css.gz +0 -0
  39. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css +1 -0
  40. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css.br +0 -0
  41. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css.gz +0 -0
  42. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js +2 -0
  43. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js.br +0 -0
  44. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js.gz +0 -0
  45. package/web/build/client/_app/immutable/chunks/CPyWH418.js +1 -0
  46. package/web/build/client/_app/immutable/chunks/CPyWH418.js.br +0 -0
  47. package/web/build/client/_app/immutable/chunks/CPyWH418.js.gz +0 -0
  48. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js +3 -0
  49. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.br +0 -0
  50. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.gz +0 -0
  51. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js +210 -0
  52. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js.br +0 -0
  53. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js.gz +0 -0
  54. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js +1 -0
  55. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.br +0 -0
  56. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.gz +0 -0
  57. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js +2 -0
  58. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js.br +0 -0
  59. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js.gz +0 -0
  60. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js +1 -0
  61. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js.br +0 -0
  62. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js.gz +0 -0
  63. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js +1 -0
  64. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js.br +0 -0
  65. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js.gz +0 -0
  66. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js +1 -0
  67. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js.br +2 -0
  68. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js.gz +0 -0
  69. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js +10 -0
  70. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js.br +0 -0
  71. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js.gz +0 -0
  72. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js +171 -0
  73. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js.br +0 -0
  74. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js.gz +0 -0
  75. package/web/build/client/_app/version.json +1 -1
  76. package/web/build/client/_app/version.json.br +0 -0
  77. package/web/build/client/_app/version.json.gz +0 -0
  78. package/web/build/handler.js +3 -3
  79. package/web/build/index.js +3 -3
  80. package/web/build/server/chunks/{0-SseDy__O.js → 0-BYok4D0n.js} +2 -2
  81. package/web/build/server/chunks/{0-SseDy__O.js.map → 0-BYok4D0n.js.map} +1 -1
  82. package/web/build/server/chunks/1-C7zcB0q0.js +7 -0
  83. package/web/build/server/chunks/1-C7zcB0q0.js.map +1 -0
  84. package/web/build/server/chunks/2-v6ejI_0-.js +7 -0
  85. package/web/build/server/chunks/2-v6ejI_0-.js.map +1 -0
  86. package/web/build/server/chunks/3-DAAmG6VX.js +7 -0
  87. package/web/build/server/chunks/3-DAAmG6VX.js.map +1 -0
  88. package/web/build/server/chunks/_server.ts-qYVrMYPB.js +62 -0
  89. package/web/build/server/chunks/_server.ts-qYVrMYPB.js.map +1 -0
  90. package/web/build/server/chunks/agent-sessions-DSqGavSn.js +2688 -0
  91. package/web/build/server/chunks/agent-sessions-DSqGavSn.js.map +1 -0
  92. package/web/build/server/chunks/{remote-1g4ayag-B8KZPTkn.js → git-review-CpO_G8z8.js} +70 -704
  93. package/web/build/server/chunks/git-review-CpO_G8z8.js.map +1 -0
  94. package/web/build/server/chunks/{handler-cq3QoEzW.js → handler-Di1wJQuU.js} +3 -3
  95. package/web/build/server/chunks/{handler-cq3QoEzW.js.map → handler-Di1wJQuU.js.map} +1 -1
  96. package/web/build/server/chunks/hooks.server-BLOHobEK.js +42 -0
  97. package/web/build/server/chunks/hooks.server-BLOHobEK.js.map +1 -0
  98. package/web/build/server/chunks/{index.js-D4qkHe3r.js → index.js-yLYmrAWy.js} +3 -5
  99. package/web/build/server/chunks/index.js-yLYmrAWy.js.map +1 -0
  100. package/web/build/server/chunks/manifest.js-CXj8IIo3.js +58 -0
  101. package/web/build/server/chunks/manifest.js-CXj8IIo3.js.map +1 -0
  102. package/web/build/server/chunks/remote-1g4ayag-BiJeU0Pk.js +144 -0
  103. package/web/build/server/chunks/remote-1g4ayag-BiJeU0Pk.js.map +1 -0
  104. package/web/build/server/chunks/remote-wh6t6j-CHanXurm.js +162 -0
  105. package/web/build/server/chunks/remote-wh6t6j-CHanXurm.js.map +1 -0
  106. package/web/build/server/chunks/validate-BsTKyhsq.js +1073 -0
  107. package/web/build/server/chunks/validate-BsTKyhsq.js.map +1 -0
  108. package/web/build/client/_app/immutable/assets/2.COsJT9ly.css +0 -1
  109. package/web/build/client/_app/immutable/assets/2.COsJT9ly.css.br +0 -0
  110. package/web/build/client/_app/immutable/assets/2.COsJT9ly.css.gz +0 -0
  111. package/web/build/client/_app/immutable/assets/3.qhPDz1xQ.css +0 -1
  112. package/web/build/client/_app/immutable/assets/3.qhPDz1xQ.css.br +0 -0
  113. package/web/build/client/_app/immutable/assets/3.qhPDz1xQ.css.gz +0 -0
  114. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css +0 -1
  115. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css.br +0 -0
  116. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css.gz +0 -0
  117. package/web/build/client/_app/immutable/chunks/C4--ziCr.js +0 -2
  118. package/web/build/client/_app/immutable/chunks/C4--ziCr.js.br +0 -0
  119. package/web/build/client/_app/immutable/chunks/C4--ziCr.js.gz +0 -0
  120. package/web/build/client/_app/immutable/chunks/D8sAxZVo.js +0 -174
  121. package/web/build/client/_app/immutable/chunks/D8sAxZVo.js.br +0 -0
  122. package/web/build/client/_app/immutable/chunks/D8sAxZVo.js.gz +0 -0
  123. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js +0 -3
  124. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js.br +0 -0
  125. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js.gz +0 -0
  126. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js +0 -1
  127. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js.br +0 -0
  128. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js.gz +0 -0
  129. package/web/build/client/_app/immutable/entry/app.Dl9OTE-n.js +0 -2
  130. package/web/build/client/_app/immutable/entry/app.Dl9OTE-n.js.br +0 -0
  131. package/web/build/client/_app/immutable/entry/app.Dl9OTE-n.js.gz +0 -0
  132. package/web/build/client/_app/immutable/entry/start.CDz8Qs8Q.js +0 -1
  133. package/web/build/client/_app/immutable/entry/start.CDz8Qs8Q.js.br +0 -1
  134. package/web/build/client/_app/immutable/entry/start.CDz8Qs8Q.js.gz +0 -0
  135. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js +0 -1
  136. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js.br +0 -1
  137. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js.gz +0 -0
  138. package/web/build/client/_app/immutable/nodes/1.B1c4AH1e.js +0 -1
  139. package/web/build/client/_app/immutable/nodes/1.B1c4AH1e.js.br +0 -0
  140. package/web/build/client/_app/immutable/nodes/1.B1c4AH1e.js.gz +0 -0
  141. package/web/build/client/_app/immutable/nodes/2.Dx-oOpEf.js +0 -66
  142. package/web/build/client/_app/immutable/nodes/2.Dx-oOpEf.js.br +0 -0
  143. package/web/build/client/_app/immutable/nodes/2.Dx-oOpEf.js.gz +0 -0
  144. package/web/build/client/_app/immutable/nodes/3.C-USexyX.js +0 -170
  145. package/web/build/client/_app/immutable/nodes/3.C-USexyX.js.br +0 -0
  146. package/web/build/client/_app/immutable/nodes/3.C-USexyX.js.gz +0 -0
  147. package/web/build/server/chunks/1-0X6Jp9nH.js +0 -7
  148. package/web/build/server/chunks/1-0X6Jp9nH.js.map +0 -1
  149. package/web/build/server/chunks/2-HlcVALg6.js +0 -7
  150. package/web/build/server/chunks/2-HlcVALg6.js.map +0 -1
  151. package/web/build/server/chunks/3-BN1eS7L2.js +0 -7
  152. package/web/build/server/chunks/3-BN1eS7L2.js.map +0 -1
  153. package/web/build/server/chunks/hooks.server-DERFlOe1.js +0 -14
  154. package/web/build/server/chunks/hooks.server-DERFlOe1.js.map +0 -1
  155. package/web/build/server/chunks/index.js-D4qkHe3r.js.map +0 -1
  156. package/web/build/server/chunks/manifest.js-DQHMKyJh.js +0 -50
  157. package/web/build/server/chunks/manifest.js-DQHMKyJh.js.map +0 -1
  158. package/web/build/server/chunks/remote-1g4ayag-B8KZPTkn.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-BsTKyhsq.js","sources":["../../../.svelte-kit/output/server/chunks/validate.js"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from \"node:fs\";\nimport { execFileSync } from \"node:child_process\";\nimport { basename, join, resolve } from \"node:path\";\n//#region ../lib/fingerprint.mjs\n/**\n* Tips cortos de SHA. Sin APIs de Node: la UI lo importa para armar el nombre del JSON.\n*/\nfunction shortSha(sha, n = 10) {\n\tconst hex = String(sha || \"\").toLowerCase().replace(/[^a-f0-9]/g, \"\");\n\treturn hex.length >= 7 ? hex.slice(0, n) : \"\";\n}\nfunction fingerprint(branchSha, baseSha) {\n\tconst a = shortSha(branchSha);\n\tconst b = shortSha(baseSha);\n\tif (!a || !b) return null;\n\treturn `${a}-${b}`;\n}\n//#endregion\n//#region ../lib/output-name.mjs\n/**\n* Nombre del JSON que escribe el agente.\n* Preferido: tips cortos branch/base. Legacy (con stamp o sin tips) sigue válido al importar.\n*/\n/** Prefijo del formato actual. */\nvar OUTPUT_PREFIX = \"diff-rev\";\n/** Prefijo legacy (sin tips / con stamp). */\nvar OUTPUT_PREFIX_LEGACY = \"diff-review-output\";\n/** Carpeta (en la raíz del repo revisado) donde va el JSON, el diff y la sesión del agente. */\nvar OUTPUT_DIR = \".diff-review\";\n/** Path relativo a la raíz del repo, con `/` (el que se le da al agente): `.diff-review/<nombre>`. */\nfunction outputRelPath(filename) {\n\treturn `${OUTPUT_DIR}/${String(filename || \"\").replace(/^.*[\\\\/]/, \"\")}`;\n}\n/** Nombre legacy fijo. */\nvar OUTPUT_FILENAME_LEGACY = `${OUTPUT_PREFIX_LEGACY}.json`;\n/**\n* Válidos:\n* - diff-rev_{branchTip}_{baseTip}.json\n* - diff-report_{branchTip}-{baseTip}_YYYYMMDD-HHmmss.json (legacy)\n* - diff-review-output.json / diff-review-output-YYYYMMDD-HHmmss.json (legacy)\n*/\nvar OUTPUT_FILENAME_RE = /^(?:diff-rev_[0-9a-f]{7,12}_[0-9a-f]{7,12}|diff-report_[0-9a-f]{7,12}-[0-9a-f]{7,12}_\\d{8}-\\d{6}|diff-review-output(?:-\\d{8}-\\d{6})?)\\.json$/i;\n/**\n* @param {{ branchSha?: string, baseSha?: string }} [input]\n* @returns {string}\n* con tips: diff-rev_aaaaaaaaaa_bbbbbbbbbb.json\n* sin tips: diff-review-output.json\n*/\nfunction makeOutputFilename(input = {}) {\n\tconst opts = input instanceof Date ? {} : input || {};\n\tconst fp = fingerprint(opts.branchSha, opts.baseSha);\n\tif (fp) {\n\t\tconst [branchTip, baseTip] = fp.split(\"-\");\n\t\tif (branchTip && baseTip) return `${OUTPUT_PREFIX}_${branchTip}_${baseTip}.json`;\n\t}\n\treturn OUTPUT_FILENAME_LEGACY;\n}\nfunction isOutputFilename(name) {\n\treturn OUTPUT_FILENAME_RE.test(String(name || \"\").trim());\n}\n//#endregion\n//#region ../lib/config.mjs\nvar DEFAULT_IGNORE = [\n\t\"**/package-lock.json\",\n\t\"**/pnpm-lock.yaml\",\n\t\"**/yarn.lock\",\n\t\"**/bun.lock\",\n\t\"**/bun.lockb\",\n\t\"**/*.g.cs\",\n\t\"**/*Snapshot.cs\",\n\t\"**/*.Designer.cs\",\n\t\"**/node_modules/**\",\n\t\"**/.svelte-kit/**\",\n\t\"**/dist/**\",\n\t\"**/build/**\",\n\t\"**/*.min.js\",\n\t\"**/*.min.css\",\n\t\"**/CODE_REVIEW_CORRECTNESS_FINDINGS.md\"\n];\nvar STORE_DIFF_MAX = 4e5;\nvar GUIDELINE_FILES = [\n\t\"REVIEW.md\",\n\t\"CLAUDE.md\",\n\t\"AGENTS.md\"\n];\nfunction unquote(s) {\n\tconst t = String(s || \"\").trim();\n\tif (t.startsWith(\"\\\"\") && t.endsWith(\"\\\"\") || t.startsWith(\"'\") && t.endsWith(\"'\")) return t.slice(1, -1);\n\treturn t;\n}\n/** Minimal YAML: `key: value` and `key:\\n - item`. */\nfunction parseSimpleYaml(text) {\n\tconst result = {};\n\tlet key = null;\n\tfor (const raw of String(text || \"\").split(/\\r?\\n/)) {\n\t\tif (!raw.trim() || raw.trim().startsWith(\"#\")) continue;\n\t\tconst list = raw.match(/^\\s+-\\s+(.*)$/);\n\t\tif (list && key) {\n\t\t\tif (!Array.isArray(result[key])) result[key] = [];\n\t\t\tresult[key].push(unquote(list[1]));\n\t\t\tcontinue;\n\t\t}\n\t\tconst kv = raw.match(/^([A-Za-z][\\w]*)\\s*:\\s*(.*)$/);\n\t\tif (!kv) continue;\n\t\tkey = kv[1];\n\t\tconst v = kv[2].trim();\n\t\tresult[key] = v === \"\" ? [] : unquote(v);\n\t}\n\treturn result;\n}\nfunction globToRegExp(glob) {\n\tlet g = String(glob || \"\").replace(/\\\\/g, \"/\");\n\tif (!g.includes(\"/\")) g = `**/${g}`;\n\tlet s = \"\";\n\tfor (let i = 0; i < g.length; i++) {\n\t\tconst c = g[i];\n\t\tif (c === \"*\" && g[i + 1] === \"*\") if (g[i + 2] === \"/\") {\n\t\t\ts += \"(?:.*/)?\";\n\t\t\ti += 2;\n\t\t} else {\n\t\t\ts += \".*\";\n\t\t\ti += 1;\n\t\t}\n\t\telse if (c === \"*\") s += \"[^/]*\";\n\t\telse if (c === \"?\") s += \"[^/]\";\n\t\telse if (\"+()[]{}|.^$\".includes(c)) s += `\\\\${c}`;\n\t\telse s += c;\n\t}\n\treturn new RegExp(`^${s}$`, \"i\");\n}\nfunction globMatch(filePath, pattern) {\n\tconst norm = String(filePath || \"\").replace(/\\\\/g, \"/\");\n\treturn globToRegExp(pattern).test(norm);\n}\nfunction isIgnored(filePath, patterns) {\n\treturn (patterns || []).some((p) => globMatch(filePath, p));\n}\nfunction isTestPath(filePath) {\n\tconst p = String(filePath || \"\").replace(/\\\\/g, \"/\");\n\treturn /(^|\\/)(__tests__|tests?|spec)s?(\\/|$)/i.test(p) || /\\.(test|spec)\\.[^.]+$/i.test(p);\n}\nfunction readIfExists(path) {\n\ttry {\n\t\treturn existsSync(path) ? readFileSync(path, \"utf8\") : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction loadReviewConfig(repo) {\n\tconst jsonText = readIfExists(join(repo, \".diff-review.json\"));\n\tconst yamlText = readIfExists(join(repo, \".diff-review.yml\")) || readIfExists(join(repo, \".diff-review.yaml\"));\n\tlet extra = {};\n\tif (jsonText) try {\n\t\textra = JSON.parse(jsonText);\n\t} catch {\n\t\textra = {};\n\t}\n\telse if (yamlText) extra = parseSimpleYaml(yamlText);\n\tconst extraIgnore = Array.isArray(extra.ignore) ? extra.ignore.map(String) : [];\n\tconst rulesFile = extra.rulesFile ? String(extra.rulesFile) : \"REVIEW.md\";\n\tconst rules = readIfExists(join(repo, rulesFile)) || \"\";\n\tconst model = extra.model && extra.model !== \"default\" ? String(extra.model) : null;\n\treturn {\n\t\tignore: [...DEFAULT_IGNORE, ...extraIgnore],\n\t\tmodel,\n\t\trulesFile,\n\t\trules: rules.trim()\n\t};\n}\n/** CLAUDE.md / REVIEW.md / AGENTS.md from repo root and immediate parent dirs of touched files. */\nfunction collectGuidelines(repo, filePaths, { rulesFile = \"REVIEW.md\", maxChars = 8e3, maxTotalChars = 12e3, maxDepth = 1, skipNames = [] } = {}) {\n\tconst skip = new Set(skipNames);\n\tconst names = [.../* @__PURE__ */ new Set([rulesFile, ...GUIDELINE_FILES])].filter((name) => !skip.has(name));\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst out = [];\n\tconst addRel = (rel) => {\n\t\tconst norm = String(rel || \"\").replace(/\\\\/g, \"/\").replace(/^\\/+/, \"\");\n\t\tif (!norm || seen.has(norm)) return;\n\t\tconst text = readIfExists(join(repo, ...norm.split(\"/\")));\n\t\tif (!text || !text.trim()) return;\n\t\tseen.add(norm);\n\t\tout.push({\n\t\t\tpath: norm,\n\t\t\ttext: text.trim()\n\t\t});\n\t};\n\tfor (const name of names) addRel(name);\n\tconst depth = Math.max(1, Number(maxDepth) || 1);\n\tfor (const filePath of filePaths || []) {\n\t\tconst parts = String(filePath || \"\").replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean);\n\t\tconst minLen = Math.max(1, parts.length - depth);\n\t\tfor (let len = parts.length - 1; len >= minLen; len--) {\n\t\t\tconst dir = parts.slice(0, len).join(\"/\");\n\t\t\tfor (const name of names) addRel(`${dir}/${name}`);\n\t\t}\n\t}\n\tlet total = 0;\n\tconst capped = [];\n\tfor (const item of out) {\n\t\tif (total >= maxTotalChars) break;\n\t\tconst room = maxTotalChars - total;\n\t\tconst slice = item.text.slice(0, Math.min(maxChars, room));\n\t\tif (!slice) continue;\n\t\tcapped.push({\n\t\t\tpath: item.path,\n\t\t\ttext: slice\n\t\t});\n\t\ttotal += slice.length;\n\t}\n\treturn capped;\n}\nfunction capDiff(diff, max = STORE_DIFF_MAX) {\n\tconst text = String(diff || \"\");\n\tif (text.length <= max) return {\n\t\tdiff: text,\n\t\tdiffChars: text.length,\n\t\ttruncated: false\n\t};\n\treturn {\n\t\tdiff: `${text.slice(0, max)}\\n\\n… [diff recortado: se guardan ${max} de ${text.length} caracteres]`,\n\t\tdiffChars: text.length,\n\t\ttruncated: true\n\t};\n}\n//#endregion\n//#region ../lib/git.mjs\nfunction assertGitRepo(repo) {\n\tconst raw = String(repo || \"\").trim();\n\tif (!raw) throw new Error(\"Indicá la ruta absoluta de un repositorio git.\");\n\tif (!/[\\\\/]/.test(raw) && !/^[A-Za-z]:/.test(raw)) throw new Error(`\"${raw}\" no es una ruta. Pegá la ruta absoluta del repo (ej. C:\\\\tienda-argenta\\\\tienda-argenta-2).`);\n\tconst resolved = resolve(raw);\n\tif (!resolved || resolved === \".\") throw new Error(\"Indicá la ruta absoluta de un repositorio git.\");\n\tif (!existsSync(resolved)) throw new Error(`No existe la carpeta: ${resolved}`);\n\tif (!existsSync(join(resolved, \".git\"))) throw new Error(`No es un repositorio git (falta .git): ${resolved}`);\n\treturn resolved;\n}\n/**\n* Si `cwd` está dentro de un repo git, devuelve la raíz absoluta; si no, null.\n* Acepta subcarpetas (usa `git rev-parse --show-toplevel`).\n*/\nfunction tryResolveGitRoot(cwd) {\n\tconst raw = String(cwd || \"\").trim();\n\tif (!raw) return null;\n\tconst dir = resolve(raw);\n\tif (!existsSync(dir)) return null;\n\ttry {\n\t\tconst root = execFileSync(\"git\", [\"rev-parse\", \"--show-toplevel\"], {\n\t\t\tcwd: dir,\n\t\t\tencoding: \"utf8\",\n\t\t\twindowsHide: true,\n\t\t\tstdio: [\n\t\t\t\t\"ignore\",\n\t\t\t\t\"pipe\",\n\t\t\t\t\"ignore\"\n\t\t\t]\n\t\t}).trim();\n\t\treturn root ? resolve(root) : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction git(repo, args, { maxBuffer = 64 * 1024 * 1024 } = {}) {\n\treturn execFileSync(\"git\", args, {\n\t\tcwd: repo,\n\t\tencoding: \"utf8\",\n\t\tmaxBuffer,\n\t\twindowsHide: true\n\t});\n}\nfunction resolveRev(repo, ref) {\n\treturn git(repo, [\"rev-parse\", ref]).trim();\n}\nfunction branchTips(repo, branch, base) {\n\treturn {\n\t\tbranchSha: resolveRev(repo, branch),\n\t\tbaseSha: resolveRev(repo, base)\n\t};\n}\nfunction commitLog(repo, mergeBase, branch, limit = 25) {\n\ttry {\n\t\treturn git(repo, [\n\t\t\t\"log\",\n\t\t\t\"--oneline\",\n\t\t\t\"--no-merges\",\n\t\t\t\"-n\",\n\t\t\tString(limit),\n\t\t\t`${mergeBase}..${branch}`\n\t\t]).trim().split(\"\\n\").filter(Boolean);\n\t} catch {\n\t\treturn [];\n\t}\n}\nvar FILE_LINE_CACHE = /* @__PURE__ */ new Map();\nvar FILE_LINE_CACHE_MAX = 48;\nfunction rememberFileLines(key, lines) {\n\tif (FILE_LINE_CACHE.has(key)) FILE_LINE_CACHE.delete(key);\n\tFILE_LINE_CACHE.set(key, lines);\n\twhile (FILE_LINE_CACHE.size > FILE_LINE_CACHE_MAX) {\n\t\tconst oldest = FILE_LINE_CACHE.keys().next().value;\n\t\tFILE_LINE_CACHE.delete(oldest);\n\t}\n}\nfunction showFileLines(repo, rev, path) {\n\tconst resolved = assertGitRepo(repo);\n\tconst safeRev = String(rev || \"\").trim();\n\tconst safePath = String(path || \"\").replace(/\\\\/g, \"/\").trim();\n\tif (!safeRev || !/^[A-Za-z0-9._/\\-]+$/.test(safeRev)) throw new Error(\"Rev inválido.\");\n\tif (!safePath || safePath.startsWith(\"/\") || safePath.includes(\"..\") || safePath.includes(\"\\0\")) throw new Error(\"Ruta inválida.\");\n\tconst key = `${resolved}\\0${safeRev}\\0${safePath}`;\n\tif (FILE_LINE_CACHE.has(key)) return FILE_LINE_CACHE.get(key);\n\tlet text;\n\ttry {\n\t\ttext = git(resolved, [\"show\", `${safeRev}:${safePath}`]);\n\t} catch {\n\t\trememberFileLines(key, null);\n\t\treturn null;\n\t}\n\tif (text.includes(\"\\0\")) {\n\t\trememberFileLines(key, null);\n\t\treturn null;\n\t}\n\tconst raw = text.replace(/\\r\\n/g, \"\\n\");\n\tconst lines = raw.endsWith(\"\\n\") ? raw.slice(0, -1).split(\"\\n\") : raw.split(\"\\n\");\n\trememberFileLines(key, lines);\n\treturn lines;\n}\nfunction listBranches(repo) {\n\tconst names = git(repo, [\n\t\t\"for-each-ref\",\n\t\t\"--sort=-committerdate\",\n\t\t\"--format=%(refname:short)\",\n\t\t\"refs/heads\",\n\t\t\"refs/remotes\"\n\t]).split(\"\\n\").map((s) => s.trim()).filter(Boolean).map((name) => name.replace(/^origin\\//, \"\")).filter((name) => name !== \"HEAD\" && !name.endsWith(\"/HEAD\"));\n\tconst unique = [...new Set(names)];\n\tconst current = git(repo, [\n\t\t\"rev-parse\",\n\t\t\"--abbrev-ref\",\n\t\t\"HEAD\"\n\t]).trim();\n\tconst bases = unique.filter((n) => n === \"develop\" || n === \"main\" || n === \"master\");\n\treturn {\n\t\tbranches: unique,\n\t\tcurrent,\n\t\tdefaultBase: bases.includes(\"develop\") ? \"develop\" : bases.includes(\"main\") ? \"main\" : bases[0] || \"develop\"\n\t};\n}\n/** URL del remote (origin, o el primero disponible). Vacío si no hay. */\nfunction getRemoteUrl(repo, preferred = \"origin\") {\n\ttry {\n\t\tconst url = git(repo, [\n\t\t\t\"remote\",\n\t\t\t\"get-url\",\n\t\t\tpreferred\n\t\t]).trim();\n\t\tif (url) return url;\n\t} catch {}\n\ttry {\n\t\tconst remotes = git(repo, [\"remote\"]).split(\"\\n\").map((s) => s.trim()).filter(Boolean);\n\t\tif (!remotes.length) return \"\";\n\t\treturn git(repo, [\n\t\t\t\"remote\",\n\t\t\t\"get-url\",\n\t\t\tremotes[0]\n\t\t]).trim();\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n//#endregion\n//#region ../lib/review-dir.mjs\n/**\n* Carpeta `.diff-review/` en la raíz del repo revisado: el JSON del reporte, el diff con el que se hizo y la sesión\n* del agente, todo con el mismo nombre base (`diff-rev_<branchTip>_<baseTip>`). Se ignora sola con su propio\n* `.gitignore`, así no deja cambios en archivos trackeados del repo.\n*\n* Los JSON viejos en la raíz del repo se siguen encontrando (`locateReviewFile`).\n*/\n/** @typedef {{ agentId: string, sessionId: string, model?: string, updatedAt?: string }} SessionRef */\nfunction reviewDir(repoRoot) {\n\treturn join(repoRoot, OUTPUT_DIR);\n}\n/** Crea `.diff-review/` (con su `.gitignore`) si no existe. */\nfunction ensureReviewDir(repoRoot) {\n\tconst dir = reviewDir(repoRoot);\n\tmkdirSync(dir, { recursive: true });\n\tconst ignore = join(dir, \".gitignore\");\n\tif (!existsSync(ignore)) writeFileSync(ignore, \"# Generado por diff-review: nada de esta carpeta va al repo.\\n*\\n\");\n\treturn dir;\n}\n/** `diff-rev_a_b.json` → `{ json, diff, session }` dentro de `.diff-review/`. */\nfunction companionPaths(repoRoot, filename) {\n\tconst name = basename(String(filename || \"\"));\n\tconst stem = name.replace(/\\.json$/i, \"\");\n\tconst dir = reviewDir(repoRoot);\n\treturn {\n\t\tjson: join(dir, name),\n\t\tdiff: join(dir, `${stem}.diff`),\n\t\tsession: join(dir, `${stem}.session.json`)\n\t};\n}\n/** Dónde está el JSON de la review: `.diff-review/` primero y, si no, la raíz del repo (formato viejo). */\nfunction locateReviewFile(repoRoot, filename) {\n\tconst name = basename(String(filename || \"\"));\n\tif (!name) return null;\n\tfor (const candidate of [companionPaths(repoRoot, name).json, join(repoRoot, name)]) try {\n\t\tif (statSync(candidate).isFile()) return candidate;\n\t} catch {}\n\treturn null;\n}\n/**\n* Guarda `git diff base...branch` junto al JSON (una vez por par de commits: el nombre ya trae los tips).\n* @returns {string | null} el path, o null si git falló\n*/\nfunction writeDiffCache(repoRoot, filename, { branch, base }) {\n\tconst { diff } = companionPaths(repoRoot, filename);\n\tif (existsSync(diff)) return diff;\n\ttry {\n\t\tconst text = git(repoRoot, [\"diff\", `${base}...${branch}`]);\n\t\tensureReviewDir(repoRoot);\n\t\twriteFileSync(diff, text);\n\t\treturn diff;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Guarda un diff ya armado (p. ej. el que muestra la web), pisando el anterior. */\nfunction writeDiffText(repoRoot, filename, text) {\n\tensureReviewDir(repoRoot);\n\tconst { diff } = companionPaths(repoRoot, filename);\n\twriteFileSync(diff, String(text ?? \"\"));\n\treturn diff;\n}\n/** @returns {string | null} texto del companion `.diff`, o null si no existe / no se pudo leer */\nfunction readDiffCache(repoRoot, filename) {\n\tconst { diff } = companionPaths(repoRoot, filename);\n\ttry {\n\t\tif (!existsSync(diff)) return null;\n\t\treturn readFileSync(diff, \"utf8\");\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** @param {SessionRef} ref */\nfunction writeSessionRef(repoRoot, filename, ref) {\n\tensureReviewDir(repoRoot);\n\tconst full = {\n\t\t...ref,\n\t\tupdatedAt: (/* @__PURE__ */ new Date()).toISOString()\n\t};\n\twriteFileSync(companionPaths(repoRoot, filename).session, `${JSON.stringify(full, null, 2)}\\n`);\n\treturn full;\n}\n//#endregion\n//#region ../lib/extract.mjs\n/**\n* Parte un `git diff` multi-archivo (texto de `writeDiffCache`) en entradas por path.\n* @param {string} text\n* @returns {Array<{ path: string, oldPath?: string, changeType: string, hunkDiff: string }>}\n*/\nfunction parseGitDiffFiles(text) {\n\tconst raw = String(text || \"\").replace(/\\r\\n/g, \"\\n\");\n\tif (!raw.trim()) return [];\n\tconst parts = raw.split(/^diff --git /m);\n\t/** @type {Array<{ path: string, oldPath?: string, changeType: string, hunkDiff: string }>} */\n\tconst out = [];\n\tfor (const part of parts) {\n\t\tconst chunk = part.trimStart();\n\t\tif (!chunk) continue;\n\t\tconst firstNl = chunk.indexOf(\"\\n\");\n\t\tconst paths = (firstNl === -1 ? chunk : chunk.slice(0, firstNl)).trim().match(/^a\\/(.+) b\\/(.+)$/);\n\t\tif (!paths) continue;\n\t\tlet oldPath = paths[1];\n\t\tlet path = paths[2];\n\t\tconst body = firstNl === -1 ? \"\" : chunk.slice(firstNl + 1);\n\t\tlet changeType = \"modified\";\n\t\tif (/^new file mode /m.test(body) || /^--- \\/dev\\/null/m.test(body)) changeType = \"added\";\n\t\telse if (/^deleted file mode /m.test(body) || /^\\+\\+\\+ \\/dev\\/null/m.test(body)) changeType = \"deleted\";\n\t\telse if (/^rename from /m.test(body) || /^rename to /m.test(body)) {\n\t\t\tchangeType = \"renamed\";\n\t\t\tconst from = body.match(/^rename from (.+)$/m);\n\t\t\tconst to = body.match(/^rename to (.+)$/m);\n\t\t\tif (from) oldPath = from[1].trim();\n\t\t\tif (to) path = to[1].trim();\n\t\t}\n\t\tlet hunkDiff = \"\";\n\t\tconst idx = `\\n${body}`.indexOf(\"\\n@@\");\n\t\tif (idx !== -1) hunkDiff = `\\n${body}`.slice(idx + 1);\n\t\telse if (/^Binary files /m.test(body)) hunkDiff = \"\";\n\t\tout.push({\n\t\t\tpath,\n\t\t\toldPath: oldPath !== path ? oldPath : void 0,\n\t\t\tchangeType,\n\t\t\thunkDiff\n\t\t});\n\t}\n\treturn out;\n}\n/**\n* Stats baratos desde el texto del diff (sin volver a llamar a git).\n* @param {string} text\n*/\nfunction statsFromDiffText(text) {\n\tlet insertions = 0;\n\tlet deletions = 0;\n\tfor (const line of String(text || \"\").split(\"\\n\")) {\n\t\tif (!line.length) continue;\n\t\tif (line.startsWith(\"+++\") || line.startsWith(\"---\") || line.startsWith(\"diff \") || line.startsWith(\"index \")) continue;\n\t\tif (line.startsWith(\"+\")) insertions += 1;\n\t\telse if (line.startsWith(\"-\")) deletions += 1;\n\t}\n\treturn {\n\t\tinsertions,\n\t\tdeletions\n\t};\n}\n/**\n* Tips / merge-base si git responde; si no, strings vacíos (el contenido del diff ya viene del cache).\n*/\nfunction tryTips(repo, branch, base) {\n\ttry {\n\t\treturn {\n\t\t\tmergeBase: git(repo, [\n\t\t\t\t\"merge-base\",\n\t\t\t\tbase,\n\t\t\t\tbranch\n\t\t\t]).trim(),\n\t\t\tbranchSha: git(repo, [\"rev-parse\", branch]).trim(),\n\t\t\tbaseSha: git(repo, [\"rev-parse\", base]).trim()\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tmergeBase: \"\",\n\t\t\tbranchSha: \"\",\n\t\t\tbaseSha: \"\"\n\t\t};\n\t}\n}\n/**\n* Arma el mismo shape que `extractBranchDiff` a partir de un texto de `git diff` ya cacheado.\n* No vuelve a correr `git diff`.\n*/\nfunction skeletonFromCachedDiff(repo, branch, base, cachedDiff) {\n\tconst config = loadReviewConfig(repo);\n\tconst tips = tryTips(repo, branch, base);\n\tconst parsed = parseGitDiffFiles(cachedDiff);\n\tconst ignored = [];\n\tconst included = [];\n\tfor (const f of parsed) if (isIgnored(f.path, config.ignore)) ignored.push(f.path);\n\telse included.push(f);\n\tconst files = included.map((f) => {\n\t\tconst capped = capDiff(f.hunkDiff);\n\t\treturn {\n\t\t\tpath: f.path,\n\t\t\toldPath: f.oldPath || void 0,\n\t\t\tchangeType: f.changeType,\n\t\t\tdiff: capped.diff,\n\t\t\tdiffChars: capped.diffChars,\n\t\t\ttruncated: capped.truncated,\n\t\t\tmodelChars: capped.diff.length,\n\t\t\tgroup: \"\"\n\t\t};\n\t});\n\tconst { insertions, deletions } = statsFromDiffText(cachedDiff);\n\tlet commits = [];\n\tif (tips.mergeBase) try {\n\t\tcommits = commitLog(repo, tips.mergeBase, branch);\n\t} catch {\n\t\tcommits = [];\n\t}\n\treturn {\n\t\tversion: 2,\n\t\trepo,\n\t\tbranch,\n\t\tbaseBranch: base,\n\t\tmergeBase: tips.mergeBase,\n\t\tbranchSha: tips.branchSha,\n\t\tbaseSha: tips.baseSha,\n\t\tgeneratedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tintent: \"\",\n\t\tstats: {\n\t\t\tfilesChanged: files.length,\n\t\t\tfilesIgnored: ignored.length,\n\t\t\tfilesTruncated: files.filter((f) => f.truncated).length,\n\t\t\tinsertions,\n\t\t\tdeletions\n\t\t},\n\t\tcontext: {\n\t\t\tcommits,\n\t\t\trules: config.rules,\n\t\t\trulesFile: config.rulesFile,\n\t\t\tignored: ignored.slice(0, 40),\n\t\t\ttestsTouched: files.filter((f) => isTestPath(f.path)).map((f) => f.path),\n\t\t\ttestsMissing: files.filter((f) => !isTestPath(f.path)).length,\n\t\t\tguidelines: collectGuidelines(repo, files.map((f) => f.path), {\n\t\t\t\trulesFile: config.rulesFile,\n\t\t\t\tskipNames: config.rules.trim() ? [config.rulesFile] : [],\n\t\t\t\tmaxDepth: 1,\n\t\t\t\tmaxChars: 8e3,\n\t\t\t\tmaxTotalChars: 12e3\n\t\t\t})\n\t\t},\n\t\tfiles,\n\t\tgroups: [],\n\t\tblocks: [],\n\t\tfindings: [],\n\t\tskipped: []\n\t};\n}\n/**\n* @param {{\n* repo: string,\n* branch: string,\n* base?: string,\n* cachedDiff?: string | null,\n* }} opts\n* `cachedDiff`: texto de `git diff base...branch` ya materializado; si viene, no se vuelve a calcular el diff.\n*/\nfunction extractBranchDiff({ repo, branch, base = \"develop\", cachedDiff = null } = {}) {\n\tif (!branch) throw new Error(\"Falta el branch a revisar.\");\n\tif (typeof cachedDiff === \"string\" && cachedDiff.length) return skeletonFromCachedDiff(repo, branch, base, cachedDiff);\n\tconst config = loadReviewConfig(repo);\n\tconst mergeBase = git(repo, [\n\t\t\"merge-base\",\n\t\tbase,\n\t\tbranch\n\t]).trim();\n\tconst branchSha = git(repo, [\"rev-parse\", branch]).trim();\n\tconst baseSha = git(repo, [\"rev-parse\", base]).trim();\n\tconst nameStatus = git(repo, [\n\t\t\"diff\",\n\t\tmergeBase,\n\t\tbranch,\n\t\t\"--name-status\"\n\t]).trim().split(\"\\n\").filter(Boolean).map((line) => {\n\t\tconst [status, ...rest] = line.split(\"\t\");\n\t\tconst path = rest[rest.length - 1];\n\t\tconst oldPath = rest.length > 1 ? rest[0] : null;\n\t\tlet changeType = \"modified\";\n\t\tif (status.startsWith(\"A\")) changeType = \"added\";\n\t\telse if (status.startsWith(\"D\")) changeType = \"deleted\";\n\t\telse if (status.startsWith(\"R\")) changeType = \"renamed\";\n\t\treturn {\n\t\t\tpath,\n\t\t\toldPath,\n\t\t\tchangeType\n\t\t};\n\t});\n\tconst ignored = [];\n\tconst included = [];\n\tfor (const f of nameStatus) if (isIgnored(f.path, config.ignore)) ignored.push(f.path);\n\telse included.push(f);\n\tconst files = included.map((f) => {\n\t\tlet raw = \"\";\n\t\ttry {\n\t\t\traw = git(repo, [\n\t\t\t\t\"diff\",\n\t\t\t\tmergeBase,\n\t\t\t\tbranch,\n\t\t\t\t\"--\",\n\t\t\t\tf.path\n\t\t\t]);\n\t\t\tconst idx = raw.indexOf(\"\\n@@\");\n\t\t\tif (idx !== -1) raw = raw.slice(idx + 1);\n\t\t} catch {\n\t\t\traw = \"\";\n\t\t}\n\t\tconst capped = capDiff(raw);\n\t\treturn {\n\t\t\tpath: f.path,\n\t\t\toldPath: f.oldPath || void 0,\n\t\t\tchangeType: f.changeType,\n\t\t\tdiff: capped.diff,\n\t\t\tdiffChars: capped.diffChars,\n\t\t\ttruncated: capped.truncated,\n\t\t\tmodelChars: capped.diff.length,\n\t\t\tgroup: \"\"\n\t\t};\n\t});\n\tconst shortstat = git(repo, [\n\t\t\"diff\",\n\t\tmergeBase,\n\t\tbranch,\n\t\t\"--shortstat\"\n\t]).trim();\n\tconst insMatch = shortstat.match(/(\\d+) insertion/);\n\tconst delMatch = shortstat.match(/(\\d+) deletion/);\n\treturn {\n\t\tversion: 2,\n\t\trepo,\n\t\tbranch,\n\t\tbaseBranch: base,\n\t\tmergeBase,\n\t\tbranchSha,\n\t\tbaseSha,\n\t\tgeneratedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tintent: \"\",\n\t\tstats: {\n\t\t\tfilesChanged: files.length,\n\t\t\tfilesIgnored: ignored.length,\n\t\t\tfilesTruncated: files.filter((f) => f.truncated).length,\n\t\t\tinsertions: insMatch ? Number(insMatch[1]) : 0,\n\t\t\tdeletions: delMatch ? Number(delMatch[1]) : 0\n\t\t},\n\t\tcontext: {\n\t\t\tcommits: commitLog(repo, mergeBase, branch),\n\t\t\trules: config.rules,\n\t\t\trulesFile: config.rulesFile,\n\t\t\tignored: ignored.slice(0, 40),\n\t\t\ttestsTouched: files.filter((f) => isTestPath(f.path)).map((f) => f.path),\n\t\t\ttestsMissing: files.filter((f) => !isTestPath(f.path)).length,\n\t\t\tguidelines: collectGuidelines(repo, files.map((f) => f.path), {\n\t\t\t\trulesFile: config.rulesFile,\n\t\t\t\tskipNames: config.rules.trim() ? [config.rulesFile] : [],\n\t\t\t\tmaxDepth: 1,\n\t\t\t\tmaxChars: 8e3,\n\t\t\t\tmaxTotalChars: 12e3\n\t\t\t})\n\t\t},\n\t\tfiles,\n\t\tgroups: [],\n\t\tblocks: [],\n\t\tfindings: [],\n\t\tskipped: []\n\t};\n}\n/**\n* Preferí el companion `.diff` en `.diff-review/` si existe; si no, `git diff` vía `extractBranchDiff`.\n* @param {{ repo: string, branch: string, base?: string, filename?: string }} opts\n*/\nfunction loadBranchDiff({ repo, branch, base = \"develop\", filename } = {}) {\n\tconst name = String(filename || \"\").trim();\n\tif (name) {\n\t\tconst cached = readDiffCache(repo, name);\n\t\tif (cached != null && cached.length) return extractBranchDiff({\n\t\t\trepo,\n\t\t\tbranch,\n\t\t\tbase,\n\t\t\tcachedDiff: cached\n\t\t});\n\t}\n\treturn extractBranchDiff({\n\t\trepo,\n\t\tbranch,\n\t\tbase\n\t});\n}\n//#endregion\n//#region ../lib/json-payload.mjs\nfunction tryParseJson(s) {\n\ttry {\n\t\treturn JSON.parse(s);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Extrae un objeto JSON del texto del modelo (fences, prosa alrededor, envelope). */\nfunction decodePayload(text) {\n\tconst raw = String(text || \"\").trim();\n\tif (!raw) throw new Error(\"Respuesta vacía.\");\n\tconst fence = raw.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n\tif (fence) {\n\t\tconst parsed = tryParseJson(fence[1].trim());\n\t\tif (parsed && typeof parsed === \"object\") return parsed;\n\t}\n\tconst direct = tryParseJson(raw);\n\tif (direct && typeof direct === \"object\") return direct;\n\tconst start = raw.indexOf(\"{\");\n\tconst end = raw.lastIndexOf(\"}\");\n\tif (start >= 0 && end > start) {\n\t\tconst parsed = tryParseJson(raw.slice(start, end + 1));\n\t\tif (parsed && typeof parsed === \"object\") return parsed;\n\t}\n\tthrow new Error(\"No se pudo interpretar la respuesta como JSON.\");\n}\n//#endregion\n//#region ../lib/validate.mjs\nvar GROUP_KINDS = [\n\t\"feat\",\n\t\"fix\",\n\t\"refactor\",\n\t\"perf\",\n\t\"test\",\n\t\"chore\",\n\t\"docs\",\n\t\"infra\"\n];\nvar BLOCK_OPS = [\n\t\"add\",\n\t\"mod\",\n\t\"del\",\n\t\"rename\"\n];\nvar WHY_SOURCES = [\n\t\"code\",\n\t\"commit\",\n\t\"pr\",\n\t\"issue\",\n\t\"inferred\"\n];\nvar FINDING_CLASSES = [\"risk\", \"quality\"];\nvar FINDING_SEVERITIES = [\n\t\"high\",\n\t\"med\",\n\t\"low\",\n\t\"nit\"\n];\nvar FINDING_KINDS = [\n\t\"bug\",\n\t\"race\",\n\t\"auth\",\n\t\"security\",\n\t\"api-break\",\n\t\"missing-test\",\n\t\"perf\",\n\t\"maintainability\",\n\t\"docs\",\n\t\"other\"\n];\nvar SKIP_REASONS = [\n\t\"generated\",\n\t\"lockfile\",\n\t\"format\",\n\t\"vendored\",\n\t\"binary\",\n\t\"trivial\",\n\t\"ignored\"\n];\n/** Lo que tiene que devolver el modelo en un turno. El resto lo agrega el pipeline. */\nvar REVIEW_SCHEMA = {\n\t$id: \"diff-review\",\n\ttype: \"object\",\n\trequired: [\n\t\t\"meta\",\n\t\t\"intent\",\n\t\t\"groups\",\n\t\t\"blocks\"\n\t],\n\tadditionalProperties: true,\n\tproperties: {\n\t\tmeta: {\n\t\t\ttype: \"object\",\n\t\t\trequired: [\"agent\", \"model\"],\n\t\t\tadditionalProperties: true,\n\t\t\tproperties: {\n\t\t\t\tagent: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tintent: {\n\t\t\ttype: \"string\",\n\t\t\tminLength: 40\n\t\t},\n\t\tgroups: {\n\t\t\ttype: \"array\",\n\t\t\tminItems: 1,\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"kind\",\n\t\t\t\t\t\"title\",\n\t\t\t\t\t\"intent\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tkind: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: GROUP_KINDS\n\t\t\t\t\t},\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tintent: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tblocks: {\n\t\t\ttype: \"array\",\n\t\t\tminItems: 1,\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"group\",\n\t\t\t\t\t\"file\",\n\t\t\t\t\t\"lines\",\n\t\t\t\t\t\"op\",\n\t\t\t\t\t\"what\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tgroup: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tlines: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\top: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: BLOCK_OPS\n\t\t\t\t\t},\n\t\t\t\t\twhat: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\twhy: { type: \"string\" },\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: WHY_SOURCES\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfindings: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"class\",\n\t\t\t\t\t\"severity\",\n\t\t\t\t\t\"kind\",\n\t\t\t\t\t\"file\",\n\t\t\t\t\t\"what\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: { type: \"string\" },\n\t\t\t\t\tclass: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_CLASSES\n\t\t\t\t\t},\n\t\t\t\t\tseverity: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_SEVERITIES\n\t\t\t\t\t},\n\t\t\t\t\tblocking: { type: \"boolean\" },\n\t\t\t\t\tkind: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_KINDS\n\t\t\t\t\t},\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tline: { type: [\"integer\", \"null\"] },\n\t\t\t\t\tblock: { type: \"string\" },\n\t\t\t\t\twhat: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tfix: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tskipped: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\"file\", \"reason\"],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\treason: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: SKIP_REASONS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nfunction typeOf(value) {\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\tif (typeof value === \"number\" && Number.isInteger(value)) return \"integer\";\n\treturn typeof value;\n}\nfunction typeMatches(expected, actual) {\n\tconst options = Array.isArray(expected) ? expected : [expected];\n\tif (options.includes(actual)) return true;\n\treturn options.includes(\"number\") && actual === \"integer\";\n}\n/** Minimal JSON Schema checker (type, required, properties, items, enum, minLength, minItems). */\nfunction validateAgainst(schema, data, path = \"$\") {\n\tconst errors = [];\n\tif (!schema || typeof schema !== \"object\") return errors;\n\tconst actual = typeOf(data);\n\tif (schema.type && !typeMatches(schema.type, actual)) {\n\t\terrors.push(`${path}: se esperaba ${[].concat(schema.type).join(\"|\")}, llegó ${actual}`);\n\t\treturn errors;\n\t}\n\tif (actual === \"string\" && schema.minLength && data.length < schema.minLength) errors.push(`${path}: texto demasiado corto (mínimo ${schema.minLength})`);\n\tif (schema.enum && (actual === \"string\" || actual === \"number\") && !schema.enum.includes(data)) errors.push(`${path}: valor no permitido (${data}); usá uno de: ${schema.enum.join(\", \")}`);\n\tif (actual === \"array\") {\n\t\tif (schema.minItems && data.length < schema.minItems) errors.push(`${path}: se esperaban al menos ${schema.minItems} ítems`);\n\t\tif (schema.items) data.forEach((item, i) => errors.push(...validateAgainst(schema.items, item, `${path}[${i}]`)));\n\t}\n\tif (actual === \"object\") {\n\t\tfor (const key of schema.required || []) if (data[key] === void 0) errors.push(`${path}: falta ${key}`);\n\t\tfor (const [key, child] of Object.entries(schema.properties || {})) {\n\t\t\tif (data[key] === void 0) continue;\n\t\t\terrors.push(...validateAgainst(child, data[key], `${path}.${key}`));\n\t\t}\n\t}\n\treturn errors;\n}\n/**\n* Integridad referencial y cobertura. El schema solo mira formas; esto mira que\n* los ids cierren y que no haya quedado un archivo sin explicar, que es el\n* error que de verdad arruina la review.\n*/\nfunction reviewIssues(payload, knownPaths = []) {\n\tconst errors = [];\n\tconst meta = payload?.meta && typeof payload.meta === \"object\" ? payload.meta : {};\n\tconst agentName = typeof meta.agent === \"string\" ? meta.agent.trim() : \"\";\n\tconst modelId = typeof meta.model === \"string\" ? meta.model.trim() : \"\";\n\tif (!agentName || agentName.startsWith(\"<\")) errors.push(\"meta.agent es obligatorio: nombre del producto (Claude Code, Cursor, Codex, …), sin placeholder\");\n\tif (!modelId || modelId.startsWith(\"<\")) errors.push(\"meta.model es obligatorio: id exacto del modelo, sin placeholder\");\n\tconst groups = Array.isArray(payload?.groups) ? payload.groups : [];\n\tconst blocks = Array.isArray(payload?.blocks) ? payload.blocks : [];\n\tconst findings = Array.isArray(payload?.findings) ? payload.findings : [];\n\tconst skipped = Array.isArray(payload?.skipped) ? payload.skipped : [];\n\tconst groupIds = new Set(groups.map((g) => g.id));\n\tconst blockIds = new Set(blocks.map((b) => b.id));\n\tconst known = new Set(knownPaths);\n\tconst dupGroups = groups.length - groupIds.size;\n\tif (dupGroups > 0) errors.push(`hay ${dupGroups} id de tema repetido`);\n\tconst dupBlocks = blocks.length - blockIds.size;\n\tif (dupBlocks > 0) errors.push(`hay ${dupBlocks} id de bloque repetido`);\n\tfor (const block of blocks) {\n\t\tif (!groupIds.has(block.group)) errors.push(`el bloque ${block.id} apunta al tema inexistente ${block.group}`);\n\t\tif (known.size && !known.has(block.file)) errors.push(`el bloque ${block.id} apunta a un archivo que no está en el diff: ${block.file}`);\n\t}\n\tconst usedGroups = new Set(blocks.map((b) => b.group));\n\tfor (const group of groups) if (!usedGroups.has(group.id)) errors.push(`el tema ${group.id} no tiene ningún bloque`);\n\tfor (const finding of findings) {\n\t\tif (finding.block && !blockIds.has(finding.block)) errors.push(`el hallazgo ${finding.id || finding.what} apunta al bloque inexistente ${finding.block}`);\n\t\tif (known.size && !known.has(finding.file)) errors.push(`el hallazgo ${finding.id || finding.what} apunta a un archivo fuera del diff: ${finding.file}`);\n\t}\n\tif (known.size) {\n\t\tconst covered = /* @__PURE__ */ new Set([...blocks.map((b) => b.file), ...skipped.map((s) => s.file)]);\n\t\tconst missing = [...known].filter((path) => !covered.has(path));\n\t\tif (missing.length) errors.push(`quedaron ${missing.length} archivo(s) sin bloque ni skipped: ${missing.slice(0, 8).join(\", \")}`);\n\t}\n\treturn errors;\n}\n//#endregion\nexport { loadReviewConfig as A, branchTips as C, showFileLines as D, listBranches as E, fingerprint as F, isOutputFilename as M, makeOutputFilename as N, tryResolveGitRoot as O, outputRelPath as P, assertGitRepo as S, git as T, readDiffCache as _, GROUP_KINDS as a, writeDiffText as b, WHY_SOURCES as c, decodePayload as d, extractBranchDiff as f, locateReviewFile as g, ensureReviewDir as h, FINDING_SEVERITIES as i, OUTPUT_DIR as j, globMatch as k, reviewIssues as l, companionPaths as m, FINDING_CLASSES as n, REVIEW_SCHEMA as o, loadBranchDiff as p, FINDING_KINDS as r, SKIP_REASONS as s, BLOCK_OPS as t, validateAgainst as u, reviewDir as v, getRemoteUrl as w, writeSessionRef as x, writeDiffCache as y };\n"],"names":[],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;AAC/B,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;AACtE,CAAC,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AAC9C;AACA,SAAS,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE;AACzC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC9B,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC5B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI;AAC1B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,UAAU;AAC9B;AACA,IAAI,oBAAoB,GAAG,oBAAoB;AAC/C;AACG,IAAC,UAAU,GAAG;AACjB;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AACzE;AACA;AACA,IAAI,sBAAsB,GAAG,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,GAAG,+IAA+I;AACxK;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,GAAG,EAAE,EAAE;AACxC,CAAC,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE;AACtD,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;AACrD,CAAC,IAAI,EAAE,EAAE;AACT,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5C,EAAE,IAAI,SAAS,IAAI,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;AAClF,CAAC;AACD,CAAC,OAAO,sBAAsB;AAC9B;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1D;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,CAAC,sBAAsB;AACvB,CAAC,mBAAmB;AACpB,CAAC,cAAc;AACf,CAAC,aAAa;AACd,CAAC,cAAc;AACf,CAAC,WAAW;AACZ,CAAC,iBAAiB;AAClB,CAAC,kBAAkB;AACnB,CAAC,oBAAoB;AACrB,CAAC,mBAAmB;AACpB,CAAC,YAAY;AACb,CAAC,aAAa;AACd,CAAC,aAAa;AACd,CAAC,cAAc;AACf,CAAC;AACD,CAAC;AACD,IAAI,cAAc,GAAG,GAAG;AACxB,IAAI,eAAe,GAAG;AACtB,CAAC,WAAW;AACZ,CAAC,WAAW;AACZ,CAAC;AACD,CAAC;AACD,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACjC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1G,CAAC,OAAO,CAAC;AACT;AACA;AACA,SAAS,eAAe,CAAC,IAAI,EAAE;AAC/B,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,IAAI,GAAG,GAAG,IAAI;AACf,CAAC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACtD,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACjD,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;AACzC,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE;AACnB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;AACpD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE;AACF,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC;AACtD,EAAE,IAAI,CAAC,EAAE,EAAE;AACX,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACb,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACxB,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC1C,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC/C,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC,IAAI,CAAC,GAAG,EAAE;AACX,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3D,GAAG,CAAC,IAAI,UAAU;AAClB,GAAG,CAAC,IAAI,CAAC;AACT,EAAE,CAAC,MAAM;AACT,GAAG,CAAC,IAAI,IAAI;AACZ,GAAG,CAAC,IAAI,CAAC;AACT,EAAE;AACF,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,OAAO;AAClC,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,MAAM;AACjC,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,OAAO,CAAC,IAAI,CAAC;AACb,CAAC;AACD,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACjC;AACA,SAAS,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE;AACtC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACxD,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC;AACA,SAAS,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACvC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC5D;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE;AAC9B,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACrD,CAAC,OAAO,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,CAAC,IAAI;AACL,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI;AAC7D,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC/D,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC/G,CAAC,IAAI,KAAK,GAAG,EAAE;AACf,CAAC,IAAI,QAAQ,EAAE,IAAI;AACnB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,KAAK,GAAG,EAAE;AACZ,CAAC;AACD,MAAM,IAAI,QAAQ,EAAE,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC;AACrD,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;AAChF,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,WAAW;AAC1E,CAAC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE;AACxD,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;AACpF,CAAC,OAAO;AACR,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC;AAC7C,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI;AACnB,EAAE;AACF;AACA;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,WAAW,EAAE,QAAQ,GAAG,GAAG,EAAE,aAAa,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE;AAClJ,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;AAChC,CAAC,MAAM,KAAK,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9G,CAAC,MAAM,IAAI,mBAAmB,IAAI,GAAG,EAAE;AACvC,CAAC,MAAM,GAAG,GAAG,EAAE;AACf,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;AACzB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACxE,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/B,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAC7B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAChB,EAAE,GAAG,CAAC,IAAI,CAAC;AACX,GAAG,IAAI,EAAE,IAAI;AACb,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;AACvC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC,KAAK,MAAM,QAAQ,IAAI,SAAS,IAAI,EAAE,EAAE;AACzC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACrF,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;AAClD,EAAE,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,EAAE;AACzD,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,GAAG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACrD,EAAE;AACF,CAAC;AACD,CAAC,IAAI,KAAK,GAAG,CAAC;AACd,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AACzB,EAAE,IAAI,KAAK,IAAI,aAAa,EAAE;AAC9B,EAAE,MAAM,IAAI,GAAG,aAAa,GAAG,KAAK;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,GAAG,IAAI,EAAE;AACT,GAAG,CAAC;AACJ,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM;AACvB,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE;AAC7C,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAChC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,OAAO;AAChC,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM;AACxB,EAAE,SAAS,EAAE;AACb,EAAE;AACF,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,kCAAkC,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACrG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM;AACxB,EAAE,SAAS,EAAE;AACb,EAAE;AACF;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACtC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AAC5E,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,4FAA4F,CAAC,CAAC;AAC1K,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;AAC9B,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACrG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,uCAAuC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/G,CAAC,OAAO,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI;AACtB,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACzB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;AACrE,GAAG,GAAG,EAAE,GAAG;AACX,GAAG,QAAQ,EAAE,MAAM;AACnB,GAAG,WAAW,EAAE,IAAI;AACpB,GAAG,KAAK,EAAE;AACV,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI;AACJ;AACA,GAAG,CAAC,CAAC,IAAI,EAAE;AACX,EAAE,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;AACpC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;AAChE,CAAC,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;AAClC,EAAE,GAAG,EAAE,IAAI;AACX,EAAE,QAAQ,EAAE,MAAM;AAClB,EAAE,SAAS;AACX,EAAE,WAAW,EAAE;AACf,EAAE,CAAC;AACH;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;AAC/B,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5C;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACxC,CAAC,OAAO;AACR,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;AACrC,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI;AAChC,EAAE;AACF;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE;AACxD,CAAC,IAAI;AACL,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE;AACnB,GAAG,KAAK;AACR,GAAG,WAAW;AACd,GAAG,aAAa;AAChB,GAAG,IAAI;AACP,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;AAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACvC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA,IAAI,eAAe,mBAAmB,IAAI,GAAG,EAAE;AAC/C,IAAI,mBAAmB,GAAG,EAAE;AAC5B,SAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE;AACvC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1D,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAChC,CAAC,OAAO,eAAe,CAAC,IAAI,GAAG,mBAAmB,EAAE;AACpD,EAAE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AACpD,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,CAAC;AACD;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACxC,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC;AACrC,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACzC,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;AAC/D,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;AACvF,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACnI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9D,CAAC,IAAI,IAAI;AACT,CAAC,IAAI;AACL,EAAE,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9B,EAAE,OAAO,IAAI;AACb,CAAC;AACD,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1B,EAAE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9B,EAAE,OAAO,IAAI;AACb,CAAC;AACD,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AACxC,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAClF,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;AAC9B,CAAC,OAAO,KAAK;AACb;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE;AACzB,EAAE,cAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,2BAA2B;AAC7B,EAAE,YAAY;AACd,EAAE;AACF,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9J,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE;AAC3B,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,EAAE;AACF,EAAE,CAAC,CAAC,IAAI,EAAE;AACV,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,QAAQ,CAAC;AACtF,CAAC,OAAO;AACR,EAAE,QAAQ,EAAE,MAAM;AAClB,EAAE,OAAO;AACT,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI;AACrG,EAAE;AACF;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,EAAE;AAClD,CAAC,IAAI;AACL,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AACxB,GAAG,QAAQ;AACX,GAAG,SAAS;AACZ,GAAG;AACH,GAAG,CAAC,CAAC,IAAI,EAAE;AACX,EAAE,IAAI,GAAG,EAAE,OAAO,GAAG;AACrB,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,IAAI;AACL,EAAE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACxF,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAChC,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE;AACnB,GAAG,QAAQ;AACX,GAAG,SAAS;AACZ,GAAG,OAAO,CAAC,CAAC;AACZ,GAAG,CAAC,CAAC,IAAI,EAAE;AACX,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,QAAQ,EAAE;AAC7B,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAClC;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE;AACnC,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;AAChC,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;AACvC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,mEAAmE,CAAC;AACpH,CAAC,OAAO,GAAG;AACX;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC5C,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC1C,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;AAChC,CAAC,OAAO;AACR,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AACvB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;AAC3C,EAAE;AACF;AACA;AACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC9C,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;AACvB,CAAC,KAAK,MAAM,SAAS,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI;AAC1F,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,SAAS;AACpD,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;AAC9D,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACpD,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AAClC,CAAC,IAAI;AACL,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7D,EAAE,eAAe,CAAC,QAAQ,CAAC;AAC3B,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3B,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;AACjD,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1B,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACpD,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC,OAAO,IAAI;AACZ;AACA;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC3C,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACpD,CAAC,IAAI;AACL,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;AACpC,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACnC,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE;AAClD,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1B,CAAC,MAAM,IAAI,GAAG;AACd,EAAE,GAAG,GAAG;AACR,EAAE,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACrD,EAAE;AACF,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChG,CAAC,OAAO,IAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AACtD,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE;AAC3B,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;AACzC;AACA,CAAC,MAAM,GAAG,GAAG,EAAE;AACf,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC3B,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACrC,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC;AACpG,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,EAAE,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC7D,EAAE,IAAI,UAAU,GAAG,UAAU;AAC7B,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO;AAC3F,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS;AACzG,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrE,GAAG,UAAU,GAAG,SAAS;AACzB,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACjD,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAC7C,GAAG,IAAI,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACrC,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9B,EAAE;AACF,EAAE,IAAI,QAAQ,GAAG,EAAE;AACnB,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACzC,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACvD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,EAAE;AACtD,EAAE,GAAG,CAAC,IAAI,CAAC;AACX,GAAG,IAAI;AACP,GAAG,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,GAAG,MAAM;AAC/C,GAAG,UAAU;AACb,GAAG;AACH,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,GAAG;AACX;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,CAAC,IAAI,UAAU,GAAG,CAAC;AACnB,CAAC,IAAI,SAAS,GAAG,CAAC;AAClB,CAAC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACpD,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjH,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC;AAC3C,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC;AAC/C,CAAC;AACD,CAAC,OAAO;AACR,EAAE,UAAU;AACZ,EAAE;AACF,EAAE;AACF;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;AACrC,CAAC,IAAI;AACL,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE;AACxB,IAAI,YAAY;AAChB,IAAI,IAAI;AACR,IAAI;AACJ,IAAI,CAAC,CAAC,IAAI,EAAE;AACZ,GAAG,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACrD,GAAG,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI;AAC/C,GAAG;AACH,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,EAAE;AAChB,GAAG,SAAS,EAAE,EAAE;AAChB,GAAG,OAAO,EAAE;AACZ,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;AAChE,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACtC,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AACzC,CAAC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAC7C,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACnC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpC,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI;AACf,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM;AAC/B,GAAG,UAAU,EAAE,CAAC,CAAC,UAAU;AAC3B,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI;AACpB,GAAG,SAAS,EAAE,MAAM,CAAC,SAAS;AAC9B,GAAG,SAAS,EAAE,MAAM,CAAC,SAAS;AAC9B,GAAG,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AACjC,GAAG,KAAK,EAAE;AACV,GAAG;AACH,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAChE,CAAC,IAAI,OAAO,GAAG,EAAE;AACjB,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI;AACzB,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;AACnD,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,GAAG,EAAE;AACd,CAAC;AACD,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;AAC3B,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;AAC3B,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO;AACvB,EAAE,WAAW,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACzD,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,KAAK,EAAE;AACT,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM;AAC7B,GAAG,YAAY,EAAE,OAAO,CAAC,MAAM;AAC/B,GAAG,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM;AAC1D,GAAG,UAAU;AACb,GAAG;AACH,GAAG;AACH,EAAE,OAAO,EAAE;AACX,GAAG,OAAO;AACV,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK;AACtB,GAAG,SAAS,EAAE,MAAM,CAAC,SAAS;AAC9B,GAAG,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAChC,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC3E,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAChE,GAAG,UAAU,EAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AACjE,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;AAC5D,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,aAAa,EAAE;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,KAAK;AACP,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,OAAO,EAAE;AACX,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;AACvF,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;AAC3D,CAAC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AACvH,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACtC,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE;AAC7B,EAAE,YAAY;AACd,EAAE,IAAI;AACN,EAAE;AACF,EAAE,CAAC,CAAC,IAAI,EAAE;AACV,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1D,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACtD,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE;AAC9B,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE;AACF,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACrD,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3C,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AAClD,EAAE,IAAI,UAAU,GAAG,UAAU;AAC7B,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO;AAClD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS;AACzD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS;AACzD,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG,OAAO;AACV,GAAG;AACH,GAAG;AACH,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,MAAM,QAAQ,GAAG,EAAE;AACpB,CAAC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACnC,EAAE,IAAI,GAAG,GAAG,EAAE;AACd,EAAE,IAAI;AACN,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AACnB,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,CAAC,CAAC;AACN,IAAI,CAAC;AACL,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAClC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3C,EAAE,CAAC,CAAC,MAAM;AACV,GAAG,GAAG,GAAG,EAAE;AACX,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;AAC7B,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI;AACf,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM;AAC/B,GAAG,UAAU,EAAE,CAAC,CAAC,UAAU;AAC3B,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI;AACpB,GAAG,SAAS,EAAE,MAAM,CAAC,SAAS;AAC9B,GAAG,SAAS,EAAE,MAAM,CAAC,SAAS;AAC9B,GAAG,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;AACjC,GAAG,KAAK,EAAE;AACV,GAAG;AACH,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE;AAC7B,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE;AACF,EAAE,CAAC,CAAC,IAAI,EAAE;AACV,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACpD,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnD,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,OAAO;AACT,EAAE,WAAW,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACzD,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,KAAK,EAAE;AACT,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM;AAC7B,GAAG,YAAY,EAAE,OAAO,CAAC,MAAM;AAC/B,GAAG,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM;AAC1D,GAAG,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACjD,GAAG,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,GAAG;AACH,EAAE,OAAO,EAAE;AACX,GAAG,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC;AAC9C,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK;AACtB,GAAG,SAAS,EAAE,MAAM,CAAC,SAAS;AAC9B,GAAG,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAChC,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC3E,GAAG,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAChE,GAAG,UAAU,EAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AACjE,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;AAC5D,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,QAAQ,EAAE,GAAG;AACjB,IAAI,aAAa,EAAE;AACnB,IAAI;AACJ,GAAG;AACH,EAAE,KAAK;AACP,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,OAAO,EAAE;AACX,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;AAC3E,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC3C,CAAC,IAAI,IAAI,EAAE;AACX,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1C,EAAE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,iBAAiB,CAAC;AAChE,GAAG,IAAI;AACP,GAAG,MAAM;AACT,GAAG,IAAI;AACP,GAAG,UAAU,EAAE;AACf,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,iBAAiB,CAAC;AAC1B,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE;AACF,EAAE,CAAC;AACH;AACA;AACA;AACA,SAAS,YAAY,CAAC,CAAC,EAAE;AACzB,CAAC,IAAI;AACL,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACtC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AAC9C,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC;AACzD,CAAC,IAAI,KAAK,EAAE;AACZ,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,EAAE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,MAAM;AACzD,CAAC;AACD,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC;AACjC,CAAC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,MAAM;AACxD,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/B,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;AACjC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE;AAChC,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACxD,EAAE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,MAAM;AACzD,CAAC;AACD,CAAC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AAClE;AACA;AACA;AACG,IAAC,WAAW,GAAG;AAClB,CAAC,MAAM;AACP,CAAC,KAAK;AACN,CAAC,UAAU;AACX,CAAC,MAAM;AACP,CAAC,MAAM;AACP,CAAC,OAAO;AACR,CAAC,MAAM;AACP,CAAC;AACD;AACG,IAAC,SAAS,GAAG;AAChB,CAAC,KAAK;AACN,CAAC,KAAK;AACN,CAAC,KAAK;AACN,CAAC;AACD;AACG,IAAC,WAAW,GAAG;AAClB,CAAC,MAAM;AACP,CAAC,QAAQ;AACT,CAAC,IAAI;AACL,CAAC,OAAO;AACR,CAAC;AACD;AACG,IAAC,eAAe,GAAG,CAAC,MAAM,EAAE,SAAS;AACrC,IAAC,kBAAkB,GAAG;AACzB,CAAC,MAAM;AACP,CAAC,KAAK;AACN,CAAC,KAAK;AACN,CAAC;AACD;AACG,IAAC,aAAa,GAAG;AACpB,CAAC,KAAK;AACN,CAAC,MAAM;AACP,CAAC,MAAM;AACP,CAAC,UAAU;AACX,CAAC,WAAW;AACZ,CAAC,cAAc;AACf,CAAC,MAAM;AACP,CAAC,iBAAiB;AAClB,CAAC,MAAM;AACP,CAAC;AACD;AACG,IAAC,YAAY,GAAG;AACnB,CAAC,WAAW;AACZ,CAAC,UAAU;AACX,CAAC,QAAQ;AACT,CAAC,UAAU;AACX,CAAC,QAAQ;AACT,CAAC,SAAS;AACV,CAAC;AACD;AACA;AACG,IAAC,aAAa,GAAG;AACpB,CACC,IAAI,EAAE,QAAQ;AACf,CAAC,QAAQ,EAAE;AACX,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE;AACF,EAAE;AACF,CACC,UAAU,EAAE;AACb,EAAE,IAAI,EAAE;AACR,GAAG,IAAI,EAAE,QAAQ;AACjB,GAAG,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC/B,GAAG,oBAAoB,EAAE,IAAI;AAC7B,GAAG,UAAU,EAAE;AACf,IAAI,KAAK,EAAE;AACX,KAAK,IAAI,EAAE,QAAQ;AACnB,KAAK,SAAS,EAAE;AAChB,KAAK;AACL,IAAI,KAAK,EAAE;AACX,KAAK,IAAI,EAAE,QAAQ;AACnB,KAAK,SAAS,EAAE;AAChB;AACA;AACA,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG,IAAI,EAAE,QAAQ;AACjB,GAAG,SAAS,EAAE;AACd,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,QAAQ,EAAE;AACd,KAAK,IAAI;AACT,KAAK,MAAM;AACX,KAAK,OAAO;AACZ,KAAK;AACL,KAAK;AACL,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,UAAU,EAAE;AAChB,KAAK,EAAE,EAAE;AACT,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ,MAAM;AACN,KAAK,KAAK,EAAE;AACZ,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ;AAC7B;AACA;AACA,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,QAAQ,EAAE;AACd,KAAK,IAAI;AACT,KAAK,OAAO;AACZ,KAAK,MAAM;AACX,KAAK,OAAO;AACZ,KAAK,IAAI;AACT,KAAK;AACL,KAAK;AACL,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,UAAU,EAAE;AAChB,KAAK,EAAE,EAAE;AACT,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,KAAK,EAAE;AACZ,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,KAAK,EAAE;AACZ,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,EAAE,EAAE;AACT,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ,MAAM;AACN,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC5B,KAAK,MAAM,EAAE;AACb,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ;AACA;AACA;AACA,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,QAAQ,EAAE;AACd,KAAK,OAAO;AACZ,KAAK,UAAU;AACf,KAAK,MAAM;AACX,KAAK,MAAM;AACX,KAAK;AACL,KAAK;AACL,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,UAAU,EAAE;AAChB,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3B,KAAK,KAAK,EAAE;AACZ,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ,MAAM;AACN,KAAK,QAAQ,EAAE;AACf,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ,MAAM;AACN,KAAK,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AAClC,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ,MAAM;AACN,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;AACxC,KAAK,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC9B,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ;AAC1B;AACA;AACA,GAAG;AACH,EAAE,OAAO,EAAE;AACX,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,KAAK,EAAE;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AAChC,IAAI,oBAAoB,EAAE,IAAI;AAC9B,IAAI,UAAU,EAAE;AAChB,KAAK,IAAI,EAAE;AACX,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,SAAS,EAAE;AACjB,MAAM;AACN,KAAK,MAAM,EAAE;AACb,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,IAAI,EAAE;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,MAAM;AAClC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,OAAO;AACzC,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,SAAS;AAC3E,CAAC,OAAO,OAAO,KAAK;AACpB;AACA,SAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;AACvC,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAChE,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;AAC1C,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,KAAK,SAAS;AAC1D;AACA;AACA,SAAS,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE;AACnD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,MAAM;AACzD,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5B,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AACvD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1F,EAAE,OAAO,MAAM;AACf,CAAC;AACD,CAAC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1J,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5L,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;AACzB,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9H,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnH,CAAC;AACD,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE;AAC1B,EAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AACzG,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;AACtE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;AAC7B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE;AACF,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE;AAChD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE;AACnF,CAAC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AAC1E,CAAC,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AACxE,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,iGAAiG,CAAC;AAC5J,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC;AACzH,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE;AACpE,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE;AACpE,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,EAAE;AAC1E,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE;AACvE,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AAClC,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI;AAChD,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC;AACvE,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI;AAChD,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;AACzE,CAAC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC7B,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAChH,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,6CAA6C,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1I,CAAC;AACD,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;AACrH,CAAC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACjC,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3J,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1J,CAAC;AACD,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;AACjB,EAAE,MAAM,OAAO,mBAAmB,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxG,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjE,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnI,CAAC;AACD,CAAC,OAAO,MAAM;AACd;;"}
@@ -1 +0,0 @@
1
- .page.svelte-1uha8ag{flex-direction:column;min-height:100vh;display:flex}.diff-backdrop.svelte-1uha8ag{z-index:80;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(28px);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.diff-modal.svelte-1uha8ag{background:var(--bg-card);border:1px solid var(--border);text-align:center;width:min(380px,100%);padding:28px 24px;box-shadow:0 16px 48px #00000047}.diff-modal.svelte-1uha8ag p:where(.svelte-1uha8ag){color:var(--text);margin:14px 0 0;font-size:15px}.diff-spinner.svelte-1uha8ag{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;margin:0 auto;animation:.7s linear infinite svelte-1uha8ag-diff-spin}@keyframes svelte-1uha8ag-diff-spin{to{transform:rotate(360deg)}}.toast.svelte-1uha8ag{z-index:50;border:1px solid var(--border);background:var(--bg-card);color:var(--text);padding:10px 16px;font-size:13px;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000029}.topbar.svelte-1uha8ag{border-bottom:1px solid var(--border);background:var(--header-bg);z-index:5;justify-content:space-between;align-items:center;gap:12px;padding:16px 28px;display:flex;position:sticky;top:0}.brand.svelte-1uha8ag{color:var(--text);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-dot.svelte-1uha8ag{background:linear-gradient(135deg,#6ea8fe,#c9a5ff);border-radius:50%;flex-shrink:0;width:9px;height:9px;box-shadow:0 0 12px #6ea8fe88}.title-block.svelte-1uha8ag{text-align:left;flex-direction:column;line-height:1.25;display:flex}.title-block.svelte-1uha8ag span:where(.svelte-1uha8ag):first-child{font-size:15px;font-weight:700}.title-block.svelte-1uha8ag small:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11.5px;font-weight:400}.workspace.svelte-1uha8ag{flex:1;grid-template-columns:minmax(0,1fr) minmax(300px,380px);align-items:start;gap:28px;width:100%;max-width:1280px;margin:0 auto;padding:22px 28px 40px;display:grid;overflow:auto}.setup.svelte-1uha8ag{min-width:0}h2.svelte-1uha8ag{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:13px;font-weight:600}.result-head.svelte-1uha8ag{margin-top:24px}.section-head.svelte-1uha8ag{justify-content:space-between;align-items:baseline;margin-top:22px;display:flex}.hint-text.svelte-1uha8ag{color:var(--text-dim);margin:0 0 12px;font-size:12.5px;line-height:1.5}.hint-text.svelte-1uha8ag code:where(.svelte-1uha8ag){font-family:var(--mono);color:var(--text);font-size:12px}.detect-banner.svelte-1uha8ag,.detect-wait.svelte-1uha8ag{color:var(--text-dim);margin:0 0 10px;font-size:13px}button.file-link.svelte-1uha8ag{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.error-line.svelte-1uha8ag{color:var(--danger);margin:0 0 10px;font-size:12px}.ok-line.svelte-1uha8ag{color:var(--ok);margin:0 0 10px;font-size:12px}.row.svelte-1uha8ag{flex-wrap:wrap;gap:8px;display:flex}.repo-setup.svelte-1uha8ag{flex-direction:column;gap:10px;display:flex}.field.svelte-1uha8ag{flex-direction:column;flex:1;gap:4px;min-width:180px;display:flex}.repo-field.svelte-1uha8ag{flex:none;width:100%;min-width:0}.branches-row.svelte-1uha8ag .field:where(.svelte-1uha8ag){flex:1;min-width:160px}.field.svelte-1uha8ag span:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11px}.repo-row.svelte-1uha8ag{gap:6px;min-width:0;display:flex}.repo-row.svelte-1uha8ag input[type=text]:where(.svelte-1uha8ag){flex:1;min-width:0}.repo-row.svelte-1uha8ag button:where(.svelte-1uha8ag){flex-shrink:0}.source-toggle.svelte-1uha8ag{margin-bottom:10px}input[type=text].svelte-1uha8ag,select.svelte-1uha8ag{background:var(--bg-card);border:1px solid var(--border);flex:1;min-width:0;padding:9px 12px}button.svelte-1uha8ag{background:var(--bg-card);border:1px solid var(--border);color:var(--text);padding:9px 12px;font-size:12.5px}button.svelte-1uha8ag:hover:not(:disabled){border-color:var(--accent)}button.svelte-1uha8ag:disabled{opacity:.5;cursor:not-allowed}.mode-toggle.svelte-1uha8ag{border:1px solid var(--border);width:fit-content;margin-bottom:10px;display:flex;overflow:hidden}.mode-toggle.svelte-1uha8ag button:where(.svelte-1uha8ag){background:0 0;border:0;padding:6px 12px;font-size:12px}.mode-toggle.svelte-1uha8ag button:where(.svelte-1uha8ag)+button:where(.svelte-1uha8ag){border-left:1px solid var(--border)}.mode-toggle.svelte-1uha8ag button.on:where(.svelte-1uha8ag){background:var(--accent-soft)}textarea.svelte-1uha8ag{resize:vertical;background:var(--bg);border:1px solid var(--border);width:100%;height:220px;font-family:var(--mono);color:var(--text);padding:12px;font-size:12px;line-height:1.5}.command-box.svelte-1uha8ag{background:var(--bg);border:1px solid var(--border);padding:10px 12px;overflow:auto}.command-box.svelte-1uha8ag code:where(.svelte-1uha8ag){font-family:var(--mono);color:var(--text);white-space:nowrap;font-size:12.5px}.actions.svelte-1uha8ag{gap:8px;margin-top:10px;display:flex}button.primary.svelte-1uha8ag{background:var(--btn-primary-bg);border-color:var(--btn-primary-border);color:var(--btn-primary-text);font-weight:600}button.ghost.svelte-1uha8ag{color:var(--text-dim);background:0 0}.skill-block.svelte-1uha8ag{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.skill-block.svelte-1uha8ag h3:where(.svelte-1uha8ag){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:11.5px;font-weight:650}.skill-buttons.svelte-1uha8ag{flex-wrap:wrap;gap:8px;display:flex}.coverage-box.svelte-1uha8ag{border:1px solid var(--border);border-left:3px solid var(--sev-med);background:var(--bg-card);flex-direction:column;gap:10px;margin-top:12px;padding:12px 14px;display:flex}.coverage-head.svelte-1uha8ag{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.coverage-head.svelte-1uha8ag strong:where(.svelte-1uha8ag){color:var(--sev-med);font-size:13px}.coverage-head.svelte-1uha8ag span:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11.5px}.coverage-box.svelte-1uha8ag summary:where(.svelte-1uha8ag){color:var(--text-dim);cursor:pointer;font-size:12px}.coverage-list.svelte-1uha8ag{max-height:180px;font-family:var(--mono);color:var(--text-faint);margin:8px 0 0;padding-left:18px;font-size:11px;overflow:auto}.coverage-box.svelte-1uha8ag textarea:where(.svelte-1uha8ag){resize:vertical;background:var(--bg);border:1px solid var(--border);width:100%;font-family:var(--mono);color:var(--text);padding:10px;font-size:11.5px;line-height:1.5}.coverage-actions.svelte-1uha8ag{flex-wrap:wrap;gap:8px;display:flex}.dropzone.svelte-1uha8ag{border:1.5px dashed var(--border);text-align:center;background:var(--bg-elev);padding:26px;transition:background .15s,border-color .15s}.dropzone.drag.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft)}.dropzone.busy.svelte-1uha8ag{opacity:.7}.dropzone.svelte-1uha8ag p:where(.svelte-1uha8ag){color:var(--text-dim);margin:0 0 6px;font-size:14px}.visually-hidden.svelte-1uha8ag{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.drop-errors.svelte-1uha8ag{background:var(--danger-bg);color:var(--danger);margin-top:10px;padding:10px 12px;font-size:12.5px}.drop-errors.svelte-1uha8ag strong:where(.svelte-1uha8ag){margin-bottom:4px;display:block}.drop-errors.svelte-1uha8ag ul:where(.svelte-1uha8ag){margin:0;padding-left:18px;line-height:1.6}.reports-col.svelte-1uha8ag{min-width:0;max-height:calc(100vh - 110px);position:sticky;top:88px;overflow:auto}.report-list.svelte-1uha8ag{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.report-item.svelte-1uha8ag{border:1px solid var(--border);background:var(--bg-card);align-items:stretch;display:flex;position:relative;overflow:visible}.report-item.svelte-1uha8ag:hover{background:var(--bg-card-hover);border-color:#33507a}.report-card.svelte-1uha8ag{min-width:0;color:var(--text);flex:1;padding:12px 8px 12px 14px;text-decoration:none;display:block}.report-actions.svelte-1uha8ag{flex-shrink:0;padding:8px 8px 0 0;position:relative}.kebab.svelte-1uha8ag{width:26px;height:26px;color:var(--text-faint);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.kebab.svelte-1uha8ag:hover{border-color:var(--border);color:var(--text);background:var(--bg)}.report-menu.svelte-1uha8ag{z-index:30;border:1px solid var(--border);background:var(--bg-card);min-width:140px;padding:4px;position:absolute;top:auto;bottom:calc(100% - 2px);right:8px;box-shadow:0 8px 24px #0000002e}.report-menu.svelte-1uha8ag .menu-item:where(.svelte-1uha8ag){width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 10px;font-size:12.5px;display:block}.report-menu.svelte-1uha8ag .menu-item:where(.svelte-1uha8ag):hover{background:var(--accent-soft)}.report-menu.svelte-1uha8ag .menu-item.danger:where(.svelte-1uha8ag){color:var(--danger)}.report-top.svelte-1uha8ag{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.report-top.svelte-1uha8ag strong:where(.svelte-1uha8ag){font-size:14px}.when.svelte-1uha8ag{color:var(--text-dim);font-size:12px}.report-meta.svelte-1uha8ag{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:12px;display:flex}.pill.svelte-1uha8ag{font-family:var(--mono);font-size:11px}.pill.bad.svelte-1uha8ag{color:var(--danger)}.report-intent.svelte-1uha8ag{color:var(--text-dim);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:8px 0 0;font-size:12.5px;line-height:1.45;display:-webkit-box;overflow:hidden}@media (width<=960px){.workspace.svelte-1uha8ag{grid-template-columns:1fr}.reports-col.svelte-1uha8ag{max-height:none;position:static}}
@@ -1 +0,0 @@
1
- .diff-wrap.svelte-13r6alg{background:var(--bg);--ln-w:calc(var(--diff-font-size,11.5px) * 3.1);--sign-w:calc(var(--diff-font-size,11.5px) * 1.05);--divider-w:5px}.collapse-bar.svelte-13r6alg{background:var(--diff-hunk-bg);border-bottom:1px solid var(--border-soft);color:var(--text-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;font-size:10.5px;display:flex}.link.svelte-13r6alg{color:var(--accent);background:0 0;border:0;padding:0;font-size:10.5px;text-decoration:underline}.gap-bar.svelte-13r6alg{background:var(--diff-hunk-bg);border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);align-items:center;gap:10px;padding:3px 10px;display:flex}.gap-actions.svelte-13r6alg{border:1px solid var(--border);flex-shrink:0;display:flex;overflow:hidden}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg){background:var(--bg-card);font-family:var(--mono);font-size:calc(var(--diff-font-size,11.5px) * .87);color:var(--text-dim);border:0;padding:1px 8px;line-height:1.5}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg)+button:where(.svelte-13r6alg){border-left:1px solid var(--border)}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg):hover:not(:disabled){background:var(--accent-soft);color:var(--text)}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg):disabled{opacity:.4;cursor:not-allowed}.gap-info.svelte-13r6alg{font-family:var(--mono);font-size:calc(var(--diff-font-size,11.5px) * .87);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.empty.svelte-13r6alg{color:var(--text-faint);margin:0;padding:12px;font-size:11.5px}.diff.svelte-13r6alg,.hunk-header.svelte-13r6alg{font-family:var(--mono)}.diff.svelte-13r6alg{max-height:55vh;font-size:var(--diff-font-size,11.5px);overflow:auto}.diff.wrap.svelte-13r6alg{overflow-x:hidden}.diff.wrap.svelte-13r6alg .row:where(.svelte-13r6alg){width:auto;min-width:0}.diff.wrap.svelte-13r6alg .code:where(.svelte-13r6alg){white-space:pre-wrap;overflow-wrap:anywhere}.hunk-header.svelte-13r6alg{background:var(--diff-hunk-bg);border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);font-size:calc(var(--diff-font-size,11.5px) * .913);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;padding:3px 10px;overflow:hidden}.row.svelte-13r6alg{grid-template-columns:var(--ln-w) var(--ln-w) var(--sign-w) auto;border-left:2px solid #0000;width:max-content;min-width:100%;display:grid}.split-grid.svelte-13r6alg{align-items:stretch;display:grid}.srow.svelte-13r6alg{display:contents}.divider.svelte-13r6alg{background:var(--border-soft);cursor:col-resize;touch-action:none}.divider.svelte-13r6alg:hover,.divider.svelte-13r6alg:active{background:var(--accent)}.split-grid.svelte-13r6alg .code:where(.svelte-13r6alg){white-space:pre-wrap;overflow-wrap:anywhere}.ln.svelte-13r6alg{text-align:right;color:var(--diff-gutter);font-size:calc(var(--diff-font-size,11.5px) * .87);-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums;border-left:2px solid #0000;padding-right:6px;overflow:hidden}.row.svelte-13r6alg .ln:where(.svelte-13r6alg){border-left:0}.sign.svelte-13r6alg{text-align:center;-webkit-user-select:none;user-select:none;color:var(--text-faint)}.sign.add.svelte-13r6alg{color:var(--diff-add-fg)}.sign.del.svelte-13r6alg{color:var(--diff-del-fg)}.code.svelte-13r6alg{white-space:pre;padding-right:10px}.row.add.svelte-13r6alg{background:var(--diff-add-bg)}.row.add.svelte-13r6alg .sign:where(.svelte-13r6alg){color:var(--diff-add-fg)}.row.del.svelte-13r6alg{background:var(--diff-del-bg)}.row.del.svelte-13r6alg .sign:where(.svelte-13r6alg){color:var(--diff-del-fg)}.file-icon.svelte-1dshc1f{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.file-icon.svelte-1dshc1f svg{width:100%;height:100%}.file-icon.branded.svelte-1dshc1f svg{width:78%;height:78%}.file-icon.svelte-1dshc1f:not(.branded) svg{fill:currentColor}.resize-handle.svelte-ywcz8g{cursor:col-resize;z-index:2;touch-action:none;background:0 0;flex-shrink:0;width:6px;position:relative}.resize-handle.svelte-ywcz8g:after{content:"";background:0 0;width:2px;position:absolute;top:0;bottom:0;left:2px}.resize-handle.svelte-ywcz8g:hover:after,.resize-handle.dragging.svelte-ywcz8g:after{background:var(--accent)}.explore.svelte-1k3qopq{display:contents}.blocker-bar.svelte-1k3qopq{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);margin:0;padding:10px 14px;font-size:13px;font-weight:600}h2.svelte-1k3qopq{letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);margin:0 0 8px;font-size:12px;font-weight:650}.intent.svelte-1k3qopq{border-bottom:1px solid var(--border);padding:0 0 16px}.intent-text.svelte-1k3qopq{color:var(--text);max-width:80ch;margin:0;font-size:14px;line-height:1.6}.note.svelte-1k3qopq{color:var(--text-faint);max-width:80ch;margin:8px 0 0;font-size:11.5px;line-height:1.5}.group.svelte-1k3qopq{flex-direction:column;gap:12px;padding:18px 0 6px;display:flex}.group-sticky.svelte-1k3qopq{z-index:4;background:var(--bg);border-bottom:1px solid var(--border-soft);flex-direction:column;gap:6px;margin:0 -20px;padding:14px 20px 12px;display:flex;position:sticky;top:-14px}.group-head.svelte-1k3qopq{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.group-head.svelte-1k3qopq .number:where(.svelte-1k3qopq){color:var(--text-faint);flex-shrink:0;font-size:12px;font-weight:700}.group-head.svelte-1k3qopq h2:where(.svelte-1k3qopq){color:var(--text);text-transform:none;letter-spacing:normal;margin:0;font-size:15px;font-weight:650;line-height:1.3}.kind-chip.svelte-1k3qopq{border:1px solid var(--border);background:var(--bg-card);flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:700}.group-intent.svelte-1k3qopq{color:var(--text-dim);max-width:80ch;margin:0;font-size:12.5px;line-height:1.45}.loose.svelte-1k3qopq .kind-chip:where(.svelte-1k3qopq){color:var(--text-faint)}.file-section.svelte-1k3qopq{border-top:1px solid var(--border)}.file-head.svelte-1k3qopq{border-bottom:1px solid var(--border-soft);align-items:center;display:grid}.file-section.collapsed.svelte-1k3qopq .file-head:where(.svelte-1k3qopq){border-bottom:0}.file-head-main.svelte-1k3qopq{align-items:center;gap:8px;min-width:0;padding:6px 0;display:flex}.file-toggle.svelte-1k3qopq{text-align:left;min-width:0;color:inherit;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:4px 0;display:flex}.file-toggle.svelte-1k3qopq:hover .path:where(.svelte-1k3qopq){color:var(--accent)}.caret.svelte-1k3qopq{width:10px;color:var(--text-faint);flex-shrink:0;font-size:10px}.file-head-gutter.svelte-1k3qopq{flex-shrink:0}.file-head-explain.svelte-1k3qopq{align-items:center;padding:10px 0 10px 14px;display:flex}.path.svelte-1k3qopq{font-family:var(--mono);color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12.5px;overflow:hidden}.change-label.svelte-1k3qopq{color:var(--text-faint);flex:1;font-size:11px}.findings-control.svelte-1k3qopq{color:var(--text);background:0 0;border:0;flex-shrink:0;align-items:center;gap:6px;padding:0;display:flex}.count-badge.svelte-1k3qopq{justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:10.5px;font-weight:700;display:flex}.count-badge.done.svelte-1k3qopq{border:1px solid var(--fix-border);color:var(--ok)}.count-badge.open.svelte-1k3qopq{background:color-mix(in srgb, var(--finding-sev) 22%, transparent);color:var(--finding-sev)}.count-label.svelte-1k3qopq{color:var(--text-faint);font-size:11.5px}.count-label.open.svelte-1k3qopq{color:var(--text-dim)}.arrow.svelte-1k3qopq{color:var(--finding-sev,var(--accent));font-size:14px}.file-grid.svelte-1k3qopq{grid-template-columns:minmax(0,1fr) minmax(260px,320px);display:grid}.file-grid.no-explanations.svelte-1k3qopq{grid-template-columns:minmax(0,1fr)}.diff-col.svelte-1k3qopq{min-width:0}.explain-col.svelte-1k3qopq{border-left:1px solid var(--border-soft);background:var(--bg-elev);flex-direction:column;display:flex;overflow:auto}.explain-row.svelte-1k3qopq{border-bottom:1px solid var(--border-soft);padding:10px 14px}.explain-top.svelte-1k3qopq{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.lines.svelte-1k3qopq{color:var(--text-faint);font-size:10.5px;font-family:var(--mono)}.op.svelte-1k3qopq{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.what.svelte-1k3qopq{color:var(--text);max-width:80ch;margin:0 0 3px;font-size:13px;line-height:1.4}.why.svelte-1k3qopq{color:var(--text-dim);max-width:80ch;margin:0;font-size:11.5px;line-height:1.4}.orphans.svelte-1k3qopq,.skipped.svelte-1k3qopq{border-top:1px solid var(--border-soft);padding-top:12px}.orphan-list.svelte-1k3qopq{flex-direction:column;gap:6px;display:flex}.orphan-row.svelte-1k3qopq{background:var(--bg-elev);border-left:2px solid #0000;align-items:baseline;gap:10px;padding:6px 10px;display:flex}.orphan-row.svelte-1k3qopq .badge:where(.svelte-1k3qopq){flex-shrink:0;font-size:10px;font-weight:700}.orphan-row.svelte-1k3qopq .what:where(.svelte-1k3qopq){flex:1;margin:0;font-size:12.5px}.orphan-row.svelte-1k3qopq .where:where(.svelte-1k3qopq){font-family:var(--mono);color:var(--text-faint);font-size:10.5px}.skipped-list.svelte-1k3qopq{flex-wrap:wrap;gap:6px;display:flex}.skipped-chip.svelte-1k3qopq{font-size:11px;font-family:var(--mono);color:var(--text-faint);border:1px solid var(--border);padding:4px 8px}.prompt-box.svelte-1dm34m1{border:1px solid var(--fix-border);background:var(--fix-bg);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.prompt-box.publish.svelte-1dm34m1{border-color:var(--publish-border);background:var(--publish-bg)}.prompt-head.svelte-1dm34m1{justify-content:space-between;align-items:center;display:flex}.fix-title.svelte-1dm34m1{letter-spacing:.07em;text-transform:uppercase;color:var(--fix-text);margin:0;font-size:12px;font-weight:650}.publish-title.svelte-1dm34m1{letter-spacing:.07em;text-transform:uppercase;color:var(--publish-text);margin:0;font-size:12px;font-weight:650}.close.svelte-1dm34m1{color:var(--text-faint);background:0 0;border:0;padding:0;font-size:12px}.mode-toggle.svelte-1dm34m1{border:1px solid var(--border);width:fit-content;display:flex;overflow:hidden}.mode-toggle.svelte-1dm34m1 button:where(.svelte-1dm34m1){color:var(--text);background:0 0;border:0;padding:6px 12px;font-size:12px}.mode-toggle.svelte-1dm34m1 button:where(.svelte-1dm34m1)+button:where(.svelte-1dm34m1){border-left:1px solid var(--border)}.mode-toggle.svelte-1dm34m1 button.on:where(.svelte-1dm34m1){background:var(--accent-soft)}textarea.svelte-1dm34m1{resize:vertical;background:var(--bg);border:1px solid var(--border);width:100%;height:220px;font-family:var(--mono);color:var(--text);padding:12px;font-size:12px;line-height:1.5}.command-box.svelte-1dm34m1{background:var(--bg);border:1px solid var(--border);padding:10px 12px;overflow:auto}.command-box.svelte-1dm34m1 code:where(.svelte-1dm34m1){font-family:var(--mono);color:var(--text);white-space:nowrap;font-size:12.5px}.hint.svelte-1dm34m1{color:var(--text-faint);margin:0;font-size:11.5px}.copy.svelte-1dm34m1{background:var(--btn-primary-bg);border:1px solid var(--btn-primary-border);color:var(--btn-primary-text);padding:9px 14px;font-size:13px;font-weight:600}.detail-panel.svelte-1dm34m1{border:1px solid var(--border);background:var(--bg-card);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.detail-head.svelte-1dm34m1{border-bottom:1px solid var(--border-soft);background:var(--bg-elev);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.detail-head-left.svelte-1dm34m1{align-items:center;gap:8px;display:flex}.number.svelte-1dm34m1{color:var(--text);font-size:12px;font-weight:700}.badge.svelte-1dm34m1{font-size:10px;font-weight:700}.file-line.svelte-1dm34m1{min-width:0;font-family:var(--mono);align-items:baseline;gap:8px;display:flex}.file-name.svelte-1dm34m1{color:var(--text);flex-shrink:0;font-size:12px;font-weight:600}.file-dir.svelte-1dm34m1{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.decision-group.svelte-1dm34m1{border:1px solid var(--border);flex-shrink:0;display:flex;overflow:hidden}.decision-group.svelte-1dm34m1 button:where(.svelte-1dm34m1){color:var(--text-dim);background:0 0;border:0;padding:6px 14px;font-size:12px;font-weight:600}.decision-group.svelte-1dm34m1 button:first-child.on:where(.svelte-1dm34m1){background:var(--danger-bg);color:var(--danger)}.decision-group.svelte-1dm34m1 button:nth-child(2).on:where(.svelte-1dm34m1){background:var(--fix-bg);color:var(--ok)}.decision-group.svelte-1dm34m1 button:where(.svelte-1dm34m1)+button:where(.svelte-1dm34m1){border-left:1px solid var(--border)}.decision-group.svelte-1dm34m1 .clear:where(.svelte-1dm34m1){color:var(--text-faint);padding:6px 10px}.detail-grid.svelte-1dm34m1{flex:1;grid-template-columns:minmax(0,1fr) minmax(260px,320px);min-height:0;display:grid}.detail-grid.no-explanations.svelte-1dm34m1{grid-template-columns:minmax(0,1fr)}.diff-col.svelte-1dm34m1{flex-direction:column;min-width:0;display:flex;overflow:hidden auto}.file-path-bar.svelte-1dm34m1{border-bottom:1px solid var(--border-soft);background:var(--bg-elev);flex-shrink:0;align-items:center;gap:8px;min-width:0;padding:8px 14px;display:flex}.file-path-text.svelte-1dm34m1{font-family:var(--mono);color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.explain-col.svelte-1dm34m1{border-left:1px solid var(--border-soft);background:var(--bg-elev);flex-direction:column;gap:16px;padding:14px 16px;display:flex;overflow:auto}.explain-counter.svelte-1dm34m1{color:var(--text-dim);border:1px solid var(--border);background:var(--bg-card);align-self:flex-start;padding:3px 8px;font-size:10.5px;font-weight:650}.explain-col.svelte-1dm34m1 h3:where(.svelte-1dm34m1){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:10.5px;font-weight:650}.explain-col.svelte-1dm34m1 .what:where(.svelte-1dm34m1){color:var(--text);margin:0;font-size:13px;line-height:1.45}.explain-col.svelte-1dm34m1 .fix:where(.svelte-1dm34m1){color:var(--text-dim);margin:0;font-size:13px;line-height:1.45}.backdrop.svelte-lfje9j{z-index:9;background:#00000059;position:fixed;inset:0}.drawer.svelte-lfje9j{background:var(--bg-card);border-left:1px solid var(--border);z-index:10;flex-direction:column;width:420px;transition:transform .2s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.drawer.open.svelte-lfje9j{transform:translate(0)}.drawer-head.svelte-lfje9j{border-bottom:1px solid var(--border-soft);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding:12px 14px;display:flex}.drawer-title.svelte-lfje9j{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.file-ref.svelte-lfje9j{align-items:baseline;gap:8px;min-width:0;display:flex;overflow:hidden}.name.svelte-lfje9j{color:var(--text);font-size:13px;font-weight:600;font-family:var(--mono);flex-shrink:0}.dir.svelte-lfje9j{color:var(--text-faint);font-size:11px;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.close.svelte-lfje9j{color:var(--text-faint);background:0 0;border:0;flex-shrink:0;padding:0;font-size:14px}.list.svelte-lfje9j{flex-direction:column;display:flex;overflow:auto}.item.svelte-lfje9j{border-bottom:1px solid var(--border-soft)}.item-head.svelte-lfje9j{text-align:left;background:0 0;border:0;border-left:2px solid #0000;align-items:center;gap:8px;width:100%;padding:10px 14px;display:flex}.status.svelte-lfje9j{border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;font-size:10px;line-height:1;display:flex}.badge.svelte-lfje9j{flex-shrink:0;font-size:10px;font-weight:700}.what.svelte-lfje9j{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12.5px;overflow:hidden}.chevron.svelte-lfje9j{color:var(--text-faint);flex-shrink:0;font-size:11px}.item-body.svelte-lfje9j{flex-direction:column;gap:14px;padding:0 14px 14px 20px;display:flex}.item-body.svelte-lfje9j h4:where(.svelte-lfje9j){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:10px;font-weight:650}.item-body.svelte-lfje9j p:where(.svelte-lfje9j){color:var(--text);margin:0;font-size:13px;line-height:1.5}.item-body.svelte-lfje9j p.fix:where(.svelte-lfje9j){color:var(--text-dim)}.decision-group.svelte-lfje9j{border:1px solid var(--border);width:fit-content;display:flex;overflow:hidden}.decision-group.svelte-lfje9j button:where(.svelte-lfje9j){color:var(--text-dim);background:0 0;border:0;padding:7px 14px;font-size:12px;font-weight:600}.decision-group.svelte-lfje9j button:first-child.on:where(.svelte-lfje9j){background:var(--danger-bg);color:var(--danger)}.decision-group.svelte-lfje9j button:nth-child(2).on:where(.svelte-lfje9j){background:var(--fix-bg);color:var(--ok)}.decision-group.svelte-lfje9j button:where(.svelte-lfje9j)+button:where(.svelte-lfje9j){border-left:1px solid var(--border)}.decision-group.svelte-lfje9j .clear:where(.svelte-lfje9j){color:var(--text-faint);padding:7px 10px}.footer.svelte-67e2dl{border-top:1px solid var(--border);background:var(--bg-elev);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;min-height:33px;padding:6px 16px;display:flex}.right.svelte-67e2dl{align-items:center;gap:12px;display:flex}.reviewed.svelte-67e2dl{color:var(--text-faint);font-size:11px}.fix.svelte-67e2dl,.publish.svelte-67e2dl{border:1px solid;padding:6px 12px;font-size:11.5px;font-weight:600}.fix.svelte-67e2dl{background:var(--fix-bg);border-color:var(--fix-border);color:var(--ok)}.publish.svelte-67e2dl{background:var(--publish-bg);border-color:var(--publish-border);color:var(--publish-text)}.sidebar.svelte-xengl2{border-right:1px solid var(--border);background:var(--bg-elev);flex-direction:column;height:100%;min-height:0;padding:14px 0;display:flex;overflow:hidden}.sidebar.collapsed.svelte-xengl2{border-right:0}.mode-toggle.svelte-xengl2{border:1px solid var(--border);flex-shrink:0;margin:0 14px 12px;display:flex;overflow:hidden}.mode-toggle.svelte-xengl2 button:where(.svelte-xengl2){color:var(--text);background:0 0;border:0;flex:1;justify-content:center;align-items:center;gap:6px;padding:7px 8px;font-size:12px;display:flex}.mode-toggle.svelte-xengl2 button:where(.svelte-xengl2)+button:where(.svelte-xengl2){border-left:1px solid var(--border)}.mode-toggle.svelte-xengl2 button.on:where(.svelte-xengl2){background:var(--accent-soft)}.mode-label.svelte-xengl2{align-items:center;gap:6px;line-height:1;display:inline-flex}.count-badge.svelte-xengl2{font-family:var(--mono);border:1px solid color-mix(in srgb, var(--finding-sev,var(--border)) 45%, transparent);background:color-mix(in srgb, var(--finding-sev,var(--bg-card)) 18%, transparent);color:var(--finding-sev,var(--text-dim));justify-content:center;align-items:center;padding:2px 6px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.panel.svelte-xengl2{padding:0 14px 10px}.explore-panel.svelte-xengl2{flex-direction:column;flex:1;min-height:0;padding:0 0 10px;display:flex;overflow:hidden}.panel-chrome.svelte-xengl2{flex-shrink:0;padding:0 14px}.panel-scroll.svelte-xengl2{flex:1;min-height:0;padding:0 14px;overflow:hidden auto}h3.svelte-xengl2{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 8px;font-size:11.5px;font-weight:650}.index-tabs.svelte-xengl2{border-bottom:1px solid var(--border-soft);gap:12px;margin-bottom:8px;display:flex}.index-tabs.svelte-xengl2 button:where(.svelte-xengl2){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 0 6px;font-size:11.5px;font-weight:650}.index-tabs.svelte-xengl2 button.on:where(.svelte-xengl2){color:var(--text);border-bottom-color:var(--accent)}.files-toolbar.svelte-xengl2{justify-content:space-between;align-items:center;gap:6px;margin:-2px 0 8px;display:flex}.files-toolbar.svelte-xengl2 .tool:where(.svelte-xengl2){border:1px solid var(--border);background:var(--bg-card);width:26px;height:26px;color:var(--text-dim);justify-content:center;align-items:center;padding:0;display:inline-flex}.files-toolbar.svelte-xengl2 .tool:where(.svelte-xengl2):hover:not(:disabled){color:var(--text);border-color:var(--text-faint)}.files-toolbar.svelte-xengl2 .tool.on:where(.svelte-xengl2){background:var(--accent-soft);border-color:var(--border);color:var(--text)}.files-toolbar.svelte-xengl2 .tool:where(.svelte-xengl2):disabled{opacity:.35;cursor:default}.files-toolbar.svelte-xengl2 .tool-icon:where(.svelte-xengl2){width:14px;height:14px;display:block}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2){border:1px solid var(--border);display:flex;overflow:hidden}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2) .tool:where(.svelte-xengl2){background:0 0;border:0;border-radius:0}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2) .tool:where(.svelte-xengl2)+.tool:where(.svelte-xengl2){border-left:1px solid var(--border)}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2) .tool.on:where(.svelte-xengl2){background:var(--accent-soft)}.nav-list.svelte-xengl2{flex-direction:column;gap:2px;display:flex}.tree.svelte-xengl2{flex-direction:column;display:flex}.tree-row.svelte-xengl2{text-align:left;width:100%;color:var(--text);background:0 0;border:0;align-items:center;gap:4px;min-width:0;padding:2px 6px 2px 0;font-size:12px;display:flex;position:relative}.tree-row.svelte-xengl2:hover:not(:disabled){background:var(--bg-card)}.tree-row.dir.svelte-xengl2{color:var(--text-dim)}.tree-row.muted.svelte-xengl2{color:var(--text-faint);cursor:default}.tree-row.skipped.svelte-xengl2 .name:where(.svelte-xengl2){text-decoration:line-through;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint)}.tree-guides.svelte-xengl2{pointer-events:none;width:0;position:absolute;inset:0 auto 0 0}.tree-guide.svelte-xengl2{background:var(--border-soft);opacity:.9;width:1px;position:absolute;top:0;bottom:0}.tree-slot.svelte-xengl2{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.caret.svelte-xengl2{color:var(--text-faint);font-size:10px;line-height:1}.mark.svelte-xengl2{width:9px;font-family:var(--mono);color:var(--text-faint);flex-shrink:0;font-size:9.5px;font-weight:700}.mark.add.svelte-xengl2{color:var(--diff-add-fg)}.mark.del.svelte-xengl2{color:var(--diff-del-fg)}.tree-row.svelte-xengl2 .name:where(.svelte-xengl2){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);flex:1;font-size:11.5px;overflow:hidden}.tree-row.svelte-xengl2 .name-line:where(.svelte-xengl2){flex:1;align-items:baseline;gap:6px;min-width:0;display:flex;overflow:hidden}.tree-row.svelte-xengl2 .name-line:where(.svelte-xengl2) .name:where(.svelte-xengl2){text-overflow:ellipsis;flex:0 auto;overflow:hidden}.tree-row.svelte-xengl2 .name-line:where(.svelte-xengl2) .dir:where(.svelte-xengl2){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);color:var(--text-faint);flex:1;font-size:10.5px;overflow:hidden}.tree-row.svelte-xengl2 .count:where(.svelte-xengl2),.group-link.svelte-xengl2 .count:where(.svelte-xengl2){color:var(--finding-sev,var(--danger));border:1px solid color-mix(in srgb, var(--finding-sev,var(--danger-border)) 55%, transparent);flex-shrink:0;padding:2px 5px;font-size:9.5px;font-weight:700;line-height:1}.tree-row.svelte-xengl2 .count.done:where(.svelte-xengl2),.group-link.svelte-xengl2 .count.done:where(.svelte-xengl2){color:var(--ok);border-color:var(--border)}.group-link.svelte-xengl2{min-width:0;color:var(--text);flex-direction:column;flex:1;gap:2px;padding:6px 8px 6px 0;font-size:12.5px;text-decoration:none;display:flex}.group-link.svelte-xengl2:hover{background:0 0}.group-item.svelte-xengl2{border-radius:0}.group-item.open.svelte-xengl2>.group-head-row:where(.svelte-xengl2){background:var(--bg-card)}.group-head-row.svelte-xengl2{align-items:flex-start;gap:0;display:flex}.group-head-row.svelte-xengl2:hover{background:var(--bg-card)}.group-caret.svelte-xengl2{width:20px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;padding:8px 0 0;display:inline-flex}.group-caret.svelte-xengl2:hover{color:var(--text)}.group-files.svelte-xengl2{flex-direction:column;padding:0 0 4px 8px;display:flex}.row.svelte-xengl2{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.group-link.svelte-xengl2 .number:where(.svelte-xengl2){color:var(--text-faint);flex-shrink:0;font-size:10px;font-weight:700}.kind-chip.svelte-xengl2{border:1px solid var(--border);background:var(--bg-card);flex-shrink:0;padding:1px 5px;font-size:10px;font-weight:700}.group-link.svelte-xengl2 .title:where(.svelte-xengl2){white-space:normal;overflow-wrap:anywhere;line-height:1.35;display:block}.group-link.svelte-xengl2 .row:where(.svelte-xengl2)>.count:where(.svelte-xengl2){margin-left:auto}.meta.svelte-xengl2{color:var(--text-faint);padding-left:0;font-size:11px}.group-files.svelte-xengl2 .tree-row.file.active:where(.svelte-xengl2){background:var(--accent-soft)}.findings-panel.svelte-xengl2{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.findings-head.svelte-xengl2{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.findings-head.svelte-xengl2 h3:where(.svelte-xengl2){margin:0}.reviewed.svelte-xengl2{color:var(--text-faint);font-size:10.5px}.progress.svelte-xengl2{background:var(--border-soft);flex-shrink:0;height:3px;margin-bottom:10px;overflow:hidden}.progress-bar.svelte-xengl2{background:var(--accent);height:100%}.findings-list.svelte-xengl2{flex-direction:column;flex:1;gap:4px;min-height:0;display:flex;overflow:hidden auto}.finding-row.svelte-xengl2{text-align:left;border:0;border-bottom:1px solid var(--border-soft);background:var(--bg-elev);border-left:2px solid #0000;flex-direction:column;width:100%;min-width:0;padding:8px 10px;display:flex}.finding-row.active.svelte-xengl2{background:var(--accent-soft)}.finding-row.svelte-xengl2 .top:where(.svelte-xengl2){flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 6px;margin-bottom:3px;display:flex}.finding-row.svelte-xengl2 .left:where(.svelte-xengl2){flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0;display:flex}.status.svelte-xengl2{border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;font-size:10px;line-height:1;display:flex}.number.svelte-xengl2{color:var(--text-faint);font-size:9.5px;font-weight:650}.badge.svelte-xengl2{font-size:9.5px;font-weight:700}.decision.svelte-xengl2{font-size:9.5px;font-weight:650}.what.svelte-xengl2{color:var(--text);overflow-wrap:anywhere;font-size:12.5px;line-height:1.35;display:block}.file-line.svelte-xengl2{color:var(--text-faint);font-size:10.5px;font-family:var(--mono);overflow-wrap:anywhere;margin-top:3px;display:block}.report-shell.svelte-1ipe5j3{flex-direction:column;flex:1;min-height:0;display:flex}.report.svelte-1ipe5j3{flex:1;min-height:0;display:grid}.content.svelte-1ipe5j3{flex-direction:column;gap:18px;min-height:0;padding:14px 20px 24px;display:flex;overflow:auto}.page.svelte-67dwv3{background:var(--bg);flex-direction:column;height:100vh;min-height:0;display:flex}.chrome.svelte-67dwv3{border-bottom:1px solid var(--border);background:var(--header-bg);flex-shrink:0;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:12px 28px;display:grid}.chrome-left.svelte-67dwv3{justify-self:start;align-items:center;gap:12px;min-width:0;display:flex}.chrome-center.svelte-67dwv3{justify-self:center;align-items:center;gap:10px;display:flex}.chrome-right.svelte-67dwv3{justify-self:end;align-items:center;gap:10px;display:flex}.brand.svelte-67dwv3{color:var(--text);flex-shrink:0;align-items:center;gap:10px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.brand-dot.svelte-67dwv3{background:linear-gradient(135deg,#6ea8fe,#c9a5ff);border-radius:50%;flex-shrink:0;width:9px;height:9px;box-shadow:0 0 12px #6ea8fe88}.chrome-divider.svelte-67dwv3{background:var(--border);flex-shrink:0;width:1px;height:18px}.breadcrumb.svelte-67dwv3{font-family:var(--mono);align-items:center;gap:6px;min-width:0;font-size:12.5px;display:flex}.crumb-branch.svelte-67dwv3{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.crumb-sep.svelte-67dwv3{color:var(--text-faint)}.crumb-base.svelte-67dwv3{color:var(--text-faint);white-space:nowrap}.menu-wrap.svelte-67dwv3{flex-shrink:0;position:relative}.menu.svelte-67dwv3{z-index:40;border:1px solid var(--border);background:var(--bg-card);min-width:180px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 24px #0000002e}.download-menu.svelte-67dwv3{flex-direction:column;gap:0;min-width:220px;padding:4px;display:flex;left:auto;right:0}.menu-item.svelte-67dwv3{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:0;padding:4px 8px;font-size:12px;line-height:1.25;display:flex}.download-menu.svelte-67dwv3 button.menu-item:where(.svelte-67dwv3){box-sizing:border-box;z-index:0;height:44px;min-height:44px;color:var(--text);font:inherit;letter-spacing:normal;text-align:left;cursor:pointer;appearance:none;background:0 0;border:0;border-radius:2px;flex-direction:row;justify-content:space-between;align-items:center;gap:8px;margin:0;padding:0 10px;font-size:12px;font-weight:400;line-height:1.2;display:flex;position:relative;overflow:hidden}.download-menu.svelte-67dwv3 button.menu-item:where(.svelte-67dwv3):hover{z-index:1;background:var(--accent-soft)}.menu-item.svelte-67dwv3:hover{background:var(--accent-soft)}.menu-item.danger.svelte-67dwv3{color:var(--danger)}.menu-item.svelte-67dwv3 .fmt:where(.svelte-67dwv3){flex-shrink:0;font-weight:600;line-height:1.2}.menu-item.svelte-67dwv3 .hint:where(.svelte-67dwv3){color:var(--text-faint);font-size:10.5px;line-height:1.2}.download-menu.svelte-67dwv3 .menu-item:where(.svelte-67dwv3) .fmt:where(.svelte-67dwv3),.download-menu.svelte-67dwv3 .menu-item:where(.svelte-67dwv3) .hint:where(.svelte-67dwv3){pointer-events:none}.download-menu.svelte-67dwv3 .menu-item:where(.svelte-67dwv3) .hint:where(.svelte-67dwv3){text-align:right;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:10px;overflow:hidden}.mode-toggle.svelte-67dwv3{border:1px solid var(--border);display:flex;overflow:hidden}.mode-toggle.svelte-67dwv3 button:where(.svelte-67dwv3){white-space:nowrap;color:var(--text);background:0 0;border:0;padding:6px 12px;font-size:12px}.mode-toggle.svelte-67dwv3 button:where(.svelte-67dwv3)+button:where(.svelte-67dwv3){border-left:1px solid var(--border)}.mode-toggle.svelte-67dwv3 button.on:where(.svelte-67dwv3){background:var(--accent-soft)}.zoom.svelte-67dwv3{align-items:center;gap:4px;display:flex}.icon-btn.svelte-67dwv3{background:var(--bg-card);border:1px solid var(--border);width:26px;height:26px;color:var(--text-dim);justify-content:center;align-items:center;padding:0;font-size:13px;display:flex}.icon-btn.svelte-67dwv3:hover{border-color:var(--accent);color:var(--text)}.icon-btn.on.svelte-67dwv3{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.icon-btn.kebab.svelte-67dwv3{background:0 0;border-color:#0000;width:24px;height:24px}.icon-btn.kebab.svelte-67dwv3:hover{border-color:var(--border);background:var(--bg-card)}.icon-btn.panel.svelte-67dwv3{font-size:15px}.icon-btn.svelte-67dwv3:disabled{opacity:.4;cursor:not-allowed}.zoom-label.svelte-67dwv3{font-family:var(--mono);color:var(--text-faint);text-align:center;width:30px;font-size:10.5px}.ghost.svelte-67dwv3{background:var(--bg-card);border:1px solid var(--border);color:var(--text);padding:7px 12px;font-size:12.5px}.download-btn.svelte-67dwv3{align-items:center;gap:6px;display:inline-flex}.download-btn.svelte-67dwv3 .caret:where(.svelte-67dwv3){opacity:.7}.hint.svelte-67dwv3{color:var(--text-faint);padding:40px 28px;font-size:13px}
@@ -1 +0,0 @@
1
- .theme-toggle.svelte-lu0t34{background:var(--bg-card);border:1px solid var(--border);width:30px;height:30px;color:var(--text-dim);flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:14px;display:flex}.theme-toggle.svelte-lu0t34:hover{border-color:var(--accent);color:var(--text)}
@@ -1,2 +0,0 @@
1
- import{A as e,G as t,K as n,M as r,N as i,Q as a,j as o,n as s,t as c}from"./Dur-vdUf.js";var l=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function m(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function h({href:e}){return e.split(`#`)[0]}function g(){}function _(e){let t=!1,n;return()=>t?n:(t=!0,n=e())}function v(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}var ee=new TextEncoder;function te(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function y(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var ne=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&b.delete(ae(e)),ne(e,t));var b=new Map;function re(e,t){let n=ae(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=y(e));let i=r.getAttribute(`data-ttl`);return i&&b.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ie(e,t,n){if(b.size>0){let t=ae(e,n),r=b.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);b.delete(t)}}return window.fetch(t,n)}function ae(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${v(...e)}"]`}return n}var oe=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,se=/^\/\((?:[^)]+)\)$/;function ce(e){let t=[];return{pattern:e===`/`||se.test(e)?/^\/$/:RegExp(`^${ue(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return fe(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return fe(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=oe.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return fe(e)}).join(``)}).join(``)}/?$`),params:t}}function le(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ue(e){return e.slice(1).split(`/`).filter(le)}function de(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function fe(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}var pe=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function me(e,t){let n=ue(e),r=e!=`/`&&e.endsWith(`/`);return`/`+n.map(n=>n.replace(pe,(n,r,i,a)=>{let o=t[a];if(!o){if(r||i&&o!==void 0)return``;throw Error(`Missing parameter '${a}' in route ${e}`)}if(o.startsWith(`/`)||o.endsWith(`/`))throw Error(`Parameter '${a}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return o})).filter(Boolean).join(`/`)+(r?`/`:``)}function he({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ce(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return de(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function ge(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function _e(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var x=globalThis.__sveltekit_1wz7pax?.base??``,ve=globalThis.__sveltekit_1wz7pax?.assets??x??``,ye=`_app`,be=``;function xe(...e){if(!e[0].startsWith(`/`))throw Error(`Cannot use \`resolve(...)\` with a non-absolute pathname or route ID (got "${e[0]}"). \`resolve\` is only for internal pathnames and route IDs; external URLs should be used directly.`);return x+be+me(e[0],e[1])}var Se=`1791221793925`,Ce=`sveltekit:snapshot`,we=`sveltekit:scroll`,Te=`sveltekit:states`,Ee=`sveltekit:pageurl`,S=`sveltekit:history`,C=`sveltekit:navigation`,w={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},T=location.origin;function De(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var Oe={...w,"":w.hover};function ke(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ae(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ke(e)}}function je(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||Ie(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===T&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function Me(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ke(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:Oe[r??`off`],preload_data:Oe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Ne(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var Pe={v:g};function Fe(){let{set:e,subscribe:t}=a(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${ve}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==Se;return n&&(e(!0),Pe.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function Ie(e,t,n){return e.origin!==T||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Le(e){}var Re=2**32-1,ze=Re-1,O=class extends Error{constructor(e,t,n,r){super(e),this.name=`DevalueError`,this.path=t.join(``),this.value=n,this.root=r}},Be=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Ve(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Be}function He(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ue(e){switch(e){case`"`:return`\\"`;case`<`:return`\\u003C`;case`\\`:return`\\\\`;case`
2
- `:return`\\n`;case`\r`:return`\\r`;case` `:return`\\t`;case`\b`:return`\\b`;case`\f`:return`\\f`;case`\u2028`:return`\\u2028`;case`\u2029`:return`\\u2029`;default:return e<` `?`\\u${e.charCodeAt(0).toString(16).padStart(4,`0`)}`:``}}function k(e){let t=``,n=0,r=e.length;for(let i=0;i<r;i+=1){let r=e[i],a=Ue(r);a&&(t+=e.slice(n,i)+a,n=i+1)}return`"${n===0?e:t+e.slice(n)}"`}function We(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}var Ge=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function Ke(e){return Ge.test(e)?`.`+e:`[`+JSON.stringify(e)+`]`}function qe(e){return!(!Number.isInteger(e)||e<0||e>ze)}function Je(e){return!(!Number.isInteger(e)||e<0||e>Re)}function Ye(e){if(e.length===0||e.length>1&&e.charCodeAt(0)===48)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<48||n>57)return!1}return qe(+e)}function Xe(e){for(var t=e.length-1;t>=0&&!Ye(e[t]);t--);return t+1}function Ze(e){let t=Object.keys(e);return t.length=Xe(t),t}function Qe(e){return new Uint8Array(e).toBase64()}function $e(e){return Uint8Array.fromBase64(e).buffer}function et(e){return Buffer.from(e).toString(`base64`)}function tt(e){return Uint8Array.from(Buffer.from(e,`base64`)).buffer}function nt(e){let t=new Uint8Array(e),n=``,r=32768;for(let e=0;e<t.length;e+=r){let i=t.subarray(e,e+r);n+=String.fromCharCode.apply(null,i)}return btoa(n)}function rt(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer}var it=typeof Uint8Array.fromBase64==`function`,at=typeof process==`object`&&process.versions?.node!==void 0,ot=it?Qe:at?et:nt,st=it?$e:at?tt:rt;function ct(e,t){if(!t)return e;let n={};for(let r of Object.keys(e))n[r]=t[r]??e[r];return n}var lt=Object.freeze({kind:`not-plain`}),ut=Object.freeze({kind:`symbol-keys`}),dt=Object.freeze({identify:e=>e,typeOf:e=>e===null?`null`:typeof e,toPrimitive:e=>e,tagOf:e=>He(e),isThenable:e=>typeof e.then==`function`,toPromise:e=>Promise.resolve(e),unbox:e=>e.valueOf(),toISOString:e=>isNaN(e.getDate())?``:e.toISOString(),toStringValue:e=>e.toString(),regExpInfo:e=>({source:e.source,flags:e.flags}),valuesOf:e=>e,entriesOf:e=>e,viewInfo:e=>({buffer:e.buffer,byteOffset:e.byteOffset,byteLength:e.byteLength,length:e.length,bufferByteLength:e.buffer.byteLength}),toArrayBuffer:e=>e,lengthOf:e=>e.length,hasOwn:(e,t)=>Object.hasOwn(e,t),indicesOf:e=>Ze(e),shapeOf:e=>Ve(e)?We(e).length>0?ut:{kind:Object.getPrototypeOf(e)===null?`null-proto`:`plain`,keys:Object.keys(e)}:lt,get:(e,t)=>e[t]}),ft=Object.freeze({fromPrimitive:e=>e,fromISOString:e=>new Date(e),fromStringValue:(e,t)=>e===`URL`?new URL(t):e===`URLSearchParams`?new URLSearchParams(t):Temporal[e.slice(9)].from(t),fromArrayBuffer:e=>e,fromRegExpInfo:(e,t)=>new RegExp(e,t),fromViewInfo:(e,t,n,r)=>{let i=globalThis[e];return n===void 0?new i(t):new i(t,n,r)},box:e=>Object(e),createArray:e=>Array(e),createSparseArray:e=>{let t=[];return t[ze]=void 0,delete t[ze],t.length=e,t},createObject:()=>({}),createNullPrototypeObject:()=>Object.create(null),createSet:()=>new Set,createMap:()=>new Map,set:(e,t,n)=>{e[t]=n},addValue:(e,t)=>{e.add(t)},addEntry:(e,t,n)=>{e.set(t,n)}});function pt(e,t,n){let r=ht(!1,e,t,n);return typeof r==`string`?r:`[${r.join(`,`)}]`}async function mt(e,t,n){let r=ht(!0,e,t,n);if(typeof r==`string`)return r;let i=`[`;for(let e=0;e<r.length;e+=1){let t=r[e];if(typeof t!=`string`&&(await t,t=r[e],e===0&&t<0))return`${t}`;i+=t,e<r.length-1&&(i+=`,`)}return i+=`]`,i}function ht(e,t,n,r){let i=ct(dt,r?.operations),a=[],o=new Map,s=[];if(n)for(let e of Object.getOwnPropertyNames(n))s.push({key:e,fn:n[e]});let c=[],l=0;function u(n,r){let d=i.typeOf(n);if(d===`undefined`)return-1;let f;if(d===`number`){if(f=i.toPrimitive(n),Number.isNaN(f))return-3;if(f===1/0)return-4;if(f===-1/0)return-5;if(f===0&&1/f<0)return-6}let p=i.identify(n);if(o.has(p))return o.get(p);r??=l++,o.set(p,r);for(let{key:e,fn:t}of s){let i=t(n);if(i)return a[r]=`["${e}",${u(i)}]`,r}if(d===`function`)throw new O(`Cannot stringify a function`,c,n,t);if(d===`symbol`)throw new O(`Cannot stringify a Symbol primitive`,c,n,t);let m=``;if(d!==`object`)m=gt(d===`number`?f:i.toPrimitive(n));else if(i.isThenable(n)){if(!e)throw new O(`Cannot stringify a Promise or thenable — use stringifyAsync instead`,c,n,t);m=i.toPromise(n).then(e=>{let t=u(e,r);t<0&&(a[r]=t)})}else{let e=i.tagOf(n);switch(e){case`Number`:case`String`:case`Boolean`:case`BigInt`:m=`["Object",${u(i.unbox(n))}]`;break;case`Date`:m=`["Date","${i.toISOString(n)}"]`;break;case`URL`:m=`["URL",${k(i.toStringValue(n))}]`;break;case`URLSearchParams`:m=`["URLSearchParams",${k(i.toStringValue(n))}]`;break;case`RegExp`:let{source:r,flags:a}=i.regExpInfo(n);m=a?`["RegExp",${k(r)},"${a}"]`:`["RegExp",${k(r)}]`;break;case`Array`:{let e=!1,t=i.lengthOf(n);m=`[`;for(let r=0;r<t;r+=1)if(r>0&&(m+=`,`),i.hasOwn(n,r))c.push(`[${r}]`),m+=u(i.get(n,r)),c.pop();else if(e)m+=-2;else{let r=i.indicesOf(n),a=r.length,o=String(t).length;if((t-a)*3>4+o+a*(o+1)){m=`[-7,`+t;for(let e=0;e<r.length;e++){let t=r[e];c.push(`[${t}]`),m+=`,`+t+`,`+u(i.get(n,t)),c.pop()}break}else e=!0,m+=-2}m+=`]`;break}case`Set`:m=`["Set"`;for(let e of i.valuesOf(n))m+=`,${u(e)}`;m+=`]`;break;case`Map`:m=`["Map"`;for(let[e,t]of i.entriesOf(n)){let n=i.typeOf(e),r=n!==`object`&&n!==`function`&&n!==`symbol`;c.push(`.get(${r?gt(i.toPrimitive(e)):`...`})`),m+=`,${u(e)},${u(t)}`,c.pop()}m+=`]`;break;case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:case`Int16Array`:case`Uint16Array`:case`Float16Array`:case`Int32Array`:case`Uint32Array`:case`Float32Array`:case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:{let t=i.viewInfo(n);m=`["`+e+`",`+u(t.buffer),t.byteLength!==t.bufferByteLength&&(m+=`,${t.byteOffset},${t.length}`),m+=`]`;break}case`DataView`:{let t=i.viewInfo(n);m=`["`+e+`",`+u(t.buffer),t.byteLength!==t.bufferByteLength&&(m+=`,${t.byteOffset},${t.byteLength}`),m+=`]`;break}case`ArrayBuffer`:m=`["ArrayBuffer","${ot(i.toArrayBuffer(n))}"]`;break;case`Temporal.Duration`:case`Temporal.Instant`:case`Temporal.PlainDate`:case`Temporal.PlainTime`:case`Temporal.PlainDateTime`:case`Temporal.PlainMonthDay`:case`Temporal.PlainYearMonth`:case`Temporal.ZonedDateTime`:m=`["${e}",${k(i.toStringValue(n))}]`;break;default:{let e=i.shapeOf(n);if(e.kind===`not-plain`)throw new O(`Cannot stringify arbitrary non-POJOs`,c,n,t);if(e.kind===`symbol-keys`)throw new O(`Cannot stringify POJOs with symbolic keys`,c,n,t);if(e.kind===`null-proto`){m=`["null"`;for(let r of e.keys){if(r===`__proto__`)throw new O(`Cannot stringify objects with __proto__ keys`,c,n,t);c.push(Ke(r)),m+=`,${k(r)},${u(i.get(n,r))}`,c.pop()}m+=`]`}else{m=`{`;let r=!1;for(let a of e.keys){if(a===`__proto__`)throw new O(`Cannot stringify objects with __proto__ keys`,c,n,t);r&&(m+=`,`),r=!0,c.push(Ke(a)),m+=`${k(a)}:${u(i.get(n,a))}`,c.pop()}m+=`}`}}}}return a[r]=m,r}let d=u(t);return d<0?`${d}`:a}function gt(e){let t=typeof e;return t===`string`?k(e):e===void 0?`-1`:e===0&&1/e<0?`-6`:t===`bigint`?`["BigInt","${e}"]`:String(e)}var _t=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[..._t],[...new Set([..._t])];function vt(e){return e.filter(e=>e!=null)}var yt=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function bt(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===yt}function xt(e,t){let n=Object.getPrototypeOf(e)===null?Object.create(null):{};t.set(e,n),Object.defineProperty(n,Ot,{value:!0});for(let r of Object.keys(e).sort()){let i=e[r];Object.defineProperty(n,r,{value:t.get(i)??i,enumerable:!0,configurable:!0,writable:!0})}return n}var St=`__skrao`,Ct=`__skram`,wt=`__skras`,Tt=`__skraf`,Et=`__skrap`,Dt=`__skrag`,Ot=Symbol(St);function kt(e,t,n){let r={[Dt]:e=>{if(e instanceof RegExp)throw Error(`Regular expressions are not valid remote function arguments`)}};t&&(r[Ct]=e=>{if(!(e instanceof Map))return;let t=[];for(let[n,r]of e)t.push([a(n),a(r)]);return t.sort(([e,t],[n,r])=>e<n?-1:e>n?1:t<r?-1:+(t>r))},r[wt]=e=>{if(!(e instanceof Set))return;let t=[];for(let n of e)t.push(a(n));return t.sort(),t},r[St]=e=>{if(bt(e)&&!Object.hasOwn(e,Ot))return n.has(e)?n.get(e):xt(e,n)});let i={...Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.encode])),...r},a=e=>pt(e,i);return i}function At(e,t){return e===void 0?``:Mt(pt(e,kt(t,!0,new Map)))}async function jt(e,t){if(e===void 0)return``;let n=kt(t,!1,new Map),r=new Set;return n[Tt]=e=>{if(e instanceof File){let t=e.arrayBuffer().then(t=>({data:t,lastModified:e.lastModified,name:e.name,size:e.size,type:e.type}));return r.add(t),t}},n[Et]=e=>{if(e instanceof Promise&&!r.has(e))throw Error(`Promises are not valid remote function arguments`)},Mt(await mt(e,n))}function Mt(e){return te(ee.encode(e)).replaceAll(`=`,``).replaceAll(`+`,`-`).replaceAll(`/`,`_`)}function A(e,t){return e+`/`+t}function Nt(e){let t=e.lastIndexOf(`/`);if(t===-1)throw Error(`Invalid remote key: ${e}`);return{id:e.slice(0,t),payload:e.slice(t+1)}}function Pt(e){return e instanceof l||e instanceof d?e.status:500}function Ft(e){return e instanceof d?e.text:`Internal Error`}var j,M,It,Lt=s.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(s.toString()),Rt=`a:`;Lt?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Rt)},M={current:null},It={current:!1}):(j=new class{#e=n({});get data(){return e(this.#e)}set data(e){t(this.#e,e)}#t=n(null);get form(){return e(this.#t)}set form(e){t(this.#t,e)}#n=n(null);get error(){return e(this.#n)}set error(e){t(this.#n,e)}#r=n({});get params(){return e(this.#r)}set params(e){t(this.#r,e)}#i=n({id:null});get route(){return e(this.#i)}set route(e){t(this.#i,e)}#a=n({});get state(){return e(this.#a)}set state(e){t(this.#a,e)}#o=n(-1);get status(){return e(this.#o)}set status(e){t(this.#o,e)}#s=n(new URL(Rt));get url(){return e(this.#s)}set url(e){t(this.#s,e)}},M=new class{#e=n(null);get current(){return e(this.#e)}set current(e){t(this.#e,e)}},It=new class{#e=n(!1);get current(){return e(this.#e)}set current(e){t(this.#e,e)}},Pe.v=()=>It.current=!0);function zt(e){Object.assign(j,e)}var{onMount:Bt,tick:Vt}=c,Ht=i??(e=>e()),Ut=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=ge(`sveltekit:scroll`)??{},F=ge(`sveltekit:snapshot`)??{},I={url:Ne({}),page:Ne({}),navigating:a(null),updated:Fe()};function Wt(e){P[e]=E()}function Gt(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function Kt(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(x||`/`);e&&await e.update()}}var qt,Jt,R,z,Yt,B,V={},Xt={},Zt=[],Qt=[],H=null;function $t(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var en=new Map,tn=new Set,nn=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},rn=!1,an=!1,on=!0,G=!1,K=!1,sn=!1,cn=!1,ln,q,J,Y,un=new Set,dn=new Map,fn=new Map;async function pn(e,t,n){if(globalThis.__sveltekit_1wz7pax.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_1wz7pax.data;for(let t in e)V[t]=e[t];for(let e in n)V[e]=n[e];for(let e in r)V[e]=r[e];for(let e in t)Xt[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),qt=he(e),z=document.documentElement,Yt=t,Jt=e.nodes[0],R=e.nodes[1],Jt(),R(),q=history.state?.[S],J=history.state?.[C],q||(q=J=Date.now(),history.replaceState({...history.state,[S]:q,[C]:J},``));let r=P[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Hn(Yt,n)):(await Z({type:`enter`,url:De(B.hash?Jn(new URL(location.href)):location.href),replace_state:!0}),i()),Vn()}function mn(){Zt.length=0,cn=!1}function hn(e){Qt.some(e=>e?.snapshot)&&(F[e]=Qt.map(e=>e?.snapshot?.capture()))}function gn(e){F[e]?.forEach((e,t)=>{Qt[t]?.snapshot?.restore(e)})}function _n(){Wt(q),_e(we,P),hn(J),_e(Ce,F)}async function vn(e,t,n,i){let a,o;t.invalidateAll&&$t(),await Z({type:`goto`,url:De(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:i,accept:()=>{if(t.invalidateAll){cn=!0,a=new Set;for(let[e,t]of dn)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of fn)for(let n of t.keys())o.add(A(e,n))}t.invalidate&&t.invalidate.forEach(zn)}}),t.invalidateAll&&r().then(r).then(()=>{for(let[e,t]of dn)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of fn)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function yn(e){if(e.id!==H?.id){$t();let t={};un.add(t),H={id:e.id,token:t,promise:kn({...e,preload:t}).then(e=>(un.delete(t),e.type===`loaded`&&e.state.error&&$t(),e)),fork:null}}return H.promise}async function bn(e){let t=(await Nn(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function xn(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},zt(e.props.page),ln=new B.root({target:t,props:{...e.props,stores:I,components:Qt},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:P[q]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}gn(J),an=!0}async function Sn({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(x&&(e.pathname===x||e.pathname===x+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:vt(n).map(e=>e.node.component),page:qn(j)}};s!==void 0&&(l.props.form=s);let u={},d=!j,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==j.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:j.data}),l}async function Cn({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function wn(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:an?ie(r,i.href,t):re(r,t)}}function Tn(e,t,n,r,i,a){if(cn)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Zt.some(t=>t(new URL(e))))return!0;return!1}function En(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Dn(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function On({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:qn(j),constructors:[]}}}async function kn({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return un.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=W.url?e!==X(W.url):!1,p=W.route?i.id!==W.route.id:!1,m=Dn(W.url,n),h=!1,_=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!Tn(h,p,f,m,a.universal?.uses,r)?a:(h=!0,Cn({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await _[n])?.data);return e},server_data_node:En(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of _)e.catch(g);let v=[];for(let e=0;e<d.length;e+=1)if(d[e])try{v.push(await _[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(a&&un.has(a))return On({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=Pt(t),c;if(t instanceof l)c=t.body;else{if(await I.updated.check())return await Kt(),await L(n);c=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await An(e,v,o);return d?Sn({url:n,params:r,branch:v.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await In(n,{id:i.id},c,s)}else v.push(void 0);return Sn({url:n,params:r,branch:v,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function An(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function jn({status:e,error:t,url:n,route:r}){let i={};try{return Sn({url:n,params:i,branch:[await Cn({loader:Jt,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:En(null)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await vn(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Mn(e){let t=e.href;if(en.has(t))return en.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>wn(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();en.set(t,r),n=await r}catch{en.delete(t);return}return n}async function Nn(e,t){if(e&&!Ie(e,x,B.hash)){let n=await Mn(e);if(!n)return;let r=Pn(n);for(let n of qt){let i=n.exec(r);if(i)return{id:X(e),invalidating:t,route:n,params:m(i),url:e}}}}function Pn(e){return p(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(x.length))||`/`}function X(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Fn({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Kn(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||tn.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:t,popped:n,keepfocus:i,noscroll:a,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=g,block:p=g,event:m}){let h=Y;Y=u;let _=await Nn(t,!1),v=e===`enter`?Kn(W,_,t,e):Fn({url:t,type:e,delta:n?.delta,intent:_,scroll:n?.scroll,event:m});if(!v){p(),Y===u&&(Y=h);return}let ee=q,te=J;f(),G=!0,an&&v.navigation.type!==`enter`&&I.navigating.set(M.current=v.navigation);let y=_&&await kn(_);if(!y){if(Ie(t,x,B.hash))return await L(t,s);y=await In(t,{id:null},await $(new d(404,`Not Found`,`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=_?.url||t,Y!==u){v.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:e,url:new URL(y.location,t),popped:n,keepfocus:i,noscroll:a,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),v.fulfil(void 0);return}if(y=await jn({status:500,error:await $(Error(`Redirect loop`),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await I.updated.check())return await Kt(),await L(t,s);if(mn(),Wt(ee),hn(te),y.props.page.url.pathname!==t.pathname&&(t.pathname=y.props.page.url.pathname),c=n?n.state:c,!n){let e=+!s,n={[S]:q+=e,[C]:J+=e,[Te]:c};(s?history.replaceState:history.pushState).call(history,n,``,t),s||Gt(q,J)}let ne=_&&H?.id===_.id?H.fork:null;H?.fork&&!ne?$t():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let b;if(an){let e=(await Promise.all(Array.from(nn,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{U.delete(e)})}e.push(t),e.forEach(e=>{U.add(e)})}let n=v.navigation.to;W={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=t),!i&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let r=ne&&await ne;r?b=r.commit():(N=null,ln.$set(y.props),N&&Object.assign(y.props.page,N),zt(y.props.page),b=o?.()),sn=!0}else await xn(y,Yt,!1);let{activeElement:re}=document;if(await b,await r(),await r(),Y!==u){v.reject(Error(`navigation aborted`));return}y.props.page&&N&&Object.assign(y.props.page,N);let ie=null;if(on){let e=n?n.scroll:a?E():null;e?scrollTo(e.x,e.y):(ie=t.hash&&document.getElementById(Yn(t)))?ie.scrollIntoView():scrollTo(0,0)}let ae=document.activeElement!==re&&document.activeElement!==document.body;!i&&!ae&&Gn(t,!ie),on=!0,G=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),U.forEach(e=>e(v.navigation)),e===`popstate`&&gn(J),I.navigating.set(M.current=null)}async function In(e,t,n,r,i){return e.origin===T&&e.pathname===location.pathname&&!rn?await jn({status:r,error:n,url:e,route:t}):await L(e,i)}var Q={element:void 0,href:void 0};function Ln(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,w.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],w.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(bn(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ae(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=je(r,x,B.hash);if(o||s)return;let c=Me(r),l=a&&X(W.url)===X(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=w.tap;let e=await Nn(a,!1);if(!e)return;yn(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,bn(a))}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=je(e,x,B.hash);if(n||i)continue;let a=Me(e);a.reload||(a.preload_code===w.viewport&&r.observe(e),a.preload_code===w.eager&&bn(t))}}U.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=Pt(e),r=Ft(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Rn(e,t={}){return e=new URL(De(e)),e.origin===T?vn(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function zn(e){if(typeof e==`function`)Zt.push(e);else{let{href:t}=new URL(e,location.href);Zt.push(e=>e.href===t)}}function Bn(e,t){let n={[S]:q,[C]:J,[Ee]:j.url.href,[Te]:t};history.replaceState(n,``,De(e)),j.state=t,ln.$set({page:Ht(()=>qn(j))})}function Vn(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(_n(),!G){let e=Kn(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};tn.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&_n()}),navigator.connection?.saveData||Ln(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ae(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=je(n,x,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=Me(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===h(location);if(i||s.reload&&(!u||!l)){Fn({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,Wt(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(Ie(r,x,!1))return;let i=e.target,a=Me(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Wn)if(t.state?.[`sveltekit:history`]){let n=t.state[S];if(Y={},n===q)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[C],s=W.url?h(location)===h(W.url):!1;if(o===J&&(sn||s)){i!==j.state&&(j.state=i),e(a),P[q]=E(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),B.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[S]:++q,[C]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Ut.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(M.current=null)});function e(e){W.url=j.url=e,I.page.set(qn(j)),I.page.notify()}}async function Hn(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){rn=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await Nn(l,!1)||{}),d=qt.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Un(r.uses)),Cn({loader:B.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:En(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await Sn({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u)return await L(new URL(t.location,location.href));f=await jn({status:Pt(t),error:await $(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await xn(f,e,p))}function Un(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Wn=!1;function Gn(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Yn(e);if(n&&document.getElementById(n)){let{x:r,y:i}=E();setTimeout(()=>{let a=history.state;Wn=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Wn=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Kn(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function qn(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Jn(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Yn(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{x as C,l as E,ye as S,_ as T,qe as _,V as a,Se as b,M as c,Nt as d,jt as f,st as g,ct as h,dn as i,j as l,ft as m,Rn as n,Bn as o,At as p,fn as r,pn as s,B as t,A as u,Je as v,g as w,xe as x,Le as y};