wrong-notebook 0.0.0-stage → 2026.10.21

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 (1067) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +81 -0
  3. package/.next/build-manifest.json +24 -0
  4. package/.next/package.json +1 -0
  5. package/.next/prerender-manifest.json +104 -0
  6. package/.next/required-server-files.json +358 -0
  7. package/.next/routes-manifest.json +579 -0
  8. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  9. package/.next/server/app/_global-error/page/build-manifest.json +20 -0
  10. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  11. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  12. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  13. package/.next/server/app/_global-error/page.js +9 -0
  14. package/.next/server/app/_global-error/page.js.map +5 -0
  15. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  16. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  17. package/.next/server/app/_global-error.html +1 -0
  18. package/.next/server/app/_global-error.meta +30 -0
  19. package/.next/server/app/_global-error.rsc +15 -0
  20. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +20 -0
  21. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  22. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  23. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  24. package/.next/server/app/_not-found/page/build-manifest.json +20 -0
  25. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  26. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  27. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  28. package/.next/server/app/_not-found/page.js +13 -0
  29. package/.next/server/app/_not-found/page.js.map +5 -0
  30. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  31. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  32. package/.next/server/app/admin/page/app-paths-manifest.json +3 -0
  33. package/.next/server/app/admin/page/build-manifest.json +20 -0
  34. package/.next/server/app/admin/page/next-font-manifest.json +11 -0
  35. package/.next/server/app/admin/page/react-loadable-manifest.json +1 -0
  36. package/.next/server/app/admin/page/server-reference-manifest.json +4 -0
  37. package/.next/server/app/admin/page.js +14 -0
  38. package/.next/server/app/admin/page.js.map +5 -0
  39. package/.next/server/app/admin/page.js.nft.json +1 -0
  40. package/.next/server/app/admin/page_client-reference-manifest.js +3 -0
  41. package/.next/server/app/admin/user/[id]/page/app-paths-manifest.json +3 -0
  42. package/.next/server/app/admin/user/[id]/page/build-manifest.json +20 -0
  43. package/.next/server/app/admin/user/[id]/page/next-font-manifest.json +11 -0
  44. package/.next/server/app/admin/user/[id]/page/react-loadable-manifest.json +1 -0
  45. package/.next/server/app/admin/user/[id]/page/server-reference-manifest.json +4 -0
  46. package/.next/server/app/admin/user/[id]/page.js +14 -0
  47. package/.next/server/app/admin/user/[id]/page.js.map +5 -0
  48. package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -0
  49. package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +3 -0
  50. package/.next/server/app/api/admin/dashboard/route/app-paths-manifest.json +3 -0
  51. package/.next/server/app/api/admin/dashboard/route/build-manifest.json +12 -0
  52. package/.next/server/app/api/admin/dashboard/route/server-reference-manifest.json +4 -0
  53. package/.next/server/app/api/admin/dashboard/route.js +10 -0
  54. package/.next/server/app/api/admin/dashboard/route.js.map +5 -0
  55. package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -0
  56. package/.next/server/app/api/admin/dashboard/route_client-reference-manifest.js +3 -0
  57. package/.next/server/app/api/admin/migrate-tags/route/app-paths-manifest.json +3 -0
  58. package/.next/server/app/api/admin/migrate-tags/route/build-manifest.json +12 -0
  59. package/.next/server/app/api/admin/migrate-tags/route/server-reference-manifest.json +4 -0
  60. package/.next/server/app/api/admin/migrate-tags/route.js +9 -0
  61. package/.next/server/app/api/admin/migrate-tags/route.js.map +5 -0
  62. package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -0
  63. package/.next/server/app/api/admin/migrate-tags/route_client-reference-manifest.js +3 -0
  64. package/.next/server/app/api/admin/system-reset/route/app-paths-manifest.json +3 -0
  65. package/.next/server/app/api/admin/system-reset/route/build-manifest.json +12 -0
  66. package/.next/server/app/api/admin/system-reset/route/server-reference-manifest.json +4 -0
  67. package/.next/server/app/api/admin/system-reset/route.js +8 -0
  68. package/.next/server/app/api/admin/system-reset/route.js.map +5 -0
  69. package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -0
  70. package/.next/server/app/api/admin/system-reset/route_client-reference-manifest.js +3 -0
  71. package/.next/server/app/api/admin/users/[id]/detail/route/app-paths-manifest.json +3 -0
  72. package/.next/server/app/api/admin/users/[id]/detail/route/build-manifest.json +12 -0
  73. package/.next/server/app/api/admin/users/[id]/detail/route/server-reference-manifest.json +4 -0
  74. package/.next/server/app/api/admin/users/[id]/detail/route.js +9 -0
  75. package/.next/server/app/api/admin/users/[id]/detail/route.js.map +5 -0
  76. package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -0
  77. package/.next/server/app/api/admin/users/[id]/detail/route_client-reference-manifest.js +3 -0
  78. package/.next/server/app/api/admin/users/[id]/route/app-paths-manifest.json +3 -0
  79. package/.next/server/app/api/admin/users/[id]/route/build-manifest.json +12 -0
  80. package/.next/server/app/api/admin/users/[id]/route/server-reference-manifest.json +4 -0
  81. package/.next/server/app/api/admin/users/[id]/route.js +8 -0
  82. package/.next/server/app/api/admin/users/[id]/route.js.map +5 -0
  83. package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -0
  84. package/.next/server/app/api/admin/users/[id]/route_client-reference-manifest.js +3 -0
  85. package/.next/server/app/api/admin/users/route/app-paths-manifest.json +3 -0
  86. package/.next/server/app/api/admin/users/route/build-manifest.json +12 -0
  87. package/.next/server/app/api/admin/users/route/server-reference-manifest.json +4 -0
  88. package/.next/server/app/api/admin/users/route.js +8 -0
  89. package/.next/server/app/api/admin/users/route.js.map +5 -0
  90. package/.next/server/app/api/admin/users/route.js.nft.json +1 -0
  91. package/.next/server/app/api/admin/users/route_client-reference-manifest.js +3 -0
  92. package/.next/server/app/api/ai/models/route/app-paths-manifest.json +3 -0
  93. package/.next/server/app/api/ai/models/route/build-manifest.json +12 -0
  94. package/.next/server/app/api/ai/models/route/server-reference-manifest.json +4 -0
  95. package/.next/server/app/api/ai/models/route.js +14 -0
  96. package/.next/server/app/api/ai/models/route.js.map +5 -0
  97. package/.next/server/app/api/ai/models/route.js.nft.json +1 -0
  98. package/.next/server/app/api/ai/models/route_client-reference-manifest.js +3 -0
  99. package/.next/server/app/api/ai/test/route/app-paths-manifest.json +3 -0
  100. package/.next/server/app/api/ai/test/route/build-manifest.json +12 -0
  101. package/.next/server/app/api/ai/test/route/server-reference-manifest.json +4 -0
  102. package/.next/server/app/api/ai/test/route.js +15 -0
  103. package/.next/server/app/api/ai/test/route.js.map +5 -0
  104. package/.next/server/app/api/ai/test/route.js.nft.json +1 -0
  105. package/.next/server/app/api/ai/test/route_client-reference-manifest.js +3 -0
  106. package/.next/server/app/api/analytics/route/app-paths-manifest.json +3 -0
  107. package/.next/server/app/api/analytics/route/build-manifest.json +12 -0
  108. package/.next/server/app/api/analytics/route/server-reference-manifest.json +4 -0
  109. package/.next/server/app/api/analytics/route.js +9 -0
  110. package/.next/server/app/api/analytics/route.js.map +5 -0
  111. package/.next/server/app/api/analytics/route.js.nft.json +1 -0
  112. package/.next/server/app/api/analytics/route_client-reference-manifest.js +3 -0
  113. package/.next/server/app/api/analyze/route/app-paths-manifest.json +3 -0
  114. package/.next/server/app/api/analyze/route/build-manifest.json +12 -0
  115. package/.next/server/app/api/analyze/route/server-reference-manifest.json +4 -0
  116. package/.next/server/app/api/analyze/route.js +16 -0
  117. package/.next/server/app/api/analyze/route.js.map +5 -0
  118. package/.next/server/app/api/analyze/route.js.nft.json +1 -0
  119. package/.next/server/app/api/analyze/route_client-reference-manifest.js +3 -0
  120. package/.next/server/app/api/auth/[...nextauth]/route/app-paths-manifest.json +3 -0
  121. package/.next/server/app/api/auth/[...nextauth]/route/build-manifest.json +12 -0
  122. package/.next/server/app/api/auth/[...nextauth]/route/server-reference-manifest.json +4 -0
  123. package/.next/server/app/api/auth/[...nextauth]/route.js +7 -0
  124. package/.next/server/app/api/auth/[...nextauth]/route.js.map +5 -0
  125. package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -0
  126. package/.next/server/app/api/auth/[...nextauth]/route_client-reference-manifest.js +3 -0
  127. package/.next/server/app/api/error-items/[id]/delete/route/app-paths-manifest.json +3 -0
  128. package/.next/server/app/api/error-items/[id]/delete/route/build-manifest.json +12 -0
  129. package/.next/server/app/api/error-items/[id]/delete/route/server-reference-manifest.json +4 -0
  130. package/.next/server/app/api/error-items/[id]/delete/route.js +8 -0
  131. package/.next/server/app/api/error-items/[id]/delete/route.js.map +5 -0
  132. package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -0
  133. package/.next/server/app/api/error-items/[id]/delete/route_client-reference-manifest.js +3 -0
  134. package/.next/server/app/api/error-items/[id]/figure/route/app-paths-manifest.json +3 -0
  135. package/.next/server/app/api/error-items/[id]/figure/route/build-manifest.json +12 -0
  136. package/.next/server/app/api/error-items/[id]/figure/route/server-reference-manifest.json +4 -0
  137. package/.next/server/app/api/error-items/[id]/figure/route.js +15 -0
  138. package/.next/server/app/api/error-items/[id]/figure/route.js.map +5 -0
  139. package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -0
  140. package/.next/server/app/api/error-items/[id]/figure/route_client-reference-manifest.js +3 -0
  141. package/.next/server/app/api/error-items/[id]/fix-latex/route/app-paths-manifest.json +3 -0
  142. package/.next/server/app/api/error-items/[id]/fix-latex/route/build-manifest.json +12 -0
  143. package/.next/server/app/api/error-items/[id]/fix-latex/route/server-reference-manifest.json +4 -0
  144. package/.next/server/app/api/error-items/[id]/fix-latex/route.js +16 -0
  145. package/.next/server/app/api/error-items/[id]/fix-latex/route.js.map +5 -0
  146. package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -0
  147. package/.next/server/app/api/error-items/[id]/fix-latex/route_client-reference-manifest.js +3 -0
  148. package/.next/server/app/api/error-items/[id]/geogebra/route/app-paths-manifest.json +3 -0
  149. package/.next/server/app/api/error-items/[id]/geogebra/route/build-manifest.json +12 -0
  150. package/.next/server/app/api/error-items/[id]/geogebra/route/server-reference-manifest.json +4 -0
  151. package/.next/server/app/api/error-items/[id]/geogebra/route.js +15 -0
  152. package/.next/server/app/api/error-items/[id]/geogebra/route.js.map +5 -0
  153. package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -0
  154. package/.next/server/app/api/error-items/[id]/geogebra/route_client-reference-manifest.js +3 -0
  155. package/.next/server/app/api/error-items/[id]/image/route/app-paths-manifest.json +3 -0
  156. package/.next/server/app/api/error-items/[id]/image/route/build-manifest.json +12 -0
  157. package/.next/server/app/api/error-items/[id]/image/route/server-reference-manifest.json +4 -0
  158. package/.next/server/app/api/error-items/[id]/image/route.js +9 -0
  159. package/.next/server/app/api/error-items/[id]/image/route.js.map +5 -0
  160. package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -0
  161. package/.next/server/app/api/error-items/[id]/image/route_client-reference-manifest.js +3 -0
  162. package/.next/server/app/api/error-items/[id]/mastery/route/app-paths-manifest.json +3 -0
  163. package/.next/server/app/api/error-items/[id]/mastery/route/build-manifest.json +12 -0
  164. package/.next/server/app/api/error-items/[id]/mastery/route/server-reference-manifest.json +4 -0
  165. package/.next/server/app/api/error-items/[id]/mastery/route.js +8 -0
  166. package/.next/server/app/api/error-items/[id]/mastery/route.js.map +5 -0
  167. package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +1 -0
  168. package/.next/server/app/api/error-items/[id]/mastery/route_client-reference-manifest.js +3 -0
  169. package/.next/server/app/api/error-items/[id]/notes/route/app-paths-manifest.json +3 -0
  170. package/.next/server/app/api/error-items/[id]/notes/route/build-manifest.json +12 -0
  171. package/.next/server/app/api/error-items/[id]/notes/route/server-reference-manifest.json +4 -0
  172. package/.next/server/app/api/error-items/[id]/notes/route.js +8 -0
  173. package/.next/server/app/api/error-items/[id]/notes/route.js.map +5 -0
  174. package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -0
  175. package/.next/server/app/api/error-items/[id]/notes/route_client-reference-manifest.js +3 -0
  176. package/.next/server/app/api/error-items/[id]/practice-records/route/app-paths-manifest.json +3 -0
  177. package/.next/server/app/api/error-items/[id]/practice-records/route/build-manifest.json +12 -0
  178. package/.next/server/app/api/error-items/[id]/practice-records/route/server-reference-manifest.json +4 -0
  179. package/.next/server/app/api/error-items/[id]/practice-records/route.js +8 -0
  180. package/.next/server/app/api/error-items/[id]/practice-records/route.js.map +5 -0
  181. package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -0
  182. package/.next/server/app/api/error-items/[id]/practice-records/route_client-reference-manifest.js +3 -0
  183. package/.next/server/app/api/error-items/[id]/reanswer/route/app-paths-manifest.json +3 -0
  184. package/.next/server/app/api/error-items/[id]/reanswer/route/build-manifest.json +12 -0
  185. package/.next/server/app/api/error-items/[id]/reanswer/route/server-reference-manifest.json +4 -0
  186. package/.next/server/app/api/error-items/[id]/reanswer/route.js +15 -0
  187. package/.next/server/app/api/error-items/[id]/reanswer/route.js.map +5 -0
  188. package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -0
  189. package/.next/server/app/api/error-items/[id]/reanswer/route_client-reference-manifest.js +3 -0
  190. package/.next/server/app/api/error-items/[id]/retag/route/app-paths-manifest.json +3 -0
  191. package/.next/server/app/api/error-items/[id]/retag/route/build-manifest.json +12 -0
  192. package/.next/server/app/api/error-items/[id]/retag/route/server-reference-manifest.json +4 -0
  193. package/.next/server/app/api/error-items/[id]/retag/route.js +16 -0
  194. package/.next/server/app/api/error-items/[id]/retag/route.js.map +5 -0
  195. package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -0
  196. package/.next/server/app/api/error-items/[id]/retag/route_client-reference-manifest.js +3 -0
  197. package/.next/server/app/api/error-items/[id]/route/app-paths-manifest.json +3 -0
  198. package/.next/server/app/api/error-items/[id]/route/build-manifest.json +12 -0
  199. package/.next/server/app/api/error-items/[id]/route/server-reference-manifest.json +4 -0
  200. package/.next/server/app/api/error-items/[id]/route.js +9 -0
  201. package/.next/server/app/api/error-items/[id]/route.js.map +5 -0
  202. package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -0
  203. package/.next/server/app/api/error-items/[id]/route_client-reference-manifest.js +3 -0
  204. package/.next/server/app/api/error-items/[id]/svg-animation/route/app-paths-manifest.json +3 -0
  205. package/.next/server/app/api/error-items/[id]/svg-animation/route/build-manifest.json +12 -0
  206. package/.next/server/app/api/error-items/[id]/svg-animation/route/server-reference-manifest.json +4 -0
  207. package/.next/server/app/api/error-items/[id]/svg-animation/route.js +16 -0
  208. package/.next/server/app/api/error-items/[id]/svg-animation/route.js.map +5 -0
  209. package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -0
  210. package/.next/server/app/api/error-items/[id]/svg-animation/route_client-reference-manifest.js +3 -0
  211. package/.next/server/app/api/error-items/batch-delete/route/app-paths-manifest.json +3 -0
  212. package/.next/server/app/api/error-items/batch-delete/route/build-manifest.json +12 -0
  213. package/.next/server/app/api/error-items/batch-delete/route/server-reference-manifest.json +4 -0
  214. package/.next/server/app/api/error-items/batch-delete/route.js +8 -0
  215. package/.next/server/app/api/error-items/batch-delete/route.js.map +5 -0
  216. package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -0
  217. package/.next/server/app/api/error-items/batch-delete/route_client-reference-manifest.js +3 -0
  218. package/.next/server/app/api/error-items/clear/route/app-paths-manifest.json +3 -0
  219. package/.next/server/app/api/error-items/clear/route/build-manifest.json +12 -0
  220. package/.next/server/app/api/error-items/clear/route/server-reference-manifest.json +4 -0
  221. package/.next/server/app/api/error-items/clear/route.js +8 -0
  222. package/.next/server/app/api/error-items/clear/route.js.map +5 -0
  223. package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -0
  224. package/.next/server/app/api/error-items/clear/route_client-reference-manifest.js +3 -0
  225. package/.next/server/app/api/error-items/list/route/app-paths-manifest.json +3 -0
  226. package/.next/server/app/api/error-items/list/route/build-manifest.json +12 -0
  227. package/.next/server/app/api/error-items/list/route/server-reference-manifest.json +4 -0
  228. package/.next/server/app/api/error-items/list/route.js +10 -0
  229. package/.next/server/app/api/error-items/list/route.js.map +5 -0
  230. package/.next/server/app/api/error-items/list/route.js.nft.json +1 -0
  231. package/.next/server/app/api/error-items/list/route_client-reference-manifest.js +3 -0
  232. package/.next/server/app/api/error-items/route/app-paths-manifest.json +3 -0
  233. package/.next/server/app/api/error-items/route/build-manifest.json +12 -0
  234. package/.next/server/app/api/error-items/route/server-reference-manifest.json +4 -0
  235. package/.next/server/app/api/error-items/route.js +17 -0
  236. package/.next/server/app/api/error-items/route.js.map +5 -0
  237. package/.next/server/app/api/error-items/route.js.nft.json +1 -0
  238. package/.next/server/app/api/error-items/route_client-reference-manifest.js +3 -0
  239. package/.next/server/app/api/error-items/short/[shortId]/route/app-paths-manifest.json +3 -0
  240. package/.next/server/app/api/error-items/short/[shortId]/route/build-manifest.json +12 -0
  241. package/.next/server/app/api/error-items/short/[shortId]/route/server-reference-manifest.json +4 -0
  242. package/.next/server/app/api/error-items/short/[shortId]/route.js +8 -0
  243. package/.next/server/app/api/error-items/short/[shortId]/route.js.map +5 -0
  244. package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -0
  245. package/.next/server/app/api/error-items/short/[shortId]/route_client-reference-manifest.js +3 -0
  246. package/.next/server/app/api/error-items/similarity/route/app-paths-manifest.json +3 -0
  247. package/.next/server/app/api/error-items/similarity/route/build-manifest.json +12 -0
  248. package/.next/server/app/api/error-items/similarity/route/server-reference-manifest.json +4 -0
  249. package/.next/server/app/api/error-items/similarity/route.js +9 -0
  250. package/.next/server/app/api/error-items/similarity/route.js.map +5 -0
  251. package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -0
  252. package/.next/server/app/api/error-items/similarity/route_client-reference-manifest.js +3 -0
  253. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/app-paths-manifest.json +3 -0
  254. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/build-manifest.json +12 -0
  255. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/server-reference-manifest.json +4 -0
  256. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +16 -0
  257. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.map +5 -0
  258. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -0
  259. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route_client-reference-manifest.js +3 -0
  260. package/.next/server/app/api/exams/[id]/results/route/app-paths-manifest.json +3 -0
  261. package/.next/server/app/api/exams/[id]/results/route/build-manifest.json +12 -0
  262. package/.next/server/app/api/exams/[id]/results/route/server-reference-manifest.json +4 -0
  263. package/.next/server/app/api/exams/[id]/results/route.js +16 -0
  264. package/.next/server/app/api/exams/[id]/results/route.js.map +5 -0
  265. package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -0
  266. package/.next/server/app/api/exams/[id]/results/route_client-reference-manifest.js +3 -0
  267. package/.next/server/app/api/exams/[id]/retry/route/app-paths-manifest.json +3 -0
  268. package/.next/server/app/api/exams/[id]/retry/route/build-manifest.json +12 -0
  269. package/.next/server/app/api/exams/[id]/retry/route/server-reference-manifest.json +4 -0
  270. package/.next/server/app/api/exams/[id]/retry/route.js +16 -0
  271. package/.next/server/app/api/exams/[id]/retry/route.js.map +5 -0
  272. package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -0
  273. package/.next/server/app/api/exams/[id]/retry/route_client-reference-manifest.js +3 -0
  274. package/.next/server/app/api/exams/[id]/route/app-paths-manifest.json +3 -0
  275. package/.next/server/app/api/exams/[id]/route/build-manifest.json +12 -0
  276. package/.next/server/app/api/exams/[id]/route/server-reference-manifest.json +4 -0
  277. package/.next/server/app/api/exams/[id]/route.js +16 -0
  278. package/.next/server/app/api/exams/[id]/route.js.map +5 -0
  279. package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -0
  280. package/.next/server/app/api/exams/[id]/route_client-reference-manifest.js +3 -0
  281. package/.next/server/app/api/exams/route/app-paths-manifest.json +3 -0
  282. package/.next/server/app/api/exams/route/build-manifest.json +12 -0
  283. package/.next/server/app/api/exams/route/server-reference-manifest.json +4 -0
  284. package/.next/server/app/api/exams/route.js +16 -0
  285. package/.next/server/app/api/exams/route.js.map +5 -0
  286. package/.next/server/app/api/exams/route.js.nft.json +1 -0
  287. package/.next/server/app/api/exams/route_client-reference-manifest.js +3 -0
  288. package/.next/server/app/api/export/route/app-paths-manifest.json +3 -0
  289. package/.next/server/app/api/export/route/build-manifest.json +12 -0
  290. package/.next/server/app/api/export/route/server-reference-manifest.json +4 -0
  291. package/.next/server/app/api/export/route.js +10 -0
  292. package/.next/server/app/api/export/route.js.map +5 -0
  293. package/.next/server/app/api/export/route.js.nft.json +1 -0
  294. package/.next/server/app/api/export/route_client-reference-manifest.js +3 -0
  295. package/.next/server/app/api/geogebra-analyze/route/app-paths-manifest.json +3 -0
  296. package/.next/server/app/api/geogebra-analyze/route/build-manifest.json +12 -0
  297. package/.next/server/app/api/geogebra-analyze/route/server-reference-manifest.json +4 -0
  298. package/.next/server/app/api/geogebra-analyze/route.js +15 -0
  299. package/.next/server/app/api/geogebra-analyze/route.js.map +5 -0
  300. package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -0
  301. package/.next/server/app/api/geogebra-analyze/route_client-reference-manifest.js +3 -0
  302. package/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
  303. package/.next/server/app/api/health/route/build-manifest.json +12 -0
  304. package/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
  305. package/.next/server/app/api/health/route.js +7 -0
  306. package/.next/server/app/api/health/route.js.map +5 -0
  307. package/.next/server/app/api/health/route.js.nft.json +1 -0
  308. package/.next/server/app/api/health/route_client-reference-manifest.js +3 -0
  309. package/.next/server/app/api/import/route/app-paths-manifest.json +3 -0
  310. package/.next/server/app/api/import/route/build-manifest.json +12 -0
  311. package/.next/server/app/api/import/route/server-reference-manifest.json +4 -0
  312. package/.next/server/app/api/import/route.js +17 -0
  313. package/.next/server/app/api/import/route.js.map +5 -0
  314. package/.next/server/app/api/import/route.js.nft.json +1 -0
  315. package/.next/server/app/api/import/route_client-reference-manifest.js +3 -0
  316. package/.next/server/app/api/logs/frontend/route/app-paths-manifest.json +3 -0
  317. package/.next/server/app/api/logs/frontend/route/build-manifest.json +12 -0
  318. package/.next/server/app/api/logs/frontend/route/server-reference-manifest.json +4 -0
  319. package/.next/server/app/api/logs/frontend/route.js +8 -0
  320. package/.next/server/app/api/logs/frontend/route.js.map +5 -0
  321. package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -0
  322. package/.next/server/app/api/logs/frontend/route_client-reference-manifest.js +3 -0
  323. package/.next/server/app/api/notebooks/[id]/retag/route/app-paths-manifest.json +3 -0
  324. package/.next/server/app/api/notebooks/[id]/retag/route/build-manifest.json +12 -0
  325. package/.next/server/app/api/notebooks/[id]/retag/route/server-reference-manifest.json +4 -0
  326. package/.next/server/app/api/notebooks/[id]/retag/route.js +16 -0
  327. package/.next/server/app/api/notebooks/[id]/retag/route.js.map +5 -0
  328. package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -0
  329. package/.next/server/app/api/notebooks/[id]/retag/route_client-reference-manifest.js +3 -0
  330. package/.next/server/app/api/notebooks/[id]/route/app-paths-manifest.json +3 -0
  331. package/.next/server/app/api/notebooks/[id]/route/build-manifest.json +12 -0
  332. package/.next/server/app/api/notebooks/[id]/route/server-reference-manifest.json +4 -0
  333. package/.next/server/app/api/notebooks/[id]/route.js +9 -0
  334. package/.next/server/app/api/notebooks/[id]/route.js.map +5 -0
  335. package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -0
  336. package/.next/server/app/api/notebooks/[id]/route_client-reference-manifest.js +3 -0
  337. package/.next/server/app/api/notebooks/route/app-paths-manifest.json +3 -0
  338. package/.next/server/app/api/notebooks/route/build-manifest.json +12 -0
  339. package/.next/server/app/api/notebooks/route/server-reference-manifest.json +4 -0
  340. package/.next/server/app/api/notebooks/route.js +10 -0
  341. package/.next/server/app/api/notebooks/route.js.map +5 -0
  342. package/.next/server/app/api/notebooks/route.js.nft.json +1 -0
  343. package/.next/server/app/api/notebooks/route_client-reference-manifest.js +3 -0
  344. package/.next/server/app/api/openclaw/batch-upload/route/app-paths-manifest.json +3 -0
  345. package/.next/server/app/api/openclaw/batch-upload/route/build-manifest.json +12 -0
  346. package/.next/server/app/api/openclaw/batch-upload/route/server-reference-manifest.json +4 -0
  347. package/.next/server/app/api/openclaw/batch-upload/route.js +15 -0
  348. package/.next/server/app/api/openclaw/batch-upload/route.js.map +5 -0
  349. package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -0
  350. package/.next/server/app/api/openclaw/batch-upload/route_client-reference-manifest.js +3 -0
  351. package/.next/server/app/api/practice/generate/route/app-paths-manifest.json +3 -0
  352. package/.next/server/app/api/practice/generate/route/build-manifest.json +12 -0
  353. package/.next/server/app/api/practice/generate/route/server-reference-manifest.json +4 -0
  354. package/.next/server/app/api/practice/generate/route.js +15 -0
  355. package/.next/server/app/api/practice/generate/route.js.map +5 -0
  356. package/.next/server/app/api/practice/generate/route.js.nft.json +1 -0
  357. package/.next/server/app/api/practice/generate/route_client-reference-manifest.js +3 -0
  358. package/.next/server/app/api/practice/record/[id]/route/app-paths-manifest.json +3 -0
  359. package/.next/server/app/api/practice/record/[id]/route/build-manifest.json +12 -0
  360. package/.next/server/app/api/practice/record/[id]/route/server-reference-manifest.json +4 -0
  361. package/.next/server/app/api/practice/record/[id]/route.js +15 -0
  362. package/.next/server/app/api/practice/record/[id]/route.js.map +5 -0
  363. package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -0
  364. package/.next/server/app/api/practice/record/[id]/route_client-reference-manifest.js +3 -0
  365. package/.next/server/app/api/practice/record/route/app-paths-manifest.json +3 -0
  366. package/.next/server/app/api/practice/record/route/build-manifest.json +12 -0
  367. package/.next/server/app/api/practice/record/route/server-reference-manifest.json +4 -0
  368. package/.next/server/app/api/practice/record/route.js +15 -0
  369. package/.next/server/app/api/practice/record/route.js.map +5 -0
  370. package/.next/server/app/api/practice/record/route.js.nft.json +1 -0
  371. package/.next/server/app/api/practice/record/route_client-reference-manifest.js +3 -0
  372. package/.next/server/app/api/reanswer/route/app-paths-manifest.json +3 -0
  373. package/.next/server/app/api/reanswer/route/build-manifest.json +12 -0
  374. package/.next/server/app/api/reanswer/route/server-reference-manifest.json +4 -0
  375. package/.next/server/app/api/reanswer/route.js +15 -0
  376. package/.next/server/app/api/reanswer/route.js.map +5 -0
  377. package/.next/server/app/api/reanswer/route.js.nft.json +1 -0
  378. package/.next/server/app/api/reanswer/route_client-reference-manifest.js +3 -0
  379. package/.next/server/app/api/register/route/app-paths-manifest.json +3 -0
  380. package/.next/server/app/api/register/route/build-manifest.json +12 -0
  381. package/.next/server/app/api/register/route/server-reference-manifest.json +4 -0
  382. package/.next/server/app/api/register/route.js +9 -0
  383. package/.next/server/app/api/register/route.js.map +5 -0
  384. package/.next/server/app/api/register/route.js.nft.json +1 -0
  385. package/.next/server/app/api/register/route_client-reference-manifest.js +3 -0
  386. package/.next/server/app/api/register/status/route/app-paths-manifest.json +3 -0
  387. package/.next/server/app/api/register/status/route/build-manifest.json +12 -0
  388. package/.next/server/app/api/register/status/route/server-reference-manifest.json +4 -0
  389. package/.next/server/app/api/register/status/route.js +8 -0
  390. package/.next/server/app/api/register/status/route.js.map +5 -0
  391. package/.next/server/app/api/register/status/route.js.nft.json +1 -0
  392. package/.next/server/app/api/register/status/route_client-reference-manifest.js +3 -0
  393. package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
  394. package/.next/server/app/api/settings/route/build-manifest.json +12 -0
  395. package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
  396. package/.next/server/app/api/settings/route.js +9 -0
  397. package/.next/server/app/api/settings/route.js.map +5 -0
  398. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  399. package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
  400. package/.next/server/app/api/stats/practice/clear/route/app-paths-manifest.json +3 -0
  401. package/.next/server/app/api/stats/practice/clear/route/build-manifest.json +12 -0
  402. package/.next/server/app/api/stats/practice/clear/route/server-reference-manifest.json +4 -0
  403. package/.next/server/app/api/stats/practice/clear/route.js +8 -0
  404. package/.next/server/app/api/stats/practice/clear/route.js.map +5 -0
  405. package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -0
  406. package/.next/server/app/api/stats/practice/clear/route_client-reference-manifest.js +3 -0
  407. package/.next/server/app/api/stats/practice/route/app-paths-manifest.json +3 -0
  408. package/.next/server/app/api/stats/practice/route/build-manifest.json +12 -0
  409. package/.next/server/app/api/stats/practice/route/server-reference-manifest.json +4 -0
  410. package/.next/server/app/api/stats/practice/route.js +9 -0
  411. package/.next/server/app/api/stats/practice/route.js.map +5 -0
  412. package/.next/server/app/api/stats/practice/route.js.nft.json +1 -0
  413. package/.next/server/app/api/stats/practice/route_client-reference-manifest.js +3 -0
  414. package/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
  415. package/.next/server/app/api/tags/route/build-manifest.json +12 -0
  416. package/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
  417. package/.next/server/app/api/tags/route.js +9 -0
  418. package/.next/server/app/api/tags/route.js.map +5 -0
  419. package/.next/server/app/api/tags/route.js.nft.json +1 -0
  420. package/.next/server/app/api/tags/route_client-reference-manifest.js +3 -0
  421. package/.next/server/app/api/tags/stats/route/app-paths-manifest.json +3 -0
  422. package/.next/server/app/api/tags/stats/route/build-manifest.json +12 -0
  423. package/.next/server/app/api/tags/stats/route/server-reference-manifest.json +4 -0
  424. package/.next/server/app/api/tags/stats/route.js +8 -0
  425. package/.next/server/app/api/tags/stats/route.js.map +5 -0
  426. package/.next/server/app/api/tags/stats/route.js.nft.json +1 -0
  427. package/.next/server/app/api/tags/stats/route_client-reference-manifest.js +3 -0
  428. package/.next/server/app/api/tags/suggestions/route/app-paths-manifest.json +3 -0
  429. package/.next/server/app/api/tags/suggestions/route/build-manifest.json +12 -0
  430. package/.next/server/app/api/tags/suggestions/route/server-reference-manifest.json +4 -0
  431. package/.next/server/app/api/tags/suggestions/route.js +8 -0
  432. package/.next/server/app/api/tags/suggestions/route.js.map +5 -0
  433. package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -0
  434. package/.next/server/app/api/tags/suggestions/route_client-reference-manifest.js +3 -0
  435. package/.next/server/app/api/tasks/route/app-paths-manifest.json +3 -0
  436. package/.next/server/app/api/tasks/route/build-manifest.json +12 -0
  437. package/.next/server/app/api/tasks/route/server-reference-manifest.json +4 -0
  438. package/.next/server/app/api/tasks/route.js +8 -0
  439. package/.next/server/app/api/tasks/route.js.map +5 -0
  440. package/.next/server/app/api/tasks/route.js.nft.json +1 -0
  441. package/.next/server/app/api/tasks/route_client-reference-manifest.js +3 -0
  442. package/.next/server/app/api/user/route/app-paths-manifest.json +3 -0
  443. package/.next/server/app/api/user/route/build-manifest.json +12 -0
  444. package/.next/server/app/api/user/route/server-reference-manifest.json +4 -0
  445. package/.next/server/app/api/user/route.js +10 -0
  446. package/.next/server/app/api/user/route.js.map +5 -0
  447. package/.next/server/app/api/user/route.js.nft.json +1 -0
  448. package/.next/server/app/api/user/route_client-reference-manifest.js +3 -0
  449. package/.next/server/app/api/version/route/app-paths-manifest.json +3 -0
  450. package/.next/server/app/api/version/route/build-manifest.json +12 -0
  451. package/.next/server/app/api/version/route/server-reference-manifest.json +4 -0
  452. package/.next/server/app/api/version/route.js +7 -0
  453. package/.next/server/app/api/version/route.js.map +5 -0
  454. package/.next/server/app/api/version/route.js.nft.json +1 -0
  455. package/.next/server/app/api/version/route_client-reference-manifest.js +3 -0
  456. package/.next/server/app/error-items/[id]/page/app-paths-manifest.json +3 -0
  457. package/.next/server/app/error-items/[id]/page/build-manifest.json +20 -0
  458. package/.next/server/app/error-items/[id]/page/next-font-manifest.json +11 -0
  459. package/.next/server/app/error-items/[id]/page/react-loadable-manifest.json +1 -0
  460. package/.next/server/app/error-items/[id]/page/server-reference-manifest.json +4 -0
  461. package/.next/server/app/error-items/[id]/page.js +14 -0
  462. package/.next/server/app/error-items/[id]/page.js.map +5 -0
  463. package/.next/server/app/error-items/[id]/page.js.nft.json +1 -0
  464. package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +3 -0
  465. package/.next/server/app/exams/[id]/page/app-paths-manifest.json +3 -0
  466. package/.next/server/app/exams/[id]/page/build-manifest.json +20 -0
  467. package/.next/server/app/exams/[id]/page/next-font-manifest.json +11 -0
  468. package/.next/server/app/exams/[id]/page/react-loadable-manifest.json +1 -0
  469. package/.next/server/app/exams/[id]/page/server-reference-manifest.json +4 -0
  470. package/.next/server/app/exams/[id]/page.js +14 -0
  471. package/.next/server/app/exams/[id]/page.js.map +5 -0
  472. package/.next/server/app/exams/[id]/page.js.nft.json +1 -0
  473. package/.next/server/app/exams/[id]/page_client-reference-manifest.js +3 -0
  474. package/.next/server/app/exams/[id]/print/page/app-paths-manifest.json +3 -0
  475. package/.next/server/app/exams/[id]/print/page/build-manifest.json +20 -0
  476. package/.next/server/app/exams/[id]/print/page/next-font-manifest.json +11 -0
  477. package/.next/server/app/exams/[id]/print/page/react-loadable-manifest.json +1 -0
  478. package/.next/server/app/exams/[id]/print/page/server-reference-manifest.json +4 -0
  479. package/.next/server/app/exams/[id]/print/page.js +14 -0
  480. package/.next/server/app/exams/[id]/print/page.js.map +5 -0
  481. package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -0
  482. package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +3 -0
  483. package/.next/server/app/exams/page/app-paths-manifest.json +3 -0
  484. package/.next/server/app/exams/page/build-manifest.json +20 -0
  485. package/.next/server/app/exams/page/next-font-manifest.json +11 -0
  486. package/.next/server/app/exams/page/react-loadable-manifest.json +1 -0
  487. package/.next/server/app/exams/page/server-reference-manifest.json +4 -0
  488. package/.next/server/app/exams/page.js +14 -0
  489. package/.next/server/app/exams/page.js.map +5 -0
  490. package/.next/server/app/exams/page.js.nft.json +1 -0
  491. package/.next/server/app/exams/page_client-reference-manifest.js +3 -0
  492. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  493. package/.next/server/app/favicon.ico/route/build-manifest.json +12 -0
  494. package/.next/server/app/favicon.ico/route.js +8 -0
  495. package/.next/server/app/favicon.ico/route.js.map +5 -0
  496. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  497. package/.next/server/app/favicon.ico.body +0 -0
  498. package/.next/server/app/favicon.ico.meta +1 -0
  499. package/.next/server/app/latex-test/page/app-paths-manifest.json +3 -0
  500. package/.next/server/app/latex-test/page/build-manifest.json +20 -0
  501. package/.next/server/app/latex-test/page/next-font-manifest.json +11 -0
  502. package/.next/server/app/latex-test/page/react-loadable-manifest.json +1 -0
  503. package/.next/server/app/latex-test/page/server-reference-manifest.json +4 -0
  504. package/.next/server/app/latex-test/page.js +14 -0
  505. package/.next/server/app/latex-test/page.js.map +5 -0
  506. package/.next/server/app/latex-test/page.js.nft.json +1 -0
  507. package/.next/server/app/latex-test/page_client-reference-manifest.js +3 -0
  508. package/.next/server/app/login/page/app-paths-manifest.json +3 -0
  509. package/.next/server/app/login/page/build-manifest.json +20 -0
  510. package/.next/server/app/login/page/next-font-manifest.json +11 -0
  511. package/.next/server/app/login/page/react-loadable-manifest.json +1 -0
  512. package/.next/server/app/login/page/server-reference-manifest.json +4 -0
  513. package/.next/server/app/login/page.js +14 -0
  514. package/.next/server/app/login/page.js.map +5 -0
  515. package/.next/server/app/login/page.js.nft.json +1 -0
  516. package/.next/server/app/login/page_client-reference-manifest.js +3 -0
  517. package/.next/server/app/manifest.webmanifest/route/app-paths-manifest.json +3 -0
  518. package/.next/server/app/manifest.webmanifest/route/build-manifest.json +12 -0
  519. package/.next/server/app/manifest.webmanifest/route/server-reference-manifest.json +4 -0
  520. package/.next/server/app/manifest.webmanifest/route.js +8 -0
  521. package/.next/server/app/manifest.webmanifest/route.js.map +5 -0
  522. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  523. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +3 -0
  524. package/.next/server/app/manifest.webmanifest.body +1 -0
  525. package/.next/server/app/manifest.webmanifest.meta +1 -0
  526. package/.next/server/app/notebooks/[id]/add/page/app-paths-manifest.json +3 -0
  527. package/.next/server/app/notebooks/[id]/add/page/build-manifest.json +20 -0
  528. package/.next/server/app/notebooks/[id]/add/page/next-font-manifest.json +11 -0
  529. package/.next/server/app/notebooks/[id]/add/page/react-loadable-manifest.json +1 -0
  530. package/.next/server/app/notebooks/[id]/add/page/server-reference-manifest.json +4 -0
  531. package/.next/server/app/notebooks/[id]/add/page.js +14 -0
  532. package/.next/server/app/notebooks/[id]/add/page.js.map +5 -0
  533. package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -0
  534. package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +3 -0
  535. package/.next/server/app/notebooks/[id]/page/app-paths-manifest.json +3 -0
  536. package/.next/server/app/notebooks/[id]/page/build-manifest.json +20 -0
  537. package/.next/server/app/notebooks/[id]/page/next-font-manifest.json +11 -0
  538. package/.next/server/app/notebooks/[id]/page/react-loadable-manifest.json +1 -0
  539. package/.next/server/app/notebooks/[id]/page/server-reference-manifest.json +4 -0
  540. package/.next/server/app/notebooks/[id]/page.js +14 -0
  541. package/.next/server/app/notebooks/[id]/page.js.map +5 -0
  542. package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -0
  543. package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +3 -0
  544. package/.next/server/app/notebooks/page/app-paths-manifest.json +3 -0
  545. package/.next/server/app/notebooks/page/build-manifest.json +20 -0
  546. package/.next/server/app/notebooks/page/next-font-manifest.json +11 -0
  547. package/.next/server/app/notebooks/page/react-loadable-manifest.json +1 -0
  548. package/.next/server/app/notebooks/page/server-reference-manifest.json +4 -0
  549. package/.next/server/app/notebooks/page.js +14 -0
  550. package/.next/server/app/notebooks/page.js.map +5 -0
  551. package/.next/server/app/notebooks/page.js.nft.json +1 -0
  552. package/.next/server/app/notebooks/page_client-reference-manifest.js +3 -0
  553. package/.next/server/app/page/app-paths-manifest.json +3 -0
  554. package/.next/server/app/page/build-manifest.json +20 -0
  555. package/.next/server/app/page/next-font-manifest.json +11 -0
  556. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  557. package/.next/server/app/page/server-reference-manifest.json +4 -0
  558. package/.next/server/app/page.js +14 -0
  559. package/.next/server/app/page.js.map +5 -0
  560. package/.next/server/app/page.js.nft.json +1 -0
  561. package/.next/server/app/page_client-reference-manifest.js +3 -0
  562. package/.next/server/app/practice/page/app-paths-manifest.json +3 -0
  563. package/.next/server/app/practice/page/build-manifest.json +20 -0
  564. package/.next/server/app/practice/page/next-font-manifest.json +11 -0
  565. package/.next/server/app/practice/page/react-loadable-manifest.json +1 -0
  566. package/.next/server/app/practice/page/server-reference-manifest.json +4 -0
  567. package/.next/server/app/practice/page.js +14 -0
  568. package/.next/server/app/practice/page.js.map +5 -0
  569. package/.next/server/app/practice/page.js.nft.json +1 -0
  570. package/.next/server/app/practice/page_client-reference-manifest.js +3 -0
  571. package/.next/server/app/print-preview/page/app-paths-manifest.json +3 -0
  572. package/.next/server/app/print-preview/page/build-manifest.json +20 -0
  573. package/.next/server/app/print-preview/page/next-font-manifest.json +11 -0
  574. package/.next/server/app/print-preview/page/react-loadable-manifest.json +1 -0
  575. package/.next/server/app/print-preview/page/server-reference-manifest.json +4 -0
  576. package/.next/server/app/print-preview/page.js +14 -0
  577. package/.next/server/app/print-preview/page.js.map +5 -0
  578. package/.next/server/app/print-preview/page.js.nft.json +1 -0
  579. package/.next/server/app/print-preview/page_client-reference-manifest.js +3 -0
  580. package/.next/server/app/register/page/app-paths-manifest.json +3 -0
  581. package/.next/server/app/register/page/build-manifest.json +20 -0
  582. package/.next/server/app/register/page/next-font-manifest.json +11 -0
  583. package/.next/server/app/register/page/react-loadable-manifest.json +1 -0
  584. package/.next/server/app/register/page/server-reference-manifest.json +4 -0
  585. package/.next/server/app/register/page.js +14 -0
  586. package/.next/server/app/register/page.js.map +5 -0
  587. package/.next/server/app/register/page.js.nft.json +1 -0
  588. package/.next/server/app/register/page_client-reference-manifest.js +3 -0
  589. package/.next/server/app/stats/page/app-paths-manifest.json +3 -0
  590. package/.next/server/app/stats/page/build-manifest.json +20 -0
  591. package/.next/server/app/stats/page/next-font-manifest.json +11 -0
  592. package/.next/server/app/stats/page/react-loadable-manifest.json +1 -0
  593. package/.next/server/app/stats/page/server-reference-manifest.json +4 -0
  594. package/.next/server/app/stats/page.js +14 -0
  595. package/.next/server/app/stats/page.js.map +5 -0
  596. package/.next/server/app/stats/page.js.nft.json +1 -0
  597. package/.next/server/app/stats/page_client-reference-manifest.js +3 -0
  598. package/.next/server/app/tags/page/app-paths-manifest.json +3 -0
  599. package/.next/server/app/tags/page/build-manifest.json +20 -0
  600. package/.next/server/app/tags/page/next-font-manifest.json +11 -0
  601. package/.next/server/app/tags/page/react-loadable-manifest.json +1 -0
  602. package/.next/server/app/tags/page/server-reference-manifest.json +4 -0
  603. package/.next/server/app/tags/page.js +14 -0
  604. package/.next/server/app/tags/page.js.map +5 -0
  605. package/.next/server/app/tags/page.js.nft.json +1 -0
  606. package/.next/server/app/tags/page_client-reference-manifest.js +3 -0
  607. package/.next/server/app-paths-manifest.json +81 -0
  608. package/.next/server/chunks/1jng_app_api_exams_[id]_questions_[questionId]_regenerate_route_actions_1ggead3.js +3 -0
  609. package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_practice-records_route_actions_0z2zuf1.js +3 -0
  610. package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_svg-animation_route_actions_17gckf3.js +3 -0
  611. package/.next/server/chunks/[externals]__04n7qbr._.js +3 -0
  612. package/.next/server/chunks/[externals]__0pot68n._.js +3 -0
  613. package/.next/server/chunks/[externals]__1735khz._.js +3 -0
  614. package/.next/server/chunks/[externals]_assert_1pwe1ri._.js +3 -0
  615. package/.next/server/chunks/[root-of-the-server]__0-8hf14._.js +3 -0
  616. package/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +153 -0
  617. package/.next/server/chunks/[root-of-the-server]__00m7v48._.js +3 -0
  618. package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +3 -0
  619. package/.next/server/chunks/[root-of-the-server]__01m28mx._.js +3 -0
  620. package/.next/server/chunks/[root-of-the-server]__04mu6-m._.js +3 -0
  621. package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +3 -0
  622. package/.next/server/chunks/[root-of-the-server]__05no8nw._.js +3 -0
  623. package/.next/server/chunks/[root-of-the-server]__05s4wut._.js +3 -0
  624. package/.next/server/chunks/[root-of-the-server]__06h5afw._.js +3 -0
  625. package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +3 -0
  626. package/.next/server/chunks/[root-of-the-server]__07nvz1d._.js +3 -0
  627. package/.next/server/chunks/[root-of-the-server]__08gak8r._.js +3 -0
  628. package/.next/server/chunks/[root-of-the-server]__08zi-xg._.js +3 -0
  629. package/.next/server/chunks/[root-of-the-server]__0994h9l._.js +3 -0
  630. package/.next/server/chunks/[root-of-the-server]__0_t7bbz._.js +3 -0
  631. package/.next/server/chunks/[root-of-the-server]__0akadps._.js +3 -0
  632. package/.next/server/chunks/[root-of-the-server]__0b3nww4._.js +3 -0
  633. package/.next/server/chunks/[root-of-the-server]__0bs5unr._.js +3 -0
  634. package/.next/server/chunks/[root-of-the-server]__0c59gc3._.js +3 -0
  635. package/.next/server/chunks/[root-of-the-server]__0dfbwm3._.js +3 -0
  636. package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +122 -0
  637. package/.next/server/chunks/[root-of-the-server]__0els3c1._.js +3 -0
  638. package/.next/server/chunks/[root-of-the-server]__0gp88gz._.js +3 -0
  639. package/.next/server/chunks/[root-of-the-server]__0gpohuv._.js +3 -0
  640. package/.next/server/chunks/[root-of-the-server]__0grkic-._.js +3 -0
  641. package/.next/server/chunks/[root-of-the-server]__0hj9oe2._.js +3 -0
  642. package/.next/server/chunks/[root-of-the-server]__0inxsnu._.js +3 -0
  643. package/.next/server/chunks/[root-of-the-server]__0j-gv3-._.js +3 -0
  644. package/.next/server/chunks/[root-of-the-server]__0jaawra._.js +3 -0
  645. package/.next/server/chunks/[root-of-the-server]__0je3zje._.js +3 -0
  646. package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +3 -0
  647. package/.next/server/chunks/[root-of-the-server]__0m_f8ct._.js +3 -0
  648. package/.next/server/chunks/[root-of-the-server]__0na-z2m._.js +3 -0
  649. package/.next/server/chunks/[root-of-the-server]__0nqbham._.js +3 -0
  650. package/.next/server/chunks/[root-of-the-server]__0ns_tws._.js +3 -0
  651. package/.next/server/chunks/[root-of-the-server]__0p3hkz7._.js +3 -0
  652. package/.next/server/chunks/[root-of-the-server]__0pli74s._.js +3 -0
  653. package/.next/server/chunks/[root-of-the-server]__0qaih8c._.js +3 -0
  654. package/.next/server/chunks/[root-of-the-server]__0ra48rd._.js +3 -0
  655. package/.next/server/chunks/[root-of-the-server]__0rk_yxy._.js +9 -0
  656. package/.next/server/chunks/[root-of-the-server]__0sh6-yu._.js +3 -0
  657. package/.next/server/chunks/[root-of-the-server]__0ssagl1._.js +3 -0
  658. package/.next/server/chunks/[root-of-the-server]__0u58zap._.js +3 -0
  659. package/.next/server/chunks/[root-of-the-server]__0ws6c0v._.js +3 -0
  660. package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +3 -0
  661. package/.next/server/chunks/[root-of-the-server]__0ydrrdj._.js +3 -0
  662. package/.next/server/chunks/[root-of-the-server]__0yds0ae._.js +3 -0
  663. package/.next/server/chunks/[root-of-the-server]__0ynfeq-._.js +3 -0
  664. package/.next/server/chunks/[root-of-the-server]__0z-sjqh._.js +3 -0
  665. package/.next/server/chunks/[root-of-the-server]__0zp1e41._.js +3 -0
  666. package/.next/server/chunks/[root-of-the-server]__108ydjw._.js +3 -0
  667. package/.next/server/chunks/[root-of-the-server]__10yghm_._.js +3 -0
  668. package/.next/server/chunks/[root-of-the-server]__11-sf2-._.js +3 -0
  669. package/.next/server/chunks/[root-of-the-server]__11wobg2._.js +3 -0
  670. package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +32 -0
  671. package/.next/server/chunks/[root-of-the-server]__13_c7nc._.js +3 -0
  672. package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +3 -0
  673. package/.next/server/chunks/[root-of-the-server]__1413v0e._.js +3 -0
  674. package/.next/server/chunks/[root-of-the-server]__14pcopd._.js +3 -0
  675. package/.next/server/chunks/[root-of-the-server]__150ei9u._.js +3 -0
  676. package/.next/server/chunks/[root-of-the-server]__15g7yjy._.js +3 -0
  677. package/.next/server/chunks/[root-of-the-server]__15tkoe6._.js +10 -0
  678. package/.next/server/chunks/[root-of-the-server]__19nm3y_._.js +3 -0
  679. package/.next/server/chunks/[root-of-the-server]__19vj8qy._.js +3 -0
  680. package/.next/server/chunks/[root-of-the-server]__1_gkx5x._.js +3 -0
  681. package/.next/server/chunks/[root-of-the-server]__1a4i9sz._.js +3 -0
  682. package/.next/server/chunks/[root-of-the-server]__1cn6rlb._.js +3 -0
  683. package/.next/server/chunks/[root-of-the-server]__1csfdxc._.js +3 -0
  684. package/.next/server/chunks/[root-of-the-server]__1e3crdc._.js +3 -0
  685. package/.next/server/chunks/[root-of-the-server]__1ezwxao._.js +3 -0
  686. package/.next/server/chunks/[root-of-the-server]__1g-xe1f._.js +3 -0
  687. package/.next/server/chunks/[root-of-the-server]__1g1wi9i._.js +3 -0
  688. package/.next/server/chunks/[root-of-the-server]__1g3usdn._.js +3 -0
  689. package/.next/server/chunks/[root-of-the-server]__1gmc_uw._.js +3 -0
  690. package/.next/server/chunks/[root-of-the-server]__1hmv25w._.js +3 -0
  691. package/.next/server/chunks/[root-of-the-server]__1hpwwxw._.js +3 -0
  692. package/.next/server/chunks/[root-of-the-server]__1hq73__._.js +3 -0
  693. package/.next/server/chunks/[root-of-the-server]__1jtd2ar._.js +6 -0
  694. package/.next/server/chunks/[root-of-the-server]__1kqv61m._.js +3 -0
  695. package/.next/server/chunks/[root-of-the-server]__1m4-ab6._.js +3 -0
  696. package/.next/server/chunks/[root-of-the-server]__1nmtv65._.js +10 -0
  697. package/.next/server/chunks/[root-of-the-server]__1oup682._.js +3 -0
  698. package/.next/server/chunks/[root-of-the-server]__1ouzjax._.js +3 -0
  699. package/.next/server/chunks/[root-of-the-server]__1pcgq22._.js +3 -0
  700. package/.next/server/chunks/[root-of-the-server]__1pplzr1._.js +3 -0
  701. package/.next/server/chunks/[root-of-the-server]__1q5nt5y._.js +3 -0
  702. package/.next/server/chunks/[root-of-the-server]__1qt6_3b._.js +3 -0
  703. package/.next/server/chunks/[root-of-the-server]__1sdtn83._.js +3 -0
  704. package/.next/server/chunks/[root-of-the-server]__1utxo11._.js +3 -0
  705. package/.next/server/chunks/[root-of-the-server]__1v1dgs2._.js +3 -0
  706. package/.next/server/chunks/[root-of-the-server]__1v9b8go._.js +3 -0
  707. package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +32 -0
  708. package/.next/server/chunks/[root-of-the-server]__1vzxn91._.js +3 -0
  709. package/.next/server/chunks/[root-of-the-server]__1wgn76g._.js +3 -0
  710. package/.next/server/chunks/[root-of-the-server]__1wkh9sj._.js +3 -0
  711. package/.next/server/chunks/[root-of-the-server]__1xcmja4._.js +3 -0
  712. package/.next/server/chunks/[root-of-the-server]__1y6fx9-._.js +3 -0
  713. package/.next/server/chunks/[root-of-the-server]__1zos_p4._.js +3 -0
  714. package/.next/server/chunks/[root-of-the-server]__1zp0oig._.js +3 -0
  715. package/.next/server/chunks/[root-of-the-server]__203q6el._.js +3 -0
  716. package/.next/server/chunks/[root-of-the-server]__20bun16._.js +3 -0
  717. package/.next/server/chunks/[turbopack]_runtime.js +939 -0
  718. package/.next/server/chunks/_008zx49._.js +3 -0
  719. package/.next/server/chunks/_011-ll5._.js +3 -0
  720. package/.next/server/chunks/_0431fxn._.js +3 -0
  721. package/.next/server/chunks/_0ae3z2e._.js +3 -0
  722. package/.next/server/chunks/_0c5hvv3._.js +11 -0
  723. package/.next/server/chunks/_0ekrwj-._.js +36 -0
  724. package/.next/server/chunks/_0frix22._.js +11 -0
  725. package/.next/server/chunks/_0gxi3zr._.js +3 -0
  726. package/.next/server/chunks/_0lz3t4l._.js +19 -0
  727. package/.next/server/chunks/_0o1p57f._.js +3 -0
  728. package/.next/server/chunks/_0t6g4yt._.js +3 -0
  729. package/.next/server/chunks/_0uxp3uh._.js +3 -0
  730. package/.next/server/chunks/_0x3ltk0._.js +36 -0
  731. package/.next/server/chunks/_12w5k19._.js +3 -0
  732. package/.next/server/chunks/_13ffmxv._.js +3 -0
  733. package/.next/server/chunks/_14tz_k9._.js +3 -0
  734. package/.next/server/chunks/_16jdov0._.js +3 -0
  735. package/.next/server/chunks/_18amra5._.js +3 -0
  736. package/.next/server/chunks/_19fidvw._.js +3 -0
  737. package/.next/server/chunks/_1_ns7o3._.js +3 -0
  738. package/.next/server/chunks/_1a1aqmi._.js +3 -0
  739. package/.next/server/chunks/_1a1udq0._.js +3 -0
  740. package/.next/server/chunks/_1b0269x._.js +3 -0
  741. package/.next/server/chunks/_1b7qjlv._.js +3 -0
  742. package/.next/server/chunks/_1be-y66._.js +3 -0
  743. package/.next/server/chunks/_1ex6ovo._.js +3 -0
  744. package/.next/server/chunks/_1fgb9ve._.js +3 -0
  745. package/.next/server/chunks/_1m-yyz-._.js +3 -0
  746. package/.next/server/chunks/_1oj6gy_._.js +3 -0
  747. package/.next/server/chunks/_1oqpwh8._.js +3 -0
  748. package/.next/server/chunks/_1q5w9fc._.js +3 -0
  749. package/.next/server/chunks/_1ve0z0w._.js +3 -0
  750. package/.next/server/chunks/_1z_ujac._.js +3 -0
  751. package/.next/server/chunks/_211va-d._.js +3 -0
  752. package/.next/server/chunks/_next-internal_server_app_api_admin_dashboard_route_actions_1ispso-.js +3 -0
  753. package/.next/server/chunks/_next-internal_server_app_api_admin_migrate-tags_route_actions_1ztwxhx.js +3 -0
  754. package/.next/server/chunks/_next-internal_server_app_api_admin_system-reset_route_actions_15aselt.js +3 -0
  755. package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_detail_route_actions_0oe_wkt.js +3 -0
  756. package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_route_actions_1hhpuc4.js +3 -0
  757. package/.next/server/chunks/_next-internal_server_app_api_admin_users_route_actions_0q-rtz1.js +3 -0
  758. package/.next/server/chunks/_next-internal_server_app_api_ai_models_route_actions_0w7iwv-.js +3 -0
  759. package/.next/server/chunks/_next-internal_server_app_api_ai_test_route_actions_1p0n1q8.js +3 -0
  760. package/.next/server/chunks/_next-internal_server_app_api_analytics_route_actions_1e0ou17.js +3 -0
  761. package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js +3 -0
  762. package/.next/server/chunks/_next-internal_server_app_api_auth_[___nextauth]_route_actions_08nexdk.js +3 -0
  763. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_delete_route_actions_1w26boq.js +3 -0
  764. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_figure_route_actions_0adlts0.js +3 -0
  765. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_fix-latex_route_actions_0hc7dhx.js +3 -0
  766. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_geogebra_route_actions_1-ks4uv.js +3 -0
  767. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_image_route_actions_1k9n5yl.js +3 -0
  768. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +3 -0
  769. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_notes_route_actions_1cjux7z.js +3 -0
  770. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_reanswer_route_actions_1-sw0j2.js +3 -0
  771. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_retag_route_actions_0ckki4n.js +3 -0
  772. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_route_actions_1kbs4ux.js +3 -0
  773. package/.next/server/chunks/_next-internal_server_app_api_error-items_batch-delete_route_actions_0hiq_1k.js +3 -0
  774. package/.next/server/chunks/_next-internal_server_app_api_error-items_clear_route_actions_14t_6i-.js +3 -0
  775. package/.next/server/chunks/_next-internal_server_app_api_error-items_list_route_actions_032x4ue.js +3 -0
  776. package/.next/server/chunks/_next-internal_server_app_api_error-items_route_actions_1zdvz0p.js +3 -0
  777. package/.next/server/chunks/_next-internal_server_app_api_error-items_short_[shortId]_route_actions_02976v-.js +3 -0
  778. package/.next/server/chunks/_next-internal_server_app_api_error-items_similarity_route_actions_1i26if9.js +3 -0
  779. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_results_route_actions_1v3vhi4.js +3 -0
  780. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_retry_route_actions_1fdi39f.js +3 -0
  781. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_route_actions_1wuidrq.js +3 -0
  782. package/.next/server/chunks/_next-internal_server_app_api_exams_route_actions_1c_zhtj.js +3 -0
  783. package/.next/server/chunks/_next-internal_server_app_api_export_route_actions_0lpcnjc.js +3 -0
  784. package/.next/server/chunks/_next-internal_server_app_api_geogebra-analyze_route_actions_1xng0_c.js +3 -0
  785. package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js +3 -0
  786. package/.next/server/chunks/_next-internal_server_app_api_import_route_actions_20ko04x.js +3 -0
  787. package/.next/server/chunks/_next-internal_server_app_api_logs_frontend_route_actions_0nxepty.js +3 -0
  788. package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_retag_route_actions_00su_t8.js +3 -0
  789. package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_route_actions_11j3vxg.js +3 -0
  790. package/.next/server/chunks/_next-internal_server_app_api_notebooks_route_actions_02cy45r.js +3 -0
  791. package/.next/server/chunks/_next-internal_server_app_api_openclaw_batch-upload_route_actions_1zz3oen.js +3 -0
  792. package/.next/server/chunks/_next-internal_server_app_api_practice_generate_route_actions_1krr9n_.js +3 -0
  793. package/.next/server/chunks/_next-internal_server_app_api_practice_record_[id]_route_actions_0zreiom.js +3 -0
  794. package/.next/server/chunks/_next-internal_server_app_api_practice_record_route_actions_0py9z__.js +3 -0
  795. package/.next/server/chunks/_next-internal_server_app_api_reanswer_route_actions_04xweh_.js +3 -0
  796. package/.next/server/chunks/_next-internal_server_app_api_register_route_actions_0vlzh_c.js +3 -0
  797. package/.next/server/chunks/_next-internal_server_app_api_register_status_route_actions_0b52_sj.js +3 -0
  798. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
  799. package/.next/server/chunks/_next-internal_server_app_api_stats_practice_clear_route_actions_1iz6iz0.js +3 -0
  800. package/.next/server/chunks/_next-internal_server_app_api_stats_practice_route_actions_1tfoxx-.js +3 -0
  801. package/.next/server/chunks/_next-internal_server_app_api_tags_route_actions_1nb9ma2.js +3 -0
  802. package/.next/server/chunks/_next-internal_server_app_api_tags_stats_route_actions_0fmeadc.js +3 -0
  803. package/.next/server/chunks/_next-internal_server_app_api_tags_suggestions_route_actions_1xpolyv.js +3 -0
  804. package/.next/server/chunks/_next-internal_server_app_api_tasks_route_actions_123tq1_.js +3 -0
  805. package/.next/server/chunks/_next-internal_server_app_api_user_route_actions_1k-4clg.js +3 -0
  806. package/.next/server/chunks/_next-internal_server_app_api_version_route_actions_0kbx30h.js +3 -0
  807. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +3 -0
  808. package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_08hcpz0.js +3 -0
  809. package/.next/server/chunks/node_modules_next_1zdbrne._.js +10 -0
  810. package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js +22 -0
  811. package/.next/server/chunks/src_0tzpy5j._.js +3 -0
  812. package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +554 -0
  813. package/.next/server/chunks/src_lib_date-time_ts_14chb27._.js +3 -0
  814. package/.next/server/chunks/src_lib_question-deduplication_ts_1p1bik-._.js +3 -0
  815. package/.next/server/chunks/ssr/[externals]_fs_0pplqgc._.js +3 -0
  816. package/.next/server/chunks/ssr/[root-of-the-server]__00gewu3._.js +35 -0
  817. package/.next/server/chunks/ssr/[root-of-the-server]__05f8wbh._.js +3 -0
  818. package/.next/server/chunks/ssr/[root-of-the-server]__0a0nty7._.js +3 -0
  819. package/.next/server/chunks/ssr/[root-of-the-server]__0ax9dog._.js +3 -0
  820. package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +3 -0
  821. package/.next/server/chunks/ssr/[root-of-the-server]__0bvtza7._.js +33 -0
  822. package/.next/server/chunks/ssr/[root-of-the-server]__0g_-bym._.js +3 -0
  823. package/.next/server/chunks/ssr/[root-of-the-server]__0gwwr7e._.js +3 -0
  824. package/.next/server/chunks/ssr/[root-of-the-server]__0hzktoi._.js +3 -0
  825. package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +3 -0
  826. package/.next/server/chunks/ssr/[root-of-the-server]__0koj8h0._.js +3 -0
  827. package/.next/server/chunks/ssr/[root-of-the-server]__0s87xha._.js +3 -0
  828. package/.next/server/chunks/ssr/[root-of-the-server]__0snpjfe._.js +3 -0
  829. package/.next/server/chunks/ssr/[root-of-the-server]__0y_e9do._.js +3 -0
  830. package/.next/server/chunks/ssr/[root-of-the-server]__0ybs_4c._.js +3 -0
  831. package/.next/server/chunks/ssr/[root-of-the-server]__14l7peq._.js +3 -0
  832. package/.next/server/chunks/ssr/[root-of-the-server]__1507q8a._.js +3 -0
  833. package/.next/server/chunks/ssr/[root-of-the-server]__15ppb9j._.js +3 -0
  834. package/.next/server/chunks/ssr/[root-of-the-server]__191jn5n._.js +3 -0
  835. package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js +33 -0
  836. package/.next/server/chunks/ssr/[root-of-the-server]__1gth76-._.js +3 -0
  837. package/.next/server/chunks/ssr/[root-of-the-server]__1ko_dw5._.js +3 -0
  838. package/.next/server/chunks/ssr/[root-of-the-server]__1l84pks._.js +3 -0
  839. package/.next/server/chunks/ssr/[root-of-the-server]__1m7qw-2._.js +3 -0
  840. package/.next/server/chunks/ssr/[root-of-the-server]__1ma2oml._.js +3 -0
  841. package/.next/server/chunks/ssr/[root-of-the-server]__1o8jotz._.js +3 -0
  842. package/.next/server/chunks/ssr/[root-of-the-server]__1o__w27._.js +3 -0
  843. package/.next/server/chunks/ssr/[root-of-the-server]__1p7f0va._.js +3 -0
  844. package/.next/server/chunks/ssr/[root-of-the-server]__1sg9eoj._.js +3 -0
  845. package/.next/server/chunks/ssr/[root-of-the-server]__1u74hyi._.js +3 -0
  846. package/.next/server/chunks/ssr/[root-of-the-server]__1xsovpr._.js +3 -0
  847. package/.next/server/chunks/ssr/[turbopack]_runtime.js +939 -0
  848. package/.next/server/chunks/ssr/_054yhx9._.js +3 -0
  849. package/.next/server/chunks/ssr/_07ls0n_._.js +3 -0
  850. package/.next/server/chunks/ssr/_0i9hwpv._.js +3 -0
  851. package/.next/server/chunks/ssr/_0iqp5hs._.js +3 -0
  852. package/.next/server/chunks/ssr/_0m1-rq-._.js +3 -0
  853. package/.next/server/chunks/ssr/_0mgbe2b._.js +3 -0
  854. package/.next/server/chunks/ssr/_0nv22wt._.js +3 -0
  855. package/.next/server/chunks/ssr/_0rz2_qb._.js +151 -0
  856. package/.next/server/chunks/ssr/_0sbbx9z._.js +7 -0
  857. package/.next/server/chunks/ssr/_0sf1gd9._.js +3 -0
  858. package/.next/server/chunks/ssr/_0uemk57._.js +3 -0
  859. package/.next/server/chunks/ssr/_0zj7dlu._.js +3 -0
  860. package/.next/server/chunks/ssr/_12c20v5._.js +3 -0
  861. package/.next/server/chunks/ssr/_17igtpd._.js +3 -0
  862. package/.next/server/chunks/ssr/_1filpif._.js +3 -0
  863. package/.next/server/chunks/ssr/_1gu1rou._.js +3 -0
  864. package/.next/server/chunks/ssr/_1jniqsj._.js +3 -0
  865. package/.next/server/chunks/ssr/_1kgnhmo._.js +8 -0
  866. package/.next/server/chunks/ssr/_1lt1lhz._.js +8 -0
  867. package/.next/server/chunks/ssr/_1yeu09q._.js +3 -0
  868. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
  869. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
  870. package/.next/server/chunks/ssr/_next-internal_server_app_admin_page_actions_1mcickz.js +3 -0
  871. package/.next/server/chunks/ssr/_next-internal_server_app_admin_user_[id]_page_actions_0baj8gs.js +3 -0
  872. package/.next/server/chunks/ssr/_next-internal_server_app_error-items_[id]_page_actions_0qla9ak.js +3 -0
  873. package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_page_actions_1kushg5.js +3 -0
  874. package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_print_page_actions_0pxdgxq.js +3 -0
  875. package/.next/server/chunks/ssr/_next-internal_server_app_exams_page_actions_0av69f-.js +3 -0
  876. package/.next/server/chunks/ssr/_next-internal_server_app_latex-test_page_actions_19v7ka0.js +3 -0
  877. package/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +3 -0
  878. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_add_page_actions_0275ft2.js +3 -0
  879. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_page_actions_1qj0i-7.js +3 -0
  880. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_page_actions_06x1kdz.js +3 -0
  881. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
  882. package/.next/server/chunks/ssr/_next-internal_server_app_practice_page_actions_0cy-h5n.js +3 -0
  883. package/.next/server/chunks/ssr/_next-internal_server_app_print-preview_page_actions_1jhaaln.js +3 -0
  884. package/.next/server/chunks/ssr/_next-internal_server_app_register_page_actions_1op-s-x.js +3 -0
  885. package/.next/server/chunks/ssr/_next-internal_server_app_stats_page_actions_1olf1_a.js +3 -0
  886. package/.next/server/chunks/ssr/_next-internal_server_app_tags_page_actions_20v_n--.js +3 -0
  887. package/.next/server/chunks/ssr/node_modules_0o2aki7._.js +3 -0
  888. package/.next/server/chunks/ssr/node_modules_1y5ym6h._.js +3 -0
  889. package/.next/server/chunks/ssr/node_modules_next_1lnqo1a._.js +5 -0
  890. package/.next/server/chunks/ssr/node_modules_next_dist_077yo5w._.js +3 -0
  891. package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +6 -0
  892. package/.next/server/chunks/ssr/node_modules_next_dist_1_c-t1n._.js +14 -0
  893. package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +3 -0
  894. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +33 -0
  895. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  896. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
  897. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
  898. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
  899. package/.next/server/chunks/ssr/src_1biegcg._.js +3 -0
  900. package/.next/server/chunks/ssr/src_1gayunq._.js +3 -0
  901. package/.next/server/chunks/ssr/src_1o363ao._.js +3 -0
  902. package/.next/server/chunks/ssr/src_app_admin_page_tsx_0ublbd0._.js +3 -0
  903. package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +3 -0
  904. package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +3 -0
  905. package/.next/server/chunks/ssr/src_app_notebooks_page_tsx_1p9src5._.js +3 -0
  906. package/.next/server/chunks/ssr/src_app_page_tsx_1chiuah._.js +3 -0
  907. package/.next/server/chunks/ssr/src_app_practice_page_tsx_10gnx53._.js +3 -0
  908. package/.next/server/chunks/ssr/src_app_tags_page_tsx_1h2vkk4._.js +3 -0
  909. package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +193 -0
  910. package/.next/server/chunks/ssr/src_lib_date-time_ts_0oyqctn._.js +3 -0
  911. package/.next/server/edge/chunks/[root-of-the-server]__1osrt2u._.js +3 -0
  912. package/.next/server/edge/chunks/_1s0wgnu._.js +3 -0
  913. package/.next/server/edge/chunks/node_modules_0g4gi6f._.js +13 -0
  914. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1iafar9.js +3 -0
  915. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1x1n1fx.js +3 -0
  916. package/.next/server/functions-config-manifest.json +6 -0
  917. package/.next/server/instrumentation.js +4 -0
  918. package/.next/server/middleware-build-manifest.js +24 -0
  919. package/.next/server/middleware-manifest.json +36 -0
  920. package/.next/server/next-font-manifest.js +1 -0
  921. package/.next/server/next-font-manifest.json +79 -0
  922. package/.next/server/pages/500.html +1 -0
  923. package/.next/server/pages-manifest.json +3 -0
  924. package/.next/server/prefetch-hints.json +11 -0
  925. package/.next/server/server-reference-manifest.js +1 -0
  926. package/.next/server/server-reference-manifest.json +5 -0
  927. package/.next/static/OpwRvHtdhPgxve2rKkWkK/_buildManifest.js +11 -0
  928. package/.next/static/OpwRvHtdhPgxve2rKkWkK/_clientMiddlewareManifest.js +6 -0
  929. package/.next/static/OpwRvHtdhPgxve2rKkWkK/_ssgManifest.js +1 -0
  930. package/.next/static/chunks/00pn0o7lymln6.js +1 -0
  931. package/.next/static/chunks/02521degnqmf0.js +1 -0
  932. package/.next/static/chunks/05q4yafxnvtzs.js +1 -0
  933. package/.next/static/chunks/0_w084ms_lq25.js +22 -0
  934. package/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  935. package/.next/static/chunks/0dzfsm6h13fyr.js +1 -0
  936. package/.next/static/chunks/0ehjiuuxbbhq9.js +1 -0
  937. package/.next/static/chunks/0iq53qkw5hvrs.js +1 -0
  938. package/.next/static/chunks/0lxsaj3bivcgo.css +1 -0
  939. package/.next/static/chunks/0m81l71kojx8j.js +1 -0
  940. package/.next/static/chunks/0nckb2-62ooyq.js +1 -0
  941. package/.next/static/chunks/0snej-v5yglxr.js +1 -0
  942. package/.next/static/chunks/1-7k9gbbjkcml.js +1 -0
  943. package/.next/static/chunks/1ad3ir88_e_v6.css +3 -0
  944. package/.next/static/chunks/1cd32rtomdngh.js +1 -0
  945. package/.next/static/chunks/1io3-cth_2-cd.js +1 -0
  946. package/.next/static/chunks/1oiuiyv1cv06v.js +31 -0
  947. package/.next/static/chunks/1t4-pobw0y5cf.js +1 -0
  948. package/.next/static/chunks/1xg811762s1p1.js +1 -0
  949. package/.next/static/chunks/1z_5sj1wqi06v.js +1 -0
  950. package/.next/static/chunks/29erttsjondpe.js +1 -0
  951. package/.next/static/chunks/2dlme2fdlkms6.js +1 -0
  952. package/.next/static/chunks/2h-exsnhkfnb8.js +1 -0
  953. package/.next/static/chunks/2pmzqbg-qabof.js +1 -0
  954. package/.next/static/chunks/2rmhba08h4qqo.js +33 -0
  955. package/.next/static/chunks/2s07soqug65hc.js +1 -0
  956. package/.next/static/chunks/2w2uo9jjxt-re.js +1 -0
  957. package/.next/static/chunks/2yl8a-gxngbuq.js +1 -0
  958. package/.next/static/chunks/31rxdwy0u_t29.js +1 -0
  959. package/.next/static/chunks/32bl-oqw9oso0.js +1 -0
  960. package/.next/static/chunks/35cov9g4cgt-v.js +1 -0
  961. package/.next/static/chunks/37g3bsrs22xg7.js +191 -0
  962. package/.next/static/chunks/3b-g5_r9nto3s.js +6 -0
  963. package/.next/static/chunks/3c4-ozf1dxam2.css +1 -0
  964. package/.next/static/chunks/3g1rm2suowncy.js +3 -0
  965. package/.next/static/chunks/3helovsg02qr4.js +1 -0
  966. package/.next/static/chunks/3jta6jrk-jubq.js +1 -0
  967. package/.next/static/chunks/3yhf6xyypekz6.js +1 -0
  968. package/.next/static/chunks/3z9gc_02gl8n9.js +1 -0
  969. package/.next/static/chunks/427wg73nuzpiz.js +5 -0
  970. package/.next/static/chunks/turbopack-1-0r7_puvz3eq.js +1 -0
  971. package/.next/static/media/GeistMono_Variable-s.p.0iy569vnmknd-.woff2 +0 -0
  972. package/.next/static/media/Geist_Variable-s.p.03oqkqkevsckn.woff2 +0 -0
  973. package/.next/static/media/KaTeX_AMS-Regular.10y3kupq4t663.woff +0 -0
  974. package/.next/static/media/KaTeX_AMS-Regular.25ieegmnh38ts.woff2 +0 -0
  975. package/.next/static/media/KaTeX_AMS-Regular.418dr7cz3fo2x.ttf +0 -0
  976. package/.next/static/media/KaTeX_Caligraphic-Bold.06b-ya9t43ioz.woff2 +0 -0
  977. package/.next/static/media/KaTeX_Caligraphic-Bold.2vmk2hva4ctha.woff +0 -0
  978. package/.next/static/media/KaTeX_Caligraphic-Bold.40ltxhe834pns.ttf +0 -0
  979. package/.next/static/media/KaTeX_Caligraphic-Regular.07-7u27-nhn_r.ttf +0 -0
  980. package/.next/static/media/KaTeX_Caligraphic-Regular.2eph4dlhid_m9.woff2 +0 -0
  981. package/.next/static/media/KaTeX_Caligraphic-Regular.3gxeetazf831f.woff +0 -0
  982. package/.next/static/media/KaTeX_Fraktur-Bold.19yqa_tc9d_gx.ttf +0 -0
  983. package/.next/static/media/KaTeX_Fraktur-Bold.1alcy76__wdj2.woff +0 -0
  984. package/.next/static/media/KaTeX_Fraktur-Bold.2sasz-d-jtw8y.woff2 +0 -0
  985. package/.next/static/media/KaTeX_Fraktur-Regular.110oo81prr9n5.woff +0 -0
  986. package/.next/static/media/KaTeX_Fraktur-Regular.2d10y4xmjvzlf.woff2 +0 -0
  987. package/.next/static/media/KaTeX_Fraktur-Regular.2qhy34r6a05dn.ttf +0 -0
  988. package/.next/static/media/KaTeX_Main-Bold.0us_n0tnxlxu7.ttf +0 -0
  989. package/.next/static/media/KaTeX_Main-Bold.0v1esh257kqpe.woff +0 -0
  990. package/.next/static/media/KaTeX_Main-Bold.3-rowy8o6_4ky.woff2 +0 -0
  991. package/.next/static/media/KaTeX_Main-BoldItalic.13355ck5zr48q.woff +0 -0
  992. package/.next/static/media/KaTeX_Main-BoldItalic.14r2naom8mrec.woff2 +0 -0
  993. package/.next/static/media/KaTeX_Main-BoldItalic.3x_u9cepaced0.ttf +0 -0
  994. package/.next/static/media/KaTeX_Main-Italic.0afv392dj4w59.woff +0 -0
  995. package/.next/static/media/KaTeX_Main-Italic.0lig0v9j0700p.woff2 +0 -0
  996. package/.next/static/media/KaTeX_Main-Italic.2hkw3230mfwcv.ttf +0 -0
  997. package/.next/static/media/KaTeX_Main-Regular.0symfa7dqj6jd.ttf +0 -0
  998. package/.next/static/media/KaTeX_Main-Regular.15u8r3b2y7fv4.woff +0 -0
  999. package/.next/static/media/KaTeX_Main-Regular.1ryvsdzh2w1_e.woff2 +0 -0
  1000. package/.next/static/media/KaTeX_Math-BoldItalic.0y5w36a5aq__2.ttf +0 -0
  1001. package/.next/static/media/KaTeX_Math-BoldItalic.12pl58orkw9rg.woff +0 -0
  1002. package/.next/static/media/KaTeX_Math-BoldItalic.1oopuu636h4il.woff2 +0 -0
  1003. package/.next/static/media/KaTeX_Math-Italic.0w0b1ugh62cfr.woff +0 -0
  1004. package/.next/static/media/KaTeX_Math-Italic.2vkekfblmz5nb.ttf +0 -0
  1005. package/.next/static/media/KaTeX_Math-Italic.32405s1aq8vas.woff2 +0 -0
  1006. package/.next/static/media/KaTeX_SansSerif-Bold.0h3wi2z_eouyg.woff2 +0 -0
  1007. package/.next/static/media/KaTeX_SansSerif-Bold.1ovw5p-yjp56g.woff +0 -0
  1008. package/.next/static/media/KaTeX_SansSerif-Bold.2d03q85pwxpti.ttf +0 -0
  1009. package/.next/static/media/KaTeX_SansSerif-Italic.0wkjc4dm2kcit.woff2 +0 -0
  1010. package/.next/static/media/KaTeX_SansSerif-Italic.1qavw__2zz8gk.woff +0 -0
  1011. package/.next/static/media/KaTeX_SansSerif-Italic.3i-q087b23-m8.ttf +0 -0
  1012. package/.next/static/media/KaTeX_SansSerif-Regular.1i4afx8nk8n4r.woff +0 -0
  1013. package/.next/static/media/KaTeX_SansSerif-Regular.2peiewu59z3d-.woff2 +0 -0
  1014. package/.next/static/media/KaTeX_SansSerif-Regular.31pbu25feko_c.ttf +0 -0
  1015. package/.next/static/media/KaTeX_Script-Regular.11h14300o9pd0.woff2 +0 -0
  1016. package/.next/static/media/KaTeX_Script-Regular.28p_x7iz71ofe.ttf +0 -0
  1017. package/.next/static/media/KaTeX_Script-Regular.3110jb9c-bxna.woff +0 -0
  1018. package/.next/static/media/KaTeX_Size1-Regular.03lhvx36ekcou.woff2 +0 -0
  1019. package/.next/static/media/KaTeX_Size1-Regular.1slf4bh0hc6vm.woff +0 -0
  1020. package/.next/static/media/KaTeX_Size1-Regular.1y57-ck23ey8c.ttf +0 -0
  1021. package/.next/static/media/KaTeX_Size2-Regular.0-kwyvx03omo8.woff +0 -0
  1022. package/.next/static/media/KaTeX_Size2-Regular.14s5gg-puz6h-.woff2 +0 -0
  1023. package/.next/static/media/KaTeX_Size2-Regular.2u0s-b07k2o9m.ttf +0 -0
  1024. package/.next/static/media/KaTeX_Size3-Regular.04o9a_02gu_e8.woff +0 -0
  1025. package/.next/static/media/KaTeX_Size3-Regular.1n1rgzz84z8r9.woff2 +0 -0
  1026. package/.next/static/media/KaTeX_Size3-Regular.1pkn-dge4q0fv.ttf +0 -0
  1027. package/.next/static/media/KaTeX_Size4-Regular.2sgotkdv3dcyv.woff2 +0 -0
  1028. package/.next/static/media/KaTeX_Size4-Regular.2uelkfk2yna5e.ttf +0 -0
  1029. package/.next/static/media/KaTeX_Size4-Regular.3p2r1l7xmebxv.woff +0 -0
  1030. package/.next/static/media/KaTeX_Typewriter-Regular.11gr2d2wuwz77.woff2 +0 -0
  1031. package/.next/static/media/KaTeX_Typewriter-Regular.12f8myjij3617.woff +0 -0
  1032. package/.next/static/media/KaTeX_Typewriter-Regular.3nee9kjfy6nm8.ttf +0 -0
  1033. package/.next/static/media/favicon.2vob68tjqpejf.ico +0 -0
  1034. package/README.md +35 -2
  1035. package/bin/wrong-notebook.js +60 -0
  1036. package/launcher.js +177 -0
  1037. package/package.json +44 -4
  1038. package/prisma/migrations/20251127143435_init/migration.sql +62 -0
  1039. package/prisma/migrations/20251129152530_init/migration.sql +40 -0
  1040. package/prisma/migrations/20251130150624_add_education_info/migration.sql +6 -0
  1041. package/prisma/migrations/20251130161659_init/migration.sql +2 -0
  1042. package/prisma/migrations/20251201050917_add_admin_role/migration.sql +21 -0
  1043. package/prisma/migrations/20251203155126_cascade_delete_subject_error_items/migration.sql +29 -0
  1044. package/prisma/migrations/20251213132347_add_knowledge_tag_model/migration.sql +38 -0
  1045. package/prisma/migrations/20251219014445_fix_tag_constraints/migration.sql +11 -0
  1046. package/prisma/migrations/20260427090000_add_mistake_analysis_fields/migration.sql +4 -0
  1047. package/prisma/migrations/20260608000000_add_geogebra_commands/migration.sql +2 -0
  1048. package/prisma/migrations/20261018120000_add_practice_mastery_exam/migration.sql +103 -0
  1049. package/prisma/migrations/20261018133653_add_duplicate_import_details/migration.sql +4 -0
  1050. package/prisma/migrations/20261018134606_add_question_duplicate_threshold/migration.sql +2 -0
  1051. package/prisma/migrations/20261019090000_add_user_enable_geogebra/migration.sql +2 -0
  1052. package/prisma/migrations/20261019120000_lower_question_duplicate_threshold_default/migration.sql +27 -0
  1053. package/prisma/migrations/20261019150000_add_error_item_difficulty_stars/migration.sql +2 -0
  1054. package/prisma/migrations/20261019170000_add_notebook_stage_subject/migration.sql +17 -0
  1055. package/prisma/migrations/20261019190000_add_question_figure_svg/migration.sql +6 -0
  1056. package/prisma/migrations/20261019210000_add_svg_animation/migration.sql +3 -0
  1057. package/prisma/migrations/20261019230000_exam_question_multiple_results/migration.sql +40 -0
  1058. package/prisma/migrations/migration_lock.toml +3 -0
  1059. package/prisma/schema.prisma +222 -0
  1060. package/prisma/seed.db +0 -0
  1061. package/public/file.svg +1 -0
  1062. package/public/globe.svg +1 -0
  1063. package/public/icons/icon.png +0 -0
  1064. package/public/next.svg +1 -0
  1065. package/public/vercel.svg +1 -0
  1066. package/public/window.svg +1 -0
  1067. package/server.js +38 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],71689)},56909,e=>{"use strict";let t=(0,e.i(75254).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],56909)},8821,e=>{"use strict";let t=(0,e.i(75254).default)("wand-sparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);e.s(["default",0,t])},91686,68983,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(22016),r=e.i(15519),i=e.i(30691),l=e.i(64659),n=e.i(55900),d=e.i(31278),c=e.i(7233),o=e.i(83086),m=e.i(27612),u=e.i(87486),x=e.i(19455),h=e.i(15288),p=e.i(11445),f=e.i(56909),g=e.i(93479),y=e.i(93733),b=e.i(11110),j=e.i(41931);function v({errorItemId:e,onSaved:s,onCancel:l}){let{t:n}=(0,b.useLanguage)(),{timeZone:c}=(0,r.useTimeZone)(),o=(0,i.formatDateTime)(new Date,"yyyy-MM-dd",c),[m,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(o),[N,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(null),T=async()=>{if(m&&h){w(!0),C(null);try{await j.apiClient.post("/api/practice/record",{errorItemId:e,result:m,source:"manual",takenAt:(0,i.answeredDateToISOString)(h,c)}),s()}catch{C(n.mastery.resultSaveFailed)}finally{w(!1)}}};return(0,t.jsxs)("div",{className:"space-y-3 rounded-md border bg-muted/30 p-3",children:[(0,t.jsx)(y.PracticeResultPicker,{value:m,onChange:u,disabled:N}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,t.jsx)("label",{htmlFor:`practice-date-${e}`,className:"text-sm font-medium",children:n.mastery.recordDate}),(0,t.jsx)(g.Input,{id:`practice-date-${e}`,type:"date",value:h,max:o,onChange:e=>p(e.target.value),className:"sm:w-48"}),(0,t.jsxs)("div",{className:"flex gap-2 sm:ml-auto",children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:l,disabled:N,className:"flex-1 sm:flex-none",children:n.exam.cancel}),(0,t.jsxs)(x.Button,{size:"sm",onClick:T,disabled:N||!m||!h,className:"flex-1 sm:flex-none",children:[N?(0,t.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,t.jsx)(f.Save,{className:"mr-2 h-4 w-4"}),n.mastery.saveResult]})]})]}),k&&(0,t.jsx)("p",{className:"text-sm text-destructive",children:k})]})}var N=e.i(49704),w=e.i(94114);let k={correct:"bg-green-100 text-green-700 border-green-200",wrong:"bg-red-100 text-red-700 border-red-200",not_attempted:"bg-amber-100 text-amber-700 border-amber-200"};e.s(["MasteryPanel",0,function({errorItemId:e,onMasteryLevelChange:f}){let{timeZone:g}=(0,r.useTimeZone)(),{t:y}=(0,b.useLanguage)(),[C,T]=(0,a.useState)(null),[S,M]=(0,a.useState)(null),[R,A]=(0,a.useState)(0),[L,H]=(0,a.useState)(!1),$=(0,a.useCallback)(()=>{j.apiClient.get(`/api/error-items/${e}/practice-records`).then(e=>{T(e),f?.(e.masteryLevel)}).catch(()=>void 0)},[e,f]);(0,a.useEffect)($,[$]);let D=()=>{A(0),$()},P=async e=>{if(await (0,w.confirmDialog)(y.mastery.deleteRecordConfirm,{destructive:!0}))try{await j.apiClient.delete(`/api/practice/record/${e}`),D()}catch{w.toast.error(y.mastery.deleteRecordFailed)}},E=C?.records[0],B=!!E&&(!C?.masteryEvaluatedAt||new Date(E.createdAt)>new Date(C.masteryEvaluatedAt));if((0,a.useEffect)(()=>{if(!B||R>=20)return;let e=setTimeout(()=>{A(e=>e+1),$()},4e3);return()=>clearTimeout(e)},[B,R,$]),!C)return null;let I=C.masteryProbability,U=null===I?null:Math.round(100*I),q=null===U?"":U>=80?"bg-green-500":U>=50?"bg-amber-500":"bg-red-500",z=y.practice.difficulty;return(0,t.jsxs)(h.Card,{children:[(0,t.jsx)(h.CardHeader,{children:(0,t.jsxs)(h.CardTitle,{className:"flex items-center gap-2 text-base",children:[(0,t.jsx)(o.Sparkles,{className:"h-4 w-4 text-primary"}),y.mastery.probability]})}),(0,t.jsxs)(h.CardContent,{className:"space-y-4",children:[null===U?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:B?y.mastery.pending:y.mastery.notEvaluated}):(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,t.jsxs)("span",{className:"text-3xl font-bold",children:[U,"%"]}),(0,t.jsxs)("span",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[B&&(0,t.jsx)(d.Loader2,{className:"h-3 w-3 animate-spin"}),(0,t.jsx)(u.Badge,{variant:"outline",children:"ai"===C.masterySource?y.mastery.aiEvaluated:y.mastery.estimated})]})]}),(0,t.jsx)("div",{className:"h-2 w-full rounded-full bg-muted overflow-hidden",children:(0,t.jsx)("div",{className:`h-full ${q} transition-all`,style:{width:`${U}%`}})}),C.masteryReason&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:C.masteryReason}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:y.mastery.thresholdHint})]}),(0,t.jsxs)("div",{className:"space-y-2 border-t pt-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("h4",{className:"text-sm font-semibold",children:y.mastery.history}),!L&&(0,t.jsxs)(x.Button,{variant:"outline",size:"sm",onClick:()=>H(!0),children:[(0,t.jsx)(c.Plus,{className:"mr-1 h-4 w-4"}),y.mastery.addRecord]})]}),L&&(0,t.jsx)(v,{errorItemId:e,onCancel:()=>H(!1),onSaved:()=>{H(!1),D()}}),0===C.records.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground italic",children:y.mastery.noHistory}):(0,t.jsx)("ul",{className:"divide-y rounded-md border",children:C.records.map(e=>(0,t.jsxs)("li",{className:"p-3 text-sm space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsxs)("button",{type:"button",className:"flex min-w-0 flex-1 flex-wrap items-center gap-2 text-left",onClick:()=>M(S===e.id?null:e.id),children:[(0,t.jsx)("span",{className:"text-muted-foreground tabular-nums",children:(0,i.formatDateTime)(e.createdAt,"yyyy-MM-dd HH:mm",g)}),(0,t.jsx)(u.Badge,{variant:"outline",className:k[e.result]||"",children:y.mastery.results[e.result]||e.result}),e.difficulty&&(0,t.jsx)(u.Badge,{variant:"secondary",children:z[e.difficulty]||e.difficulty}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:e.exam?`${y.mastery.sources.exam} \xb7 ${e.exam.title}`:y.mastery.sources[e.source]||y.mastery.sources.practice}),e.questionText&&(0,t.jsx)("span",{className:"ml-auto text-muted-foreground",children:S===e.id?(0,t.jsx)(n.ChevronUp,{className:"h-4 w-4"}):(0,t.jsx)(l.ChevronDown,{className:"h-4 w-4"})})]}),(0,t.jsx)("button",{type:"button","aria-label":y.mastery.deleteRecord,title:y.mastery.deleteRecord,className:"shrink-0 rounded p-1 text-muted-foreground hover:bg-red-50 hover:text-red-600",onClick:()=>P(e.id),children:(0,t.jsx)(m.Trash2,{className:"h-4 w-4"})})]}),S===e.id&&e.questionText&&(0,t.jsxs)("div",{className:"space-y-2 rounded-md bg-muted/40 p-3",children:[(0,t.jsx)(p.MarkdownRenderer,{content:e.questionText}),(0,t.jsx)(N.QuestionFigure,{svg:e.figureSvg}),e.wrongAnswerText&&(0,t.jsxs)("div",{className:"border-t pt-2",children:[(0,t.jsx)("p",{className:"mb-1 font-medium",children:y.editor.wrongAnswerText}),(0,t.jsx)(p.MarkdownRenderer,{content:e.wrongAnswerText})]}),e.mistakeAnalysis&&(0,t.jsxs)("div",{className:"border-t pt-2",children:[(0,t.jsx)("p",{className:"mb-1 font-medium",children:y.editor.mistakeAnalysis}),(0,t.jsx)(p.MarkdownRenderer,{content:e.mistakeAnalysis})]}),e.originalImageUrl&&(0,t.jsx)("img",{src:e.originalImageUrl,alt:y.editor.wrongAnswerText,className:"max-h-96 max-w-full rounded object-contain"}),e.answerText&&(0,t.jsx)("div",{className:"border-t pt-2",children:(0,t.jsx)(p.MarkdownRenderer,{content:e.answerText,className:"font-semibold"})}),e.exam&&(0,t.jsx)(s.default,{href:`/exams/${e.exam.paperId}`,className:"text-xs text-primary hover:underline",children:e.exam.title})]})]},e.id))})]})]})]})},"RESULT_BADGE_CLASS",0,k],91686);var C=e.i(8821);e.s(["WandSparkles",()=>C.default],68983)},93733,e=>{"use strict";var t=e.i(18050),a=e.i(69638);let s=(0,e.i(75254).default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var r=e.i(73884),i=e.i(11110);let l=[{value:"correct",icon:a.CheckCircle,active:"border-green-600 bg-green-50 text-green-700"},{value:"wrong",icon:r.XCircle,active:"border-red-600 bg-red-50 text-red-700"},{value:"not_attempted",icon:s,active:"border-amber-600 bg-amber-50 text-amber-700"}];e.s(["PracticeResultPicker",0,function({value:e,onChange:a,disabled:s,size:r="md"}){let{t:n}=(0,i.useLanguage)(),d="sm"===r?"px-2 py-1 text-xs":"px-3 py-2 text-sm";return(0,t.jsx)("div",{className:"grid grid-cols-3 gap-2",role:"radiogroup",children:l.map(({value:i,icon:l,active:c})=>(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":e===i,disabled:s,onClick:()=>a(i),className:`flex items-center justify-center gap-1 rounded-md border font-medium transition-colors disabled:opacity-60 ${d} ${e===i?c:"border-input hover:bg-muted"}`,children:[(0,t.jsx)(l,{className:"sm"===r?"h-3 w-3":"h-4 w-4"}),n.mastery.results[i]]},i))})}],93733)},49704,e=>{"use strict";var t=e.i(18050),a=e.i(11110),s=e.i(75157);e.s(["QuestionFigure",0,function({svg:e,className:r}){let{t:i}=(0,a.useLanguage)();return e?(0,t.jsx)("figure",{className:(0,s.cn)("question-figure my-3",r),children:(0,t.jsx)("img",{src:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`,alt:i.figure.alt,className:"mx-auto block h-auto max-w-full rounded border bg-white p-2",style:{maxHeight:360}})}):null}],49704)},15288,e=>{"use strict";var t=e.i(18050),a=e.i(75157);e.s(["Card",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...s})},"CardContent",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",e),...s})},"CardDescription",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",e),...s})},"CardHeader",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...s})},"CardTitle",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",e),...s})}])},12505,e=>{"use strict";var t=e.i(18050),a=e.i(75157);e.s(["EmptyState",0,function({icon:e,title:s,description:r,action:i,className:l}){return(0,t.jsxs)("div",{className:(0,a.cn)("flex flex-col items-center justify-center rounded-2xl border border-dashed bg-card/50 px-6 py-14 text-center",l),children:[(0,t.jsx)("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-accent text-accent-foreground",children:(0,t.jsx)(e,{className:"h-7 w-7"})}),(0,t.jsx)("p",{className:"font-medium",children:s}),r&&(0,t.jsx)("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:r}),i&&(0,t.jsx)("div",{className:"mt-5",children:i})]})}])},86963,e=>{"use strict";var t=e.i(18050),a=e.i(31278);e.s(["PageLoading",0,function({label:e}){return(0,t.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),e&&(0,t.jsx)("p",{className:"text-sm",children:e})]})}])},35209,e=>{"use strict";var t=e.i(71645),a=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t:s}=(0,a.useLanguage)(),r=[s.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=r},[r])}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],71689)},13572,e=>{"use strict";var t=e.i(18050),a=e.i(71645),r=e.i(18566),n=e.i(98469),s=e.i(78197),i=e.i(12130),o=e.i(41931),l=e.i(11110),d=e.i(35209),c=e.i(28928),g=e.i(68553),u=e.i(83086),m=e.i(93842),f=e.i(56738),p=e.i(4843),y=e.i(1276),x=e.i(17448),A=e.i(30634),h=e.i(47819),w=e.i(64002),b=e.i(94114);e.s(["default",0,function(){let e=(0,r.useParams)(),j=(0,r.useRouter)(),v=e.id,[S,L]=(0,a.useState)("upload"),[C,k]=(0,a.useState)("idle"),[z,I]=(0,a.useState)(null),[N,T]=(0,a.useState)(null),{t:P,language:E}=(0,l.useLanguage)(),[D,F]=(0,a.useState)(null);(0,d.usePageTitle)(P.notebooks.title,D?.name,P.pageTitle.addError);let[R,U]=(0,a.useState)(null),[B,O]=(0,a.useState)("image"),[$,H]=(0,a.useState)(null),[_,M]=(0,a.useState)(!1),[K,Q]=(0,a.useState)(!1),[Z,q]=(0,a.useState)(null),[J,V]=(0,a.useState)(null),G=R?.timeouts?.analyze||18e4,W=G+1e4;(0,a.useEffect)(()=>()=>{$&&URL.revokeObjectURL($)},[$]),(0,a.useEffect)(()=>{o.apiClient.get(`/api/notebooks/${v}`).then(e=>F(e)).catch(e=>{console.error("Failed to fetch notebook:",e),j.push("/notebooks")}),(0,w.fetchConfirmBeforeImport)().then(Q),o.apiClient.get("/api/settings").then(e=>{U(e),e.timeouts?.analyze&&y.frontendLogger.info("[Config]","Loaded timeout settings",{analyze:e.timeouts.analyze})}).catch(e=>console.error("Failed to fetch config:",e))},[v,j]),(0,a.useEffect)(()=>{if("idle"===C)return;let e=setTimeout(()=>{y.frontendLogger.warn("[Progress]","处理超时,关闭进度提示",{analysisStep:C,safetyTimeout:W}),k("idle")},W);return()=>clearTimeout(e)},[C,W]);let X=async e=>{M(!1),Y(new File([e],"cropped-image.jpg",{type:"image/jpeg"}))},Y=async e=>{let t=Date.now();y.frontendLogger.info("[AddAnalyze]","Starting analysis flow",{timeoutSettings:{apiTimeout:G,safetyTimeout:W}});try{y.frontendLogger.info("[AddAnalyze]","Step 1/5: Compressing image"),k("compressing");let a=await (0,c.processImageFile)(e);T(a),y.frontendLogger.info("[AddAnalyze]","Image compressed successfully",{size:a.length}),y.frontendLogger.info("[AddAnalyze]","Step 2/5: Calling API endpoint /api/analyze"),k("analyzing");let r=Date.now(),n=await o.apiClient.post("/api/analyze",{imageBase64:a,language:E,subjectId:v},{timeout:G}),s=Date.now()-r;if(y.frontendLogger.info("[AddAnalyze]","API response received, validating data",{apiDuration:s}),!n||"object"!=typeof n)throw y.frontendLogger.error("[AddAnalyze]","Validation failed - invalid response data",{data:n}),Error("Invalid API response: data is null or not an object");if(y.frontendLogger.info("[AddAnalyze]","Response data validated successfully"),y.frontendLogger.info("[AddAnalyze]","开始处理 AI 返回结果"),k("processing"),!K){k("saving");let e=await (0,w.saveParsedQuestion)(n,{subjectId:v,imageUrl:a});q(e),T(null),y.frontendLogger.info("[AddAnalyze]","Imported without review",{id:e.id});return}y.frontendLogger.info("[AddAnalyze]","Step 4/5: Setting parsed data into state");let i=JSON.stringify(n).length,l=Date.now();I(n);let d=Date.now()-l;y.frontendLogger.info("[AddAnalyze]","Parsed data set successfully",{dataSize:i,setDataDuration:d}),y.frontendLogger.info("[AddAnalyze]","Step 5/5: Switching to review page");let g=Date.now();L("review");let u=Date.now()-g;y.frontendLogger.info("[AddAnalyze]","Step switched to review",{setStepDuration:u});let m=Date.now()-t;y.frontendLogger.info("[AddAnalyze]","Analysis completed successfully",{totalDuration:m})}catch(a){let e=Date.now()-t;y.frontendLogger.error("[AddError]","Analysis failed",{errorDuration:e,error:a.message||String(a)});try{let e=P.common.messages?.analysisFailed||"Analysis failed",t=a?.data?.message;if(t&&"string"==typeof t)if(P.errors&&"object"==typeof P.errors&&t in P.errors){let a=P.errors[t];"string"==typeof a&&(e=a,y.frontendLogger.info("[AddError]",`Matched error type: ${t}`,{errorMessage:e}))}else e=t,y.frontendLogger.info("[AddError]","Using backend error message",{errorMessage:e});else a?.message&&(a.message.includes("fetch")||a.message.includes("network")?e=P.errors?.AI_CONNECTION_FAILED||"网络连接失败":"string"==typeof a.data&&(y.frontendLogger.info("[AddError]","Raw error data",{errorDataPreview:a.data.substring(0,100)}),e+=` (${a.status||"Error"})`));b.toast.error(e)}catch(e){y.frontendLogger.error("[AddError]","Failed to process error message",{innerError:String(e)}),b.toast.error("Analysis failed. Please try again.")}}finally{y.frontendLogger.info("[AddAnalyze]","Finally: Resetting analysis state to idle"),k("idle"),y.frontendLogger.info("[AddAnalyze]","Analysis state reset complete")}},ee=async e=>{let t=Date.now();y.frontendLogger.info("[AddTextSubmit]","Starting text-based analysis",{textLength:e.length});try{k("analyzing");let a=await o.apiClient.post("/api/reanswer",{questionText:e,language:E,subject:D?.name||void 0,subjectId:v},{timeout:G});k("processing");let r={questionText:e,answerText:a.answerText,analysis:a.analysis,knowledgePoints:a.knowledgePoints||[],wrongAnswerText:a.wrongAnswerText||"",mistakeAnalysis:a.mistakeAnalysis||"",mistakeStatus:a.mistakeStatus||"unknown",subject:a.subject||"其他",requiresImage:!1,difficultyStars:a.difficultyStars??null};if(!K){k("saving");let e=await (0,w.saveParsedQuestion)(r,{subjectId:v,imageUrl:null});q(e);return}T(null),I(r),L("review");let n=Date.now()-t;y.frontendLogger.info("[AddTextSubmit]","Text analysis completed",{totalDuration:n})}catch(a){let e=Date.now()-t;y.frontendLogger.error("[AddTextSubmit]","Analysis failed",{errorDuration:e,error:a.message||String(a)});try{let e=P.common.messages?.analysisFailed||"Analysis failed",t=a?.data?.message;if(t&&"string"==typeof t)if(P.errors&&"object"==typeof P.errors&&t in P.errors){let a=P.errors[t];"string"==typeof a&&(e=a)}else e=t;b.toast.error(e)}catch{b.toast.error("Analysis failed. Please try again.")}}finally{k("idle")}},et=async e=>{try{let t=await o.apiClient.post("/api/error-items",{...e,originalImageUrl:N||"",subjectId:v});t.duplicate&&y.frontendLogger.info("[AddSave]","Duplicate submission detected, using existing record"),b.toast.success(t.duplicate?P.importFlow.duplicate:P.common.messages.saveSuccess),j.push(t.duplicate?`/error-items/${t.id}`:`/notebooks/${v}`)}catch(e){y.frontendLogger.error("[AddSave]","Save failed",{error:e instanceof Error?e.message:String(e)}),b.toast.error(P.common.messages?.saveFailed||"Save failed")}};return D?(0,t.jsxs)("main",{className:"min-h-screen",children:[(0,t.jsx)(f.ProgressFeedback,{status:C}),(0,t.jsxs)("div",{className:`mx-auto space-y-6 px-4 py-6 md:px-8 md:py-8 ${"review"===S?"max-w-6xl":"max-w-4xl"}`,children:[(0,t.jsx)(m.PageHeader,{backHref:`/notebooks/${v}`,title:P.app.addError,description:D?.name}),"upload"===S&&(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(p.SegmentedControl,{options:[{value:"image",icon:g.Camera,label:P.app?.uploadImage||"拍照上传"},{value:"text",icon:u.Sparkles,label:P.app?.manualInput||"手动输入"}],value:B,onChange:O}),Z&&(0,t.jsx)(A.ImportResultBanner,{imported:Z,onDismiss:()=>q(null)}),J?(0,t.jsx)(h.BatchImportPanel,{blobs:J,subjectId:v,timeout:G,onClose:()=>V(null)}):"image"===B?(0,t.jsx)(n.UploadZone,{onImageSelect:e=>{q(null),H(URL.createObjectURL(e)),M(!0)},isAnalyzing:"idle"!==C}):(0,t.jsx)(x.TextInputZone,{onSubmit:ee,isAnalyzing:"idle"!==C,defaultNotebookName:D?.name})]}),"review"===S&&z&&(0,t.jsx)(s.CorrectionEditor,{initialData:z,imagePreview:N,onSave:et,onCancel:()=>L("upload"),initialSubjectId:v,aiTimeout:G})]}),(0,t.jsx)(i.ImageCropper,{imageSrc:$||"",open:_,onClose:()=>M(!1),onCropComplete:X,onMultiCropComplete:e=>{M(!1),q(null),V(e)}})]}):(0,t.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,t.jsx)("p",{className:"text-muted-foreground",children:P.common.loading})})}])},90546,e=>{"use strict";var t=e.i(18050),a=e.i(18566),r=e.i(19455),n=e.i(71689);e.s(["BackButton",0,function({fallbackUrl:e,className:s}){let i=(0,a.useRouter)();return(0,t.jsx)(r.Button,{variant:"ghost",size:"icon",onClick:()=>{i.push(e)},className:s,children:(0,t.jsx)(n.ArrowLeft,{className:"h-5 w-5"})})}])},15288,e=>{"use strict";var t=e.i(18050),a=e.i(75157);e.s(["Card",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...r})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",e),...r})}])},93842,e=>{"use strict";var t=e.i(18050),a=e.i(90546),r=e.i(75157);e.s(["PageHeader",0,function({title:e,description:n,backHref:s,actions:i,titleAddon:o,className:l}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex items-start gap-3",l),children:[s&&(0,t.jsx)(a.BackButton,{fallbackUrl:s,className:"-ml-2 shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("h1",{className:"truncate text-2xl font-bold tracking-tight sm:text-3xl",children:e}),o]}),n&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground sm:text-base",children:n})]}),i&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:i})]})}])},35209,e=>{"use strict";var t=e.i(71645),a=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t:r}=(0,a.useLanguage)(),n=[r.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=n},[n])}])}]);
@@ -0,0 +1,33 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],71689)},3281,e=>{"use strict";let t=(0,e.i(75254).default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);e.s(["Printer",0,t],3281)},80685,e=>{"use strict";var t=e.i(18050),a=e.i(71645),n=e.i(18566),s=e.i(40160),r=e.i(3281),i=e.i(19455),l=e.i(57428),o=e.i(90546),c=e.i(11445),d=e.i(49704),m=e.i(11110),u=e.i(35209),x=e.i(41931);let p=`
2
+ .exam-sheet { max-width: 210mm; margin: 0 auto; padding: 16px; color: #111; background: #fff; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; line-height: 1.6; }
3
+ .exam-sheet h1 { text-align: center; font-size: 22px; margin: 0 0 8px; }
4
+ .exam-sheet .exam-meta { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 32px; font-size: 14px; margin-bottom: 20px; }
5
+ .exam-sheet .exam-meta span { min-width: 120px; }
6
+ .exam-sheet .exam-question { break-inside: avoid; page-break-inside: avoid; padding: 12px 0; border-bottom: 1px dashed #ccc; }
7
+ .exam-sheet .exam-question-head { display: flex; justify-content: space-between; gap: 12px; font-weight: 600; }
8
+ .exam-sheet .exam-source { font-family: ui-monospace, Menlo, monospace; font-weight: 400; font-size: 12px; color: #666; white-space: nowrap; }
9
+ .exam-sheet .exam-answer-space { min-height: 120px; }
10
+ .exam-sheet .exam-answer-key { break-before: page; page-break-before: always; padding-top: 8px; }
11
+ .exam-sheet .exam-answer-key h2 { text-align: center; font-size: 18px; margin: 0 0 12px; }
12
+ .exam-sheet .exam-label { font-weight: 600; color: #444; }
13
+ .exam-sheet .markdown-content p { margin: 4px 0; }
14
+ .exam-sheet .markdown-content img { max-width: 100%; }
15
+ .exam-sheet .question-figure { margin: 8px 0; break-inside: avoid; page-break-inside: avoid; }
16
+ .exam-sheet .question-figure img { display: block; margin: 0 auto; max-width: 100%; max-height: 360px; background: #fff; }
17
+ .exam-sheet .markdown-content table { border-collapse: collapse; }
18
+ .exam-sheet .markdown-content td, .exam-sheet .markdown-content th { border: 1px solid #999; padding: 2px 6px; }
19
+ @media print { .exam-sheet { padding: 0; max-width: none; } @page { size: A4; margin: 15mm; } }
20
+ `;function h(e){return e.replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}e.s(["default",0,function(){let e=(0,n.useParams)(),{t:f,language:g}=(0,m.useLanguage)(),[b,w]=(0,a.useState)(null);(0,u.usePageTitle)(f.exam.title,b?.title,f.pageTitle.examPrint);let[y,j]=(0,a.useState)(!0),k=(0,a.useRef)(null);if((0,a.useEffect)(()=>{x.apiClient.get(`/api/exams/${e.id}`).then(w).catch(()=>w(null))},[e.id]),!b)return(0,t.jsx)("div",{className:"p-8 text-center",children:f.common.loading});let v=b.questions.filter(e=>"ready"===e.status&&e.questionText);return(0,t.jsxs)("main",{className:"min-h-screen bg-white",children:[(0,t.jsx)("style",{children:p}),(0,t.jsx)("div",{className:"print:hidden sticky top-0 z-10 border-b bg-background p-3 shadow-sm",children:(0,t.jsxs)("div",{className:"max-w-4xl mx-auto flex flex-wrap items-center gap-3",children:[(0,t.jsx)(o.BackButton,{fallbackUrl:`/exams/${b.id}`}),(0,t.jsx)("span",{className:"font-semibold",children:f.exam.printTitle}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(l.Checkbox,{checked:y,onCheckedChange:e=>j(!0===e)}),f.exam.includeAnswers]}),(0,t.jsxs)("div",{className:"flex gap-2 sm:ml-auto",children:[(0,t.jsxs)(i.Button,{variant:"outline",size:"sm",onClick:()=>{var e;if(!k.current)return;let t=function(e,t,a="zh-CN"){return`<!doctype html>
21
+ <html lang="${h(a)}">
22
+ <head>
23
+ <meta charset="utf-8">
24
+ <meta name="viewport" content="width=device-width, initial-scale=1">
25
+ <title>${h(e)}</title>
26
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css">
27
+ <style>body { margin: 0; background: #fff; }${p}</style>
28
+ </head>
29
+ <body>
30
+ ${t}
31
+ </body>
32
+ </html>
33
+ `}(b.title,k.current.outerHTML,"en"===g?"en":"zh-CN"),a=URL.createObjectURL(new Blob([t],{type:"text/html;charset=utf-8"})),n=document.createElement("a");n.href=a,e=b.title,n.download=`${e.replace(/[\\/:*?"<>|\s]+/g,"_").slice(0,80)||"exam"}.html`,n.click(),URL.revokeObjectURL(a)},children:[(0,t.jsx)(s.Download,{className:"mr-2 h-4 w-4"}),f.exam.downloadHtml]}),(0,t.jsxs)(i.Button,{size:"sm",onClick:()=>window.print(),children:[(0,t.jsx)(r.Printer,{className:"mr-2 h-4 w-4"}),f.exam.printNow]})]}),v.length<b.questions.length&&(0,t.jsx)("p",{className:"w-full text-xs text-muted-foreground",children:f.exam.notReadyHint})]})}),(0,t.jsxs)("div",{ref:k,className:"exam-sheet",children:[(0,t.jsx)("h1",{children:b.title}),(0,t.jsxs)("div",{className:"exam-meta",children:[(0,t.jsxs)("span",{children:[f.exam.nameLine,":________"]}),(0,t.jsxs)("span",{children:[f.exam.dateLine,":________"]}),(0,t.jsxs)("span",{children:[f.exam.scoreLine,":________"]})]}),v.map((e,a)=>(0,t.jsxs)("section",{className:"exam-question",children:[(0,t.jsxs)("div",{className:"exam-question-head",children:[(0,t.jsxs)("span",{children:[a+1,"."]}),(0,t.jsxs)("span",{className:"exam-source",children:[f.exam.sourceLabel,": ",e.sourceShortId]})]}),(0,t.jsx)(c.MarkdownRenderer,{content:e.questionText}),(0,t.jsx)(d.QuestionFigure,{svg:e.figureSvg}),(0,t.jsx)("div",{className:"exam-answer-space"})]},e.id)),y&&(0,t.jsxs)("section",{className:"exam-answer-key",children:[(0,t.jsx)("h2",{children:f.exam.answerKey}),v.map((e,a)=>(0,t.jsxs)("div",{className:"exam-question",children:[(0,t.jsxs)("div",{className:"exam-question-head",children:[(0,t.jsxs)("span",{children:[a+1,"."]}),(0,t.jsxs)("span",{className:"exam-source",children:[f.exam.sourceLabel,": ",e.sourceShortId]})]}),e.answerText&&(0,t.jsxs)("div",{children:[(0,t.jsxs)("span",{className:"exam-label",children:[f.exam.answerLabel,":"]}),(0,t.jsx)(c.MarkdownRenderer,{content:e.answerText})]}),e.analysis&&(0,t.jsxs)("div",{children:[(0,t.jsxs)("span",{className:"exam-label",children:[f.exam.analysisLabel,":"]}),(0,t.jsx)(c.MarkdownRenderer,{content:e.analysis})]})]},e.id))]})]})]})}],80685)},49704,e=>{"use strict";var t=e.i(18050),a=e.i(11110),n=e.i(75157);e.s(["QuestionFigure",0,function({svg:e,className:s}){let{t:r}=(0,a.useLanguage)();return e?(0,t.jsx)("figure",{className:(0,n.cn)("question-figure my-3",s),children:(0,t.jsx)("img",{src:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`,alt:r.figure.alt,className:"mx-auto block h-auto max-w-full rounded border bg-white p-2",style:{maxHeight:360}})}):null}],49704)},90546,e=>{"use strict";var t=e.i(18050),a=e.i(18566),n=e.i(19455),s=e.i(71689);e.s(["BackButton",0,function({fallbackUrl:e,className:r}){let i=(0,a.useRouter)();return(0,t.jsx)(n.Button,{variant:"ghost",size:"icon",onClick:()=>{i.push(e)},className:r,children:(0,t.jsx)(s.ArrowLeft,{className:"h-5 w-5"})})}])},57428,e=>{"use strict";var t=e.i(18050),a=e.i(71645),n=e.i(20783),s=e.i(30030),r=e.i(81140),i=e.i(69340),l=e.i(99682),o=e.i(35804),c=e.i(96626);e.i(74080);var d=Symbol("radix.slottable");function m(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===d}var u=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,s)=>{var r,i;let l,o,c,d=(i=r=`Primitive.${s}`,(l=a.forwardRef((e,t)=>{let{children:s,...r}=e;if(a.isValidElement(s)){var i;let e,l,o=(i=s,(l=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(l=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),c=function(e,t){let a={...t};for(let n in t){let s=e[n],r=t[n];/^on[A-Z]/.test(n)?s&&r?a[n]=(...e)=>{let t=r(...e);return s(...e),t}:s&&(a[n]=s):"style"===n?a[n]={...s,...r}:"className"===n&&(a[n]=[s,r].filter(Boolean).join(" "))}return{...e,...a}}(r,s.props);return s.type!==a.Fragment&&(c.ref=t?(0,n.composeRefs)(t,o):o),a.cloneElement(s,c)}return a.Children.count(s)>1?a.Children.only(null):null})).displayName=`${i}.SlotClone`,o=l,(c=a.forwardRef((e,n)=>{let{children:s,...r}=e,i=a.Children.toArray(s),l=i.find(m);if(l){let e=l.props.children,s=i.map(t=>t!==l?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,t.jsx)(o,{...r,ref:n,children:a.isValidElement(e)?a.cloneElement(e,void 0,s):null})}return(0,t.jsx)(o,{...r,ref:n,children:s})})).displayName=`${r}.Slot`,c),u=a.forwardRef((e,a)=>{let{asChild:n,...r}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,t.jsx)(n?d:s,{...r,ref:a})});return u.displayName=`Primitive.${s}`,{...e,[s]:u}},{}),x="Checkbox",[p,h]=(0,s.createContextScope)(x),[f,g]=p(x);function b(e){let{__scopeCheckbox:n,checked:s,children:r,defaultChecked:l,disabled:o,form:c,name:d,onCheckedChange:m,required:u,value:p="on",internal_do_not_use_render:h}=e,[g,b]=(0,i.useControllableState)({prop:s,defaultProp:l??!1,onChange:m,caller:x}),[w,y]=a.useState(null),[j,k]=a.useState(null),v=a.useRef(!1),N=!w||!!c||!!w.closest("form"),C={checked:g,disabled:o,setChecked:b,control:w,setControl:y,name:d,form:c,value:p,hasConsumerStoppedPropagationRef:v,required:u,defaultChecked:!_(l)&&l,isFormControl:N,bubbleInput:j,setBubbleInput:k};return(0,t.jsx)(f,{scope:n,...C,children:"function"==typeof h?h(C):r})}var w="CheckboxTrigger",y=a.forwardRef(({__scopeCheckbox:e,onKeyDown:s,onClick:i,...l},o)=>{let{control:c,value:d,disabled:m,checked:x,required:p,setControl:h,setChecked:f,hasConsumerStoppedPropagationRef:b,isFormControl:y,bubbleInput:j}=g(w,e),k=(0,n.useComposedRefs)(o,h),v=a.useRef(x);return a.useEffect(()=>{let e=c?.form;if(e){let t=()=>f(v.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[c,f]),(0,t.jsx)(u.button,{type:"button",role:"checkbox","aria-checked":_(x)?"mixed":x,"aria-required":p,"data-state":R(x),"data-disabled":m?"":void 0,disabled:m,value:d,...l,ref:k,onKeyDown:(0,r.composeEventHandlers)(s,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,r.composeEventHandlers)(i,e=>{f(e=>!!_(e)||!e),j&&y&&(b.current=e.isPropagationStopped(),b.current||e.stopPropagation())})})});y.displayName=w;var j=a.forwardRef((e,a)=>{let{__scopeCheckbox:n,name:s,checked:r,defaultChecked:i,required:l,disabled:o,value:c,onCheckedChange:d,form:m,...u}=e;return(0,t.jsx)(b,{__scopeCheckbox:n,checked:r,defaultChecked:i,disabled:o,required:l,onCheckedChange:d,name:s,form:m,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(y,{...u,ref:a,__scopeCheckbox:n}),e&&(0,t.jsx)(C,{__scopeCheckbox:n})]})})});j.displayName=x;var k="CheckboxIndicator",v=a.forwardRef((e,a)=>{let{__scopeCheckbox:n,forceMount:s,...r}=e,i=g(k,n);return(0,t.jsx)(c.Presence,{present:s||_(i.checked)||!0===i.checked,children:(0,t.jsx)(u.span,{"data-state":R(i.checked),"data-disabled":i.disabled?"":void 0,...r,ref:a,style:{pointerEvents:"none",...e.style}})})});v.displayName=k;var N="CheckboxBubbleInput",C=a.forwardRef(({__scopeCheckbox:e,...s},r)=>{let{control:i,hasConsumerStoppedPropagationRef:c,checked:d,defaultChecked:m,required:x,disabled:p,name:h,value:f,form:b,bubbleInput:w,setBubbleInput:y}=g(N,e),j=(0,n.useComposedRefs)(r,y),k=(0,l.usePrevious)(d),v=(0,o.useSize)(i);a.useEffect(()=>{if(!w)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!c.current;if(k!==d&&e){let a=new Event("click",{bubbles:t});w.indeterminate=_(d),e.call(w,!_(d)&&d),w.dispatchEvent(a)}},[w,k,d,c]);let C=a.useRef(!_(d)&&d);return(0,t.jsx)(u.input,{type:"checkbox","aria-hidden":!0,defaultChecked:m??C.current,required:x,disabled:p,name:h,value:f,form:b,...s,tabIndex:-1,ref:j,style:{...s.style,...v,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function _(e){return"indeterminate"===e}function R(e){return _(e)?"indeterminate":e?"checked":"unchecked"}C.displayName=N;var E=e.i(43531),L=e.i(75157);let P=a.forwardRef(({className:e,...a},n)=>(0,t.jsx)(j,{ref:n,className:(0,L.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...a,children:(0,t.jsx)(v,{className:(0,L.cn)("flex items-center justify-center text-current"),children:(0,t.jsx)(E.Check,{className:"h-4 w-4"})})}));P.displayName=j.displayName,e.s(["Checkbox",0,P],57428)},35209,e=>{"use strict";var t=e.i(71645),a=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t:n}=(0,a.useLanguage)(),s=[n.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=s},[s])}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],71689)},3281,e=>{"use strict";let t=(0,e.i(75254).default)("printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);e.s(["Printer",0,t],3281)},56909,e=>{"use strict";let t=(0,e.i(75254).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],56909)},83086,e=>{"use strict";let t=(0,e.i(75254).default)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]]);e.s(["Sparkles",0,t],83086)},8821,e=>{"use strict";let t=(0,e.i(75254).default)("wand-sparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);e.s(["default",0,t])},65602,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(22016),r=e.i(18566),i=e.i(15519),n=e.i(30691);let l=(0,e.i(75254).default)("clipboard-check",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"m9 14 2 2 4-4",key:"df797q"}]]);var d=e.i(31278),c=e.i(3281),o=e.i(67240),m=e.i(56909),u=e.i(27612),x=e.i(19455),h=e.i(93479),p=e.i(90546),g=e.i(86963),f=e.i(64659),y=e.i(55900),j=e.i(37727),b=e.i(87486),v=e.i(15288),N=e.i(11445),w=e.i(91686),k=e.i(93733),C=e.i(49704),S=e.i(16715),T=e.i(68983),R=e.i(11110),M=e.i(41931),q=e.i(1276),L=e.i(94114);function A({paperId:e,question:s,onDone:r}){let{t:i,language:n}=(0,R.useLanguage)(),[l,c]=(0,a.useState)(null),o=0===s.attempts.length&&!!s.errorItemId&&"pending"!==s.status,m="ready"===s.status&&!!s.questionText?.trim();if(!o&&!m)return null;let u=async t=>{let a="question"===t?i.exam.regenerateQuestionConfirm:i.exam.regenerateAnswerConfirm;if(await (0,L.confirmDialog)(a)){c(t);try{let a=await M.apiClient.post(`/api/exams/${e}/questions/${s.id}/regenerate`,{mode:t,language:n},{timeout:6e5});r(a)}catch(s){let e=s?.data?.message||"",a=i.errors[e];q.frontendLogger.error("[ExamRegenerate]","Failed to regenerate exam question",{mode:t,code:e}),L.toast.error("HAS_RESULTS"===e?i.exam.regenerateHasResults:"string"==typeof a?a:i.exam.regenerateFailed)}finally{c(null)}}};return(0,t.jsxs)("div",{className:"flex flex-wrap gap-1",children:[o&&(0,t.jsxs)(x.Button,{variant:"ghost",size:"sm",onClick:()=>u("question"),disabled:null!==l,children:["question"===l?(0,t.jsx)(d.Loader2,{className:"mr-1 h-4 w-4 animate-spin"}):(0,t.jsx)(S.RefreshCw,{className:"mr-1 h-4 w-4"}),"question"===l?i.exam.regenerating:i.exam.regenerateQuestion]}),m&&(0,t.jsxs)(x.Button,{variant:"ghost",size:"sm",onClick:()=>u("answer"),disabled:null!==l,children:["answer"===l?(0,t.jsx)(d.Loader2,{className:"mr-1 h-4 w-4 animate-spin"}):(0,t.jsx)(T.WandSparkles,{className:"mr-1 h-4 w-4"}),"answer"===l?i.exam.regenerating:i.exam.regenerateAnswer]})]})}function D({paperId:e,question:r,editingResult:l,onResultChange:c,onDeleteAttempt:o,onRegenerated:m}){let{t:u}=(0,R.useLanguage)(),{timeZone:x}=(0,i.useTimeZone)(),[h,p]=(0,a.useState)(!1),g=void 0!==l,S=(()=>{if(!r.error)return"";if("SOURCE_DELETED"===r.error)return u.exam.sourceDeleted;let e=r.error.split(":")[0].trim(),t=u.errors[e];return"string"==typeof t?t:r.error})();return(0,t.jsx)(v.Card,{children:(0,t.jsxs)(v.CardContent,{className:"space-y-3 pt-4",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,t.jsxs)("span",{className:"font-semibold",children:[r.order,"."]}),r.errorItemId?(0,t.jsxs)(s.default,{href:`/error-items/${r.errorItemId}`,className:"font-mono text-xs text-primary hover:underline",children:[u.exam.source," ",r.sourceShortId]}):(0,t.jsxs)("span",{className:"font-mono text-xs text-muted-foreground",children:[r.sourceShortId," · ",u.exam.sourceDeleted]}),r.notebookName&&(0,t.jsx)(b.Badge,{variant:"secondary",children:r.notebookName})]}),r.attempts.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:r.attempts.map((e,a)=>(0,t.jsxs)(b.Badge,{variant:"outline",className:`gap-1 font-normal ${w.RESULT_BADGE_CLASS[e.result]||""}`,children:[(0,t.jsx)("span",{children:u.exam.attemptLabel.replace("{n}",String(a+1))}),(0,t.jsx)("span",{className:"tabular-nums",children:(0,n.formatDateTime)(e.createdAt,"MM-dd",x)}),(0,t.jsx)("span",{className:"font-semibold",children:u.mastery.results[e.result]}),g&&o&&(0,t.jsx)("button",{type:"button","aria-label":u.mastery.deleteRecord,className:"-mr-1 rounded hover:bg-black/10",onClick:()=>o(e.id),children:(0,t.jsx)(j.X,{className:"h-3 w-3"})})]},e.id))}),"pending"===r.status&&(0,t.jsxs)("p",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(d.Loader2,{className:"h-4 w-4 animate-spin"}),u.exam.questionPending]}),"failed"===r.status&&(0,t.jsxs)("p",{className:"text-sm text-destructive",children:[u.exam.questionFailed,S?`:${S}`:""]}),"ready"===r.status&&r.questionText&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.MarkdownRenderer,{content:r.questionText}),(0,t.jsx)(C.QuestionFigure,{svg:r.figureSvg}),(0,t.jsxs)("button",{type:"button",className:"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",onClick:()=>p(!h),children:[h?(0,t.jsx)(y.ChevronUp,{className:"h-3 w-3"}):(0,t.jsx)(f.ChevronDown,{className:"h-3 w-3"}),u.exam.showAnswer]}),h&&(0,t.jsxs)("div",{className:"space-y-2 rounded-md bg-muted/40 p-3",children:[r.answerText&&(0,t.jsx)(N.MarkdownRenderer,{content:r.answerText,className:"font-semibold"}),r.analysis&&(0,t.jsx)(N.MarkdownRenderer,{content:r.analysis})]})]}),!g&&m&&(0,t.jsx)(A,{paperId:e,question:r,onDone:m}),g&&"ready"===r.status&&r.errorItemId&&c&&(0,t.jsx)(k.PracticeResultPicker,{value:l,onChange:c,size:"sm"})]})})}var B=e.i(63661),I=e.i(35209);e.s(["default",0,function(){let{timeZone:e}=(0,i.useTimeZone)(),f=(0,r.useParams)(),y=(0,r.useRouter)(),{t:j,language:b}=(0,R.useLanguage)(),v=f.id,[N,w]=(0,a.useState)(null);(0,I.usePageTitle)(j.exam.title,N?.title);let[k,C]=(0,a.useState)(!1),[S,T]=(0,a.useState)(null),[q,A]=(0,a.useState)((0,n.formatDateTime)(new Date,"yyyy-MM-dd",e)),[$,E]=(0,a.useState)(!1),[H,P]=(0,a.useState)(null),z=(0,a.useCallback)(async()=>{try{w(await M.apiClient.get(`/api/exams/${v}`))}catch{C(!0)}},[v]);if((0,a.useEffect)(()=>{z()},[z]),(0,a.useEffect)(()=>{if(N?.status!=="generating")return;let e=setTimeout(z,3e3);return()=>clearTimeout(e)},[N,z]),k)return(0,t.jsx)("div",{className:"p-8 text-center",children:j.exam.notFound});if(!N)return(0,t.jsx)(g.PageLoading,{label:j.common.loading});let F=N.questions.filter(e=>"ready"===e.status).length,U=N.questions.some(e=>"failed"===e.status),_=N.questions.filter(e=>"ready"===e.status&&e.errorItemId),O=S?_.filter(e=>S[e.id]).length:0,Q=async()=>{if(S&&0!==O){E(!0),P(null);try{await M.apiClient.post(`/api/exams/${N.id}/results`,{takenAt:(0,n.answeredDateToISOString)(q,e),results:_.filter(e=>S[e.id]).map(e=>({questionId:e.id,result:S[e.id]}))}),T(null),P(j.exam.resultsSaved),await z()}catch{P(j.exam.resultsSaveFailed)}finally{E(!1)}}},V=async e=>{if(await (0,L.confirmDialog)(j.mastery.deleteRecordConfirm,{destructive:!0}))try{await M.apiClient.delete(`/api/practice/record/${e}`),await z()}catch{P(j.mastery.deleteRecordFailed)}},Z=async()=>{await M.apiClient.post(`/api/exams/${N.id}/retry`,{language:b}),await z()},G=async()=>{await (0,L.confirmDialog)(j.exam.deleteConfirm,{destructive:!0})&&(await M.apiClient.delete(`/api/exams/${N.id}`),y.push("/exams"))};return(0,t.jsx)("main",{className:"mx-auto min-h-screen max-w-6xl px-4 py-6 md:px-8 md:py-8",children:(0,t.jsxs)("div",{className:"space-y-6 pb-24",children:[(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)(p.BackButton,{fallbackUrl:"/exams",className:"-ml-2 shrink-0"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0 space-y-2",children:[(0,t.jsx)("h1",{className:"text-xl sm:text-2xl font-bold tracking-tight break-words",children:N.title}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm text-muted-foreground",children:[(0,t.jsx)(B.ExamStatusBadge,{status:N.status}),(0,t.jsx)("span",{children:j.exam.progress.replace("{ready}",String(F)).replace("{total}",String(N.questions.length))}),(0,t.jsx)("span",{children:(0,n.formatDateTime)(N.createdAt,"yyyy-MM-dd HH:mm",e)})]})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,t.jsx)(s.default,{href:`/exams/${N.id}/print`,children:(0,t.jsxs)(x.Button,{variant:"outline",size:"sm",disabled:0===F,children:[(0,t.jsx)(c.Printer,{className:"mr-2 h-4 w-4"}),j.exam.print]})}),!S&&_.length>0&&(0,t.jsxs)(x.Button,{size:"sm",onClick:()=>{P(null),T({}),A((0,n.formatDateTime)(new Date,"yyyy-MM-dd",e))},children:[(0,t.jsx)(l,{className:"mr-2 h-4 w-4"}),j.exam.recordResults]}),U&&"generating"!==N.status&&(0,t.jsxs)(x.Button,{variant:"outline",size:"sm",onClick:Z,children:[(0,t.jsx)(o.RotateCcw,{className:"mr-2 h-4 w-4"}),j.exam.retryFailed]}),(0,t.jsxs)(x.Button,{variant:"ghost",size:"sm",onClick:G,className:"text-red-600 hover:text-red-700 hover:bg-red-50 sm:ml-auto",children:[(0,t.jsx)(u.Trash2,{className:"mr-2 h-4 w-4"}),j.exam.delete]})]}),N.questions.length<N.requestedCount&&(0,t.jsx)("p",{className:"rounded-md border border-amber-200 bg-amber-50 p-3 text-sm text-amber-800",children:j.exam.fewerThanRequested.replaceAll("{actual}",String(N.questions.length))}),H&&(0,t.jsx)("p",{className:"rounded-md border p-3 text-sm",children:H}),S&&(0,t.jsxs)("div",{className:"space-y-2 rounded-md border bg-muted/30 p-3",children:[(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,t.jsx)("label",{htmlFor:"exam-taken-at",className:"text-sm font-medium",children:j.exam.takenAt}),(0,t.jsx)(h.Input,{id:"exam-taken-at",type:"date",value:q,onChange:e=>A(e.target.value),className:"sm:w-48"})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:j.exam.recordHint})]}),(0,t.jsx)("div",{className:"space-y-3",children:N.questions.map(e=>(0,t.jsx)(D,{paperId:N.id,question:e,editingResult:S?S[e.id]??null:void 0,onResultChange:t=>T(a=>a?{...a,[e.id]:t}:a),onDeleteAttempt:V,onRegenerated:z},e.id))}),S&&(0,t.jsx)("div",{className:"fixed inset-x-0 bottom-16 z-30 border-t bg-background/95 p-3 backdrop-blur md:bottom-0",children:(0,t.jsxs)("div",{className:"max-w-4xl mx-auto flex items-center justify-end gap-2",children:[0===O&&(0,t.jsx)("span",{className:"mr-auto text-xs text-muted-foreground",children:j.exam.noResultSelected}),(0,t.jsx)(x.Button,{variant:"outline",onClick:()=>T(null),disabled:$,children:j.exam.cancel}),(0,t.jsxs)(x.Button,{onClick:Q,disabled:$||!q||0===O,children:[$?(0,t.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,t.jsx)(m.Save,{className:"mr-2 h-4 w-4"}),j.exam.saveResults]})]})})]})})}],65602)},63661,e=>{"use strict";var t=e.i(18050),a=e.i(87486),s=e.i(11110);let r={generating:"bg-blue-100 text-blue-700 border-blue-200",ready:"bg-green-100 text-green-700 border-green-200",partial:"bg-amber-100 text-amber-700 border-amber-200",failed:"bg-red-100 text-red-700 border-red-200"};e.s(["ExamStatusBadge",0,function({status:e}){let{t:i}=(0,s.useLanguage)();return(0,t.jsx)(a.Badge,{variant:"outline",className:r[e],children:i.exam.status[e]})}])},91686,68983,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(22016),r=e.i(15519),i=e.i(30691),n=e.i(64659),l=e.i(55900),d=e.i(31278),c=e.i(7233),o=e.i(83086),m=e.i(27612),u=e.i(87486),x=e.i(19455),h=e.i(15288),p=e.i(11445),g=e.i(56909),f=e.i(93479),y=e.i(93733),j=e.i(11110),b=e.i(41931);function v({errorItemId:e,onSaved:s,onCancel:n}){let{t:l}=(0,j.useLanguage)(),{timeZone:c}=(0,r.useTimeZone)(),o=(0,i.formatDateTime)(new Date,"yyyy-MM-dd",c),[m,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(o),[N,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(null),S=async()=>{if(m&&h){w(!0),C(null);try{await b.apiClient.post("/api/practice/record",{errorItemId:e,result:m,source:"manual",takenAt:(0,i.answeredDateToISOString)(h,c)}),s()}catch{C(l.mastery.resultSaveFailed)}finally{w(!1)}}};return(0,t.jsxs)("div",{className:"space-y-3 rounded-md border bg-muted/30 p-3",children:[(0,t.jsx)(y.PracticeResultPicker,{value:m,onChange:u,disabled:N}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2",children:[(0,t.jsx)("label",{htmlFor:`practice-date-${e}`,className:"text-sm font-medium",children:l.mastery.recordDate}),(0,t.jsx)(f.Input,{id:`practice-date-${e}`,type:"date",value:h,max:o,onChange:e=>p(e.target.value),className:"sm:w-48"}),(0,t.jsxs)("div",{className:"flex gap-2 sm:ml-auto",children:[(0,t.jsx)(x.Button,{variant:"outline",size:"sm",onClick:n,disabled:N,className:"flex-1 sm:flex-none",children:l.exam.cancel}),(0,t.jsxs)(x.Button,{size:"sm",onClick:S,disabled:N||!m||!h,className:"flex-1 sm:flex-none",children:[N?(0,t.jsx)(d.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,t.jsx)(g.Save,{className:"mr-2 h-4 w-4"}),l.mastery.saveResult]})]})]}),k&&(0,t.jsx)("p",{className:"text-sm text-destructive",children:k})]})}var N=e.i(49704),w=e.i(94114);let k={correct:"bg-green-100 text-green-700 border-green-200",wrong:"bg-red-100 text-red-700 border-red-200",not_attempted:"bg-amber-100 text-amber-700 border-amber-200"};e.s(["MasteryPanel",0,function({errorItemId:e,onMasteryLevelChange:g}){let{timeZone:f}=(0,r.useTimeZone)(),{t:y}=(0,j.useLanguage)(),[C,S]=(0,a.useState)(null),[T,R]=(0,a.useState)(null),[M,q]=(0,a.useState)(0),[L,A]=(0,a.useState)(!1),D=(0,a.useCallback)(()=>{b.apiClient.get(`/api/error-items/${e}/practice-records`).then(e=>{S(e),g?.(e.masteryLevel)}).catch(()=>void 0)},[e,g]);(0,a.useEffect)(D,[D]);let B=()=>{q(0),D()},I=async e=>{if(await (0,w.confirmDialog)(y.mastery.deleteRecordConfirm,{destructive:!0}))try{await b.apiClient.delete(`/api/practice/record/${e}`),B()}catch{w.toast.error(y.mastery.deleteRecordFailed)}},$=C?.records[0],E=!!$&&(!C?.masteryEvaluatedAt||new Date($.createdAt)>new Date(C.masteryEvaluatedAt));if((0,a.useEffect)(()=>{if(!E||M>=20)return;let e=setTimeout(()=>{q(e=>e+1),D()},4e3);return()=>clearTimeout(e)},[E,M,D]),!C)return null;let H=C.masteryProbability,P=null===H?null:Math.round(100*H),z=null===P?"":P>=80?"bg-green-500":P>=50?"bg-amber-500":"bg-red-500",F=y.practice.difficulty;return(0,t.jsxs)(h.Card,{children:[(0,t.jsx)(h.CardHeader,{children:(0,t.jsxs)(h.CardTitle,{className:"flex items-center gap-2 text-base",children:[(0,t.jsx)(o.Sparkles,{className:"h-4 w-4 text-primary"}),y.mastery.probability]})}),(0,t.jsxs)(h.CardContent,{className:"space-y-4",children:[null===P?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:E?y.mastery.pending:y.mastery.notEvaluated}):(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,t.jsxs)("span",{className:"text-3xl font-bold",children:[P,"%"]}),(0,t.jsxs)("span",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[E&&(0,t.jsx)(d.Loader2,{className:"h-3 w-3 animate-spin"}),(0,t.jsx)(u.Badge,{variant:"outline",children:"ai"===C.masterySource?y.mastery.aiEvaluated:y.mastery.estimated})]})]}),(0,t.jsx)("div",{className:"h-2 w-full rounded-full bg-muted overflow-hidden",children:(0,t.jsx)("div",{className:`h-full ${z} transition-all`,style:{width:`${P}%`}})}),C.masteryReason&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:C.masteryReason}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:y.mastery.thresholdHint})]}),(0,t.jsxs)("div",{className:"space-y-2 border-t pt-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("h4",{className:"text-sm font-semibold",children:y.mastery.history}),!L&&(0,t.jsxs)(x.Button,{variant:"outline",size:"sm",onClick:()=>A(!0),children:[(0,t.jsx)(c.Plus,{className:"mr-1 h-4 w-4"}),y.mastery.addRecord]})]}),L&&(0,t.jsx)(v,{errorItemId:e,onCancel:()=>A(!1),onSaved:()=>{A(!1),B()}}),0===C.records.length?(0,t.jsx)("p",{className:"text-sm text-muted-foreground italic",children:y.mastery.noHistory}):(0,t.jsx)("ul",{className:"divide-y rounded-md border",children:C.records.map(e=>(0,t.jsxs)("li",{className:"p-3 text-sm space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsxs)("button",{type:"button",className:"flex min-w-0 flex-1 flex-wrap items-center gap-2 text-left",onClick:()=>R(T===e.id?null:e.id),children:[(0,t.jsx)("span",{className:"text-muted-foreground tabular-nums",children:(0,i.formatDateTime)(e.createdAt,"yyyy-MM-dd HH:mm",f)}),(0,t.jsx)(u.Badge,{variant:"outline",className:k[e.result]||"",children:y.mastery.results[e.result]||e.result}),e.difficulty&&(0,t.jsx)(u.Badge,{variant:"secondary",children:F[e.difficulty]||e.difficulty}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:e.exam?`${y.mastery.sources.exam} \xb7 ${e.exam.title}`:y.mastery.sources[e.source]||y.mastery.sources.practice}),e.questionText&&(0,t.jsx)("span",{className:"ml-auto text-muted-foreground",children:T===e.id?(0,t.jsx)(l.ChevronUp,{className:"h-4 w-4"}):(0,t.jsx)(n.ChevronDown,{className:"h-4 w-4"})})]}),(0,t.jsx)("button",{type:"button","aria-label":y.mastery.deleteRecord,title:y.mastery.deleteRecord,className:"shrink-0 rounded p-1 text-muted-foreground hover:bg-red-50 hover:text-red-600",onClick:()=>I(e.id),children:(0,t.jsx)(m.Trash2,{className:"h-4 w-4"})})]}),T===e.id&&e.questionText&&(0,t.jsxs)("div",{className:"space-y-2 rounded-md bg-muted/40 p-3",children:[(0,t.jsx)(p.MarkdownRenderer,{content:e.questionText}),(0,t.jsx)(N.QuestionFigure,{svg:e.figureSvg}),e.wrongAnswerText&&(0,t.jsxs)("div",{className:"border-t pt-2",children:[(0,t.jsx)("p",{className:"mb-1 font-medium",children:y.editor.wrongAnswerText}),(0,t.jsx)(p.MarkdownRenderer,{content:e.wrongAnswerText})]}),e.mistakeAnalysis&&(0,t.jsxs)("div",{className:"border-t pt-2",children:[(0,t.jsx)("p",{className:"mb-1 font-medium",children:y.editor.mistakeAnalysis}),(0,t.jsx)(p.MarkdownRenderer,{content:e.mistakeAnalysis})]}),e.originalImageUrl&&(0,t.jsx)("img",{src:e.originalImageUrl,alt:y.editor.wrongAnswerText,className:"max-h-96 max-w-full rounded object-contain"}),e.answerText&&(0,t.jsx)("div",{className:"border-t pt-2",children:(0,t.jsx)(p.MarkdownRenderer,{content:e.answerText,className:"font-semibold"})}),e.exam&&(0,t.jsx)(s.default,{href:`/exams/${e.exam.paperId}`,className:"text-xs text-primary hover:underline",children:e.exam.title})]})]},e.id))})]})]})]})},"RESULT_BADGE_CLASS",0,k],91686);var C=e.i(8821);e.s(["WandSparkles",()=>C.default],68983)},93733,e=>{"use strict";var t=e.i(18050),a=e.i(69638);let s=(0,e.i(75254).default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var r=e.i(73884),i=e.i(11110);let n=[{value:"correct",icon:a.CheckCircle,active:"border-green-600 bg-green-50 text-green-700"},{value:"wrong",icon:r.XCircle,active:"border-red-600 bg-red-50 text-red-700"},{value:"not_attempted",icon:s,active:"border-amber-600 bg-amber-50 text-amber-700"}];e.s(["PracticeResultPicker",0,function({value:e,onChange:a,disabled:s,size:r="md"}){let{t:l}=(0,i.useLanguage)(),d="sm"===r?"px-2 py-1 text-xs":"px-3 py-2 text-sm";return(0,t.jsx)("div",{className:"grid grid-cols-3 gap-2",role:"radiogroup",children:n.map(({value:i,icon:n,active:c})=>(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":e===i,disabled:s,onClick:()=>a(i),className:`flex items-center justify-center gap-1 rounded-md border font-medium transition-colors disabled:opacity-60 ${d} ${e===i?c:"border-input hover:bg-muted"}`,children:[(0,t.jsx)(n,{className:"sm"===r?"h-3 w-3":"h-4 w-4"}),l.mastery.results[i]]},i))})}],93733)},49704,e=>{"use strict";var t=e.i(18050),a=e.i(11110),s=e.i(75157);e.s(["QuestionFigure",0,function({svg:e,className:r}){let{t:i}=(0,a.useLanguage)();return e?(0,t.jsx)("figure",{className:(0,s.cn)("question-figure my-3",r),children:(0,t.jsx)("img",{src:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`,alt:i.figure.alt,className:"mx-auto block h-auto max-w-full rounded border bg-white p-2",style:{maxHeight:360}})}):null}],49704)},90546,e=>{"use strict";var t=e.i(18050),a=e.i(18566),s=e.i(19455),r=e.i(71689);e.s(["BackButton",0,function({fallbackUrl:e,className:i}){let n=(0,a.useRouter)();return(0,t.jsx)(s.Button,{variant:"ghost",size:"icon",onClick:()=>{n.push(e)},className:i,children:(0,t.jsx)(r.ArrowLeft,{className:"h-5 w-5"})})}])},15288,e=>{"use strict";var t=e.i(18050),a=e.i(75157);e.s(["Card",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...s})},"CardContent",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",e),...s})},"CardDescription",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",e),...s})},"CardHeader",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...s})},"CardTitle",0,function({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",e),...s})}])},86963,e=>{"use strict";var t=e.i(18050),a=e.i(31278);e.s(["PageLoading",0,function({label:e}){return(0,t.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),e&&(0,t.jsx)("p",{className:"text-sm",children:e})]})}])},35209,e=>{"use strict";var t=e.i(71645),a=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t:s}=(0,a.useLanguage)(),r=[s.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=r},[r])}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,t=>{"use strict";let e=(0,t.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);t.s(["ArrowLeft",0,e],71689)},20278,t=>{"use strict";let e=(0,t.i(75254).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);t.s(["Target",0,e],20278)},25652,t=>{"use strict";let e=(0,t.i(75254).default)("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]);t.s(["TrendingUp",0,e],25652)},90546,t=>{"use strict";var e=t.i(18050),a=t.i(18566),s=t.i(19455),r=t.i(71689);t.s(["BackButton",0,function({fallbackUrl:t,className:c}){let i=(0,a.useRouter)();return(0,e.jsx)(s.Button,{variant:"ghost",size:"icon",onClick:()=>{i.push(t)},className:c,children:(0,e.jsx)(r.ArrowLeft,{className:"h-5 w-5"})})}])},15288,t=>{"use strict";var e=t.i(18050),a=t.i(75157);t.s(["Card",0,function({className:t,...s}){return(0,e.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...s})},"CardContent",0,function({className:t,...s}){return(0,e.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",t),...s})},"CardDescription",0,function({className:t,...s}){return(0,e.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",t),...s})},"CardHeader",0,function({className:t,...s}){return(0,e.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...s})},"CardTitle",0,function({className:t,...s}){return(0,e.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",t),...s})}])},93842,t=>{"use strict";var e=t.i(18050),a=t.i(90546),s=t.i(75157);t.s(["PageHeader",0,function({title:t,description:r,backHref:c,actions:i,titleAddon:n,className:l}){return(0,e.jsxs)("div",{className:(0,s.cn)("flex items-start gap-3",l),children:[c&&(0,e.jsx)(a.BackButton,{fallbackUrl:c,className:"-ml-2 shrink-0"}),(0,e.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,e.jsxs)("div",{className:"flex items-center gap-1",children:[(0,e.jsx)("h1",{className:"truncate text-2xl font-bold tracking-tight sm:text-3xl",children:t}),n]}),r&&(0,e.jsx)("p",{className:"text-sm text-muted-foreground sm:text-base",children:r})]}),i&&(0,e.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:i})]})}])},35209,t=>{"use strict";var e=t.i(71645),a=t.i(11110);t.s(["usePageTitle",0,function(...t){let{t:s}=(0,a.useLanguage)(),r=[s.pageTitle.base,...t.map(t=>"string"==typeof t?t.trim():"").filter(t=>t.length>0)].join("-");(0,e.useEffect)(()=>{document.title=r},[r])}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let s=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,s],71689)},63209,e=>{"use strict";let s=(0,e.i(75254).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,s],63209)},3116,e=>{"use strict";let s=(0,e.i(75254).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",0,s],3116)},41966,52008,e=>{"use strict";var s=e.i(75254);let a=(0,s.default)("pen-tool",[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z",key:"nt11vn"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18",key:"15qc1e"}],["path",{d:"m2.3 2.3 7.286 7.286",key:"1wuzzi"}],["circle",{cx:"11",cy:"11",r:"2",key:"xmgehs"}]]);e.s(["PenTool",0,a],41966);let t=(0,s.default)("layers",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]);e.s(["Layers",0,t],52008)},45514,e=>{"use strict";var s=e.i(18050),a=e.i(71645),t=e.i(17255),r=e.i(18566),d=e.i(11110),i=e.i(35209),l=e.i(15519),n=e.i(30691),c=e.i(41931),o=e.i(31278),m=e.i(71689),x=e.i(84614),u=e.i(10980),h=e.i(41966),j=e.i(52008),b=e.i(75254);let p=(0,b.default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),g=(0,b.default)("tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);var y=e.i(69638),f=e.i(3116),N=e.i(63209),v=e.i(86536),C=e.i(19455),w=e.i(15288),k=e.i(87486);e.s(["default",0,function(){let{timeZone:e}=(0,l.useTimeZone)(),{data:b,status:T}=(0,t.useSession)(),D=(0,r.useRouter)(),L=(0,r.useParams)(),{t:M}=(0,d.useLanguage)(),[A,B]=(0,a.useState)(null);(0,i.usePageTitle)(M.admin.dashboard.title,A?.user.name||A?.user.email);let[z,H]=(0,a.useState)(!0),P=L.id,q=(0,a.useCallback)(async()=>{H(!0);try{let e=await c.apiClient.get(`/api/admin/users/${P}/detail`);B(e)}catch(e){console.error("Failed to fetch user detail",e)}finally{H(!1)}},[P]);if((0,a.useEffect)(()=>{if("loading"!==T){if(!b?.user||"admin"!==b.user.role)return void D.push("/");q()}},[b,T,D,q]),"loading"===T||z)return(0,s.jsx)("div",{className:"flex items-center justify-center min-h-[60vh]",children:(0,s.jsx)(o.Loader2,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!A)return(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-[60vh] gap-4",children:[(0,s.jsx)("p",{className:"text-muted-foreground",children:M.common?.error||"加载失败"}),(0,s.jsx)(C.Button,{onClick:q,children:"重试"})]});let E=[{key:"new",label:M.admin?.dashboard?.masteryNew||"未掌握",count:A.masteryDistribution.new,icon:N.AlertCircle,color:"text-red-500"},{key:"reviewing",label:M.admin?.dashboard?.masteryReviewing||"复习中",count:A.masteryDistribution.reviewing,icon:f.Clock,color:"text-yellow-500"},{key:"mastered",label:M.admin?.dashboard?.masteryMastered||"已掌握",count:A.masteryDistribution.mastered,icon:y.CheckCircle,color:"text-green-500"}],R=A.masteryDistribution.new+A.masteryDistribution.reviewing+A.masteryDistribution.mastered;return(0,s.jsxs)("div",{className:"max-w-5xl mx-auto p-4 sm:p-6 space-y-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-4",children:[(0,s.jsxs)(C.Button,{variant:"ghost",size:"sm",onClick:()=>D.push("/admin"),children:[(0,s.jsx)(m.ArrowLeft,{className:"h-4 w-4 mr-1"}),M.common?.back||"返回"]}),(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsx)("div",{className:"p-2 rounded-full bg-blue-50 dark:bg-blue-950/30",children:(0,s.jsx)(x.User,{className:"h-6 w-6 text-blue-500"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-xl font-bold",children:A.user.name||"N/A"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:A.user.email})]}),"admin"===A.user.role&&(0,s.jsx)(k.Badge,{variant:"default",children:M.admin?.admin||"管理员"}),(0,s.jsx)(k.Badge,{variant:A.user.isActive?"default":"destructive",children:A.user.isActive?M.admin?.active||"启用":M.admin?.disabled||"禁用"})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(j.Layers,{className:"h-5 w-5 text-purple-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.notebookCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.notebooks||"错题本"})]})}),(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(u.BookOpen,{className:"h-5 w-5 text-red-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.errorCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.errors||"错题"})]})}),(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(h.PenTool,{className:"h-5 w-5 text-green-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.practiceCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.practice||"练习"})]})}),(0,s.jsx)(w.Card,{className:"border-0 shadow-sm",children:(0,s.jsxs)(w.CardContent,{className:"p-4 text-center",children:[(0,s.jsx)(p,{className:"h-5 w-5 text-blue-500 mx-auto mb-1"}),(0,s.jsx)("div",{className:"text-2xl font-bold",children:A.recent7DaysCount}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:M.admin?.dashboard?.recent7Days||"近7天录入"})]})})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(j.Layers,{className:"h-4 w-4 text-purple-500"}),M.admin?.dashboard?.userNotebooks||"错题本列表"]})}),(0,s.jsx)(w.CardContent,{children:0===A.notebooks.length?(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:M.admin?.dashboard?.noData||"暂无数据"}):(0,s.jsx)("div",{className:"space-y-2",children:A.notebooks.map(e=>(0,s.jsxs)("div",{className:"flex justify-between items-center p-2 rounded-lg bg-muted/30",children:[(0,s.jsx)("span",{className:"font-medium text-sm",children:e.name}),(0,s.jsxs)(k.Badge,{variant:"secondary",className:"text-xs",children:[e.errorCount," 题"]})]},e.id))})})]}),(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(y.CheckCircle,{className:"h-4 w-4 text-green-500"}),M.admin?.dashboard?.masteryDistribution||"掌握度分布"]})}),(0,s.jsx)(w.CardContent,{children:0===R?(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:M.admin?.dashboard?.noData||"暂无数据"}):(0,s.jsx)("div",{className:"space-y-3",children:E.map(e=>{let a=R>0?Math.round(e.count/R*100):0;return(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsxs)("div",{className:"flex justify-between text-sm items-center",children:[(0,s.jsxs)("span",{className:"flex items-center gap-1.5 font-medium",children:[(0,s.jsx)(e.icon,{className:`h-4 w-4 ${e.color}`}),e.label]}),(0,s.jsxs)("span",{className:"text-muted-foreground",children:[e.count," (",a,"%)"]})]}),(0,s.jsx)("div",{className:"w-full bg-muted rounded-full h-2",children:(0,s.jsx)("div",{className:"h-2 rounded-full bg-current opacity-60 transition-all duration-500",style:{width:`${a}%`}})})]},e.key)})})})]})]}),A.subjectDistribution.length>0&&(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(g,{className:"h-4 w-4 text-blue-500"}),M.admin?.dashboard?.subjectDistribution||"学科错题分布"]})}),(0,s.jsx)(w.CardContent,{children:(0,s.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3",children:A.subjectDistribution.map(e=>(0,s.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg bg-muted/30",children:[(0,s.jsx)("span",{className:"font-medium text-sm",children:e.name}),(0,s.jsx)(k.Badge,{variant:"secondary",children:e.count})]},e.name))})})]}),(0,s.jsxs)(w.Card,{className:"border-0 shadow-sm",children:[(0,s.jsx)(w.CardHeader,{className:"pb-2",children:(0,s.jsxs)(w.CardTitle,{className:"text-base flex items-center gap-2",children:[(0,s.jsx)(v.Eye,{className:"h-4 w-4 text-orange-500"}),M.admin?.dashboard?.recentErrors||"最近录入的错题"]})}),(0,s.jsx)(w.CardContent,{children:0===A.recentErrorItems.length?(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:M.admin?.dashboard?.noData||"暂无数据"}):(0,s.jsx)("div",{className:"space-y-2",children:A.recentErrorItems.map(a=>(0,s.jsxs)("div",{className:"flex items-start justify-between p-3 rounded-lg bg-muted/30 gap-3",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium truncate",children:a.questionText||a.ocrText||"(无题目文本)"}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[a.subject&&(0,s.jsx)(k.Badge,{variant:"outline",className:"text-xs",children:a.subject.name}),2===a.masteryLevel&&(0,s.jsx)(k.Badge,{variant:"default",className:"text-xs",children:M.admin?.dashboard?.masteryMastered||"已掌握"}),1===a.masteryLevel&&(0,s.jsx)(k.Badge,{variant:"secondary",className:"text-xs",children:M.admin?.dashboard?.masteryReviewing||"复习中"}),0===a.masteryLevel&&(0,s.jsx)(k.Badge,{variant:"outline",className:"text-xs",children:M.admin?.dashboard?.masteryNew||"未掌握"})]})]}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:(0,n.formatDateTime)(a.createdAt,"yyyy-MM-dd",e)})]},a.id))})})]})]})}],45514)},15288,e=>{"use strict";var s=e.i(18050),a=e.i(75157);e.s(["Card",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})},"CardContent",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",e),...t})},"CardDescription",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",e),...t})},"CardHeader",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})},"CardTitle",0,function({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",e),...t})}])},35209,e=>{"use strict";var s=e.i(71645),a=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t}=(0,a.useLanguage)(),r=[t.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,s.useEffect)(()=>{document.title=r},[r])}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11110,e=>{"use strict";var t=e.i(18050),a=e.i(71645);let r={en:{pageTitle:{base:"AI Smart Error Notebook",home:"Add Mistakes",addError:"Add Mistakes",examPrint:"Print",latexTest:"LaTeX Test",login:"Login",register:"Register"},common:{loading:"Loading...",error:"Error",success:"Success",save:"Save",cancel:"Cancel",confirm:"Confirm",back:"Back",delete:"Delete",default:"Default",welcome:"Welcome back, ",pleaseWait:"Please wait...",notSet:"Not set",edit:"Edit",expand:"Expand",collapse:"Collapse",close:"Close",confirmTitle:"Please confirm",cropper:{title:"Crop Image",hint:"💡 Drag to adjust crop area"},progress:{compressing:"Preparing image...",uploading:"Uploading...",analyzing:"Waiting for AI analysis...",processing:"Processing result...",saving:"Saving...",estimated:"Stage estimate: {percent}%",elapsed:"Elapsed: {time}",estimateHint:"The percentage is estimated by processing stage."},messages:{analysisFailed:"AI analysis failed, please try again",missingImage:"Missing image data",saveSuccess:"Saved successfully!",saveFailed:"Failed to save",loadFailed:"Failed to load item",updateFailed:"Update failed",deleteSuccess:"Deleted successfully",deleteFailed:"Delete failed",tagUpdateSuccess:"Tags updated successfully!",metaUpdateSuccess:"Metadata updated successfully!",noteSaveSuccess:"Notes saved successfully",markMastered:"Marked as mastered",unmarkMastered:"Unmarked",confirmDelete:"Are you sure you want to delete this error item?"}},home:{greetingMorning:"Good morning",greetingAfternoon:"Good afternoon",greetingEvening:"Good evening",heroSubtitle:"Snap or type a question — AI will analyze, tag and file it for you.",notebookCount:"Notebooks",itemCount:"Mistakes",targetNotebook:"Adding to: {name}"},nav:{home:"Add",notebooks:"Notebooks",tags:"Tags",stats:"Stats",exams:"Exams",admin:"Admin",menu:"Account"},app:{title:"Smart Error Notebook",subtitle:"AI-powered analysis and intelligent review",dragDrop:"Drag and drop an image here, or click to browse",analyzing:"AI is analyzing...",compressing:"Compressing image...",supportedFormats:"Supports JPG, PNG, HEIC",gallery:"Photo Gallery",tags:"Tags",stats:"Stats",logout:"Logout",uploadNew:"Upload New",directInput:"Manual Entry",addError:"Add Error Item",viewNotebook:"View Notebook",practiceProblem:"Practice Problem",yourAnswer:"Your Answer",answerPlaceholder:"Enter your answer...",notesPlaceholder:"Record your thinking process (optional)...",submitAnswer:"Submit Answer",uploadImage:"Take Photo",manualInput:"Manual Input",textInputHint:"Enter question text",textInputPlaceholder:"Paste or type question text here...\nSupports Markdown and LaTeX formulas (e.g. $x^2 + y^2 = 1$)\n\nCtrl+Enter to submit",aiSolve:"AI Solve",textInputTip:"After entering the question, AI will automatically solve and generate analysis"},wrongAnswerStats:{title:"Wrong Answer Statistics",totalErrors:"Total Wrong Answers",totalErrorsDesc:"Questions collected",mastered:"Mastered",masteredDesc:"Questions conquered",masteryRate:"Mastery Rate",masteryRateDesc:"Completion rate",weeklyActivity:"Monthly Activity",MonthlyTrend:"Monthly Trend",SubjectDistribution:"Subject Distribution",activity:"Activity"},upload:{support:"Support JPG, PNG (Max 5MB)",analyze:"Analyze with AI",screenshot:"Screenshot",screenshotDesc:"Capture screen content (select 'This Tab' to avoid switching)",screenshotNotSupported:"Screenshot not supported in this browser",screenshotFailed:"Screenshot failed",screenshotPermissionDenied:"Screenshot permission denied",screenshotComplete:"Screenshot captured! Returning to upload page...",paste:"Paste from Clipboard",pasteDesc:"Or press Ctrl/⌘+V on this page to paste an image",pasteNoImage:"No image found in clipboard",pasteNotSupported:"This browser cannot read the clipboard directly. Please press Ctrl/⌘+V to paste",pastePermissionDenied:"Clipboard permission denied. Please press Ctrl/⌘+V to paste",pasteFailed:"Failed to read clipboard. Please press Ctrl/⌘+V to paste"},editor:{title:"Review & Correct",question:"Question Text",answer:"Answer",analysis:"Analysis / Explanation",mistakeAnalysisTitle:"Mistake Analysis",mistakeStatus:"Attempt Status",wrongAnswerText:"Wrong Answer / Work",mistakeAnalysis:"Mistake Cause Analysis",wrongAnswerPlaceholder:"Leave blank if no wrong answer is visible",mistakeAnalysisPlaceholder:"Explain where and why the mistake happened",mistakeStatuses:{notAttempted:"Not attempted",wrongAttempt:"Wrong attempt",unknown:"Unknown"},tags:"Knowledge Points (Press Enter to add)",addTag:"Add a tag...",cancel:"Cancel",save:"Save to Notebook",selectNotebook:"Select Notebook",gradeSemester:"Grade/Semester",preview:{question:"Question Preview",answer:"Answer Preview",analysis:"Analysis Preview",mistakeAnalysis:"Mistake Analysis Preview"},tagsPlaceholder:"Enter knowledge tags, select from suggestions...",tagsHint:"💡 Tag suggestions will appear as you type",createTagHint:"Press Enter to create new tag",messages:{selectNotebook:"Please select a notebook"},paperLevel:"Paper Level",paperLevels:{a:"Paper A",b:"Paper B",other:"Other"},reanswerSuccess:"✅ Answer and analysis updated!",enterQuestionFirst:"Please enter question text first",reanswering:"AI solving...",reanswer:"🔄 Reanswer (based on corrected question)",reanswerHint:"💡 If the question was misrecognized, correct it and click to regenerate answer",placeholder:"Supports Markdown and LaTeX..."},notebook:{emptyList:"No mistakes found",emptyListHint:"Try other filters, or add a new mistake to this notebook.",title:"My Notebook",subtitle:"Review and master your past mistakes.",addNew:"Add New Wrong Answer",search:"Search questions or tags...",filter:"Filter",mastered:"Mastered",review:"Review",gradeSemesterPlaceholder:"e.g. Grade 7, Semester 1",added:"Added",exportPrint:"Export for Print",selectMode:"Select",cancelSelect:"Cancel",deleteSelected:"Delete Selected",selectedCount:"{count} selected",confirmBatchDelete:"Delete {count} items?",batchDeleteSuccess:"Deleted successfully"},notebooks:{title:"My Notebooks",subtitle:"Manage your mistakes by subject",create:"New Notebook",createFirst:"Create Notebook",empty:"No notebooks yet. Click above to create your first one!",deleteConfirm:"Are you sure you want to delete this notebook?",createError:"Failed to create",deleteError:"Failed to delete",deleteNotEmpty:"Please clear all items in this notebook first.",items:"items",notFound:"Notebook not found",totalErrors:"Total {count} wrong answers",addError:"Add Wrong Answer",collapseTags:"Collapse",expandTags:"+{count} more",expandTagsTooltip:"Click to expand {count} tags",collapseTagsTooltip:"Click to collapse",dialog:{stageLabel:"Stage",subjectLabel:"Subject",scopeHint:"Stage and subject cannot be changed after creation. AI picks knowledge tags only from this stage and subject.",title:"Create New Notebook",desc:"Create separate notebooks for different subjects or chapters",nameLabel:"Notebook Name",placeholder:"e.g. Math, Physics, Chemistry...",enterName:"Please enter notebook name",creating:"Creating...",create:"Create"},rename:"Rename",renameDialog:{title:"Rename Notebook",nameLabel:"New Name",placeholder:"Enter new notebook name",enterName:"Please enter notebook name",renaming:"Renaming...",rename:"Rename"},selector:{placeholder:"Select Notebook",empty:"No notebooks available"}},detail:{title:"Wrong Answer Detail",question:"Question",originalProblem:"Original Problem",yourNotes:"Your Answer / Notes",noNotes:"No notes added yet.",notFound:"Item not found",editNotes:"Edit",notesPlaceholder:"Enter your notes...",correctAnswer:"Correct Answer",analysis:"Analysis",referenceDiagram:"Reference Diagram",markMastered:"Mark as Mastered",mastered:"Mastered",practice:"Practice Similar",delete:"Delete",clickToView:"Click to view full image",clickToEnlarge:"Click to enlarge",questionInfo:"Question Info",mistakeAnalysis:"Mistake Analysis",noMistakeAnalysis:"No mistake analysis yet.",close:"Close",clickOutside:"Click outside to close"},practice:{title:"Smart Practice",subtitle:"Generate a similar problem to test your understanding.",generate:"Generate Practice Question",generating:"Generating AI Question...",regenerate:"Regenerate",correct:"Correct!",correctMessage:"Great job, keep it up!",incorrect:"Incorrect",incorrectMessage:"Review the analysis and try again!",yourNotes:"Your Notes:",checkAnswer:"Check Answer",hideAnswer:"Hide Answer",correctAnswer:"Correct Answer",detailedAnalysis:"Detailed Analysis",referenceDiagram:"Reference Diagram",invalidRequest:"Invalid Request",errors:{connection:"Network error. Please check your connection and try again.",response:"AI response error. Please try again or switch to a different model.",auth:"Authentication failed. Please check your API key configuration.",unknown:"An unknown error occurred. Please try again later.",default:"Failed to generate question. Please try again."},difficulty:{label:"Difficulty",easy:"Easy",medium:"Medium",hard:"Hard",harder:"Challenge",Unknown:"Unknown"}},tags:{title:"Tag Management",subtitle:"View and manage knowledge point tags",unitChapters:"chapters",tabs:{standard:"Standard Tags",custom:"Custom Tags",stats:"Usage Statistics"},subjects:{math:"Math",english:"English",physics:"Physics",chemistry:"Chemistry",biology:"Biology",chinese:"Chinese",history:"History",geography:"Geography",politics:"Politics",other:"Other"},categories:{algebra:"Algebra",geometry:"Geometry",numbers:"Numbers",statistics:"Statistics",mechanics:"Mechanics",electricity:"Electricity",optics:"Optics",thermology:"Thermology",acoustics:"Acoustics",basic:"Basic",elements:"Elements",compounds:"Compounds",reactions:"Reactions",calculation:"Calculation",grammar:"Grammar",sentence:"Sentence",reading:"Reading",writing:"Writing"},custom:{addTitle:"Add Custom Tag",placeholder:"Enter tag name...",add:"Add",hint:"💡 Custom tags will automatically appear in tag suggestions",empty:"No custom tags yet, click above to add!",enterName:"Please enter tag name",success:"Tag added successfully!",exists:"Tag already exists",deleteConfirm:'Are you sure you want to delete tag "{tag}"?',selectGrade:"Select Grade",noGrade:"No Grade"},stats:{loading:"Loading...",empty:"No tag usage records yet",frequency:"Tag Usage Frequency (Top 20)",count:"times"}},filter:{masteryStatus:"Mastery Status",all:"All",review:"To Review",mastered:"Mastered",timeRange:"Time Range",allTime:"All Time",lastWeek:"Last Week",lastMonth:"Last Month",filteringByTag:"Filtering by tag",grade:"Grade/Semester",paperLevel:"Paper Level"},stats:{title:"Practice Statistics",headerTitle:"Statistics Center",headerDesc:"View your learning progress and data analysis",totalPractices:"Total Practices",correctRate:"Correct Rate",activeDays:"Active Months",subjectDistribution:"Subject Distribution",weeklyTrend:"Monthly Trend",total:"Total",correct:"Correct"},settings:{title:"Settings",save:"Save Settings",desc:"Manage your preferences and data.",general:{timeZoneLabel:"Application time zone",timeZoneDesc:"Used for dates, times and statistics throughout the app. Default: Asia/Shanghai. Administrators can enter an IANA time zone and save.",invalidTimeZone:"Enter a valid IANA time zone, such as Asia/Shanghai.",timeoutLabel:"AI Analysis Timeout (Seconds)",timeoutDesc:"Increase this value if you experience frequent timeouts during AI analysis."},tabs:{general:"General",account:"Account",ai:"AI Provider",prompts:"Prompts",admin:"User Management",danger:"Danger",about:"About"},about:{title:"About",version:"Version",github:"GitHub Repository",desc:"Smart Error Notebook - AI-powered learning assistant",releaseNotes:"Release Notes",feedback:"Feedback",copyright:"© 2025 Wttwins. All rights reserved."},account:{changePassword:"Change Password (Leave empty to keep)",update:"Update Profile"},ai:{anthropicBaseUrlHint:"Leave empty for the official API. For compatible services enter the base URL without /v1 (e.g. https://api.example.com/anthropic).",save:"Save AI Settings",instances:"Instances",addInstance:"Add",deleteInstance:"Delete",instanceName:"Instance Name",selectInstance:"Select Instance",noInstances:"No instances configured. Click 'Add' to create one.",maxInstancesReached:"Maximum instances reached (10)",confirmDelete:"Delete this instance?",validationNameRequired:"Instance name is required",validationApiKeyRequired:"API Key is required",validationBaseUrlRequired:"Base URL is required",validationModelRequired:"Model name is required",azureEndpoint:"Azure Endpoint",azureEndpointPlaceholder:"https://your-resource.openai.azure.com",azureDeployment:"Deployment Name",azureDeploymentPlaceholder:"gpt-4o-deployment",azureApiVersion:"API Version",azureApiVersionPlaceholder:"2024-02-15-preview",azureModel:"Model Display Name",validationAzureEndpointRequired:"Azure Endpoint is required",validationAzureDeploymentRequired:"Deployment Name is required",testConnection:"Test Connection",testing:"Testing...",testSuccess:"Connection Successful",testFailed:"Connection Failed",textSupport:"Text Generation",visionSupport:"Vision/Multimodal",supported:"Supported",notSupported:"Not Supported",errors:{AI_AUTH_ERROR:"Invalid or expired API Key",AI_PERMISSION_DENIED:"Permission denied, check API Key permissions",AI_NOT_FOUND:"Endpoint or model not found (404)",AI_QUOTA_EXCEEDED:"Rate limit exceeded or quota exhausted",AI_CONNECTION_FAILED:"Cannot connect to AI server, check network or Base URL",AI_TIMEOUT_ERROR:"Request timeout, server response too slow",AI_RESPONSE_ERROR:"AI response format error, model may be incompatible",AI_SERVICE_UNAVAILABLE:"AI service unavailable (503), no available channel",AI_UNKNOWN_ERROR:"AI service error, check config or try again",VISION_NOT_SUPPORTED:"This model does not support vision"}},prompts:{save:"Save Prompt Settings",analysisTab:"Analysis Prompt",similarTab:"Similar Question Prompt",customAnalysis:"Custom Analysis Template",customSimilar:"Custom Similar Question Template",reset:"Reset Default",resetConfirm:"Are you sure you want to reset to default?",caution:"Modify with Caution",warning:"Variables in {{brackets}} are used to inject dynamic content. Please preserve these variables, otherwise the AI providing may fail to get question context or return invalid formats.",variables:"Available Variables",vars:{languageInstruction:"Injects instructions based on target language (e.g., keep English questions in English but analysis in Chinese).",languageInstructionShort:"Language formatting instructions.",knowledgePointsList:"Injects the standard list of knowledge point tags for the specific subject.",providerHints:"System-injected hints (e.g., enforcing JSON format).",difficultyLevel:"Target difficulty level.",difficultyInstruction:"Specific writing instructions for the target difficulty.",originalQuestion:"The full text of the original question.",knowledgePoints:"List of knowledge points to test."}},messages:{saved:"Settings saved",saveFailed:"Failed to save",profileUpdated:"Profile updated",updateFailed:"Update failed",passwordMismatch:"Passwords do not match"},clearData:"Clear Practice Data",clearDataConfirm:"Are you sure? This will delete all your practice history.",clearDataDesc:"This will permanently delete all practice history. Irreversible.",clearErrorData:"Clear Error Data",clearErrorDataConfirm:"Are you sure? This will delete all your error items.",clearErrorDataDesc:"This will permanently delete all error items. Irreversible.",clearSuccess:"Data cleared successfully",clearError:"Failed to clear data",dangerZone:"Danger Zone",systemReset:"System Initialization (Factory Reset)",systemResetConfirm:"EXTREME WARNING: This will delete ALL data including all notebooks, questions, custom tags, and practice logs. This action cannot be undone. Are you absolutely sure?",systemResetDesc:"Resets the system to its initial state. Deletes all user data and custom configurations. Keeps default system tags.",systemResetPrompt:"Type 'RESET' to confirm system initialization:",migrateTags:"Tag System Migration (Seed)",migrateTagsConfirm:"This will reset all SYSTEM tags to the defaults defined in the codebase. Custom tags are unaffected. Are you sure?",migrateTagsDesc:"Re-populates the standard curriculum tags from file configuration. Useful if system tags are missing.",language:"Language",dataManagement:"Data Management",exportData:"Export Data",exportDataDesc:"Export all error items, notebooks, tags, and practice records as a JSON file.",exportSuccess:"Export successful",exportFailed:"Export failed",importData:"Import Data",importDataDesc:"Import data from a JSON file. Duplicate questions are recorded as incorrect attempts in the existing question's practice history.",importSuccess:"Import successful",importFailed:"Import failed",importConfirm:"Are you sure you want to import? This will add new data to your account without deleting existing data.",importResult:"Import Result",importResultDesc:"Imported {subjects} notebooks, {tags} tags, {items} error items, {schedules} review schedules, {records} practice records. {duplicates} duplicate questions were skipped and recorded as incorrect attempts.",exportAllData:"Export All",exportAllConfirm:"Export all users' data? This may take a while.",importAllData:"Import All",importAllConfirm:"Import all users' data? This will restore data for all users from the export file.",selectFile:"Select File",noFileSelected:"No file selected"},errors:{AI_CONNECTION_FAILED:"Network error. Please check your connection.",AI_RESPONSE_ERROR:"AI response invalid. Please try again.",AI_AUTH_ERROR:"AI service authentication failed. Please check API key.",aiAuth:"⚠️ Invalid API key\n\nPlease check your AI provider settings and verify the API key is correct",aiConnectionFailed:"⚠️ Cannot connect to AI service\n\nPlease check:\n• Internet connection\n• Proxy settings\n• Firewall configuration",aiResponseError:"⚠️ AI returned invalid response\n\nPlease try again, contact support if issue persists",AI_TIMEOUT_ERROR:"Request timeout. Please try again.",AI_QUOTA_EXCEEDED:"API quota exceeded or insufficient balance. Please check your account.",AI_PERMISSION_DENIED:"Permission denied (403). Please check your API key permissions.",AI_NOT_FOUND:"Resource not found (404). Please check endpoint URL or model name.",AI_SERVICE_UNAVAILABLE:"AI service unavailable (503). No available channel.",AI_UNKNOWN_ERROR:"Unknown AI error occurred.",AI_OUTPUT_TRUNCATED:"The AI spent its whole output budget thinking and returned no answer. Please try again, or crop the image to a single question.",GENERIC_ERROR:"Failed to generate question.",reanswer:{default:"Reanswer failed",authError:"⚠️ AI key configuration error\n\nPlease check your API key in settings",connectionFailed:"⚠️ AI service connection failed\n\nPossible causes:\n• Network issue\n• AI service temporarily unavailable\n• Proxy required\n\nPlease try again later",responseError:"⚠️ AI response format error\n\nPlease retry, contact support if issue persists"}},admin:{title:"User Management",users:"Users",role:"Role",status:"Status",actions:"Actions",active:"Active",disabled:"Disabled",disable:"Disable",enable:"Enable",delete:"Delete User",confirmDisable:"Are you sure you want to disable this user?",confirmEnable:"Are you sure you want to enable this user?",confirmDelete:"Are you sure you want to delete this user? This will remove all their data.",allowRegistration:"Allow New Registrations",allowRegistrationDesc:"When disabled, new users cannot register",admin:"Admin",user:"User",createdAt:"Created At",stats:"Stats",nameEmail:"Name/Email",errors:"Errors",practiceCount:"Practice",dashboard:{title:"Admin Dashboard",subtitle:"View all users and error statistics",totalUsers:"Total Users",totalErrors:"Total Errors",totalPractice:"Total Practice",totalNotebooks:"Total Notebooks",recentTrend:"Recent 7-Day Trend",subjectDistribution:"Subject Distribution",masteryDistribution:"Mastery Distribution",masteryNew:"New",masteryReviewing:"Reviewing",masteryMastered:"Mastered",userList:"User List",userListDesc:"All registered users and their error entry status",userName:"Username",email:"Email",notebooks:"Notebooks",errors:"Errors",practice:"Practice",status:"Status",registeredAt:"Registered At",actions:"Actions",viewDetail:"View Detail",recent7Days:"Last 7 Days",recentErrors:"Recent Error Items",userNotebooks:"Notebooks",noData:"No Data",retry:"Retry"}},auth:{email:"Email",password:"Password",confirmPassword:"Confirm Password",name:"Name",educationStage:"Education Stage",enrollmentYear:"Enrollment Year",selectStage:"Select Stage",primary:"Primary School",juniorHigh:"Junior High",seniorHigh:"Senior High",university:"University",login:{title:"Login to Wrong Notebook",failed:"Login failed, please check your credentials",error:"An error occurred, please try again",loggingIn:"Logging in...",action:"Login",noAccount:"Don't have an account? ",registerNow:"Register now"},register:{title:"Create an Account",passwordMismatch:"Passwords do not match",emailExists:"User with this email already exists",success:"Registration successful! Please login",failed:"Registration failed",disabled:"Registration Disabled",disabledMessage:"Registration is currently disabled by administrator. Please contact admin for access.",backToLogin:"Back to Login",registering:"Registering...",action:"Register",hasAccount:"Already have an account? ",loginHere:"Login here"}},printPreview:{title:"Print Preview",questionCount:"{count} questions",imageScale:"Image Scale",showQuestionText:"Question Text",showAnswers:"Show Answers",showAnalysis:"Show Analysis",showTags:"Show Tags",printButton:"Print / Save PDF",questionNumber:"Question {num}",source:"Source {id}",paperLevel:"Paper Level",knowledgePoints:"Knowledge Points",selectItems:"Select Items",selectAll:"Select All",clearSelection:"Clear Selection",referenceAnswer:"Reference Answer",analysis:"Analysis",noItems:"No matching error items",noSelection:"No items selected"},modelSelector:{modelName:"Model Name",selectFromList:"Select from List",selectModel:"Select Model",customInput:"Custom Input...",enterApiKeyFirst:"Please enter API Key first",noVisionModel:"No vision model found, please enter manually",fetchFailed:"Failed to fetch models",enterManually:", please enter manually"},pagination:{showing:"Showing {start}-{end} of {total}",first:"First page",prev:"Previous page",next:"Next page",last:"Last page"},shortId:{label:"ID",copy:"Copy ID",copied:"ID copied",locateTitle:"Locate by ID",locatePlaceholder:"Enter 6-character question ID",locate:"Go",notFound:"No question found with this ID",invalid:"A question ID has 6 characters (letters and digits)",searchHint:"Press Enter on a 6-character ID to open that question"},mastery:{probability:"Mastery probability",notEvaluated:"Not evaluated yet",estimated:"Estimated",aiEvaluated:"AI evaluated",evaluatedAt:"Evaluated at",pending:"Re-evaluating…",history:"Practice History",noHistory:"No practice records yet",result:"Result",date:"Date",difficulty:"Difficulty",source:"Source",results:{correct:"Correct",wrong:"Wrong",not_attempted:"Couldn't solve"},sources:{practice:"Practice",manual:"Manual entry",exam:"Exam paper",duplicate_import:"Repeated question import"},addRecord:"Record Result",recordDate:"Date",deleteRecord:"Delete record",deleteRecordConfirm:"Delete this record? Mastery will be re-evaluated.",deleteRecordFailed:"Failed to delete record",markResult:"How did it go?",suggested:"Suggested from your answer",saveResult:"Save Result",resultSaved:"Result saved. Mastery will be re-evaluated shortly.",resultSaveFailed:"Failed to save result",viewQuestion:"View question",thresholdHint:"Marked as mastered automatically at 80% or above"},importFlow:{imported:'Imported to "{notebook}" (ID: {id})',duplicate:"This question is a duplicate. This incorrect attempt has been recorded in the existing question's practice history; no new question was imported.",viewItem:"View question",continueUpload:"Upload another",confirmBeforeImport:"Review before importing",confirmBeforeImportDesc:"When off, recognized questions are saved to the notebook directly.",enableGeogebra:"GeoGebra interactive demo",enableGeogebraDesc:"When on, question pages show the GeoGebra demo section, where AI can generate an interactive figure for the question.",enableSvgAnimation:"SVG animated explanation",enableSvgAnimationDesc:"When on, question pages show the SVG animation section, where AI can generate a step-by-step animated explanation for the question.",preferenceSaved:"Preference saved",preferenceSaveFailed:"Failed to save preference",thresholdLabel:"Duplicate question threshold",thresholdDescription:"Default: 90%. Figure descriptions added by AI and blank lengths are ignored when comparing. Questions with similarity strictly above this value are recorded as repeated incorrect attempts. Range: 1–100%, up to 2 decimal places. At 100%, automatic duplicate detection is disabled.",thresholdInvalid:"Enter a value from 1 to 100, with up to 2 decimal places.",thresholdLoadFailed:"Failed to load the saved threshold. Please retry.",saveThreshold:"Save threshold",retryLoad:"Reload"},questionSimilarity:{title:"Compare similarity",description:"Select two questions to compare their full text with the same method used during import. This comparison does not add a practice record.",selectTwo:"Select exactly two questions to compare.",selectQuestion:"Select question {id}",score:"Question similarity",threshold:"Current threshold: {threshold}%",duplicate:"These questions would be treated as duplicates at the current threshold.",different:"These questions would be imported separately at the current threshold.",missingText:"One of these questions has no text to compare. Add its question text first.",failed:"Failed to compare the questions. Please try again.",retry:"Compare again",question:"Question {index}"},batchImport:{singleMode:"Single question",multiMode:"Multiple questions",hint:"Drag on the image to draw a box around each question. One box = one question.",regionCount:"{count} boxes",noRegions:"Draw at least one box",clear:"Clear",removeRegion:"Remove box {index}",start:"Import {count} questions",title:"Batch Import",summary:"{done}/{total} done · {failed} failed",status:{pending:"Waiting",analyzing:"Recognizing…",saving:"Saving…",success:"Imported",failed:"Failed"},retry:"Retry",retryFailed:"Retry failed",finish:"Done",question:"Question {index}"},exam:{nav:"Exams",title:"Practice Exams",subtitle:"Randomly pick mistakes and generate a printable exam from similar questions.",create:"New Exam",createTitle:"Generate an Exam",list:"My Exams",empty:"No exams yet.",notebooks:"Notebooks",selectAll:"Select all",tags:"Knowledge tags (optional)",tagsPlaceholder:"Only pick questions with these tags",scope:"Questions",scopes:{unmastered:"Not mastered",mastered:"Mastered",all:"All"},pickRule:"Selection",pickRules:{least_practiced:"Least practiced first",random:"Fully random"},pickRuleHints:{least_practiced:"Questions with fewer practice records come first; ties are random.",random:"Every matching question has the same chance."},count:"Number of questions",difficulty:"Difficulty",titleLabel:"Title (optional)",generate:"Generate",creating:"Creating…",noSource:"No questions match these conditions.",fewerThanRequested:"Only {actual} questions matched; the exam has {actual} questions.",noNotebook:"Select at least one notebook",status:{generating:"Generating",ready:"Ready",partial:"Partly failed",failed:"Failed"},progress:"{ready}/{total} generated",questionCount:"{count} questions",recorded:"Results entered",notRecorded:"Results not entered",source:"Source",sourceDeleted:"Source deleted",questionFailed:"Generation failed",questionPending:"Generating…",retryFailed:"Regenerate failed questions",regenerateQuestion:"Regenerate question",regenerateAnswer:"Regenerate solution",regenerating:"Generating…",regenerateQuestionConfirm:"AI will generate a new question with its answer and analysis, replacing the current one. Continue?",regenerateAnswerConfirm:"AI will regenerate the answer and analysis for this question; the question stays the same and entered results are kept. Continue?",regenerateHasResults:"Results have been entered for this question, so only the solution can be regenerated",regenerateFailed:"Regeneration failed, please try again later",print:"Print / Export",delete:"Delete",deleteConfirm:"Delete this exam? Entered results stay in each question's history.",showAnswer:"Answer",recordResults:"Enter Results",takenAt:"Exam date",saveResults:"Save Results",resultsSaved:"Results saved. Mastery will be re-evaluated shortly.",resultsSaveFailed:"Failed to save results",recordHint:"Each save adds a new attempt; questions without a selection are skipped.",attemptLabel:"Attempt {n}",noResultSelected:"Select a result for at least one question",cancel:"Cancel",notFound:"Exam not found",back:"Back",printTitle:"Print Preview",includeAnswers:"Include answer key",printNow:"Print",downloadHtml:"Download HTML",nameLine:"Name",dateLine:"Date",scoreLine:"Score",answerKey:"Answer Key",answerLabel:"Answer",analysisLabel:"Analysis",sourceLabel:"Source ID",notReadyHint:"Questions that failed to generate are left out of the printout."},figure:{alt:"Question figure",regenerate:"AI Redraw Figure",regenerating:"Drawing figure…",noFigure:"AI found no figure in this question",failed:"Failed to generate the figure",noImage:"No original image to draw the figure from"},svgAnimation:{title:"SVG Animated Explanation",alt:"Animated explanation",hint:"AI explains the solution step by step with an SVG animation",generate:"Generate animation",generating:"Generating animation, this takes a few minutes…",regenerate:"Regenerate",replay:"Replay",play:"Play",pause:"Pause",progress:"Animation progress",fullscreen:"Full screen",exitFullscreen:"Exit full screen",delete:"Delete",confirmDelete:"Delete the generated SVG animation? This cannot be undone.",deleteFailed:"Failed to delete the animation",failed:"Failed to generate the animation, please try again later",noQuestionText:"The question text is empty, so no animation can be generated",invalid:"AI did not return a valid animation, please try again"},backgroundTasks:{title:"Background tasks",description:"Progress of long-running tasks such as question recognition and AI generation. Tasks keep running on the server after you leave the page.",empty:"No background tasks right now",progress:"{done} / {total}",failedCount:"{count} failed",startedAt:"Started {time}",elapsed:"Elapsed {time}",view:"View",clearFinished:"Clear finished",retentionHint:"Finished tasks are kept for 30 minutes; the list is cleared when the service restarts.",status:{running:"In progress",succeeded:"Done",failed:"Failed"},kinds:{analyze:"Importing question (AI recognition)",batch_upload:"Batch upload recognition",data_import:"Importing backup data",svg_animation:"Generating SVG animated explanation",reanswer:"Regenerating solution",fix_latex:"Fixing LaTeX",figure:"Redrawing figure",geogebra:"Generating GeoGebra demo",retag:"Regenerating knowledge tags",retag_notebook:"Regenerating tags for notebook",practice:"Generating similar question",exam:"Generating exam paper"},errors:{NO_VALID_ANIMATION:"AI did not return a valid animation",ALL_FAILED:"All items failed",NO_QUESTION_TEXT:"The question text is empty",NO_TAGS_SELECTED:"AI selected no tags",NO_AVAILABLE_TAGS:"No tags available"}},replaceImage:{replace:"Replace image",add:"Upload question image",uploading:"Uploading…",confirm:"Replace the original question image? The old image will be overwritten and cannot be restored.",done:'Image replaced. To redraw the figure from the new image, click "AI Redraw Figure".',invalid:"Please choose a PNG, JPEG, WebP or GIF image",failed:"Failed to replace the image"},reanswerItem:{button:"Regenerate full solution",running:"Generating solution…",confirm:"AI will regenerate the full answer and analysis and overwrite the current ones. Tags, wrong answer and mistake analysis are kept. Continue?",failed:"Failed to regenerate the solution, please try again later",noQuestionText:"The question text is empty, so no solution can be generated"},fixLatex:{button:"Fix LaTeX",running:"Fixing formulas…",issuesFound:"{count} LaTeX issue(s) found",noIssues:"No LaTeX syntax errors found",fixedAll:"Fixed the formulas in: {fields}",fixedPartly:"Fixed the formulas in: {fields}. {count} issue(s) could not be fixed automatically, please edit them manually.",notFixed:"AI could not fix the formulas automatically; the original content is kept. Please edit it manually.",failed:"Failed to fix LaTeX, please try again later",fields:{questionText:"Question",answerText:"Answer",analysis:"Analysis",wrongAnswerText:"Wrong answer",mistakeAnalysis:"Mistake analysis"}},markdownEditor:{modeLabel:"Editor view",source:"Source",preview:"Preview",empty:"Nothing to preview",doubleClickToEdit:"Double-click to edit the source"},geogebra:{delete:"Delete",confirmDelete:"Delete the generated GeoGebra demo? This cannot be undone.",deleteFailed:"Failed to delete the GeoGebra demo"},difficulty:{label:"Difficulty",unrated:"Unrated",starsLabel:"{n} stars",setStars:"Set to {n} stars",clearHint:"Click the current rating again to clear it",saveFailed:"Failed to save difficulty"},retag:{notebookButton:"Re-identify Tags & Difficulty",notebookConfirm:"AI will re-select knowledge tags and rate the difficulty stars for every question in this notebook. System tags and stars are replaced; your custom tags are kept. Continue?",progress:"Re-identifying tags and difficulty: {done}/{total}",finished:"Tags and difficulty re-identified: {success} succeeded, {failed} failed",empty:"No questions in this notebook",itemButton:"AI Re-identify",itemRunning:"Regenerating…",itemFailed:"Failed to re-identify tags and difficulty",noTags:"AI found no matching tags in the library",suggestButton:"AI Suggest Tags",suggestRunning:"Suggesting…"}},zh:{pageTitle:{base:"AI智能错题本",home:"录入错题",addError:"录入错题",examPrint:"打印",latexTest:"LaTeX 测试",login:"登录",register:"注册"},common:{loading:"加载中...",error:"错误",success:"成功",save:"保存",cancel:"取消",confirm:"确认",back:"返回",delete:"删除",default:"默认",welcome:"欢迎回来,",pleaseWait:"请稍候...",notSet:"未设置",edit:"编辑",expand:"展开",collapse:"收起",close:"关闭",confirmTitle:"请确认",cropper:{title:"裁剪图片",hint:"💡 拖动选框调整裁剪区域"},progress:{compressing:"正在准备图片...",uploading:"正在上传...",analyzing:"等待 AI 返回分析结果...",processing:"正在处理结果...",saving:"正在保存...",estimated:"阶段估算:{percent}%",elapsed:"已用时:{time}",estimateHint:"百分比按处理阶段估算。"},messages:{analysisFailed:"AI 分析失败,请重试",missingImage:"缺少图片数据",saveSuccess:"保存成功!",saveFailed:"保存失败",loadFailed:"加载失败",updateFailed:"更新失败",deleteSuccess:"删除成功",deleteFailed:"删除失败",tagUpdateSuccess:"标签更新成功!",metaUpdateSuccess:"信息更新成功!",noteSaveSuccess:"笔记保存成功",markMastered:"已标记为已掌握",unmarkMastered:"已取消掌握标记",confirmDelete:"确定要删除这道错题吗?"}},home:{greetingMorning:"早上好",greetingAfternoon:"下午好",greetingEvening:"晚上好",heroSubtitle:"拍照或输入题目,AI 帮你解析、打标签并归档到错题本。",notebookCount:"错题本",itemCount:"道错题",targetNotebook:"录入到:{name}"},nav:{home:"录入",notebooks:"错题本",tags:"知识点",stats:"统计",exams:"试卷",admin:"管理",menu:"账户"},app:{title:"智能错题本",subtitle:"AI 驱动的题目分析与智能复习",dragDrop:"拖拽图片到此处,或点击浏览",analyzing:"AI 正在分析...",compressing:"正在压缩图片...",supportedFormats:"支持 JPG、PNG、HEIC 格式",gallery:"照片库",tags:"标签管理",stats:"统计中心",logout:"退出登录",uploadNew:"上传新题",directInput:"直接录入",addError:"添加错题",viewNotebook:"查看错题本",practiceProblem:"练习题",yourAnswer:"你的答案",answerPlaceholder:"输入你的答案...",notesPlaceholder:"记录解题思路(可选)...",submitAnswer:"提交答案",uploadImage:"拍照上传",manualInput:"手动输入",textInputHint:"手动输入题目文本",textInputPlaceholder:"在此粘贴或输入题目文本...\n支持 Markdown 和 LaTeX 公式(如 $x^2 + y^2 = 1$)\n\nCtrl+Enter 快捷提交",aiSolve:"AI 解题",textInputTip:"输入题目后,AI 将自动解答并生成解析"},wrongAnswerStats:{title:"错题统计",totalErrors:"累计错题",totalErrorsDesc:"已收集题目",mastered:"已掌握",masteredDesc:"已攻克题目",masteryRate:"掌握率",masteryRateDesc:"完成进度",weeklyActivity:"月度趋势",MonthlyTrend:"月度趋势",SubjectDistribution:"科目分布",activity:"活动"},upload:{support:"支持 JPG, PNG (最大 5MB)",analyze:"AI 智能解析",screenshot:"屏幕截图",screenshotDesc:"捕获屏幕内容(建议选择‘整个屏幕’或‘窗口’以获得最佳效果)",screenshotNotSupported:"此浏览器不支持屏幕截图",screenshotFailed:"截图失败",screenshotPermissionDenied:"截图权限被拒绝",screenshotComplete:"截图完成!正在返回上传页面...",paste:"从剪贴板粘贴",pasteDesc:"也可在本页直接按 Ctrl/⌘+V 粘贴图片",pasteNoImage:"剪贴板中没有图片",pasteNotSupported:"此浏览器无法直接读取剪贴板,请按 Ctrl/⌘+V 粘贴",pastePermissionDenied:"剪贴板权限被拒绝,请按 Ctrl/⌘+V 粘贴",pasteFailed:"读取剪贴板失败,请按 Ctrl/⌘+V 粘贴"},editor:{title:"校对与保存",question:"题目内容",answer:"参考答案",analysis:"解析思路",mistakeAnalysisTitle:"错因分析",mistakeStatus:"作答状态",wrongAnswerText:"错误解答原文",mistakeAnalysis:"错因分析",wrongAnswerPlaceholder:"如果图片里没有错误解答,可留空",mistakeAnalysisPlaceholder:"分析错误可能发生在哪一步、为什么错、导致什么后果",mistakeStatuses:{notAttempted:"不会做",wrongAttempt:"做错了",unknown:"未判断"},tags:"知识点 (回车添加)",addTag:"添加标签...",cancel:"取消",save:"保存到错题本",selectNotebook:"选择错题本",gradeSemester:"年级/学期",preview:{question:"题目预览",answer:"答案预览",analysis:"解析预览",mistakeAnalysis:"错因分析预览"},tagsPlaceholder:"输入知识点标签,可从建议中选择...",tagsHint:"💡 输入时会显示标签建议,支持从标准标签库选择",createTagHint:"按回车键创建新标签",messages:{selectNotebook:"请选择一个错题本"},paperLevel:"所属卷等级",paperLevels:{a:"A卷",b:"B卷",other:"其他"},reanswerSuccess:"✅ 答案和解析已更新!",enterQuestionFirst:"请先输入题目内容",reanswering:"AI 正在解题...",reanswer:"🔄 重新解题(根据校正后的题目)",reanswerHint:"💡 如果题目识别有误,校正题目后点击此按钮让 AI 重新生成答案和解析",placeholder:"支持 Markdown 和 LaTeX..."},notebook:{emptyList:"暂无错题",emptyListHint:"换个筛选条件试试,或者往错题本里录入新的错题。",title:"我的错题本",subtitle:"温故知新,查漏补缺。",addNew:"添加错题",search:"搜索题目或知识点...",filter:"筛选",mastered:"已掌握",review:"待复习",gradeSemesterPlaceholder:"例如:初一,上期",added:"添加于",exportPrint:"导出打印",selectMode:"多选",cancelSelect:"取消",deleteSelected:"删除选中",selectedCount:"已选 {count} 项",confirmBatchDelete:"确定删除 {count} 道错题?",batchDeleteSuccess:"删除成功"},notebooks:{title:"我的错题本",subtitle:"按科目分类管理你的错题",create:"新建错题本",createFirst:"创建错题本",empty:"还没有错题本,点击上方按钮创建第一个吧!",deleteConfirm:"确定要删除这个错题本吗?",createError:"创建失败",deleteError:"删除失败",deleteNotEmpty:"请先清空错题本中的所有题目,才能删除该错题本。",items:"道题目",notFound:"错题本不存在",totalErrors:"共 {count} 道错题",addError:"添加错题",collapseTags:"收起 ↑",expandTags:"+{count} 个 ↓",expandTagsTooltip:"点击展开 {count} 个标签",collapseTagsTooltip:"点击收起",dialog:{stageLabel:"学段",subjectLabel:"学科",scopeHint:"学段和学科创建后不可修改,AI 只会从该学段、该学科的知识点中选择标签。",title:"创建新错题本",desc:"为不同科目或章节创建独立的错题本",nameLabel:"错题本名称",placeholder:"例如:数学、物理、化学...",enterName:"请输入错题本名称",creating:"创建中...",create:"创建"},rename:"重命名",renameDialog:{title:"重命名错题本",nameLabel:"新名称",placeholder:"请输入新的错题本名称",enterName:"请输入错题本名称",renaming:"重命名中...",rename:"重命名"},selector:{placeholder:"选择错题本",empty:"暂无错题本"}},detail:{title:"错题详情",question:"题目",originalProblem:"原始问题",yourNotes:"你的笔记 / 答案",noNotes:"暂无笔记",notFound:"未找到该错题",editNotes:"编辑",notesPlaceholder:"输入你的笔记...",correctAnswer:"参考答案",analysis:"解析",referenceDiagram:"参考图形",markMastered:"标记为已掌握",mastered:"已掌握",practice:"举一反三",delete:"删除",clickToView:"点击查看大图",clickToEnlarge:"点击图片查看大图",questionInfo:"试题信息",mistakeAnalysis:"错因分析",noMistakeAnalysis:"暂无错因分析",close:"✕ 关闭",clickOutside:"点击图片外部区域关闭"},practice:{title:"智能练习",subtitle:"生成同类变式题,检测掌握情况。",generate:"生成练习题",generating:"AI 正在出题...",regenerate:"重新生成",correct:"回答正确!",correctMessage:"太棒了,继续保持!",incorrect:"答案有误",incorrectMessage:"再看看解析,加油!",yourNotes:"你的笔记:",checkAnswer:"查看答案",hideAnswer:"隐藏答案",correctAnswer:"参考答案",detailedAnalysis:"详细解析",referenceDiagram:"参考图形",invalidRequest:"无效请求",errors:{connection:"网络连接失败,请检查网络设置或代理配置。",response:"AI 解析异常,请重试或切换其他模型。",auth:"认证失败,请检查 API Key 配置。",unknown:"发生未知错误,请稍后重试。",default:"生成失败,请重试。"},difficulty:{label:"难度选择",easy:"简单",medium:"适中",hard:"困难",harder:"挑战",Unknown:"未知"}},tags:{title:"标签管理",subtitle:"查看和管理知识点标签",unitChapters:"章",tabs:{standard:"标准标签库",custom:"自定义标签",stats:"使用统计"},subjects:{math:"数学",english:"英语",physics:"物理",chemistry:"化学",biology:"生物",chinese:"语文",history:"历史",geography:"地理",politics:"政治",other:"其他"},categories:{algebra:"代数",geometry:"几何",numbers:"数与式",statistics:"统计与概率",mechanics:"力学",electricity:"电学",optics:"光学",thermology:"热学",acoustics:"声学",basic:"基础",elements:"元素",compounds:"化合物",reactions:"反应",calculation:"计算",grammar:"语法",sentence:"句法",reading:"阅读",writing:"写作"},custom:{addTitle:"添加自定义标签",placeholder:"输入标签名称...",add:"添加",hint:"💡 自定义标签会自动出现在标签输入建议中",empty:"还没有自定义标签,点击上方添加吧!",enterName:"请输入标签名称",success:"标签添加成功!",exists:"标签已存在",deleteConfirm:'确定要删除标签 "{tag}" 吗?',selectGrade:"选择年级",noGrade:"不选择年级"},stats:{loading:"加载中...",empty:"还没有任何标签使用记录",frequency:"标签使用频率(Top 20)",count:"次"}},filter:{masteryStatus:"掌握状态",all:"全部",review:"待复习",mastered:"已掌握",timeRange:"时间范围",allTime:"全部时间",lastWeek:"最近一周",lastMonth:"最近一个月",filteringByTag:"按标签筛选",grade:"年级/学期",paperLevel:"所属卷等级"},stats:{title:"练习统计",headerTitle:"统计中心",headerDesc:"查看您的学习进度和数据分析",totalPractices:"累计练习",correctRate:"正确率",activeDays:"活跃月份",subjectDistribution:"学科分布",weeklyTrend:"月度趋势",total:"总题数",correct:"正确"},settings:{title:"设置",save:"保存设置",desc:"管理您的应用偏好和数据。",general:{timeZoneLabel:"应用时区",timeZoneDesc:"全站日期、时间和统计统一使用此时区,默认 Asia/Shanghai(北京时间)。管理员可输入 IANA 时区名称并保存。",invalidTimeZone:"请输入有效的 IANA 时区,例如 Asia/Shanghai。",timeoutLabel:"AI 分析超时时间 (秒)",timeoutDesc:"如果 AI 分析频繁超时,请增加此值。"},tabs:{general:"通用",account:"账户",ai:"AI 提供商",prompts:"提示词",admin:"用户管理",danger:"危险",about:"关于"},about:{title:"关于",version:"当前版本",github:"GitHub 仓库",desc:"智能错题本 - AI 驱动的学习助手",releaseNotes:"发行说明",feedback:"问题反馈",copyright:"© 2025 Wttwins. All rights reserved."},account:{changePassword:"修改密码 (留空不修改)",update:"更新个人信息"},ai:{anthropicBaseUrlHint:"留空使用官方接口;兼容服务请填写不含 /v1 的地址(如 https://api.example.com/anthropic)。",save:"保存 AI 设置",instances:"配置实例",addInstance:"添加",deleteInstance:"删除",instanceName:"实例名称",selectInstance:"选择实例",noInstances:"暂无配置实例,点击「添加」创建",maxInstancesReached:"已达最大实例数 (10)",confirmDelete:"确定删除此实例?",validationNameRequired:"实例名称不能为空",validationApiKeyRequired:"API Key 不能为空",validationBaseUrlRequired:"Base URL 不能为空",validationModelRequired:"模型名称不能为空",azureEndpoint:"Azure 端点",azureEndpointPlaceholder:"https://your-resource.openai.azure.com",azureDeployment:"部署名称",azureDeploymentPlaceholder:"gpt-4o-deployment",azureApiVersion:"API 版本",azureApiVersionPlaceholder:"2024-02-15-preview",azureModel:"模型显示名",validationAzureEndpointRequired:"Azure 端点不能为空",validationAzureDeploymentRequired:"部署名称不能为空",testConnection:"测试连接",testing:"测试中...",testSuccess:"连接成功",testFailed:"连接失败",textSupport:"文本生成",visionSupport:"图像识别/多模态",supported:"支持",notSupported:"不支持",errors:{AI_AUTH_ERROR:"API Key 无效或已过期",AI_PERMISSION_DENIED:"权限不足,请检查 API Key 权限",AI_NOT_FOUND:"端点或模型不存在 (404)",AI_QUOTA_EXCEEDED:"请求频率过高或配额不足",AI_CONNECTION_FAILED:"无法连接 AI 服务器,请检查网络或 Base URL",AI_TIMEOUT_ERROR:"请求超时,服务器响应过慢",AI_RESPONSE_ERROR:"AI 返回格式异常,可能模型不兼容",AI_SERVICE_UNAVAILABLE:"AI 服务不可用 (503),无可用渠道",AI_UNKNOWN_ERROR:"AI 服务返回错误,请检查配置或稍后重试",VISION_NOT_SUPPORTED:"该模型不支持图像识别"}},prompts:{save:"保存提示词设置",analysisTab:"题目分析提示词",similarTab:"举一反三提示词",customAnalysis:"自定义分析提示词模板",customSimilar:"自定义举一反三模板",reset:"恢复默认",resetConfirm:"确定要恢复默认提示词吗?",caution:"请谨慎修改",warning:"提示词中的变量({{...}})用于注入动态内容。请务必保留这些变量,否则 AI 可能无法获取题目信息或生成错误的格式。",variables:"可用变量说明",vars:{languageInstruction:"根据目标语言注入格式指令(例如:英文题目用英文回答,分析用中文)。",languageInstructionShort:"语言格式指令。",knowledgePointsList:"根据科目自动注入对应的标准知识点列表(数学、物理等),帮助 AI 准确分类。",providerHints:"系统自动注入的补充指令(如强制 JSON 格式)。",difficultyLevel:"目标难度等级(Easy / Medium / Hard)。",difficultyInstruction:"针对该难度的具体编写要求。",originalQuestion:"原始错题的完整文本。",knowledgePoints:"需要考察的知识点列表。"}},messages:{saved:"设置已保存",saveFailed:"保存失败",profileUpdated:"个人信息已更新",updateFailed:"更新失败",passwordMismatch:"两次密码不一致"},clearData:"清理练习数据",clearDataConfirm:"确定要清理吗?这将永久删除您的所有练习记录。",clearDataDesc:"此操作将永久删除所有练习记录,不可恢复。",clearErrorData:"清理错题数据",clearErrorDataConfirm:"确定要清理吗?这将永久删除您的所有错题记录。",clearErrorDataDesc:"此操作将永久删除所有错题记录,不可恢复。",clearSuccess:"数据清理成功",clearError:"清理失败",dangerZone:"危险区域",systemReset:"系统初始化 (恢复出厂设置)",systemResetConfirm:"严重警告:此操作将删除所有数据,包括所有错题本、题目、自定义标签和练习记录。还可能删除除您以外的其他用户数据。此操作不可撤销!您绝对确定吗?",systemResetDesc:"将系统重置为初始状态。清理所有用户数据和自定义设置,仅保留标准系统标签。",systemResetPrompt:"请输入 'RESET' 以确认系统初始化:",migrateTags:"标签系统迁移 (重置标准库)",migrateTagsConfirm:"此操作将重置所有【系统默认标签】为代码定义的初始状态。用户自定义标签不受影响。确定执行吗?",migrateTagsDesc:"从服务器配置文件重新导入标准课程大纲。如果系统标签缺失或损坏,请使用此功能。",language:"语言",dataManagement:"数据管理",exportData:"导出数据",exportDataDesc:"将所有错题、笔记本、标签和练习记录导出为 JSON 文件。",exportSuccess:"导出成功",exportFailed:"导出失败",importData:"导入数据",importDataDesc:"从 JSON 文件导入数据。重复题目不再新建,并在已有题目的举一反三记录中记录本次做错信息。",importSuccess:"导入成功",importFailed:"导入失败",importConfirm:"确定要导入数据吗?导入操作将添加新数据到您的账户中,不会删除现有数据。",importResult:"导入结果",importResultDesc:"已导入 {subjects} 个笔记本、{tags} 个标签、{items} 道错题、{schedules} 条复习计划、{records} 条练习记录。另有 {duplicates} 道重复题目未重复导入,已记录本次相同题目的做错信息。",exportAllData:"导出全部",exportAllConfirm:"导出所有用户的数据?这可能需要一些时间。",importAllData:"导入全部",importAllConfirm:"导入所有用户的数据?将从导出文件中恢复所有用户的数据。",selectFile:"选择文件",noFileSelected:"未选择文件"},errors:{AI_CONNECTION_FAILED:"网络连接失败,请检查网络设置。",AI_RESPONSE_ERROR:"AI 返回数据格式异常,请重试。",AI_AUTH_ERROR:"AI 服务认证失败,请检查 API Key 配置。",aiAuth:"⚠️ API 密钥无效\n\n请检查设置中的 AI 提供商配置,确认 API Key 是否正确",aiConnectionFailed:"⚠️ 无法连接到 AI 服务\n\n请检查:\n• 网络连接是否正常\n• 是否需要配置代理\n• 防火墙设置",aiResponseError:"⚠️ AI 返回了无效的响应\n\n请重试,如果问题持续请联系支持",AI_TIMEOUT_ERROR:"请求超时,请稍后重试。",AI_QUOTA_EXCEEDED:"API 配额不足或余额已用完,请检查您的账户。",AI_PERMISSION_DENIED:"权限被拒绝 (403),请检查 API Key 权限设置。",AI_NOT_FOUND:"资源不存在 (404),请检查端点 URL 或模型名称。",AI_SERVICE_UNAVAILABLE:"AI 服务不可用 (503),无可用渠道。",AI_UNKNOWN_ERROR:"发生未知 AI 错误。",AI_OUTPUT_TRUNCATED:"AI 思考过程过长,输出额度用尽仍未给出结果。请重试,或把图片裁剪到只包含一道题。",GENERIC_ERROR:"生成题目失败,请稍后重试。",reanswer:{default:"重新解题失败",authError:"⚠️ AI 密钥配置错误\n\n请检查设置中的 API Key 是否正确",connectionFailed:"⚠️ AI 服务连接失败\n\n可能原因:\n• 网络连接问题\n• AI 服务暂时不可用\n• 需要代理访问\n\n请稍后重试",responseError:"⚠️ AI 返回格式错误\n\n请重试,如果问题持续请联系支持"}},admin:{title:"用户管理",users:"用户列表",role:"角色",status:"状态",actions:"操作",active:"正常",disabled:"已禁用",disable:"禁用",enable:"启用",delete:"删除用户",confirmDisable:"确定要禁用此用户吗?",confirmEnable:"确定要启用此用户吗?",confirmDelete:"确定要删除此用户吗?所有数据将被永久删除。",allowRegistration:"允许新用户注册",allowRegistrationDesc:"关闭后,新用户将无法注册账号",admin:"管理员",user:"普通用户",createdAt:"注册时间",stats:"统计",nameEmail:"姓名/邮箱",errors:"错题",practiceCount:"练习",dashboard:{title:"管理员仪表盘",subtitle:"查看全站用户和错题统计",totalUsers:"总用户数",totalErrors:"总错题数",totalPractice:"总练习数",totalNotebooks:"总错题本数",recentTrend:"最近 7 天录入趋势",subjectDistribution:"学科错题分布",masteryDistribution:"掌握度分布",masteryNew:"未掌握",masteryReviewing:"复习中",masteryMastered:"已掌握",userList:"用户列表",userListDesc:"所有注册用户的错题录入情况",userName:"用户名",email:"邮箱",notebooks:"错题本",errors:"错题",practice:"练习",status:"状态",registeredAt:"注册时间",actions:"操作",viewDetail:"查看详情",recent7Days:"近7天录入",recentErrors:"最近录入的错题",userNotebooks:"错题本列表",noData:"暂无数据",retry:"重试"}},auth:{email:"邮箱",password:"密码",confirmPassword:"确认密码",name:"姓名",educationStage:"教育阶段",enrollmentYear:"入学年份",selectStage:"请选择",primary:"小学",juniorHigh:"初中",seniorHigh:"高中",university:"大学",login:{title:"登录到错题本",failed:"登录失败,请检查邮箱和密码",error:"发生错误,请重试",loggingIn:"登录中...",action:"登录",noAccount:"还没有账号?",registerNow:"立即注册"},register:{title:"注册新账号",passwordMismatch:"两次密码不一致",emailExists:"该邮箱已被注册",success:"注册成功!请登录",failed:"注册失败",disabled:"注册已关闭",disabledMessage:"管理员已关闭新用户注册功能。如需账号,请联系管理员。",backToLogin:"返回登录",registering:"注册中...",action:"注册",hasAccount:"已有账号?",loginHere:"去登录"}},printPreview:{title:"打印预览",questionCount:"{count} 道题",imageScale:"图片比例",showQuestionText:"原题文字",showAnswers:"显示答案",showAnalysis:"显示解析",showTags:"显示知识点",printButton:"打印 / 保存 PDF",questionNumber:"题目 {num}",source:"来源 {id}",paperLevel:"试卷等级",knowledgePoints:"知识点",selectItems:"选择题目",selectAll:"全选",clearSelection:"清空选择",referenceAnswer:"参考答案",analysis:"解析",noItems:"没有符合条件的错题",noSelection:"当前未选择任何题目"},modelSelector:{modelName:"模型名称",selectFromList:"从列表中选择",selectModel:"选择模型",customInput:"自定义输入...",enterApiKeyFirst:"请先填写API Key",noVisionModel:"未找到支持vision的模型,请手动输入",fetchFailed:"获取模型列表失败",enterManually:",请手动输入"},pagination:{showing:"显示第 {start}-{end} 条,共 {total} 条",first:"首页",prev:"上一页",next:"下一页",last:"末页"},shortId:{label:"ID",copy:"复制 ID",copied:"已复制 ID",locateTitle:"按 ID 定位题目",locatePlaceholder:"输入 6 位题目 ID",locate:"定位",notFound:"没有找到这个 ID 对应的题目",invalid:"题目 ID 为 6 位字母或数字",searchHint:"输入 6 位题目 ID 后按回车可直接打开该题"},mastery:{probability:"已掌握概率",notEvaluated:"尚未评估",estimated:"估算",aiEvaluated:"AI 评估",evaluatedAt:"评估时间",pending:"正在重新评估…",history:"举一反三记录",noHistory:"暂无举一反三记录",result:"结果",date:"时间",difficulty:"难度",source:"来源",results:{correct:"做对",wrong:"做错",not_attempted:"不会做"},sources:{practice:"单题练习",manual:"手动录入",exam:"试卷",duplicate_import:"重复导入做错"},addRecord:"录入结果",recordDate:"日期",deleteRecord:"删除记录",deleteRecordConfirm:"删除这条记录?掌握概率会重新评估。",deleteRecordFailed:"删除记录失败",markResult:"这道题做得怎么样?",suggested:"根据你的答案预选",saveResult:"保存结果",resultSaved:"结果已保存,稍后会重新评估掌握概率",resultSaveFailed:"保存结果失败",viewQuestion:"查看题目",thresholdHint:"掌握概率达到 80% 时自动标记为已掌握"},importFlow:{imported:"已导入错题本「{notebook}」,题目 ID:{id}",duplicate:"当前题目重复,已在已有题目的举一反三记录中记录本次相同题目的做错信息,未重复导入。",viewItem:"查看题目",continueUpload:"继续上传",confirmBeforeImport:"导入前人工确认",confirmBeforeImportDesc:"关闭时,识别完成的题目会直接保存到错题本。",enableGeogebra:"GeoGebra 动态演示",enableGeogebraDesc:"开启后,题目页面会显示 GeoGebra 动态演示区域,可由 AI 为题目生成交互式图形。",enableSvgAnimation:"SVG 动画讲解",enableSvgAnimationDesc:"开启后,题目页面会显示 SVG 动画讲解区域,可由 AI 为题目生成分步骤的动画讲解。",preferenceSaved:"设置已保存",preferenceSaveFailed:"保存设置失败",thresholdLabel:"题目判重相似度阈值",thresholdDescription:"默认 90%。比较时会忽略 AI 附加的图示描述和填空横线长短。相似度严格大于此值时不再导入,并记录本次做错。支持 1%~100%,最多两位小数;设为 100% 时不自动判重。",thresholdInvalid:"请输入 1~100 之间的数值,最多两位小数。",thresholdLoadFailed:"读取已保存的阈值失败,请重试。",saveThreshold:"保存阈值",retryLoad:"重新加载"},questionSimilarity:{title:"比较相似度",description:"选择两道题,使用与导入判重相同的方法比较完整题干。本次比较不会新增做错记录。",selectTwo:"请选择恰好两道题进行相似度比较。",selectQuestion:"选择题目 {id}",score:"题目相似度",threshold:"当前判重阈值:{threshold}%",duplicate:"按当前阈值,这两道题会被判为重复题目。",different:"按当前阈值,这两道题会分别导入。",missingText:"所选题目缺少可比较的题干,请先补充题目文字。",failed:"相似度比较失败,请重试。",retry:"重新比较",question:"第 {index} 道题"},batchImport:{singleMode:"单题裁剪",multiMode:"多题框选",hint:"在图片上拖动,为每道题画一个框;一个框对应一道题。",regionCount:"已框选 {count} 题",noRegions:"请至少框选一道题",clear:"清空",removeRegion:"删除第 {index} 个框",start:"导入 {count} 道题",title:"批量导入",summary:"已完成 {done}/{total},失败 {failed}",status:{pending:"等待中",analyzing:"识别中…",saving:"保存中…",success:"已导入",failed:"失败"},retry:"重试",retryFailed:"重试失败的题",finish:"完成",question:"第 {index} 题"},exam:{nav:"错题试卷",title:"错题试卷",subtitle:"从错题中随机抽题,用举一反三生成一套可打印的测试试卷。",create:"新建试卷",createTitle:"生成试卷",list:"我的试卷",empty:"还没有试卷。",notebooks:"错题本",selectAll:"全选",tags:"知识点(可选)",tagsPlaceholder:"只抽取带这些知识点的题目",scope:"题目范围",scopes:{unmastered:"未掌握",mastered:"已掌握",all:"全部"},pickRule:"抽题规则",pickRules:{least_practiced:"优先练习较少",random:"完全随机"},pickRuleHints:{least_practiced:"举一反三记录越少的题目越优先抽到,次数相同时随机。",random:"所有符合条件的题目被抽到的机会相同。"},count:"题目数量",difficulty:"难度",titleLabel:"试卷标题(可选)",generate:"生成试卷",creating:"正在创建…",noSource:"没有符合条件的错题。",fewerThanRequested:"符合条件的错题只有 {actual} 道,试卷共 {actual} 题。",noNotebook:"请至少选择一个错题本",status:{generating:"生成中",ready:"已完成",partial:"部分失败",failed:"生成失败"},progress:"已生成 {ready}/{total}",questionCount:"共 {count} 题",recorded:"已录入结果",notRecorded:"未录入结果",source:"来源",sourceDeleted:"原题已删除",questionFailed:"生成失败",questionPending:"生成中…",retryFailed:"重新生成失败的题",regenerateQuestion:"重新生成题目",regenerateAnswer:"重新生成解答",regenerating:"生成中…",regenerateQuestionConfirm:"将由 AI 重新生成一道新题及其答案和解析,并替换当前题目。确定继续吗?",regenerateAnswerConfirm:"将由 AI 重新生成本题的答案和解析,题目不变,已录入的结果保留。确定继续吗?",regenerateHasResults:"本题已录入结果,只能重新生成解答",regenerateFailed:"重新生成失败,请稍后重试",print:"打印 / 导出",delete:"删除",deleteConfirm:"确定删除这份试卷吗?已录入的结果仍保留在各题的举一反三记录中。",showAnswer:"答案",recordResults:"录入结果",takenAt:"考试日期",saveResults:"保存结果",resultsSaved:"结果已保存,稍后会重新评估掌握概率",resultsSaveFailed:"保存结果失败",recordHint:"每次保存都会新增一次作答记录,未选择结果的题目不记录",attemptLabel:"第 {n} 次",noResultSelected:"请至少为一道题选择结果",cancel:"取消",notFound:"试卷不存在",back:"返回",printTitle:"打印预览",includeAnswers:"包含答案页",printNow:"打印",downloadHtml:"下载 HTML",nameLine:"姓名",dateLine:"日期",scoreLine:"得分",answerKey:"参考答案与解析",answerLabel:"答案",analysisLabel:"解析",sourceLabel:"来源 ID",notReadyHint:"生成失败的题目不会出现在打印稿中。"},figure:{alt:"题目配图",regenerate:"AI 重新生成配图",regenerating:"生成配图中…",noFigure:"AI 判断本题没有配图",failed:"生成配图失败",noImage:"没有原题图片,无法生成配图"},svgAnimation:{title:"SVG 动画讲解",alt:"动画讲解",hint:"AI 将按解题思路分步骤生成 SVG 动画讲解",generate:"生成动画讲解",generating:"生成动画中,约需几分钟…",regenerate:"重新生成",replay:"重播",play:"播放",pause:"暂停",progress:"动画进度",fullscreen:"全屏",exitFullscreen:"退出全屏",delete:"删除",confirmDelete:"确定删除已生成的 SVG 动画讲解吗?删除后无法恢复。",deleteFailed:"删除动画讲解失败",failed:"生成动画讲解失败,请稍后重试",noQuestionText:"题目文字为空,无法生成动画讲解",invalid:"AI 未返回有效的动画,请重试"},backgroundTasks:{title:"后台任务",description:"识别题目、AI 生成等耗时事务的进度。离开页面后,事务仍会在服务器上继续执行。",empty:"当前没有后台任务",progress:"{done} / {total}",failedCount:"失败 {count} 个",startedAt:"开始于 {time}",elapsed:"用时 {time}",view:"查看",clearFinished:"清除已结束",retentionHint:"已结束的事务保留 30 分钟;服务重启后列表清空。",status:{running:"进行中",succeeded:"已完成",failed:"失败"},kinds:{analyze:"题目导入中(AI 识别)",batch_upload:"批量上传识别",data_import:"导入备份数据",svg_animation:"SVG 动画讲解生成",reanswer:"重新生成解答",fix_latex:"修复 LaTeX",figure:"重新生成配图",geogebra:"生成 GeoGebra 演示",retag:"重新生成知识点",retag_notebook:"错题本批量重新生成知识点",practice:"生成举一反三题目",exam:"生成试卷"},errors:{NO_VALID_ANIMATION:"AI 未返回有效的动画",ALL_FAILED:"全部失败",NO_QUESTION_TEXT:"题目文字为空",NO_TAGS_SELECTED:"AI 没有选出知识点",NO_AVAILABLE_TAGS:"没有可用的知识点"}},replaceImage:{replace:"替换原题图片",add:"上传原题图片",uploading:"上传中…",confirm:"确定替换原题图片吗?原图片会被覆盖,无法恢复。",done:"已替换原题图片。如需按新图片重绘配图,请点「AI 重新生成配图」。",invalid:"请选择 PNG、JPEG、WebP 或 GIF 图片",failed:"替换图片失败"},reanswerItem:{button:"重新生成完整解答",running:"生成解答中…",confirm:"将由 AI 重新生成完整的答案和解析,并覆盖当前内容;知识点、错误解答和错因分析保持不变。确定继续吗?",failed:"重新生成解答失败,请稍后重试",noQuestionText:"题目文字为空,无法生成解答"},fixLatex:{button:"修复 LaTeX",running:"修复公式中…",issuesFound:"检测到 {count} 处 LaTeX 问题",noIssues:"未发现 LaTeX 语法错误",fixedAll:"已修复以下内容中的公式:{fields}",fixedPartly:"已修复以下内容中的公式:{fields}。仍有 {count} 处无法自动修复,请手工编辑。",notFixed:"AI 未能自动修复公式,已保留原内容,请手工编辑。",failed:"修复 LaTeX 失败,请稍后重试",fields:{questionText:"题目",answerText:"答案",analysis:"解析",wrongAnswerText:"错误解答",mistakeAnalysis:"错因分析"}},markdownEditor:{modeLabel:"编辑视图",source:"源代码",preview:"预览",empty:"暂无内容",doubleClickToEdit:"双击切换到源代码编辑"},geogebra:{delete:"删除",confirmDelete:"确定删除已生成的 GeoGebra 动态演示吗?删除后无法恢复。",deleteFailed:"删除 GeoGebra 演示失败"},difficulty:{label:"难度",unrated:"未评级",starsLabel:"{n} 星",setStars:"设为 {n} 星",clearHint:"再次点击当前星级可清除",saveFailed:"保存难度失败"},retag:{notebookButton:"重新识别知识点和难度",notebookConfirm:"AI 将根据当前知识点库,为本错题本中的每道题重新选择知识点并评定难度星级:替换原有系统标签和星级,保留你添加的自定义标签。是否继续?",progress:"正在重新识别知识点和难度:{done}/{total}",finished:"知识点和难度已重新识别:成功 {success} 道,失败 {failed} 道",empty:"错题本中还没有题目",itemButton:"AI 重新识别",itemRunning:"生成中…",itemFailed:"重新识别知识点和难度失败",noTags:"AI 未能从知识点库中找到匹配的知识点",suggestButton:"AI 识别标签",suggestRunning:"识别中…"}}},o=(0,a.createContext)(void 0);e.s(["LanguageProvider",0,function({children:e}){let[s,n]=(0,a.useState)("zh");(0,a.useEffect)(()=>{let e=localStorage.getItem("app-language");e&&n(e)},[]);let i={language:s,setLanguage:e=>{n(e),localStorage.setItem("app-language",e)},t:r[s]};return(0,t.jsx)(o.Provider,{value:i,children:e})},"useLanguage",0,function(){let e=(0,a.useContext)(o);if(void 0===e)throw Error("useLanguage must be used within a LanguageProvider");return e}],11110)},75157,7670,e=>{"use strict";var t;let a,r,o,s,n;function i(){for(var e,t,a=0,r="",o=arguments.length;a<o;a++)(e=arguments[a])&&(t=function e(t){var a,r,o="";if("string"==typeof t||"number"==typeof t)o+=t;else if("object"==typeof t)if(Array.isArray(t)){var s=t.length;for(a=0;a<s;a++)t[a]&&(r=e(t[a]))&&(o&&(o+=" "),o+=r)}else for(r in t)t[r]&&(o&&(o+=" "),o+=r);return o}(e))&&(r&&(r+=" "),r+=t);return r}e.s(["clsx",0,i],7670);let l=(e=new Map,t=null,a)=>({nextPart:e,validators:t,classGroupId:a}),d=[],c=(e,t,a)=>{if(0==e.length-t)return a.classGroupId;let r=e[t],o=a.nextPart.get(r);if(o){let a=c(e,t+1,o);if(a)return a}let s=a.validators;if(null===s)return;let n=0===t?e.join("-"):e.slice(t).join("-"),i=s.length;for(let e=0;e<i;e++){let t=s[e];if(t.validator(n))return t.classGroupId}},u=(e,t)=>{let a=l();for(let r in e)m(e[r],a,r,t);return a},m=(e,t,a,r)=>{let o=e.length;for(let s=0;s<o;s++)g(e[s],t,a,r)},g=(e,t,a,r)=>{"string"==typeof e?p(e,t,a):"function"==typeof e?h(e,t,a,r):f(e,t,a,r)},p=(e,t,a)=>{(""===e?t:b(t,e)).classGroupId=a},h=(e,t,a,r)=>{y(e)?m(e(r),t,a,r):(null===t.validators&&(t.validators=[]),t.validators.push({classGroupId:a,validator:e}))},f=(e,t,a,r)=>{let o=Object.entries(e),s=o.length;for(let e=0;e<s;e++){let[s,n]=o[e];m(n,b(t,s),a,r)}},b=(e,t)=>{let a=e,r=t.split("-"),o=r.length;for(let e=0;e<o;e++){let t=r[e],o=a.nextPart.get(t);o||(o=l(),a.nextPart.set(t,o)),a=o}return a},y=e=>"isThemeGetter"in e&&!0===e.isThemeGetter,w=[],A=(e,t,a,r,o)=>({modifiers:e,hasImportantModifier:t,baseClassName:a,maybePostfixModifierPosition:r,isExternal:o}),k=/\s+/,v=e=>{let t;if("string"==typeof e)return e;let a="";for(let r=0;r<e.length;r++)e[r]&&(t=v(e[r]))&&(a&&(a+=" "),a+=t);return a},I=[],x=e=>{let t=t=>t[e]||I;return t.isThemeGetter=!0,t},S=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,R=/^\((?:(\w[\w-]*):)?(.+)\)$/i,T=/^\d+\/\d+$/,E=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,D=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,N=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,P=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,C=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,F=e=>T.test(e),L=e=>!!e&&!Number.isNaN(Number(e)),q=e=>!!e&&Number.isInteger(Number(e)),M=e=>e.endsWith("%")&&L(e.slice(0,-1)),_=e=>E.test(e),G=()=>!0,z=e=>D.test(e)&&!N.test(e),O=()=>!1,U=e=>P.test(e),H=e=>C.test(e),V=e=>!Q(e)&&!$(e),j=e=>eo(e,el,O),Q=e=>S.test(e),B=e=>eo(e,ed,z),W=e=>eo(e,ec,L),K=e=>eo(e,en,O),X=e=>eo(e,ei,H),J=e=>eo(e,em,U),$=e=>R.test(e),Z=e=>es(e,ed),Y=e=>es(e,eu),ee=e=>es(e,en),et=e=>es(e,el),ea=e=>es(e,ei),er=e=>es(e,em,!0),eo=(e,t,a)=>{let r=S.exec(e);return!!r&&(r[1]?t(r[1]):a(r[2]))},es=(e,t,a=!1)=>{let r=R.exec(e);return!!r&&(r[1]?t(r[1]):a)},en=e=>"position"===e||"percentage"===e,ei=e=>"image"===e||"url"===e,el=e=>"length"===e||"size"===e||"bg-size"===e,ed=e=>"length"===e,ec=e=>"number"===e,eu=e=>"family-name"===e,em=e=>"shadow"===e,eg=(t=()=>{let e=x("color"),t=x("font"),a=x("text"),r=x("font-weight"),o=x("tracking"),s=x("leading"),n=x("breakpoint"),i=x("container"),l=x("spacing"),d=x("radius"),c=x("shadow"),u=x("inset-shadow"),m=x("text-shadow"),g=x("drop-shadow"),p=x("blur"),h=x("perspective"),f=x("aspect"),b=x("ease"),y=x("animate"),w=()=>["auto","avoid","all","avoid-page","page","left","right","column"],A=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],k=()=>[...A(),$,Q],v=()=>["auto","hidden","clip","visible","scroll"],I=()=>["auto","contain","none"],S=()=>[$,Q,l],R=()=>[F,"full","auto",...S()],T=()=>[q,"none","subgrid",$,Q],E=()=>["auto",{span:["full",q,$,Q]},q,$,Q],D=()=>[q,"auto",$,Q],N=()=>["auto","min","max","fr",$,Q],P=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],C=()=>["start","end","center","stretch","center-safe","end-safe"],z=()=>["auto",...S()],O=()=>[F,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...S()],U=()=>[e,$,Q],H=()=>[...A(),ee,K,{position:[$,Q]}],eo=()=>["no-repeat",{repeat:["","x","y","space","round"]}],es=()=>["auto","cover","contain",et,j,{size:[$,Q]}],en=()=>[M,Z,B],ei=()=>["","none","full",d,$,Q],el=()=>["",L,Z,B],ed=()=>["solid","dashed","dotted","double"],ec=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eu=()=>[L,M,ee,K],em=()=>["","none",p,$,Q],eg=()=>["none",L,$,Q],ep=()=>["none",L,$,Q],eh=()=>[L,$,Q],ef=()=>[F,"full",...S()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[_],breakpoint:[_],color:[G],container:[_],"drop-shadow":[_],ease:["in","out","in-out"],font:[V],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[_],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[_],shadow:[_],spacing:["px",L],text:[_],"text-shadow":[_],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",F,Q,$,f]}],container:["container"],columns:[{columns:[L,Q,$,i]}],"break-after":[{"break-after":w()}],"break-before":[{"break-before":w()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:k()}],overflow:[{overflow:v()}],"overflow-x":[{"overflow-x":v()}],"overflow-y":[{"overflow-y":v()}],overscroll:[{overscroll:I()}],"overscroll-x":[{"overscroll-x":I()}],"overscroll-y":[{"overscroll-y":I()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:R()}],"inset-x":[{"inset-x":R()}],"inset-y":[{"inset-y":R()}],start:[{start:R()}],end:[{end:R()}],top:[{top:R()}],right:[{right:R()}],bottom:[{bottom:R()}],left:[{left:R()}],visibility:["visible","invisible","collapse"],z:[{z:[q,"auto",$,Q]}],basis:[{basis:[F,"full","auto",i,...S()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[L,F,"auto","initial","none",Q]}],grow:[{grow:["",L,$,Q]}],shrink:[{shrink:["",L,$,Q]}],order:[{order:[q,"first","last","none",$,Q]}],"grid-cols":[{"grid-cols":T()}],"col-start-end":[{col:E()}],"col-start":[{"col-start":D()}],"col-end":[{"col-end":D()}],"grid-rows":[{"grid-rows":T()}],"row-start-end":[{row:E()}],"row-start":[{"row-start":D()}],"row-end":[{"row-end":D()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":N()}],"auto-rows":[{"auto-rows":N()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...P(),"normal"]}],"justify-items":[{"justify-items":[...C(),"normal"]}],"justify-self":[{"justify-self":["auto",...C()]}],"align-content":[{content:["normal",...P()]}],"align-items":[{items:[...C(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...C(),{baseline:["","last"]}]}],"place-content":[{"place-content":P()}],"place-items":[{"place-items":[...C(),"baseline"]}],"place-self":[{"place-self":["auto",...C()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:z()}],mx:[{mx:z()}],my:[{my:z()}],ms:[{ms:z()}],me:[{me:z()}],mt:[{mt:z()}],mr:[{mr:z()}],mb:[{mb:z()}],ml:[{ml:z()}],"space-x":[{"space-x":S()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":S()}],"space-y-reverse":["space-y-reverse"],size:[{size:O()}],w:[{w:[i,"screen",...O()]}],"min-w":[{"min-w":[i,"screen","none",...O()]}],"max-w":[{"max-w":[i,"screen","none","prose",{screen:[n]},...O()]}],h:[{h:["screen","lh",...O()]}],"min-h":[{"min-h":["screen","lh","none",...O()]}],"max-h":[{"max-h":["screen","lh",...O()]}],"font-size":[{text:["base",a,Z,B]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,$,W]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",M,Q]}],"font-family":[{font:[Y,Q,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[o,$,Q]}],"line-clamp":[{"line-clamp":[L,"none",$,W]}],leading:[{leading:[s,...S()]}],"list-image":[{"list-image":["none",$,Q]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",$,Q]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ed(),"wavy"]}],"text-decoration-thickness":[{decoration:[L,"from-font","auto",$,B]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[L,"auto",$,Q]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:S()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",$,Q]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",$,Q]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:H()}],"bg-repeat":[{bg:eo()}],"bg-size":[{bg:es()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},q,$,Q],radial:["",$,Q],conic:[q,$,Q]},ea,X]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:en()}],"gradient-via-pos":[{via:en()}],"gradient-to-pos":[{to:en()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:ei()}],"rounded-s":[{"rounded-s":ei()}],"rounded-e":[{"rounded-e":ei()}],"rounded-t":[{"rounded-t":ei()}],"rounded-r":[{"rounded-r":ei()}],"rounded-b":[{"rounded-b":ei()}],"rounded-l":[{"rounded-l":ei()}],"rounded-ss":[{"rounded-ss":ei()}],"rounded-se":[{"rounded-se":ei()}],"rounded-ee":[{"rounded-ee":ei()}],"rounded-es":[{"rounded-es":ei()}],"rounded-tl":[{"rounded-tl":ei()}],"rounded-tr":[{"rounded-tr":ei()}],"rounded-br":[{"rounded-br":ei()}],"rounded-bl":[{"rounded-bl":ei()}],"border-w":[{border:el()}],"border-w-x":[{"border-x":el()}],"border-w-y":[{"border-y":el()}],"border-w-s":[{"border-s":el()}],"border-w-e":[{"border-e":el()}],"border-w-t":[{"border-t":el()}],"border-w-r":[{"border-r":el()}],"border-w-b":[{"border-b":el()}],"border-w-l":[{"border-l":el()}],"divide-x":[{"divide-x":el()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":el()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ed(),"hidden","none"]}],"divide-style":[{divide:[...ed(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...ed(),"none","hidden"]}],"outline-offset":[{"outline-offset":[L,$,Q]}],"outline-w":[{outline:["",L,Z,B]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",c,er,J]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",u,er,J]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:el()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[L,B]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":el()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",m,er,J]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[L,$,Q]}],"mix-blend":[{"mix-blend":[...ec(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ec()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[L]}],"mask-image-linear-from-pos":[{"mask-linear-from":eu()}],"mask-image-linear-to-pos":[{"mask-linear-to":eu()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":eu()}],"mask-image-t-to-pos":[{"mask-t-to":eu()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":eu()}],"mask-image-r-to-pos":[{"mask-r-to":eu()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":eu()}],"mask-image-b-to-pos":[{"mask-b-to":eu()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":eu()}],"mask-image-l-to-pos":[{"mask-l-to":eu()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":eu()}],"mask-image-x-to-pos":[{"mask-x-to":eu()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":eu()}],"mask-image-y-to-pos":[{"mask-y-to":eu()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[$,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":eu()}],"mask-image-radial-to-pos":[{"mask-radial-to":eu()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":A()}],"mask-image-conic-pos":[{"mask-conic":[L]}],"mask-image-conic-from-pos":[{"mask-conic-from":eu()}],"mask-image-conic-to-pos":[{"mask-conic-to":eu()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:H()}],"mask-repeat":[{mask:eo()}],"mask-size":[{mask:es()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",$,Q]}],filter:[{filter:["","none",$,Q]}],blur:[{blur:em()}],brightness:[{brightness:[L,$,Q]}],contrast:[{contrast:[L,$,Q]}],"drop-shadow":[{"drop-shadow":["","none",g,er,J]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",L,$,Q]}],"hue-rotate":[{"hue-rotate":[L,$,Q]}],invert:[{invert:["",L,$,Q]}],saturate:[{saturate:[L,$,Q]}],sepia:[{sepia:["",L,$,Q]}],"backdrop-filter":[{"backdrop-filter":["","none",$,Q]}],"backdrop-blur":[{"backdrop-blur":em()}],"backdrop-brightness":[{"backdrop-brightness":[L,$,Q]}],"backdrop-contrast":[{"backdrop-contrast":[L,$,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":["",L,$,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[L,$,Q]}],"backdrop-invert":[{"backdrop-invert":["",L,$,Q]}],"backdrop-opacity":[{"backdrop-opacity":[L,$,Q]}],"backdrop-saturate":[{"backdrop-saturate":[L,$,Q]}],"backdrop-sepia":[{"backdrop-sepia":["",L,$,Q]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",$,Q]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[L,"initial",$,Q]}],ease:[{ease:["linear","initial",b,$,Q]}],delay:[{delay:[L,$,Q]}],animate:[{animate:["none",y,$,Q]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[h,$,Q]}],"perspective-origin":[{"perspective-origin":k()}],rotate:[{rotate:eg()}],"rotate-x":[{"rotate-x":eg()}],"rotate-y":[{"rotate-y":eg()}],"rotate-z":[{"rotate-z":eg()}],scale:[{scale:ep()}],"scale-x":[{"scale-x":ep()}],"scale-y":[{"scale-y":ep()}],"scale-z":[{"scale-z":ep()}],"scale-3d":["scale-3d"],skew:[{skew:eh()}],"skew-x":[{"skew-x":eh()}],"skew-y":[{"skew-y":eh()}],transform:[{transform:[$,Q,"","none","gpu","cpu"]}],"transform-origin":[{origin:k()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ef()}],"translate-x":[{"translate-x":ef()}],"translate-y":[{"translate-y":ef()}],"translate-z":[{"translate-z":ef()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",$,Q]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",$,Q]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[L,Z,B,W]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},n=e=>{let t=r(e);if(t)return t;let s=((e,t)=>{let{parseClassName:a,getClassGroupId:r,getConflictingClassGroupIds:o,sortModifiers:s}=t,n=[],i=e.trim().split(k),l="";for(let e=i.length-1;e>=0;e-=1){let t=i[e],{isExternal:d,modifiers:c,hasImportantModifier:u,baseClassName:m,maybePostfixModifierPosition:g}=a(t);if(d){l=t+(l.length>0?" "+l:l);continue}let p=!!g,h=r(p?m.substring(0,g):m);if(!h){if(!p||!(h=r(m))){l=t+(l.length>0?" "+l:l);continue}p=!1}let f=0===c.length?"":1===c.length?c[0]:s(c).join(":"),b=u?f+"!":f,y=b+h;if(n.indexOf(y)>-1)continue;n.push(y);let w=o(h,p);for(let e=0;e<w.length;++e){let t=w[e];n.push(b+t)}l=t+(l.length>0?" "+l:l)}return l})(e,a);return o(e,s),s},s=e=>{var i;let l;return r=(a={cache:(e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,a=Object.create(null),r=Object.create(null),o=(o,s)=>{a[o]=s,++t>e&&(t=0,r=a,a=Object.create(null))};return{get(e){let t=a[e];return void 0!==t?t:void 0!==(t=r[e])?(o(e,t),t):void 0},set(e,t){e in a?a[e]=t:o(e,t)}}})((i=[].reduce((e,t)=>t(e),t())).cacheSize),parseClassName:(e=>{let{prefix:t,experimentalParseClassName:a}=e,r=e=>{let t,a=[],r=0,o=0,s=0,n=e.length;for(let i=0;i<n;i++){let n=e[i];if(0===r&&0===o){if(":"===n){a.push(e.slice(s,i)),s=i+1;continue}if("/"===n){t=i;continue}}"["===n?r++:"]"===n?r--:"("===n?o++:")"===n&&o--}let i=0===a.length?e:e.slice(s),l=i,d=!1;return i.endsWith("!")?(l=i.slice(0,-1),d=!0):i.startsWith("!")&&(l=i.slice(1),d=!0),A(a,d,l,t&&t>s?t-s:void 0)};if(t){let e=t+":",a=r;r=t=>t.startsWith(e)?a(t.slice(e.length)):A(w,!1,t,void 0,!0)}if(a){let e=r;r=t=>a({className:t,parseClassName:e})}return r})(i),sortModifiers:(l=new Map,i.orderSensitiveModifiers.forEach((e,t)=>{l.set(e,1e6+t)}),e=>{let t=[],a=[];for(let r=0;r<e.length;r++){let o=e[r],s="["===o[0],n=l.has(o);s||n?(a.length>0&&(a.sort(),t.push(...a),a=[]),t.push(o)):a.push(o)}return a.length>0&&(a.sort(),t.push(...a)),t}),...(e=>{let t=(e=>{let{theme:t,classGroups:a}=e;return u(a,t)})(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith("[")&&e.endsWith("]")){var a;let t,r,o;return -1===(a=e).slice(1,-1).indexOf(":")?void 0:(r=(t=a.slice(1,-1)).indexOf(":"),(o=t.slice(0,r))?"arbitrary.."+o:void 0)}let r=e.split("-"),o=+(""===r[0]&&r.length>1);return c(r,o,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],o=a[e];if(t){if(o){let e=Array(o.length+t.length);for(let t=0;t<o.length;t++)e[t]=o[t];for(let a=0;a<t.length;a++)e[o.length+a]=t[a];return e}return t}return o||d}return a[e]||d}}})(i)}).cache.get,o=a.cache.set,s=n,n(e)},(...e)=>s(((...e)=>{let t,a,r=0,o="";for(;r<e.length;)(t=e[r++])&&(a=v(t))&&(o&&(o+=" "),o+=a);return o})(...e)));e.s(["cn",0,function(...e){return eg(i(e))}],75157)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95119,e=>{"use strict";var t=e.i(18050),s=e.i(11445),r=e.i(15288),n=e.i(11110),c=e.i(35209);e.s(["default",0,function(){let{t:e}=(0,n.useLanguage)();return(0,c.usePageTitle)(e.pageTitle.latexTest),(0,t.jsxs)("div",{className:"container mx-auto p-8 max-w-4xl",children:[(0,t.jsx)("h1",{className:"text-3xl font-bold mb-6",children:"LaTeX 渲染测试"}),(0,t.jsx)("div",{className:"space-y-6",children:[{title:"单个$符号(行内公式)",content:"(1) $a = -12$, $b = 8$, $c = 16$ (2) $t = 12$ (3) $M = \\frac{72}{11}$"},{title:"双$符号(独立公式)",content:"答案:\n\n$$M = \\frac{72}{11}$$"},{title:"混合格式",content:"解:\n\n(1) $a = -12, b = 8, c = 16$\n\n(2) 当 $t = 12$ 时\n\n(3) $M = \\frac{72}{11}$"},{title:"复杂公式",content:"二次函数: $y = ax^2 + bx + c$\n\n求根公式: $$x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}$$"},{title:"您的实际答案格式",content:"(1) $a = -12$, $b = 8$, $c = 16$ (2) $@t = 12$ (3) $M = \\frac{72}{11}$"}].map((e,n)=>(0,t.jsxs)(r.Card,{children:[(0,t.jsx)(r.CardHeader,{children:(0,t.jsx)(r.CardTitle,{className:"text-lg",children:e.title})}),(0,t.jsxs)(r.CardContent,{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-semibold text-muted-foreground mb-2",children:"原始文本:"}),(0,t.jsx)("pre",{className:"bg-muted p-3 rounded text-xs overflow-x-auto",children:e.content})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h4",{className:"text-sm font-semibold text-muted-foreground mb-2",children:"渲染结果:"}),(0,t.jsx)("div",{className:"border rounded p-4 bg-background",children:(0,t.jsx)(s.MarkdownRenderer,{content:e.content})})]})]})]},n))}),(0,t.jsxs)(r.Card,{className:"mt-8 border-yellow-500/50 bg-yellow-50/50",children:[(0,t.jsx)(r.CardHeader,{children:(0,t.jsx)(r.CardTitle,{className:"text-yellow-700",children:"💡 LaTeX 公式格式说明"})}),(0,t.jsxs)(r.CardContent,{className:"text-sm space-y-2",children:[(0,t.jsxs)("p",{children:["• ",(0,t.jsx)("strong",{children:"行内公式"}),": 使用单个 ",(0,t.jsx)("code",{children:"$"})," 包裹,如 ",(0,t.jsx)("code",{children:"$x^2$"})]}),(0,t.jsxs)("p",{children:["• ",(0,t.jsx)("strong",{children:"独立公式"}),": 使用双 ",(0,t.jsx)("code",{children:"$$"})," 包裹,如 ",(0,t.jsxs)("code",{children:["$$\\\\frac","{a}","{b}","$$"]})]}),(0,t.jsxs)("p",{children:["• ",(0,t.jsx)("strong",{children:"分数"}),": ",(0,t.jsxs)("code",{children:["\\\\frac","{分子}","{分母}"]})]}),(0,t.jsxs)("p",{children:["• ",(0,t.jsx)("strong",{children:"根号"}),": ",(0,t.jsxs)("code",{children:["\\\\sqrt","{内容}"]})]}),(0,t.jsxs)("p",{children:["• ",(0,t.jsx)("strong",{children:"上标"}),": ",(0,t.jsx)("code",{children:"x^2"})," 或 ",(0,t.jsxs)("code",{children:["x^","{2n}"]})]}),(0,t.jsxs)("p",{children:["• ",(0,t.jsx)("strong",{children:"下标"}),": ",(0,t.jsx)("code",{children:"x_1"})," 或 ",(0,t.jsxs)("code",{children:["x_","{n+1}"]})]})]})]})]})}])},15288,e=>{"use strict";var t=e.i(18050),s=e.i(75157);e.s(["Card",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card",className:(0,s.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...r})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-6",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)("text-muted-foreground text-sm",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)("leading-none font-semibold",e),...r})}])},35209,e=>{"use strict";var t=e.i(71645),s=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t:r}=(0,s.useLanguage)(),n=[r.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=n},[n])}])}]);