@cortex-js/compute-engine 0.55.3 → 0.55.4

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 (258) hide show
  1. package/dist/compile.esm.js +525 -31
  2. package/dist/compile.min.esm.js +440 -70
  3. package/dist/compile.min.umd.cjs +439 -69
  4. package/dist/compile.umd.cjs +525 -31
  5. package/dist/compute-engine.esm.js +567 -43
  6. package/dist/compute-engine.min.esm.js +433 -63
  7. package/dist/compute-engine.min.umd.cjs +433 -63
  8. package/dist/compute-engine.umd.cjs +567 -43
  9. package/dist/core.esm.js +566 -42
  10. package/dist/core.min.esm.js +432 -62
  11. package/dist/core.min.umd.cjs +432 -62
  12. package/dist/core.umd.cjs +566 -42
  13. package/dist/interval.esm.js +2 -2
  14. package/dist/interval.min.esm.js +2 -2
  15. package/dist/interval.min.umd.cjs +2 -2
  16. package/dist/interval.umd.cjs +2 -2
  17. package/dist/latex-syntax.esm.js +43 -13
  18. package/dist/latex-syntax.min.esm.js +5 -5
  19. package/dist/latex-syntax.min.umd.cjs +5 -5
  20. package/dist/latex-syntax.umd.cjs +43 -13
  21. package/dist/math-json.esm.js +2 -2
  22. package/dist/math-json.min.esm.js +2 -2
  23. package/dist/math-json.min.umd.cjs +2 -2
  24. package/dist/math-json.umd.cjs +2 -2
  25. package/dist/numerics.esm.js +2 -2
  26. package/dist/numerics.min.esm.js +2 -2
  27. package/dist/numerics.min.umd.cjs +2 -2
  28. package/dist/numerics.umd.cjs +2 -2
  29. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  30. package/dist/types/big-decimal/index.d.ts +1 -1
  31. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  32. package/dist/types/big-decimal/utils.d.ts +1 -1
  33. package/dist/types/common/ansi-codes.d.ts +1 -1
  34. package/dist/types/common/configuration-change.d.ts +1 -1
  35. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  36. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  37. package/dist/types/common/interruptible.d.ts +1 -1
  38. package/dist/types/common/one-of.d.ts +1 -1
  39. package/dist/types/common/signals.d.ts +1 -1
  40. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  41. package/dist/types/common/type/boxed-type.d.ts +1 -1
  42. package/dist/types/common/type/lexer.d.ts +1 -1
  43. package/dist/types/common/type/parse.d.ts +1 -1
  44. package/dist/types/common/type/parser.d.ts +1 -1
  45. package/dist/types/common/type/primitive.d.ts +1 -1
  46. package/dist/types/common/type/reduce.d.ts +1 -1
  47. package/dist/types/common/type/serialize.d.ts +1 -1
  48. package/dist/types/common/type/subtype.d.ts +1 -1
  49. package/dist/types/common/type/type-builder.d.ts +1 -1
  50. package/dist/types/common/type/types.d.ts +1 -1
  51. package/dist/types/common/type/utils.d.ts +1 -1
  52. package/dist/types/common/utils.d.ts +1 -1
  53. package/dist/types/compile.d.ts +1 -1
  54. package/dist/types/compute-engine/assume.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  82. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  88. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  99. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  100. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  103. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  104. package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
  105. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  106. package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
  107. package/dist/types/compute-engine/compilation/fractal-orbit.d.ts +13 -0
  108. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  109. package/dist/types/compute-engine/compilation/gpu-target.d.ts +47 -1
  110. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  112. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/types.d.ts +48 -1
  114. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  115. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  116. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  117. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  118. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  119. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  120. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  121. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  133. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  134. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  135. package/dist/types/compute-engine/global-types.d.ts +1 -1
  136. package/dist/types/compute-engine/index.d.ts +1 -1
  137. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  138. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  139. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  140. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  141. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  142. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  143. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  144. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  145. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  146. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  147. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  148. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  149. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  150. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  151. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  170. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  172. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  173. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  174. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  175. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  176. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  177. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  178. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  179. package/dist/types/compute-engine/library/core.d.ts +1 -1
  180. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  181. package/dist/types/compute-engine/library/library.d.ts +1 -1
  182. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  183. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  184. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  185. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  186. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  187. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  188. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  189. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  190. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  191. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  192. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  193. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  194. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  195. package/dist/types/compute-engine/library/units.d.ts +1 -1
  196. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  197. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  198. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  199. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  200. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  201. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  202. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  203. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  204. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  205. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  206. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  207. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  208. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  209. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  210. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  211. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  212. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  218. package/dist/types/compute-engine/oeis.d.ts +1 -1
  219. package/dist/types/compute-engine/sequence.d.ts +1 -1
  220. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  221. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  222. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  223. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  224. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  225. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  226. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  227. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  228. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  229. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  230. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  231. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  232. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  233. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  234. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  235. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  236. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  237. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  238. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  239. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  240. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  241. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  242. package/dist/types/compute-engine/types-engine.d.ts +1 -1
  243. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  244. package/dist/types/compute-engine/types-expression.d.ts +1 -1
  245. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
  246. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  247. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  248. package/dist/types/compute-engine/types.d.ts +1 -1
  249. package/dist/types/compute-engine.d.ts +1 -1
  250. package/dist/types/core.d.ts +1 -1
  251. package/dist/types/interval.d.ts +1 -1
  252. package/dist/types/latex-syntax.d.ts +2 -2
  253. package/dist/types/math-json/symbols.d.ts +1 -1
  254. package/dist/types/math-json/types.d.ts +1 -1
  255. package/dist/types/math-json/utils.d.ts +1 -1
  256. package/dist/types/math-json.d.ts +2 -2
  257. package/dist/types/numerics.d.ts +1 -1
  258. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
- /** Compute Engine 0.55.3 */
2
- var xe=["Error","'missing'"];function oe(e){return!!(typeof e=="number"||ye(e)||typeof e=="string"&&ke(e))}function ye(e){return e!==null&&typeof e=="object"&&"num"in e}function Te(e){return e!==null&&typeof e=="object"&&"sym"in e}function vn(e){return e!==null&&typeof e=="object"&&"str"in e}function _t(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function be(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function I(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"?null:e.length>=2&&e.at(0)==="'"&&e.at(-1)==="'"?e.substring(1,e.length-1):ke(e)||Be(e)?null:e}function In(e){if(e==null||I(e)!==null)return null;let n=f(e);return n?[n,...h(e).map(t=>In(t)).filter(t=>t!==null)]:e}function f(e){return Array.isArray(e)?e[0]:e==null?"":be(e)?e.fn[0]:""}function h(e){return Array.isArray(e)?e.slice(1):e!==void 0&&be(e)?e.fn.slice(1):[]}function c(e,n){return Array.isArray(e)?e[n]??null:e===null||!be(e)?null:e.fn[n]??null}function A(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):be(e)?Math.max(0,e.fn.length-1):0}function Mn(e){return e==null?null:f(e)==="Hold"?c(e,1):e}function y(e){return typeof e=="string"&&Be(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:Te(e)?e.sym:null}function At(e){let n=f(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=h(e),r=I(t);return r?[r,i??"Nothing"]:null}return null}function Dn(e){if(e===null)return null;if(_t(e))return e;let n=At(e);if(n)return{[n[0]]:n[1]};if(f(e)==="Dictionary"){let t={},i=h(e);for(let r=1;r<A(e);r++){let s=At(i[r]);s&&(t[s[0]]=pr(s[1])??"Nothing")}return{dict:t}}return null}function Qe(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Sn(i)??"Nothing"]))}}function cr(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(e))return 1/0;if(/^(-infinity|-oo)$/.test(e))return-1/0;if(/\([0-9]+\)/.test(e)){let[n,t,i,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(e)}function N(e){return typeof e=="number"?e:typeof e=="string"&&ke(e)?cr(e):e!==void 0&&ye(e)?N(e.num):null}function Ee(e){if(e==null)return null;if(y(e)==="Half")return[1,2];let n=f(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=Ee(h(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=h(e);t=N(r)??NaN,i=N(s)??NaN}if(n==="Power"){let[r,s]=h(e),o=N(s);o===1?(t=N(r),i=1):o===-1&&(t=1,i=N(r))}if(n==="Multiply"){let[r,s]=h(e);if(f(s)==="Power"){let[o,a]=h(s);N(a)===-1&&(t=N(r),i=N(o))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function Ke(e,n){let t=null;if(Array.isArray(e)&&(t=e),be(e)&&(t=e.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(n(t[i])),i+=1;return r}function ge(e,n,t){let i=f(n),r=f(t);return i===e&&r===e?[e,...h(n),...h(t)]:i===e?[e,...h(n),t]:r===e?[e,n,...h(t)]:[e,n,t]}function ae(e){if(e==null)return null;let n=f(e);if(n==="Delimiter"){if(e=c(e,1),e===null)return[];if(n=f(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:h(e)}function P(e){return e==null||e==="Nothing"?!0:f(e)==="Sequence"&&A(e)===0}function M(e){return P(e)?xe:e}function Nn(e){return e[0]==="Square"?Nn(e.slice(1))+2:e.reduce((n,t)=>n+Re(t),0)}function Re(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||oe(e)||Te(e)||vn(e))return 1;if(Array.isArray(e))return Nn(e);if("fn"in e)return Nn(e.fn);let n=Dn(e);if(n){let t=Object.keys(n);return 1+t.length+t.reduce((i,r)=>i+Re(n[r]),0)}return 0}function ke(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(e)}function Be(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function wt(e){return e.length>=2&&e[0]==="'"&&e[e.length-1]==="'"?!0:!ke(e)&&!Be(e)}function Sn(e){if(typeof e=="string")return{str:e};if(typeof e=="number")return{num:e.toString()};if(typeof e=="boolean")return e?"True":"False";if(Array.isArray(e))return["List",...e.map(n=>Sn(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Sn(e[t])??"Nothing";return{dict:n}}return be(e)||Te(e)||ye(e)||vn(e)||_t(e)?e:null}function pr(e){return e==null?null:vn(e)?e.str:ye(e)?parseFloat(e.num):Te(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}var S=245,Oe=260,Q=270,L=275,C=390,q=600,Pn=650,Fe=700,An=810;function Jt(e){return!("kind"in e)||e.kind==="expression"}function Lt(e){return"kind"in e&&e.kind==="symbol"}function Ce(e){return"kind"in e&&e.kind==="matchfix"}function _n(e){return"kind"in e&&e.kind==="infix"}function en(e){return"kind"in e&&e.kind==="prefix"}function wn(e){return"kind"in e&&e.kind==="postfix"}function Rt(e){return"kind"in e&&e.kind==="environment"}function fr(e){let n=[];for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);if(i>=55296&&i<=56319){let r=e.charCodeAt(t+1);if(r>=56320&&r<=57343){let s=i-55296,o=r-56320;i=2**16+s*2**10+o,t++}}n.push(i)}return n}var nn=8205,Bt=[127462,127487];function Ot(e){return e===nn||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function dr(e){return e>=Bt[0]&&e<=Bt[1]}function Ft(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],t=fr(e),i=0;for(;i<t.length;){let r=t[i++],s=t[i];if(s===nn){let o=i-1;for(i+=2;t[i]===nn;)i+=2;n.push(String.fromCodePoint(...t.slice(o,2*i-o+1)))}else if(Ot(s)){let o=i-1;for(;Ot(t[i]);)i+=t[i]===nn?2:1;n.push(String.fromCodePoint(...t.slice(o,2*i-o-1)))}else dr(r)?(i+=1,n.push(String.fromCodePoint(...t.slice(i-2,2)))):n.push(String.fromCodePoint(r))}return n}var gr={"\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u207B":"-","\u2071":"i",\u207F:"n"},mr={"\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u208B":"-"},Jn=class{s;pos;obeyspaces=!1;constructor(n){n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),n=n.replace(/\u2212/g,"-"),n=n.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹⁻ⁱⁿ]+/g,t=>`^{${Array.from(t).map(r=>gr[r]).join("")}}`),n=n.replace(/[₀₁₂₃₄₅₆₇₈₉₋]+/g,t=>`_{${Array.from(t).map(r=>mr[r]).join("")}}`),this.s=Ft(n),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(n){let t;return typeof this.s=="string"?t=n.exec(this.s.slice(this.pos)):t=n.exec(this.s.slice(this.pos).join("")),t?.[0]?(this.pos+=t[0].length,t[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";let n=this.get();if(n==="\\"){if(!this.end()){let t=this.match(/^[a-zA-Z]+/);if(t)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(t=this.get(),t===" ")return"<space>";return"\\"+t}}else{if(n==="{")return"<{>";if(n==="}")return"<}>";if(n==="^"){if(this.peek()==="^"){this.get();let t=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(t)return String.fromCodePoint(parseInt(t.slice(t.lastIndexOf("^")+1),16))}return n}else if(n==="#"){if(!this.end()){let t=!1;if(/[0-9?]/.test(this.peek())&&(t=!0,this.pos+1<this.s.length)){let i=this.s[this.pos+1];t=/[^0-9A-Za-z]/.test(i)}return t?"#"+this.get():"#"}}else if(n==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return n}};function hr(e,n){let t=e.next();if(!t)return[];let i=[];if(t!=="\\relax"){if(t==="\\noexpand")t=e.next(),t&&i.push(t);else if(t==="\\obeyspaces")e.obeyspaces=!0;else if(t==="\\space"||t==="~")i.push("<space>");else if(t==="\\bgroup")i.push("<{>");else if(t==="\\egroup")i.push("<}>");else if(t==="\\string")t=e.next(),t&&(t[0]==="\\"?Array.from(t).forEach(r=>i.push(r==="\\"?"\\backslash":r)):t==="<{>"?i.push("\\{"):t==="<space>"?i.push("~"):t==="<}>"&&i.push("\\}"));else if(t==="\\csname"){for(;e.peek()==="<space>";)e.next();let r="",s=!1,o=[];do{if(o.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);o=F(n?.[a]??n?.["?"]??"\\placeholder{}",n),t=o[0]}else t=e.next(),o=t?[t]:[];s=o.length===0,!s&&t==="\\endcsname"&&(s=!0,o.shift()),s||(s=t==="<$>"||t==="<$$>"||t==="<{>"||t==="<}>"||!!t&&t.length>1&&t[0]==="\\"),s||(r+=o.shift())}while(!s);r&&i.push("\\"+r),i=i.concat(o)}else if(t!=="\\endcsname")if(t.length>1&&t[0]==="#"){let r=t.slice(1);i=i.concat(F(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else i.push(t)}return i}function F(e,n=[]){let t=e.toString().split(/\r?\n/),i="",r="";for(let a of t){i+=r,r=" ";let l=a.match(/((?:\\%)|[^%])*/);l!==null&&(i+=l[0])}let s=new Jn(i),o=[];do o.push(...hr(s,n));while(!s.end());return o}function tn(e){return F(e).length}function x(e){let n="",t="";for(let i of e)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=n),/\\[a-zA-Z]+\*?$/.test(i)?n=" ":n=""),t+=i.toString());return t}function le(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}function U(e){let n=[];if(Array.isArray(e))for(let i of e)Array.isArray(i)?n=[...n,...i]:n.push(i);else n=[e];return x(n.map(i=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[i]??i))}var me=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:S+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:S},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:S},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:S+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:S+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:S},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:S,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:S},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:S},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:S},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:S},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:S},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:S+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:S},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:S},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:S},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:S},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:S+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:S},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:S},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:S},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:S},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:S+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:S+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:S+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:S+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:S},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:S},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:S},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:S},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:S},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:S},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:S},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:S},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:S},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:S+5}];function Ln(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function Rn(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}var Ne=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],Bn=["indexed_collection","list","tuple"],rn=[...Bn,"collection","set","record","dictionary"],sn=["scalar",...Ne,"boolean","string"],On=["value",...rn,...sn],Fn=["expression","symbol","function",...On],ue=["any","unknown","nothing","never","error",...Fn];function Cn(e){return typeof e=="string"?ue.includes(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="function"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var $t=3,zt=1,qt=2,xr=4,yr=5,Tr=6,br=7,Er=8,kr=9,Nr=10,Sr=11;function R(e,n=0){if(typeof e=="string")return e;let t="";switch(e.kind){case"value":typeof e.value=="string"?t=`"${e.value}"`:typeof e.value=="boolean"?t=e.value?"true":"false":t=e.value.toString();break;case"reference":t=e.name;break;case"negation":t=`!${R(e.type,$t)}`;break;case"union":t=e.types.map(l=>R(l,zt)).join(" | ");break;case"intersection":t=e.types.map(l=>R(l,qt)).join(" & ");break;case"expression":t=`expression<${Ct(e.operator)}>`;break;case"symbol":t=`symbol<${Ct(e.name)}>`;break;case"numeric":Number.isFinite(e.lower)&&Number.isFinite(e.upper)?t=`${e.type}<${e.lower}..${e.upper}>`:Number.isFinite(e.lower)?t=`${e.type}<${e.lower}..>`:Number.isFinite(e.upper)?t=`${e.type}<..${e.upper}>`:t=`${e.type}`;break;case"list":if(e.dimensions&&typeof e.elements=="string"&&Ne.includes(e.elements)){if(e.dimensions===void 0)e.elements==="number"&&(t="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?t="vector":t=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?t=`vector<${R(e.elements)}>`:t=`vector<${R(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let l=e.dimensions;e.elements==="number"?l[0]<0&&l[1]<0?t="matrix":t=`matrix<${l[0]}x${l[1]}>`:l[0]<0&&l[1]<0?t=`matrix<${R(e.elements)}>`:t=`matrix<${R(e.elements)}^(${l[0]}x${l[1]})>`}}if(!t){let l=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${R(e.elements)}${l}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([l,u])=>`${l}: ${R(u)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${R(e.values)}>`;break;case"set":t=`set<${R(e.elements)}>`;break;case"collection":t=`collection<${R(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${R(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[l]=e.elements;t=`tuple<${Se(l)}>`}else t="tuple<"+e.elements.map(l=>Se(l)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(l=>Se(l)).join(", "):"",s=e.optArgs?e.optArgs.map(l=>Se(l)+"?").join(", "):"",o=e.variadicArg?e.variadicMin===0?`${Se(e.variadicArg)}*`:`${Se(e.variadicArg)}+`:"";t=`(${[r,s,o].filter(l=>l).join(", ")}) -> ${R(e.result)}`;break;default:t="error"}return n>0&&n>vr(e.kind)?`(${t})`:t}function Se(e){return e.name?`${e.name}: ${R(e.type)}`:R(e.type)}function Ct(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function vr(e){switch(e){case"negation":return $t;case"union":return zt;case"intersection":return qt;case"list":return xr;case"record":return yr;case"dictionary":return Tr;case"set":return br;case"collection":case"indexed_collection":return Er;case"tuple":return kr;case"signature":return Nr;case"value":return Sr;default:return 0}}var on=class{input;pos=0;line=1;column=1;tokens=[];constructor(n){this.input=n}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
1
+ /** Compute Engine 0.55.4 */
2
+ var ye=["Error","'missing'"];function ae(e){return!!(typeof e=="number"||Te(e)||typeof e=="string"&&Ne(e))}function Te(e){return e!==null&&typeof e=="object"&&"num"in e}function be(e){return e!==null&&typeof e=="object"&&"sym"in e}function vn(e){return e!==null&&typeof e=="object"&&"str"in e}function _t(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function Ee(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function I(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"?null:e.length>=2&&e.at(0)==="'"&&e.at(-1)==="'"?e.substring(1,e.length-1):Ne(e)||Be(e)?null:e}function In(e){if(e==null||I(e)!==null)return null;let n=f(e);return n?[n,...h(e).map(t=>In(t)).filter(t=>t!==null)]:e}function f(e){return Array.isArray(e)?e[0]:e==null?"":Ee(e)?e.fn[0]:""}function h(e){return Array.isArray(e)?e.slice(1):e!==void 0&&Ee(e)?e.fn.slice(1):[]}function c(e,n){return Array.isArray(e)?e[n]??null:e===null||!Ee(e)?null:e.fn[n]??null}function A(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Ee(e)?Math.max(0,e.fn.length-1):0}function Mn(e){return e==null?null:f(e)==="Hold"?c(e,1):e}function y(e){return typeof e=="string"&&Be(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:be(e)?e.sym:null}function At(e){let n=f(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=h(e),r=I(t);return r?[r,i??"Nothing"]:null}return null}function Dn(e){if(e===null)return null;if(_t(e))return e;let n=At(e);if(n)return{[n[0]]:n[1]};if(f(e)==="Dictionary"){let t={},i=h(e);for(let r=1;r<A(e);r++){let s=At(i[r]);s&&(t[s[0]]=fr(s[1])??"Nothing")}return{dict:t}}return null}function Qe(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Sn(i)??"Nothing"]))}}function pr(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(e))return 1/0;if(/^(-infinity|-oo)$/.test(e))return-1/0;if(/\([0-9]+\)/.test(e)){let[n,t,i,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(e)}function N(e){return typeof e=="number"?e:typeof e=="string"&&Ne(e)?pr(e):e!==void 0&&Te(e)?N(e.num):null}function ke(e){if(e==null)return null;if(y(e)==="Half")return[1,2];let n=f(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=ke(h(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=h(e);t=N(r)??NaN,i=N(s)??NaN}if(n==="Power"){let[r,s]=h(e),o=N(s);o===1?(t=N(r),i=1):o===-1&&(t=1,i=N(r))}if(n==="Multiply"){let[r,s]=h(e);if(f(s)==="Power"){let[o,a]=h(s);N(a)===-1&&(t=N(r),i=N(o))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function Ke(e,n){let t=null;if(Array.isArray(e)&&(t=e),Ee(e)&&(t=e.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(n(t[i])),i+=1;return r}function ge(e,n,t){let i=f(n),r=f(t);return i===e&&r===e?[e,...h(n),...h(t)]:i===e?[e,...h(n),t]:r===e?[e,n,...h(t)]:[e,n,t]}function le(e){if(e==null)return null;let n=f(e);if(n==="Delimiter"){if(e=c(e,1),e===null)return[];if(n=f(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:h(e)}function P(e){return e==null||e==="Nothing"?!0:f(e)==="Sequence"&&A(e)===0}function M(e){return P(e)?ye:e}function Nn(e){return e[0]==="Square"?Nn(e.slice(1))+2:e.reduce((n,t)=>n+Re(t),0)}function Re(e){if(e===null)return 0;if(typeof e=="number"||typeof e=="string"||ae(e)||be(e)||vn(e))return 1;if(Array.isArray(e))return Nn(e);if("fn"in e)return Nn(e.fn);let n=Dn(e);if(n){let t=Object.keys(n);return 1+t.length+t.reduce((i,r)=>i+Re(n[r]),0)}return 0}function Ne(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(e)}function Be(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function wt(e){return e.length>=2&&e[0]==="'"&&e[e.length-1]==="'"?!0:!Ne(e)&&!Be(e)}function Sn(e){if(typeof e=="string")return{str:e};if(typeof e=="number")return{num:e.toString()};if(typeof e=="boolean")return e?"True":"False";if(Array.isArray(e))return["List",...e.map(n=>Sn(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Sn(e[t])??"Nothing";return{dict:n}}return Ee(e)||be(e)||Te(e)||vn(e)||_t(e)?e:null}function fr(e){return e==null?null:vn(e)?e.str:Te(e)?parseFloat(e.num):be(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}var S=245,Oe=260,Q=270,L=275,C=390,q=600,Pn=650,Fe=700,An=810;function Jt(e){return!("kind"in e)||e.kind==="expression"}function Lt(e){return"kind"in e&&e.kind==="symbol"}function Ce(e){return"kind"in e&&e.kind==="matchfix"}function _n(e){return"kind"in e&&e.kind==="infix"}function en(e){return"kind"in e&&e.kind==="prefix"}function wn(e){return"kind"in e&&e.kind==="postfix"}function Rt(e){return"kind"in e&&e.kind==="environment"}function dr(e){let n=[];for(let t=0;t<e.length;t++){let i=e.charCodeAt(t);if(i>=55296&&i<=56319){let r=e.charCodeAt(t+1);if(r>=56320&&r<=57343){let s=i-55296,o=r-56320;i=2**16+s*2**10+o,t++}}n.push(i)}return n}var nn=8205,Bt=[127462,127487];function Ot(e){return e===nn||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function gr(e){return e>=Bt[0]&&e<=Bt[1]}function Ft(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],t=dr(e),i=0;for(;i<t.length;){let r=t[i++],s=t[i];if(s===nn){let o=i-1;for(i+=2;t[i]===nn;)i+=2;n.push(String.fromCodePoint(...t.slice(o,2*i-o+1)))}else if(Ot(s)){let o=i-1;for(;Ot(t[i]);)i+=t[i]===nn?2:1;n.push(String.fromCodePoint(...t.slice(o,2*i-o-1)))}else gr(r)?(i+=1,n.push(String.fromCodePoint(...t.slice(i-2,2)))):n.push(String.fromCodePoint(r))}return n}var mr={"\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u207B":"-","\u2071":"i",\u207F:"n"},hr={"\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u208B":"-"},Jn=class{s;pos;obeyspaces=!1;constructor(n){n=n.replace(/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/g,""),n=n.replace(/\u2212/g,"-"),n=n.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹⁻ⁱⁿ]+/g,t=>`^{${Array.from(t).map(r=>mr[r]).join("")}}`),n=n.replace(/[₀₁₂₃₄₅₆₇₈₉₋]+/g,t=>`_{${Array.from(t).map(r=>hr[r]).join("")}}`),this.s=Ft(n),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(n){let t;return typeof this.s=="string"?t=n.exec(this.s.slice(this.pos)):t=n.exec(this.s.slice(this.pos).join("")),t?.[0]?(this.pos+=t[0].length,t[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";let n=this.get();if(n==="\\"){if(!this.end()){let t=this.match(/^[a-zA-Z]+/);if(t)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(t=this.get(),t===" ")return"<space>";return"\\"+t}}else{if(n==="{")return"<{>";if(n==="}")return"<}>";if(n==="^"){if(this.peek()==="^"){this.get();let t=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(t)return String.fromCodePoint(parseInt(t.slice(t.lastIndexOf("^")+1),16))}return n}else if(n==="#"){if(!this.end()){let t=!1;if(/[0-9?]/.test(this.peek())&&(t=!0,this.pos+1<this.s.length)){let i=this.s[this.pos+1];t=/[^0-9A-Za-z]/.test(i)}return t?"#"+this.get():"#"}}else if(n==="$")return this.peek()==="$"?(this.get(),"<$$>"):"<$>"}return n}};function xr(e,n){let t=e.next();if(!t)return[];let i=[];if(t!=="\\relax"){if(t==="\\noexpand")t=e.next(),t&&i.push(t);else if(t==="\\obeyspaces")e.obeyspaces=!0;else if(t==="\\space"||t==="~")i.push("<space>");else if(t==="\\bgroup")i.push("<{>");else if(t==="\\egroup")i.push("<}>");else if(t==="\\string")t=e.next(),t&&(t[0]==="\\"?Array.from(t).forEach(r=>i.push(r==="\\"?"\\backslash":r)):t==="<{>"?i.push("\\{"):t==="<space>"?i.push("~"):t==="<}>"&&i.push("\\}"));else if(t==="\\csname"){for(;e.peek()==="<space>";)e.next();let r="",s=!1,o=[];do{if(o.length===0)if(/^#[0-9?]$/.test(e.peek())){let a=e.get().slice(1);o=F(n?.[a]??n?.["?"]??"\\placeholder{}",n),t=o[0]}else t=e.next(),o=t?[t]:[];s=o.length===0,!s&&t==="\\endcsname"&&(s=!0,o.shift()),s||(s=t==="<$>"||t==="<$$>"||t==="<{>"||t==="<}>"||!!t&&t.length>1&&t[0]==="\\"),s||(r+=o.shift())}while(!s);r&&i.push("\\"+r),i=i.concat(o)}else if(t!=="\\endcsname")if(t.length>1&&t[0]==="#"){let r=t.slice(1);i=i.concat(F(n?.[r]??n?.["?"]??"\\placeholder{}",n))}else i.push(t)}return i}function F(e,n=[]){let t=e.toString().split(/\r?\n/),i="",r="";for(let a of t){i+=r,r=" ";let l=a.match(/((?:\\%)|[^%])*/);l!==null&&(i+=l[0])}let s=new Jn(i),o=[];do o.push(...xr(s,n));while(!s.end());return o}function tn(e){return F(e).length}function x(e){let n="",t="";for(let i of e)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=n),/\\[a-zA-Z]+\*?$/.test(i)?n=" ":n=""),t+=i.toString());return t}function ue(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}function U(e){let n=[];if(Array.isArray(e))for(let i of e)Array.isArray(i)?n=[...n,...i]:n.push(i);else n=[e];return x(n.map(i=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[i]??i))}var me=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:S+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:S},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:S},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:S+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:S+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:S},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:S,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:S},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:S},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:S},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:S},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:S},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:S+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:S},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:S},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:S},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:S},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:S+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:S},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:S},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:S},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:S},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:S+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:S+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:S+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:S+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:S},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:S},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:S},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:S},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:S},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:S},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:S},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:S},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:S},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:S+5}];function Ln(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function Rn(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}var Se=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],Bn=["indexed_collection","list","tuple"],rn=[...Bn,"collection","set","record","dictionary"],sn=["scalar",...Se,"boolean","string"],On=["value",...rn,...sn],Fn=["expression","symbol","function",...On],ce=["any","unknown","nothing","never","error",...Fn];function Cn(e){return typeof e=="string"?ce.includes(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="function"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var $t=3,zt=1,qt=2,yr=4,Tr=5,br=6,Er=7,kr=8,Nr=9,Sr=10,vr=11;function R(e,n=0){if(typeof e=="string")return e;let t="";switch(e.kind){case"value":typeof e.value=="string"?t=`"${e.value}"`:typeof e.value=="boolean"?t=e.value?"true":"false":t=e.value.toString();break;case"reference":t=e.name;break;case"negation":t=`!${R(e.type,$t)}`;break;case"union":t=e.types.map(l=>R(l,zt)).join(" | ");break;case"intersection":t=e.types.map(l=>R(l,qt)).join(" & ");break;case"expression":t=`expression<${Ct(e.operator)}>`;break;case"symbol":t=`symbol<${Ct(e.name)}>`;break;case"numeric":Number.isFinite(e.lower)&&Number.isFinite(e.upper)?t=`${e.type}<${e.lower}..${e.upper}>`:Number.isFinite(e.lower)?t=`${e.type}<${e.lower}..>`:Number.isFinite(e.upper)?t=`${e.type}<..${e.upper}>`:t=`${e.type}`;break;case"list":if(e.dimensions&&typeof e.elements=="string"&&Se.includes(e.elements)){if(e.dimensions===void 0)e.elements==="number"&&(t="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?t="vector":t=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?t=`vector<${R(e.elements)}>`:t=`vector<${R(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let l=e.dimensions;e.elements==="number"?l[0]<0&&l[1]<0?t="matrix":t=`matrix<${l[0]}x${l[1]}>`:l[0]<0&&l[1]<0?t=`matrix<${R(e.elements)}>`:t=`matrix<${R(e.elements)}^(${l[0]}x${l[1]})>`}}if(!t){let l=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${R(e.elements)}${l}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([l,u])=>`${l}: ${R(u)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${R(e.values)}>`;break;case"set":t=`set<${R(e.elements)}>`;break;case"collection":t=`collection<${R(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${R(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[l]=e.elements;t=`tuple<${ve(l)}>`}else t="tuple<"+e.elements.map(l=>ve(l)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(l=>ve(l)).join(", "):"",s=e.optArgs?e.optArgs.map(l=>ve(l)+"?").join(", "):"",o=e.variadicArg?e.variadicMin===0?`${ve(e.variadicArg)}*`:`${ve(e.variadicArg)}+`:"";t=`(${[r,s,o].filter(l=>l).join(", ")}) -> ${R(e.result)}`;break;default:t="error"}return n>0&&n>Ir(e.kind)?`(${t})`:t}function ve(e){return e.name?`${e.name}: ${R(e.type)}`:R(e.type)}function Ct(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function Ir(e){switch(e){case"negation":return $t;case"union":return zt;case"intersection":return qt;case"list":return yr;case"record":return Tr;case"dictionary":return br;case"set":return Er;case"collection":case"indexed_collection":return kr;case"tuple":return Nr;case"signature":return Sr;case"value":return vr;default:return 0}}var on=class{input;pos=0;line=1;column=1;tokens=[];constructor(n){this.input=n}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
3
3
  `?(this.line++,this.column=1):this.column++,n}match(n){if(this.input.slice(this.pos,this.pos+n.length)===n){for(let t=0;t<n.length;t++)this.advance();return!0}return!1}isEOF(){return this.pos>=this.input.length}skipWhitespace(){for(;!this.isEOF()&&/\s/.test(this.peek());)this.advance()}readIdentifier(){let n="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)n+=this.advance();return n}readVerbatimString(){if(!this.match("`"))return"";let n="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?n+="`":this.match("\\\\")?n+="\\":n+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),n}readStringLiteral(){let n=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==n;)this.match("\\"+n)?t+=n:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let n="";if((this.peek()==="-"||this.peek()==="+")&&(n+=this.advance()),this.match("0x")||this.match("0X")){for(n+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)n+=this.advance();return"0"+n}if(this.match("0b")||this.match("0B")){for(n+="b";!this.isEOF()&&/[01]/.test(this.peek());)n+=this.advance();return"0"+n}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(n+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();return n}createToken(n,t){return{type:n,value:t,position:this.pos-t.length,line:this.line,column:this.column-t.length}}nextToken(){if(this.skipWhitespace(),this.isEOF())return this.createToken("EOF","");let n=this.pos,t=this.peek();if(this.match("->"))return this.createToken("->","->");if(this.match(".."))return this.createToken("..","..");if(this.match("+\u221E")||this.match("+oo"))return this.createToken("PLUS_INFINITY",this.input.slice(n,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(n,this.pos));if(this.match("+infinity"))return this.createToken("PLUS_INFINITY","+infinity");if(this.match("-infinity"))return this.createToken("MINUS_INFINITY","-infinity");if(/[a-zA-Z_]/.test(t)){let i=this.readIdentifier();switch(i){case"true":return this.createToken("TRUE",i);case"false":return this.createToken("FALSE",i);case"nan":return this.createToken("NAN",i);case"infinity":return this.createToken("INFINITY",i);case"oo":return this.createToken("INFINITY",i);default:return this.createToken("IDENTIFIER",i)}}switch(t){case"|":return this.advance(),this.createToken("|","|");case"&":return this.advance(),this.createToken("&","&");case"!":return this.advance(),this.createToken("!","!");case"^":return this.advance(),this.createToken("^","^");case"(":return this.advance(),this.createToken("(","(");case")":return this.advance(),this.createToken(")",")");case"<":return this.advance(),this.createToken("<","<");case">":return this.advance(),this.createToken(">",">");case"[":return this.advance(),this.createToken("[","[");case"]":return this.advance(),this.createToken("]","]");case",":return this.advance(),this.createToken(",",",");case":":return this.advance(),this.createToken(":",":");case"?":return this.advance(),this.createToken("?","?");case"*":return this.advance(),this.createToken("*","*");case"+":return/[0-9]/.test(this.peek(1))?this.createToken("NUMBER_LITERAL",this.readNumber()):(this.advance(),this.createToken("+","+"));case"x":return/[0-9]/.test(this.peek(1))?(this.advance(),this.createToken("x","x")):(this.advance(),this.createToken("x","x"))}if(t==='"'||t==="'")return this.createToken("STRING_LITERAL",this.readStringLiteral());if(t==="`")return this.createToken("VERBATIM_STRING",this.readVerbatimString());if(/[0-9]/.test(t)||t==="-"&&/[0-9]/.test(this.peek(1))){let i=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",i)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let n=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(n.push(t),t.type==="EOF"))break}return n}peekToken(){if(this.tokens.length===0){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let n=this.nextToken();if(n)return n}return this.tokens.shift()||this.createToken("EOF","")}matchToken(n){return this.peekToken().type===n?(this.consumeToken(),!0):!1}expectToken(n){let t=this.consumeToken();return t.type!==n&&this.error(`Expected ${n}, got ${t.type}`),t}};var an=class{lexer;typeResolver;current;constructor(n,t){this.lexer=new on(n),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(n,t){this.errorAtToken(this.current,n,t)}errorAtToken(n,t,i){let r=this.lexer.input,o=r.split(`
4
4
  `)[n.line-1]||r,a=n.column,l=" ".repeat(Math.max(0,a-1))+"^",u=["","Invalid type",`| ${o}`,`| ${l}`,"|",`| ${t}`];throw i&&u.push(`| ${i}`),u.push(""),new Error(u.join(`
5
- `))}advance(){let n=this.current;return this.current=this.lexer.consumeToken(),n}match(n){return this.current.type===n?(this.advance(),!0):!1}expect(n){return this.current.type!==n&&this.error(`Expected ${n}, got ${this.current.type}`),this.advance()}createNode(n,t={}){return{kind:n,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();if(n||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return n}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let n=this.lexer.saveState(),t=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(n),this.current=t,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(n),this.current=t}catch(i){if(this.lexer.restoreState(n),this.current=t,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let n=this.parseIntersectionType();if(!n)return;let t=[n];for(;this.match("|");){let i=this.parseIntersectionType();i||this.error("Expected type after |"),t.push(i)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let n=this.parsePrimaryType();if(!n)return;let t=[n];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),t.push(i)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let n=this.parsePrimaryType();return n||this.error("Expected type after !"),this.createNode("negation",{type:n})}if(this.current.type==="("){let n=this.parseFunctionSignature();if(n)return n;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let n=this.lexer.saveState(),t=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(n),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let n=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),n.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(o=>o.modifier==="optional"),r=n.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=n.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:n,returnType:t})}parseArgument(){let n=this.parseNamedElement();if(!n)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:n,modifier:t})}parseNamedElement(){let n;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){n=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:n,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let n=this.current,i=this.lexer.peekToken().type==="<";switch(n.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let n=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}return this.createNode("list",{elementType:n,dimensions:t})}parseVectorType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(n=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:n,size:t})}parseMatrixType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:n,dimensions:t})}parseTensorType(){let n=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("tensor",{elementType:n})}parseDimensions(){let n=[],t=this.parseDimension();if(t){for(n.push(t);this.match("x");){let i=this.parseDimension();i||this.error("Expected dimension after x"),n.push(i)}return n}}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let n=parseInt(this.advance().value);return this.createNode("dimension",{size:n})}}parseDimensionWithX(){if(this.current.type==="NUMBER_LITERAL"){let n=[],t=parseInt(this.advance().value);if(n.push(this.createNode("dimension",{size:t})),this.current.type==="IDENTIFIER"&&this.current.value.startsWith("x")){let i=this.current.value,r=i.match(/x(\d+)/g);if(r&&r.join("")===i){this.advance();for(let s of r){let o=parseInt(s.substring(1));n.push(this.createNode("dimension",{size:o}))}}else(i==="x"||i.startsWith("x"))&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`")}if(n.length>1)return n}}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),t.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let n=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),n.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:n})}}parseRecordEntry(){let n;if(this.current.type==="IDENTIFIER")n=this.advance().value;else if(this.current.type==="VERBATIM_STRING")n=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:n,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("dictionary",{valueType:n})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("set",{elementType:n})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value==="indexed_collection",t=this.current.value==="collection";if(n||t){this.advance();let i=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:n})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let i=this.parseValue();this.expect("..");let r=this.parseValue();return this.expect(">"),this.createNode("numeric",{baseType:t,lowerBound:i,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value;if(ue.includes(n))return this.advance(),this.createNode("primitive",{name:n})}}parseValue(){let n,t;switch(this.current.type){case"STRING_LITERAL":n=this.advance().value,t="string";break;case"NUMBER_LITERAL":n=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),n=!0,t="boolean";break;case"FALSE":this.advance(),n=!1,t="boolean";break;case"NAN":this.advance(),n=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),n=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),n=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:n,valueType:t})}parseTypeReference(){let n=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(n&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,i=this.advance().value;return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:n}):n&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0}):(n||this.errorAtToken(t,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:n}))}}};function Vt(e,n){switch(e.kind){case"function_signature":return n.visitFunctionSignature(e);case"union":return n.visitUnionType(e);case"intersection":return n.visitIntersectionType(e);case"negation":return n.visitNegationType(e);case"group":return n.visitGroupType(e);case"list":return n.visitListType(e);case"vector":return n.visitVectorType(e);case"matrix":return n.visitMatrixType(e);case"tensor":return n.visitTensorType(e);case"tuple":return n.visitTupleType(e);case"record":return n.visitRecordType(e);case"dictionary":return n.visitDictionaryType(e);case"set":return n.visitSetType(e);case"collection":return n.visitCollectionType(e);case"expression":return n.visitExpressionType(e);case"symbol":return n.visitSymbolType(e);case"numeric":return n.visitNumericType(e);case"primitive":return n.visitPrimitiveType(e);case"type_reference":return n.visitTypeReference(e);case"value":return n.visitValue(e);default:throw new Error(`Unknown node kind: ${e.kind}`)}}var $n=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return Vt(n,this)}visitFunctionSignature(n){let t=[],i=[],r,s;for(let l of n.arguments){let u=this.buildNamedElement(l.element);switch(l.modifier){case"optional":i.push(u);break;case"variadic_zero":r=u,s=0;break;case"variadic_one":r=u,s=1;break;default:t.push(u);break}}let o=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(n){return{kind:"union",types:n.types.map(i=>this.buildType(i))}}visitIntersectionType(n){return{kind:"intersection",types:n.types.map(i=>this.buildType(i))}}visitNegationType(n){return{kind:"negation",type:this.buildType(n.type)}}visitGroupType(n){return this.buildType(n.type)}visitListType(n){let t=this.buildType(n.elementType),i=n.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}visitVectorType(n){let t=this.buildType(n.elementType);return n.size!==void 0?{kind:"list",elements:t,dimensions:[n.size]}:{kind:"list",elements:t}}visitMatrixType(n){let t=this.buildType(n.elementType);if(n.dimensions){let i=n.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(n){return{kind:"list",elements:this.buildType(n.elementType)}}visitTupleType(n){return{kind:"tuple",elements:n.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(n){if(n.entries.length===0)return"record";let t={};for(let i of n.entries)t[i.key]=this.buildType(i.valueType);return{kind:"record",elements:t}}visitDictionaryType(n){let t=this.buildType(n.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(n){let t=this.buildType(n.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(n){let t=this.buildType(n.elementType);return n.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(n){return{kind:"expression",operator:n.operator}}visitSymbolType(n){return{kind:"symbol",name:n.name}}visitNumericType(n){if(!n.lowerBound&&!n.upperBound)return n.baseType;let t=n.lowerBound?this.buildValue(n.lowerBound):-1/0,i=n.upperBound?this.buildValue(n.upperBound):1/0;return t===-1/0&&i===1/0?n.baseType:{kind:"numeric",type:n.baseType,lower:t,upper:i}}visitPrimitiveType(n){return n.name}visitTypeReference(n){let t=this.typeResolver.resolve(n.name);if(t)return t;if(n.isForward){let i=this.typeResolver.forward(n.name);if(i)return i}return n.name}visitValue(n){return{kind:"value",value:n.value}}buildNamedElement(n){let t=this.buildType(n.type);return n.name?{name:n.name,type:t}:{type:t}}buildDimension(n){return n.size??-1}buildValue(n){return n.value}isAnyType(n){return n==="any"||typeof n=="object"&&"kind"in n&&n.kind==="primitive"&&"name"in n&&n.name==="any"}};function Gt(e,n){return new $n(n).buildType(e)}function ve(e,n){if(e!==void 0){if(Cn(e))return e;if(typeof e=="string")try{let i=new an(e,{typeResolver:n}).parseType();return Gt(i,n)}catch(t){throw new Error(`Failed to parse type "${e}": ${t instanceof Error?t.message:String(t)}`)}}}var Ir={number:Ne,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:ue,unknown:[],nothing:[],never:[],error:[],value:On,scalar:sn,collection:rn,indexed_collection:Bn,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],expression:Fn};function $e(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:Ir[n].includes(e)}function k(e,n){if(typeof e=="string"&&!ue.includes(e)&&(e=ve(e)),typeof n=="string"&&!ue.includes(n)&&(n=ve(n)),n==="any")return!0;if(n==="never")return!1;if(n==="error")return e==="error";if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?$e(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?$e("integer",n):$e("number",n):typeof e.value=="boolean"?$e("boolean",n):typeof e.value=="string"?$e("string",n):!1:e.kind==="union"?e.types.every(t=>k(t,n)):e.kind==="intersection"?e.types.some(t=>k(t,n)):e.kind==="negation"?!k(e.type,n):e.kind==="numeric"?!!k(e.type,n):n==="number"?Ut(e):n==="symbol"?zn(e):n==="expression"?Mr(e):n==="function"?Zt(e):n==="scalar"?jt(e):n==="value"?Ht(e):n==="indexed_collection"?Wt(e):n==="collection"?Yt(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="record"?e.kind==="record":n==="dictionary"?e.kind==="dictionary":!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(t=>n.types.some(i=>k(t,i))):n.types.some(t=>k(e,t));if(n.kind==="expression"){if(e==="symbol")return!0;if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?zn(e):e.operator===n.operator;if(e.kind==="symbol")return!0}if(typeof e=="string")return!1;if(n.kind==="reference"){if(e.kind==="reference")return e.name===n.name;if(n.alias===!0&&n.def)return k(e,n.def)}if(e.kind==="union")return e.types.some(t=>k(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>k(i,t)));if(e.kind==="intersection")return e.types.every(t=>k(t,n));if(n.kind==="intersection")return n.types.every(t=>k(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!k(e.result,n.result))return!1;if(e.optArgs||e.variadicArg){if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let t=0;t<n.args.length;t++)if(!k(n.args[t].type,e.args[t].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let t=0;t<e.optArgs.length;t++)if(!k(n.optArgs[t].type,e.optArgs[t].type))return!1}else if(e.optArgs)return!1;if(n.variadicArg){if(!e.variadicArg||e.variadicMin!=n.variadicMin||!k(n.variadicArg.type,e.variadicArg.type))return!1}else if(e.variadicArg)return!1}else{if(n.args&&!e.args)return!1;let t=0;if(n.args){if(e.args.length<n.args.length)return!1;for(;t<n.args.length;){if(!k(n.args[t].type,e.args[t].type))return!1;t+=1}}if(n.optArgs){if(t>=e.args.length)return!0;for(let i=0;i<n.optArgs.length;i++){if(!k(n.optArgs[i].type,e.args[t].type))return!1;if(t+=1,t>=e.args.length)return!0}}if(n.variadicArg){if(t>=e.args.length&&n.variadicMin===0)return!0;if(n.variadicMin>0&&t+n.variadicMin>e.args.length)return!1;for(;t<e.args.length;){if(!k(n.variadicArg.type,e.args[t].type))return!1;t+=1}}}return!0}if(e.kind==="record"&&n.kind==="record"){for(let t of Object.keys(n.elements))if(!(t in e.elements)||!k(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return k(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?k(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>k(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return k(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>k(t.type,n.elements));if(e.kind==="set")return k(e.elements,n.elements);if(e.kind==="dictionary")return k({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return k({kind:"tuple",elements:[{type:"string"},{type:ze(...Object.values(e.elements))}]},n.elements)}if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let t=0;t<e.elements.length;t++){let i=e.elements[t],r=n.elements[t];if(!k(i.type,r.type)||i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!k(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let t=0;t<e.dimensions.length;t++)if(n.dimensions[t]!==-1&&e.dimensions[t]!==n.dimensions[t])return!1}return!0}if(e.kind==="symbol"&&n.kind==="symbol")return e.name===n.name;if(e.kind==="numeric"&&n.kind==="numeric")return!(!k(e.type,n.type)||(e.lower??-1/0)<(n.lower??-1/0)||(e.upper??1/0)>(n.upper??1/0));if(n.kind==="set"&&e.kind==="set")return!!k(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return k(e.type,n.type);if(n.kind==="negation")return!k(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return k("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?k("integer",n):k("real",n);if(typeof e.value=="string")return k("string",n)}return!1}function Ut(e){return typeof e=="string"?Ne.includes(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function jt(e){return Ut(e)?!0:typeof e=="string"?sn.includes(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function Yt(e){return Wt(e)?!0:typeof e=="string"?rn.includes(e):["collection","set","record","dictionary"].includes(e.kind)}function Wt(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function Ht(e){return jt(e)||Yt(e)}function Zt(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function Mr(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||Ht(e)||Zt(e)||zn(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function zn(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function Dr(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||k(e,n)?e:k(n,e)?n:Xt(e,n)}function Pr(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:k(e,n)?n:k(n,e)?e:Xt(e,n)}function qn(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>Dr(n,t))}function ze(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>Pr(n,t))}function Xt(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:w(e,n,"non_finite_number")?"non_finite_number":w(e,n,"finite_integer")?"finite_integer":w(e,n,"integer")?"integer":w(e,n,"finite_rational")?"finite_rational":w(e,n,"rational")?"rational":w(e,n,"finite_real")?"finite_real":w(e,n,"real")?"real":w(e,n,"imaginary")?"imaginary":w(e,n,"finite_complex")?"finite_complex":w(e,n,"complex")?"complex":w(e,n,"finite_number")?"finite_number":w(e,n,"number")?"number":w(e,n,"list")?"list":w(e,n,"record")?"record":w(e,n,"dictionary")?"dictionary":w(e,n,"set")?"set":w(e,n,"tuple")?"tuple":w(e,n,"indexed_collection")?"indexed_collection":w(e,n,"collection")?"collection":w(e,n,"scalar")?"scalar":w(e,n,"value")?"value":w(e,n,"function")?"function":w(e,n,"expression")?"expression":"any"}function w(e,n,t){return!!(k(e,t)&&k(n,t))}var V=class e{static unknown=new e("unknown");static number=new e("number");static non_finite_number=new e("non_finite_number");static finite_number=new e("finite_number");static finite_integer=new e("finite_integer");static finite_real=new e("finite_real");static string=new e("string");static dictionary=new e("dictionary");static setNumber=new e("set<number>");static setComplex=new e("set<complex>");static setImaginary=new e("set<imaginary>");static setReal=new e("set<real>");static setRational=new e("set<rational>");static setFiniteInteger=new e("set<finite_integer>");static setInteger=new e("set<integer>");type;static widen(...n){return new e(ze(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(qn(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=ve(n,t):this.type=n}matches(n){return n instanceof e?k(this.type,n.type):k(this.type,n)}is(n){return k(this.type,n)&&k(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return R(this.type)}toJSON(){return R(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return R(this.type)}};var Vn=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:235},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:235},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:230},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:230},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:232},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:232},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:232},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\Longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["=",">"],kind:"infix",precedence:220,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:220});return i===null?null:["Implies",n,i]}},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\Longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["<","=",">"],kind:"infix",precedence:219,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:219});return i===null?null:["Equivalent",n,i]}},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:219}),r=e.index,s=e.parseExpression({...t,minPrec:219});return s!==null&&f(s)==="Mod"?["Congruent",n,i,M(c(s,1))]:(e.index=r,["Equivalent",n,M(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:qe("\\forall"),parse:ce("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:qe("\\exists"),parse:ce("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:qe("\\exists!"),parse:ce("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:qe("\\lnot\\forall"),parse:ce("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:qe("\\lnot\\exists"),parse:ce("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=h(n);return t.length===0?"\\delta":t.every(i=>y(i))?`\\delta_{${t.map(i=>e.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>e.serialize(i)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let i=e.parseToken();return i?["KroneckerDelta",i]:null}let t=ae(n);return t&&t.length<=2?["KroneckerDelta",...t]:f(n)==="InvisibleOperator"?["KroneckerDelta",...h(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=f(n);return!t||!me.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=f(n);return!t||!me.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=h(n);if(t.length===0)return"";let i=t[0],r=typeof i=="string"?i:e.serialize(i);if(t.length===1)return r;let s=t.slice(1).map(o=>e.serialize(o));return`${r}(${s.join(", ")})`}}];function qe(e){return(n,t)=>{let i=h(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),s=n.serialize(i[1]);return`${e} ${r}, ${s}`}}function Qt(e,n){return e.peek==="\\to"||e.peek==="\\rightarrow"||e.peek==="\\implies"||e.peek==="\\Rightarrow"||e.peek==="\\iff"||e.peek==="\\Leftrightarrow"||e.peek==="\\land"||e.peek==="\\wedge"||e.peek==="\\lor"||e.peek==="\\vee"||(n.condition?.(e)??!1)}function ce(e){return(n,t)=>{let i=n.index,r=n.options.quantifierScope!=="loose",s=n.parseSymbol(t);if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let u=r?{...t,condition:d=>Qt(d,t)}:t;n.enterQuantifierScope();let p=n.parseExpression(u);return n.exitQuantifierScope(),[e,s,M(p)]}n.enterQuantifierScope();let l=n.parseEnclosure();if(n.exitQuantifierScope(),l)return[e,s,M(l)]}n.index=i;let o={...t,condition:l=>l.peek===":"||l.peek==="\\colon"||(t.condition?.(l)??!1)},a=n.parseExpression(o);if(a===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let l=r?{...t,condition:p=>Qt(p,t)}:t;n.enterQuantifierScope();let u=n.parseExpression(l);return n.exitQuantifierScope(),[e,a,M(u)]}if(n.match("(")){n.enterQuantifierScope();let l=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,a,M(l)]:null}return null}}function Gn(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let s=t?[t]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:i});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r),o||e.skipVisualSpace())}return s}function H(e=""){return(n,t)=>{if(!t)return"";let i=h(t);if(i.length===0)return"";if(i.length===1)return n.serialize(i[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=i.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),x(r)}}var Yn=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:Q,parse:(e,n,t)=>{let i=[];if(f(n)==="Delimiter"&&(n=c(n,1)??"Nothing"),f(n)==="Sequence")for(let s of h(n)){if(!y(s))return null;i.push(y(s))}else{if(!y(n))return null;i=[y(n)]}let r=e.parseExpression({minPrec:Q})??"Nothing";return f(r)==="Delimiter"&&(r=c(r,1)??"Nothing"),f(r)==="Sequence"&&(r=["Block",...h(r)]),["Function",r,...i]},serialize:(e,n)=>{let t=h(n);return t.length<1?"()\\mapsto()":t.length===1?x(["()","\\mapsto",e.serialize(c(n,1))]):t.length===2?x([e.serialize(c(n,2)),"\\mapsto",e.serialize(c(n,1))]):x([e.wrapString(h(n)?.slice(1).map(i=>e.serialize(i)).join(", "),"normal"),"\\mapsto",e.serialize(c(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=c(n,1),i=f(t);if(i==="InverseFunction"||i==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=h(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(l=>e.serialize(l)).join(", "),o)}let r=c(n,2);if(typeof t=="string"||!r){let o=h(n).slice(1);return e.serialize(o)}if(A(n)===2)return x([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return x(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...h(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n,t)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=c(n,1);if(!t)return"";let i=h(n).slice(1);if(f(t)==="Function"){let r=h(t).slice(1),s=c(t,1);if(f(s)==="Block"&&A(s)===1&&(s=c(s,1)),r.length>0)return`\\left.\\left(${e.serialize(s)}\\right)\\right|_{${r.map((o,a)=>`${e.serialize(o)}=${e.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${e.serialize(t)}\\right)\\right|_{${i.map(r=>e.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:Oe,serialize:(e,n)=>{let t=Mn(c(n,1));if(f(c(n,2))==="Function"){let i=c(n,2),r=Mn(c(i,1)),s=h(i).slice(1);return x([e.serialize(t),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return x([e.serialize(t),"\\coloneq",e.serialize(c(n,2))])},parse:ln},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:Oe,parse:ln},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:Oe,parse:ln},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:Oe,parse:ln},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:250,serialize:(e,n)=>x([e.serialize(c(n,1)),"\\colon",e.serialize(c(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:250,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=N(c(n,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=N(c(n,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),s=0;if(t===2||t===10?s=4:t===16?s=2:t>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(c(n,1))+", "+e.serialize(c(n,2))+")"}},{name:"Sequence",serialize:H(" ")},{name:"InvisibleOperator",serialize:H("")},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=c(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[f(i)],s=r?i:["Sequence",i];if(r??="(,)",A(n)>1){let p=I(c(n,2));typeof p=="string"&&p.length<=3&&(r=p)}let[o,a,l]=["","",""];r.length===3?[o,a,l]=r:r.length===2?[o,l]=r:r.length===1&&(a=r);let u=i?s?H(a)(e,s):e.serialize(i):"";return e.wrapString(u,t,o+l)}},{name:"Tuple",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>f(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(c(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let t=c(n,1);if(I(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=_r(e,n)||"\\blacksquare",r=f(t)==="ErrorCode"?I(c(t,1)):I(t);return r==="incompatible-type"?y(c(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(c(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(c(t,3))}\\notin ${e.serialize(c(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=I(c(n,1));return t==="missing"?e.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${Kt(I(c(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":x(Ke(n,t=>I(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":x(Ke(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:Ar},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:jn("]"),serialize:(e,n)=>x(["\\lbrack",H(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:jn("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:jn("\\right","\\rbrack")},{kind:"postfix",latexTrigger:["_"],parse:(e,n,t)=>{let i=e.parseGroup()??e.parseToken();i===null&&e.options.strict===!1&&e.peek==="("&&(i=e.parseEnclosure());let r=y(n);return i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||f(n)==="List")?(f(i)==="Delimiter"&&(i=c(i,1)??"Nothing"),f(i)==="Sequence"?["At",n,...h(i)]:["At",n,i]):["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:ii,serialize:Jr},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:wr},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Gn(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Gn(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:Lr,serialize:(e,n)=>{let t=h(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(c(n,1));if(t.length===2)return e.wrap(c(n,1),10)+".."+e.wrap(c(n,2),10);if(t.length===3){let i=N(c(n,3)),r=N(c(n,1));return i!==null&&r!==null?e.wrap(c(n,1),10)+".."+e.wrap(r+i,10)+".."+e.wrap(c(n,2),10):e.wrap(c(n,1),10)+"..("+(e.wrap(c(n,1),L)+"+"+e.wrap(c(n,3),L))+").."+e.wrap(c(n,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Gn(e,t,n,19,";");return i===null?null:i.some(r=>f(r)==="Assign")?Rr(i):["Delimiter",["Sequence",...i],"';'"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>{let i=e.index;return $(e,"where")?ti(e,n,t):(e.index=i,null)}},{symbolTrigger:"where",kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>ti(e,n,t)},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:235,parse:(e,n,t)=>{let i=e.index;if(!$(e,"and"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:235});return["And",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:230,parse:(e,n,t)=>{let i=e.index;if(!$(e,"or"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:230});return["Or",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!$(e,"iff"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!$(e,"if and only if"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:21,parse:(e,n,t)=>{let i=e.index;if(!$(e,"such that"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:21});return["Colon",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return $(e,"for all")?ce("ForAll")(e,n):(e.index=t,null)}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return $(e,"there exists")?ce("Exists")(e,n):(e.index=t,null)}},{name:"Block",serialize:(e,n)=>{let t=h(n);return!t||t.length===0?"":t.filter(r=>f(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=h(n);return!t||t.length<3?"":x(["\\text{if }",e.serialize(t[0]),"\\text{ then }",e.serialize(t[1]),"\\text{ else }",e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=h(n);if(!t||t.length<2)return"";let i=t[0],r=t[1];if(f(r)==="Element"){let s=c(r,1),o=c(r,2);if(f(o)==="Range"){let a=c(o,1),l=c(o,2);return x(["\\text{for }",e.serialize(s),"\\text{ from }",e.serialize(a),"\\text{ to }",e.serialize(l),"\\text{ do }",e.serialize(i)])}}return x(["\\operatorname{Loop}(",e.serialize(i),", ",e.serialize(r),")"])}},{name:"Break",serialize:()=>"\\text{break}"},{name:"Continue",serialize:()=>"\\text{continue}"},{name:"Return",serialize:(e,n)=>{let t=c(n,1);return!t||y(t)==="Nothing"?"\\text{return}":x(["\\text{return }",e.serialize(t)])}},{symbolTrigger:"if",kind:"prefix",precedence:245,parse:(e,n)=>ei(e,n)},{symbolTrigger:"for",kind:"prefix",precedence:245,parse:(e,n)=>ni(e,n)},{symbolTrigger:"break",kind:"prefix",precedence:245,parse:()=>["Break"]},{symbolTrigger:"continue",kind:"prefix",precedence:245,parse:()=>["Continue"]},{symbolTrigger:"return",kind:"prefix",precedence:245,parse:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{name:"Text",serialize:(e,n)=>{let t=h(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)I(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return x(t.map(a=>e.serialize(a)));let s=[];for(let a=0;a<i;a++)s.push(e.serialize(t[a]));let o="";for(let a=i;a<=r;a++){let l=I(t[a]);l!==null?o+=Kt(l):f(t[a])==="Annotated"||f(t[a])==="Text"?o+=e.serialize(t[a]):o+="$"+e.serialize(t[a])+"$"}s.push("\\text{"+o+"}");for(let a=r+1;a<t.length;a++)s.push(e.serialize(t[a]));return x(s)}},{name:"String",latexTrigger:["\\text"],parse:(e,n)=>{let t=e.index;return $(e,"if")?ei(e,n):(e.index=t,$(e,"for")?ni(e,n):(e.index=t,$(e,"break")?["Break"]:(e.index=t,$(e,"continue")?["Continue"]:(e.index=t,$(e,"return")?["Return",e.parseExpression(n)??"Nothing"]:(e.index=t,W(e))))))},serialize:(e,n)=>{let t=h(n);return t.length===0?"\\text{}":x(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>A(n)===2?e.serialize(c(n,1))+"_{"+e.serialize(c(n,2))+"}":"_{"+e.serialize(c(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix",parse:(e,n)=>e.options.strict===!1&&/^[0-9]$/.test(e.peek)?null:["Superminus",n]},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>K(e,n,1),serialize:(e,n)=>{let t=N(c(n,2))??1,i=e.serialize(c(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(c(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>K(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>K(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>K(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>K(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=y(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return!e.matchBoundary()||!e.match("<}>")?null:["Derivative",n,r]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(f(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=y(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new V("matrix")))return e.match("<}>"),["Inverse",n];if(!i.matches("function"))return null;let r=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))r++;else if(e.match("\\prime"))r++;else if(e.match("\\doubleprime"))r+=2;else if(e.match("\\tripleprime"))r+=3;else return null;return r===1?["Derivative",["InverseFunction",n]]:r>0?["Derivative",["InverseFunction",n],r]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(c(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=N(c(n,2))??1,i=e.serialize(c(n,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+e.serialize(c(n,2))+")}"}},{name:"D",serialize:(e,n)=>{if(f(n)!=="D")return"D";let t=c(n,1),i=c(n,2);if(!t||!i)return"D";let r=1,s=t;for(;f(s)==="D";){let u=c(s,2);if(y(u)===y(i))r++,s=c(s,1);else break}let o=s;f(s)==="Function"&&(o=c(s,1)??s);let a=e.serialize(o),l=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${l}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${l}^{${r}}}${a}`}},{name:"NewtonDerivative1",latexTrigger:["\\dot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",n,t]}},{name:"NewtonDerivative2",latexTrigger:["\\ddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",n,t],t]}},{name:"NewtonDerivative3",latexTrigger:["\\dddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",n,t],t],t]}},{name:"NewtonDerivative4",latexTrigger:["\\ddddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",["D",n,t],t],t],t]}},{name:"EulerDerivative",latexTrigger:["D"],kind:"expression",parse:e=>{let n=1,t=null,i=!1;for(;!i;)if(e.match("_")){if(t=e.parseGroup()??e.parseToken(),!t)return null}else if(e.match("^")){let o=e.parseGroup()??e.parseToken();n=N(o)??1}else i=!0;if(!t)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let s=r;for(let o=0;o<n;o++)s=["D",s,t];return s}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:Un,serialize:(e,n)=>{let t=[],i=h(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let s=[];s.push(e.serialize(i[r+1])),s.push(e.serialize(i[r])),t.push(s.join("&"))}return x(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:Un},{kind:"environment",symbolTrigger:"rcases",parse:Un}];function W(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,s=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,Qe(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")s(),t.push(W(e));else if(e.match("\\textbf"))s(),t.push(W(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))s(),t.push(W(e,{fontStyle:"normal"}));else if(e.match("\\textup"))s(),t.push(W(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))s(),t.push(W(e,{fontStyle:"italic"}));else if(e.match("\\textit"))s(),t.push(W(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))s(),t.push(W(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))s(),t.push(W(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,l=e.parseStringGroup();if(l!==null){s();let u=W(e);t.push(["Annotated",u,Qe({color:l})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(s(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,l=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(s(),t.push(l)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,l=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(s(),t.push(l)):(i+="$$",e.index=a)}else{let a=e.parseChar()??e.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}s();let o;return t.length===1?o=t[0]:t.every(a=>I(a)!==null)?o="'"+t.map(a=>I(a)).join()+"'":o=["Text",...t],n?["Annotated",o,Qe(n)]:o}function Ar(e,n){return n===null?"":x(Ke(n,t=>{let i=I(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Kt(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function _r(e,n){let t=c(n,2);return t?f(t)==="LatexString"?I(c(t,1))??"":f(t)==="Hold"?e.serialize(c(t,1)):e.serialize(t):""}function K(e,n,t){for(;!e.atEnd;)if(e.match("'")||e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else break;let i=f(n);if(i==="Derivative"||i==="Prime"){let a=N(c(n,2))??1;return[i,M(c(n,1)),a+t]}let r=y(n),s=r&&e.getSymbolType(r).matches("function")||f(n);e.skipSpace();let o=e.parseArguments("enclosure");if(o&&o.length>0){let a=o[0],l=y(a)??"x",p=typeof n=="string"?[n,...o]:["Apply",n,...o];for(let d=0;d<t;d++)p=["D",p,l];return p}return s?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",M(n)]:["Prime",M(n),t]}function wr(e,n){if(P(n))return["Delimiter"];let t=f(n);if(t==="Delimiter"&&c(n,2)!==null){let i=I(c(n,2));if(i?.length===1)return["Delimiter",c(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(I(c(n,2))??"..")===".."?["Matrix",c(n,1)]:["Delimiter",n]}function ii(e,n){if(P(n))return["List"];let t=f(n);if(t==="Range"||t==="Linspace")return n;if(t==="Sequence")return["List",...h(n)];if(t==="Delimiter"){let i=I(c(n,2))??"...";if(i===";"||i===".;.")return["List",...(h(c(n,1))??[]).map(r=>ii(e,r))];if(i===","||i===".,.")return n=c(n,1),f(n)==="Sequence"?["List",...h(n)]:["List",n??"Nothing"]}return["List",n]}function Jr(e,n){return A(n)>1&&h(n).every(t=>{let i=f(t);return Rn(i)||Ln(i)})?x(["\\begin{cases}",H("\\\\")(e,n),"\\end{cases}"]):x(["\\bigl\\lbrack",H(", ")(e,n),"\\bigr\\rbrack"])}function Lr(e,n){if(n===null)return null;let t=e.parseExpression({minPrec:270});if(t===null)return null;if(f(t)==="Range"){let i=c(t,1),r=c(t,2);return i&&r?["Range",n,r,["Subtract",i,n]]:null}return["Range",n,t]}var Me={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function ln(e,n,t){let i=(t?.minPrec??0)>=19,r=y(n);if(r&&r.includes("_")){let a=r.indexOf("_"),l=r.substring(0,a),u=r.substring(a+1),p=parseInt(u,10),d=!isNaN(p)&&String(p)===u?p:u,m=d!==""&&(typeof d=="number"||typeof d=="string"&&d.length===1);(e.getSymbolType(l).matches("indexed_collection")||!i&&m)&&(n=["Subscript",l,d])}if(f(n)==="InvisibleOperator"&&A(n)===2&&f(c(n,2))==="Delimiter"){let a=y(c(n,1));if(!a)return null;let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let u=c(c(n,2),1),p=[];return f(u)==="Sequence"?p=[...h(u)]:u&&(p=[u]),["Assign",a,["Function",l,...p??[]]]}if(f(n)==="Subscript"&&y(c(n,1))){let a=y(c(n,1));if(!e.getSymbolType(a).matches("indexed_collection")){let p=c(n,2),d=(p!==null&&typeof p=="string"?p:void 0)??(p!==null&&typeof p=="number"?String(p):void 0);if(d&&i){let m=e.parseExpression({...t??{},minPrec:20});return m===null?null:["Assign",a+"_"+d,m]}}let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let u=c(n,2);return I(u)!==null?["Assign",n,l]:y(u)?["Assign",n,l]:["Assign",n,l]}let s=f(n);if(s){let a=h(n),l=e.parseExpression({...t??{},minPrec:20});return l===null?null:["Assign",s,["Function",l,...a]]}if(!y(n))return null;let o=e.parseExpression({...t??{},minPrec:20});return o===null?null:["Assign",n,o]}function Un(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=f(i[0]);return Ln(r)||Rn(r)}))return["List",...n.map(i=>i[0])];let t=[];for(let i of n)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=I(i[1]);t.push(r?"True":In(i[1])??"True"),t.push(i[0])}return["Which",...t]}function $(e,n){let t=e.index;if(!e.match("<{>"))return e.index=t,!1;for(;e.match("<space>"););for(let i=0;i<n.length;i++)if(n[i]===" "){if(!e.match("<space>"))return e.index=t,!1;for(;e.match("<space>"););}else{if(e.peek!==n[i])return e.index=t,!1;e.nextToken()}for(;e.match("<space>"););return e.match("<}>")?!0:(e.index=t,!1)}function Ie(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("\\text")){if($(e,n))return!0;e.index=t}let i=e.index,r=e.parseSymbol();return r!==null&&y(r)===n?!0:(e.index=i,!1)}function Ve(e,n){let t=e.index,i=Ie(e,n);return e.index=t,i}function ei(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:s=>Ve(s,"then")});if(t===null||!Ie(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:s=>Ve(s,"else")});if(i===null||!Ie(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function ni(e,n){let t=e.parseExpression({minPrec:0,condition:a=>Ve(a,"from")}),i=t?y(t):null;if(!i||!Ie(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>Ve(a,"to")});if(r===null||!Ie(e,"to"))return null;let s=e.parseExpression({minPrec:0,condition:a=>Ve(a,"do")});return s===null||!Ie(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,s]]]}function ti(e,n,t){let i={minPrec:21,condition:o=>{if(t?.condition?.(o))return!0;let a=o.index;o.skipVisualSpace();let l=o.peek===",";return o.index=a,l}},r=[];do{e.skipVisualSpace();let o=e.parseExpression(i);if(!o)break;r.push(o),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let s=[];for(let o of r){let a=ri(o);f(a)==="Assign"&&s.push(["Declare",c(a,1)]),s.push(a)}return s.push(n),["Block",...s]}function Rr(e){let n=[];for(let t of e){let i=ri(t);f(i)==="Assign"&&n.push(["Declare",c(i,1)]),n.push(i)}return["Block",...n]}function ri(e){if(f(e)!=="Assign")return e;let n=c(e,1);if(f(n)!=="Subscript")return e;let t=y(c(n,1));if(!t)return e;let i=c(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,c(e,2)??"Nothing"]:e}function jn(...e){return(n,t)=>{if(!y(t)&&f(t)!=="List")return null;let i=null;return e.length===0&&(i=n.parseGroup()),i??=n.parseExpression({minPrec:0}),i===null||e.length>0&&!n.matchAll(e)||I(i)!==null?null:(f(i)==="Delimiter"&&(i=c(i,1)??"Nothing"),f(i)==="Sequence"?["At",t,...h(i)]:["At",t,i])}}var j=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Wn=[...j.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...j.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var Hn=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["-",">"],kind:"infix",precedence:270,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:270});return i===null?null:["To",n,i]}}];function Z(e,n,t){if(P(e))return null;let i,r=f(e);if(r==="Delimiter"){let u=I(c(e,2));if(u!==","&&u!=="(,)"&&u!=="[,]")return null;let p=c(e,1);f(p)==="Sequence"?i=[...h(p)]:i=p?[p]:[]}else if(r==="Sequence")i=[...h(e)];else return null;if(i.length!==2)return null;let[s,o]=i;return["Interval",n?["Open",s]:s,t?["Open",o]:o]}var Zn=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:si},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>Z(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>Z(n,!0,!0)},{name:"Multiple",serialize:si},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>P(n)?"EmptySet":(f(n)=="Delimiter"&&I(c(n,2))===","&&(n=c(n,1)),f(n)!=="Sequence"?["Set",n]:["Set",...h(n)]),serialize:(e,n)=>x(["\\lbrace",h(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:S},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function si(e,n){if(n===null)return"";let t=f(n);if(!t)return"";if(t==="Set")return A(n)===0?"\\emptyset":A(n)===2&&f(c(n,2))==="Condition"?x(["\\left\\lbrace",e.serialize(c(n,1)),"\\middle\\mid",e.serialize(c(n,2)),"\\right\\rbrace"]):x(["\\left\\lbrace",...h(n).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(t==="Range")return x(["\\mathopen\\lbrack",e.serialize(c(n,1)),", ",e.serialize(c(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=c(n,1),s=c(n,2),o=!1,a=!1;return f(r)==="Open"&&(r=c(r,1),o=!0),f(s)==="Open"&&(s=c(s,1),a=!0),x([o?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(s),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function oi(e,n){return"normal"}function ai(e,n){return"normal"}function li(e,n){return n>2?"solidus":"radical"}function ui(e,n){if(n>3)return"inline-solidus";if(f(e)==="Divide"){let[t,i]=h(e),[r,s]=[Re(t),Re(i)];if(s<=2&&r>5)return"factor";let o=f(i);if(r<=2&&s>5&&o!=="Sqrt"&&o!=="Root")return"reciprocal"}return"quotient"}function ci(e,n){return"boolean"}function pi(e,n){return"solidus"}function fi(e,n){return"compact"}function De(e,n,t){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let i=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return x(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function un(e,n){if(n==="none")return e;if(n==="0...360"){let t=e%360;return(t<0?t+360:t)||0}if(n==="-180...180"){let t=e%360;return t>180&&(t-=360),t<-180&&(t+=360),t||0}return e}function Br(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,s=Math.floor(r),o=(r-s)*60,a=Math.round(o*1e3)/1e3,l=s,u=i;return a>=60&&(a=0,l++),l>=60&&(l=0,u++),{deg:n*u||0,min:n*l||0,sec:a===0?0:n*a}}function cn(e){let{deg:n,min:t,sec:i}=Br(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let s=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(s))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function Or(e){if(f(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of h(e))if(f(i)==="Power"){let r=c(i,1),s=c(i,2);if(f(s)==="Negate"){let o=c(s,1);r&&o&&t.push(["Power",r,o])}else{let o=N(s)??NaN;o===-1?r&&t.push(r):o<0?r&&t.push(["Power",r,-o]):n.push(i)}}else if(f(i)==="Rational"&&A(i)===2||f(i)==="Divide"){let r=c(i,1),s=c(i,2);N(r)!==1&&n.push(r),N(s)!==1&&t.push(s)}else{let r=Ee(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function Fr(e){let n=e.parseOptionalGroup(),t=e.parseGroup()??e.parseToken();return P(t)?n!==null?["Root",xe,M(n)]:["Sqrt",xe]:n!==null?["Root",t,n]:["Sqrt",t]}function Cr(e){if(typeof e=="number")return-e;if(typeof e=="string")return e.startsWith("-")?e.slice(1):e.startsWith("+")?"-"+e.slice(1):"-"+e;let n=e.num;return n.startsWith("-")?{num:n.slice(1)}:n.startsWith("+")?{num:"-"+n.slice(1)}:{num:"-"+n}}function Ue(e,n,t,i){return t==null?"\\sqrt{}":(i=i??2,n==="solidus"?e.wrapShort(t)+"^{1/"+e.serialize(i)+"}":n==="quotient"?e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(i)+"}}":N(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}function $r(e,n){e.level-=1;let t=f(n),i="",r=c(n,1);if(t==="Negate")i="-"+e.wrap(r,L+1);else if(t==="Subtract"){i=e.wrap(r,L);let s=c(n,2);if(s!==null){let o=e.wrap(s,L);o[0]==="-"?i+="+"+o.slice(1):o[0]==="+"?i+="-"+o.slice(1):i=i+"-"+o}}else if(t==="Add"){if(e.options.prettify&&A(n)===2&&e.options.invisiblePlus!=="+"){let[a,l]=[c(n,1),c(n,2)],[u,p]=[a,l],d=N(u),m=Ee(p);if((d===null||m===null)&&([u,p]=[l,a],d=N(u),m=Ee(p)),d!==null&&m!==null&&isFinite(d)&&Number.isInteger(d)&&d>=0&&d<=1e3&&isFinite(m[0])&&isFinite(m[1])&&m[0]>0&&m[0]<=100&&m[1]<=100)return i=De(e.options.invisiblePlus,e.serialize(u),e.serialize(p)),e.level+=1,i}if(e.options.prettify&&A(n)===2){let[a,l]=je(r),[u,p]=je(c(n,2));if(l<0&&p>0)return i=e.wrap(u,L)+"-"+e.wrap(a,L),e.level+=1,i}i=e.serialize(r);let s=A(n)+1,o=h(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[l,u]=je(r),p=e.wrap(l,L);u>0?p.startsWith("+")||p.startsWith("-")?i+=p:i+="+"+p:p.startsWith("+")?i+="-"+p.slice(1):p.startsWith("-")?i+="+"+p.slice(1):i+="-"+p}else{let l=e.wrap(r,L);l[0]==="-"||l[0]==="+"?i+=l:i+="+"+l}}return e.level+=1,i}function Ti(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[l,u]=Or(n);u.length>0&&(u.length===1&&u[0]===1?l.length===0?t="1":l.length===1?t=e.serialize(l[0]):t=Ti(e,["Multiply",...l]):t=e.serialize(["Divide",l.length===1?l[0]:["Multiply",...l],u.length===1?u[0]:["Multiply",...u]]))}if(t)return e.level+=1,t;let i=!1,r=null,s=A(n)+1,o=h(n);e.options.prettify===!0&&o.length===2&&oe(o[1])&&!oe(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let l=1;l<s;l++){if(r=o[l-1],r===null)continue;let u;if(oe(r)){u=e.serialize(r),u==="-1"&&!t?(t="",i=!i):(u[0]==="-"&&(u=u.slice(1),i=!i),t?t=De(e.options.multiply,t,u):t=u),a=!0;continue}if(f(r)==="Power"){let p=Ee(c(r,2));if(p!=null){let[d,m]=p;if(d===1&&m!==null){t+=Ue(e,e.rootStyle(r,e.level),c(r,1),m),a=!1;continue}}}if(f(r)==="Power"&&!isNaN(N(c(r,1))??NaN)){u=e.serialize(r),t?t=De(e.options.multiply,t,u):t=u,a=!0;continue}if(f(r)==="Negate"&&(r=c(r,1),i=!i),u=e.wrap(r,C),!t)t=u;else{let p=f(r);a&&(p==="Divide"||p==="Rational")?t=De(e.options.multiply,t,u):e.options.invisibleMultiply?t=De(e.options.invisibleMultiply,t,u):t=x([t,u])}a=!1}return e.level+=1,i?"-"+t:t}function pn(e){let n=e.parseGroup(),t=null;if(n===null?(n=e.parseToken(),t=e.parseToken()):t=e.parseGroup(),n=M(n),t=M(t),f(n)==="PartialDerivative"&&(f(t)==="PartialDerivative"||f(t)==="Multiply"&&f(c(t,1))==="PartialDerivative")){let s=c(n,3)??null,o=c(n,1);o==null&&(o=M(e.parseExpression()));let a=[];if(f(t)==="Multiply"){for(let l of h(t))if(f(l)==="PartialDerivative"){let u=c(l,2);u&&a.push(u)}}else{let l=c(t,2);l&&a.push(l)}return a.length>1&&(a=["List",...a]),["PartialDerivative",o,...a,s===null?1:s]}let i=y(n);if(i==="d"||i==="d_upright"||i==="differentialD"){let s=[],o=a=>{if(!a)return;let l=y(a);if(l&&l!=="d"&&l!=="d_upright"&&l!=="differentialD"){s.push(a);return}let u=f(a);if(u==="Sequence"||u==="Multiply"||u==="InvisibleOperator")for(let p of h(a))o(p)};if(o(t),s.length===0){let a=y(t);a&&a.length>1&&a[0]==="d"&&s.push(a.slice(1))}if(s.length>0)return["D",M(e.parseExpression()),...s]}return["Divide",n,t]}function di(e,n){if(n===null)return"";let t=M(c(n,1)),i=M(c(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let l=e.wrapShort(t),u=e.wrapShort(i);return r==="inline-solidus"?`${l}/${u}`:`{}^{${l}}\\!\\!/\\!{}_{${u}}`}else{if(r==="reciprocal")return N(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return N(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(t),a=e.serialize(i);return`${s}{${o}}{${a}}`}function Xn(e,n){if(!n)return"";let t=f(n),i=M(c(n,1));if(t==="Sqrt")return Ue(e,e.rootStyle(n,e.level-1),i,2);let r=M(c(n,2));if(t==="Root")return Ue(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let o=N(r)??1;if(o===-1)return e.serialize(["Divide","1",i]);if(o<0)return e.serialize(["Divide","1",["Power",i,-o]]);if(f(r)==="Divide"||f(r)==="Rational"){let a=N(c(r,1)),l=N(c(r,2));if(a===1){let u=e.rootStyle(n,e.level);return Ue(e,u,i,c(r,2))}if(a===-1)return l===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,c(r,2)??xe]]);if(l===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(c(r,1))}}`}else if(f(r)==="Power"&&N(c(r,2))===-1){let a=e.rootStyle(n,e.level);return Ue(e,a,i,c(r,1))}}let s=o=>o.startsWith("-")?e.wrapString(o,"normal"):o;if(f(i)==="Power"){let o=c(i,1),a=c(i,2),l=s(e.wrapShort(o)),u=e.wrapShort(a);return`
6
- ${l}^{${le("^",u,e.serialize(r))}}`}return le("^",s(e.wrapShort(i)),e.serialize(r))}function Ge(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,s=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=N(i),e.skipSpace();let l=e.index,u=e.parseNumber();u!==null&&(e.match('"')||e.match("\\doubleprime"))?s=N(u):e.index=l}else return e.index=t,["Degrees",n];let o=N(n);if(o!==null&&r!==null){let l=o+r/60;return s!==null&&(l+=s/3600),["Degrees",l]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),s!==null&&a.push(["Quantity",s,"arcsec"]),["Add",...a]}var Qn=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ge(e,n),serialize:(e,n)=>{let t=e.options,i=c(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=N(i);if(r!==null){let s=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(s=un(s,t.angleNormalization)),t.dmsFormat?cn(s):`${s}\xB0`}}return x([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ge(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>Ge(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>Ge(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>Ge(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=N(c(n,1)),i=N(c(n,2)),r=N(c(n,3));if(t!==null){let o=i??0,a=r??0,l=`${t}\xB0`;return(o!==0||a!==0)&&(l+=`${o}'`),a!==0&&(l+=`${a}"`),l}let s=[];for(let o of[1,2,3]){let a=c(n,o);a!==null&&s.push(e.serialize(a))}return`\\operatorname{DMS}(${s.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{latexTrigger:"\\exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>P(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>P(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:L,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:L});if(i===null)return null;if(f(i)==="Negate"){let r=c(i,1);if(oe(r))return ge("Add",n,Cr(r))}return ge("Add",n,i)},serialize:$r},{kind:"prefix",latexTrigger:["+"],precedence:L,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>P(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>P(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:L-1,serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=N(c(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":x([e.serialize(c(n,2)),"\\imaginaryI"]);return N(c(n,1))===0?r:i!==null&&i<0?x([t,r]):x([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:q,parse:pn,serialize:di},{latexTrigger:"\\dfrac",precedence:q,parse:pn},{latexTrigger:"\\tfrac",precedence:q,parse:pn},{latexTrigger:"\\cfrac",precedence:q,parse:pn},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:q,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:q,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:q,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:q,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=c(n,1);return y(t)||N(t)!==null?x(["\\exponentialE^{",e.serialize(t),"}"]):x(["\\exp",e.wrap(M(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:An},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:An},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>P(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>P(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{latexTrigger:["\\zeta"],kind:"function",parse:"Zeta"},{latexTrigger:["\\Beta"],kind:"function",parse:"Beta"},{name:"LambertW",latexTrigger:["\\operatorname{W}"],kind:"function",serialize:(e,n)=>"\\operatorname{W}"+e.wrapArguments(n)},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{J}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselJ",i]):"\\operatorname{J}"+e.wrapArguments(n)}},{name:"BesselY",latexTrigger:["\\operatorname{Y}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{Y}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselY",i]):"\\operatorname{Y}"+e.wrapArguments(n)}},{name:"BesselI",latexTrigger:["\\operatorname{I}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{I}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselI",i]):"\\operatorname{I}"+e.wrapArguments(n)}},{name:"BesselK",latexTrigger:["\\operatorname{K}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"AiryAi",latexTrigger:["\\operatorname{Ai}"],kind:"function",serialize:(e,n)=>"\\operatorname{Ai}"+e.wrapArguments(n)},{name:"AiryBi",latexTrigger:["\\operatorname{Bi}"],kind:"function",serialize:(e,n)=>"\\operatorname{Bi}"+e.wrapArguments(n)},{name:"GCD",latexTrigger:["\\gcd"],kind:"function"},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>yi("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>yi("Log",e),serialize:(e,n)=>{let[t,i]=h(n);return i?x(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",latexTrigger:["\\lcm"],kind:"function"},{symbolTrigger:"lcm",kind:"function",parse:"LCM"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max",arguments:"implicit"},{symbolTrigger:"min",kind:"function",parse:"Min",arguments:"implicit"},{name:"Max",latexTrigger:"\\max",kind:"function",arguments:"implicit"},{name:"Min",latexTrigger:"\\min",kind:"function",arguments:"implicit"},{name:"Supremum",latexTrigger:"\\sup",kind:"function",arguments:"implicit"},{name:"Infimum",latexTrigger:"\\inf",kind:"function",arguments:"implicit"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(f(n)!=="To")return null;let t=e.parseArguments("implicit");return t?["Limit",["Function",t[0],c(n,1)],c(n,2)]:null},serialize:(e,n)=>{let t=c(n,1),i=c(t,2),r=c(n,2);return x(["\\lim_{",e.serialize(i),"\\to",e.serialize(r),"}",e.serialize(c(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:Q},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:C,serialize:Ti},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:C,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:C+2});return i===null?null:ge("Multiply",n,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:C,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:C+2});return i===null?["Multiply",n,xe]:ge("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:q,serialize:(e,n)=>{if(A(n)!==2)return"";let t=e.serialize(c(n,1)),i=e.serialize(c(n,2));return x([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:q,parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:S,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",M(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=e.serialize(c(n,2));if(c(n,3)===null)return x([t,"\\equiv",i]);let r=e.serialize(c(n,3));return x([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:Fe+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:Fe+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>P(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>P(n)?null:["Norm",n],serialize:(e,n)=>{let t=c(n,1);if(f(t)==="Matrix"){let i=c(t,1),r=c(t,2),s=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(s)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:Q,serialize:(e,n)=>{let t=c(n,1);if(t===null)return"\\pm";if(A(n)===1)return x(["\\pm",e.serialize(t)]);let i=c(n,2);return x([e.serialize(t),"\\pm",e.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:Q,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,M(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:Q,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["PlusMinus",n,M(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:Q,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",M(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Xn},{latexTrigger:"\\prod",precedence:C,name:"Product",parse:mi("Product","Multiply",C),serialize:xi("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:Fe,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:Fe});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:q,serialize:(e,n)=>n&&A(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):di(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=c(n,1);if(!t)return"";let i=c(n,2);return y(i)==="Add"?`\\sum ${e.serialize(t)}`:y(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(c(n,2))}\\right)`}},{name:"Root",serialize:Xn},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(c(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:L,name:"Sum",parse:mi("Sum","Add",C),serialize:xi("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:Fr,serialize:Xn},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:L+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:L+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(c(n,1),L+2),i=e.wrap(c(n,2),L+3);return x([t,"-",i])}}];function zr(e,n){if(e!==null){if(y(e))return{index:y(e)??"Nothing",upper:n};if(f(e)==="GreaterEqual"){let t=y(c(e,1))??"Nothing",i=c(e,2)??1;return{index:t,lower:i,upper:n}}if(f(e)==="Equal"){let t=y(c(e,1))??"Nothing",i=c(e,2);if(f(i)==="Range"){let s=c(i,1)??1,o=c(i,2)??void 0;return{index:t,lower:s,upper:o}}return{index:t,lower:i??1,upper:n}}if(f(e)==="Element")return{index:y(c(e,1))??"Nothing",element:e}}}function qr(e){let n=f(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function gi(e){if(e===null)return[];let n=ae(e);if(n)return[...n];if(f(e)==="Tuple"){let t=h(e);return t?[...t]:[e]}return[e]}function Vr(e,n){P(e)&&(e=null),P(n)&&(n=null);let t=gi(e),i=gi(n),r=[],s=0;for(;s<t.length;){let o=t[s],a=zr(o,i[s]);if(a){if(a.element&&s+1<t.length){let l=t[s+1];if(qr(l)&&f(l)!=="Element"&&f(l)!=="Equal"){let u=a.element;if(Array.isArray(u)&&u.length>=3){let p=[u[0],...u.slice(1),l];a.element=p}s++}}r.push(a)}s++}return r}function mi(e,n,t){return i=>{i.skipSpace(),i.pushSymbolTable();let r=null,s=null;for(;!(s&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?s=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!s){let u=i.parseExpression({minPrec:t});return i.popSymbolTable(),u?["Reduce",u,n]:null}let o=Vr(s,r),a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[e];let l=[];for(let u of o){if(u.element){l.push(u.element);continue}let p=u.lower,d=u.upper,m=u.index??"Nothing";d!=null?l.push(["Tuple",m,p??1,d]):p!=null?l.push(["Tuple",m,p]):l.push(["Tuple",m])}return[e,a,...l]}}var Gr=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function hi(e){return e==null||y(e)==="Nothing"?null:e}function Ur(e){let n=[],t=h(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=f(i);if(r&&Gr.has(r)){n.push(i);continue}break}return n}function jr(e,n){if(f(n)==="Element"){let u=e.serialize(c(n,1)),p=e.serialize(c(n,2));return{sub:`${u}\\in ${p}`}}let t=c(n,1);t!==null&&f(t)==="Hold"&&(t=c(t,1));let i=hi(c(n,2)),r=hi(c(n,3)),s={},o=t?y(t):null,a=o!==null&&o!=="Nothing",l=a&&t?e.serialize(t):void 0;return a&&i!==null&&l?s.sub=`${l}=${e.serialize(i)}`:a&&l?s.sub=l:i!==null&&(s.sub=e.serialize(i)),r!==null&&(s.sup=e.serialize(r)),s}function xi(e){return(n,t)=>{let i=c(t,1);if(!i)return e;let r=Ur(t),s=e;if(r.length>0){let o=[],a=[];for(let l of r){let u=jr(n,l);u.sub&&o.push(u.sub),u.sup&&a.push(u.sup)}o.length>0&&(s=le("_",s,o.join(", "))),a.length>0&&(s=le("^",s,a.join(", ")))}return x([s,n.serialize(i)])}}function yi(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=n.parseArguments("implicit");return i===null&&t===null?[e]:i===null?[e,t]:t===null?[e,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function je(e){let n=1,t=e;do{e=t;let i=f(e);if(i==="Negate")n*=-1,t=c(e,1);else if(i==="Multiply"){let[r,s]=je(c(e,1));s<0&&(n*=-1,r===1?t=["Multiply",...h(e).slice(1)]:t=["Multiply",r,...h(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,s]=je(c(e,1));s<0&&(n*=-1,t=[i,r,c(e,2)])}else{let r=N(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var Kn=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function E(e){return(n,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcsinh":"Arsinh","\\arcosh":"Arcosh","\\arccosh":"Arcosh","\\artanh":"Artanh","\\arctanh":"Artanh","\\arsech":"Arsech","\\arcsech":"Arsech","\\arcsch":"Arcsch","\\arccsch":"Arcsch","\\arcoth":"Arcoth","\\arccoth":"Arcoth","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Cosh","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[e??""]??e??"";if(n.atTerminator(t))return r;let s=r;do{let u=n.parsePostfixOperator(s,t);if(u===null)break;s=u}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:C,condition:u=>i[u.peek]||(t?.condition?.(u)??!1)}),l=a===null?s:typeof s=="string"?[s,...a]:["Apply",s,...a];return o===null?l:["Power",l,o]}}var et=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:E("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:E("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:E("Arctan")},{latexTrigger:["\\arctg"],parse:E("Arctan")},{symbolTrigger:"arctg",parse:E("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:E("Arccot")},{latexTrigger:["\\arcctg"],parse:E("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:E("Arcoth")},{symbolTrigger:"arccoth",parse:E("Arcoth")},{latexTrigger:["\\arcoth"],parse:E("Arcoth")},{latexTrigger:["\\arccoth"],parse:E("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:E("Arcsec")},{latexTrigger:["\\arcsec"],parse:E("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:E("Arccsc")},{latexTrigger:["\\arccsc"],parse:E("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:E("Arsinh")},{symbolTrigger:"arcsinh",parse:E("Arsinh")},{latexTrigger:["\\arsinh"],parse:E("Arsinh")},{latexTrigger:["\\arcsinh"],parse:E("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:E("Arcosh")},{symbolTrigger:"arccosh",parse:E("Arcosh")},{latexTrigger:"\\arcosh",parse:E("Arcosh")},{latexTrigger:"\\arccosh",parse:E("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:E("Artanh")},{symbolTrigger:"arctanh",parse:E("Artanh")},{latexTrigger:"\\artanh",parse:E("Artanh")},{latexTrigger:["\\arctanh"],parse:E("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:E("Arsech")},{symbolTrigger:"arcsech",parse:E("Arsech")},{latexTrigger:["\\arsech"],parse:E("Arsech")},{latexTrigger:["\\arcsech"],parse:E("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:E("Arcsch")},{symbolTrigger:"arccsch",parse:E("Arcsch")},{latexTrigger:["\\arcsch"],parse:E("Arcsch")},{latexTrigger:["\\arccsch"],parse:E("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:E("Cosec")},{latexTrigger:["\\cosec"],parse:E("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:E("Cosh")},{latexTrigger:["\\ch"],parse:E("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:E("Cot")},{latexTrigger:["\\cotg"],parse:E("Cot")},{latexTrigger:["\\ctg"],parse:E("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:E("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:E("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:E("Coth")},{latexTrigger:["\\cth"],parse:E("Coth")},{symbolTrigger:"cth",parse:E("Coth")},{latexTrigger:["\\coth"],parse:E("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:E("Sec")},{name:"Sech",symbolTrigger:"sech",parse:E("Sech")},{latexTrigger:["\\sech"],parse:E("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:E("Sinh")},{latexTrigger:["\\sh"],parse:E("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:E("Tan")},{latexTrigger:["\\tg"],parse:E("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:E("Tanh")},{latexTrigger:["\\th"],parse:E("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:E("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:E("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"}];function Pe(e){return n=>{let t=!1,i=[],r=[];for(;!t;){n.skipVisualSpace(),n.match("\\limits"),n.skipSpace();let a=null,l=null;for(;!(l!==null&&a!==null)&&(n.peek==="_"||n.peek==="^");)n.match("_")?l=n.parseGroup()??n.parseToken():n.match("^")&&(a=n.parseGroup()??n.parseToken()),n.skipSpace();P(l)&&(l=null),P(a)&&(a=null),i.push(l??"Nothing"),r.push(a??"Nothing"),n.skipVisualSpace(),t=!n.match(e)}let[s,o]=Yr(n);if(s&&o.length===0){if(f(s)==="Add"||f(s)==="Subtract"){let a=[],l=[];for(let u of h(s))if(o)l.push(u);else{let p;[p,o]=ee(u),a.push(p??u)}if(o!==null&&l.length>0)return["Add",bi(e,["Add",...a],{indexes:o,subs:i,sups:r})??"Nothing",...l]}else if(f(s)==="Divide"){let a;[a,o]=ee(c(s,1)),a!==null&&o!==null&&(s=["Divide",a,c(s,2)])}}return bi(e,s,{indexes:o,subs:i,sups:r})}}function bi(e,n,t){if(!n)return null;if(t.sups.length===0&&t.subs.length===0)return[e,n,...t.indexes];let i=t.indexes.length===0?f(n)==="Function"?h(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let o=0;o<r;o++)i.push("Nothing");else if(i.length!==r)for(let o=i.length;o<r;o++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let o=t.subs.length;o<r;o++)t.subs.push("Nothing");if(t.sups.length!==r)for(let o=t.sups.length;o<r;o++)t.sups.push("Nothing");let s=i.map((o,a)=>{let l=t.sups[a],u=t.subs[a];return u==="Nothing"&&l==="Nothing"?o:["Tuple",o,u,l]});return[e,n,...s]}function Yr(e){let n=!1,t=e.parseExpression({minPrec:266,condition:()=>{let i=e.index;return n=ki(e),e.index=i,n}});return t!==null&&!n?ee(t):[t,Wr(e)]}function Wr(e){let n=[];for(;ki(e);){e.skipVisualSpace();let t=y(e.parseSymbol());if(t===null)return n;n.push(t)}return n}function ee(e){let n=f(e),t=c(e,1);if(!t)return[e,[]];if(n==="Sequence"&&A(e)===1)return ee(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=h(e);if(i){let[r,s]=Hr(i);return r.length>0?[[n,...r],s]:[null,s]}}else if(n==="Delimiter"){let[i,r]=ee(t);if(r)return i?[["Delimiter",["Sequence",i],...h(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=h(e);if(i.length>0){let[r,s]=ee(i[i.length-1]);if(s.length>0){if(r)return[["Add",...i.slice(0,-1),r],s];if(i.length>2)return[["Add",...i.slice(0,-1)],s];if(i.length>2)return[i[0],s]}}}else if(n==="Negate"){let[i,r]=ee(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=ee(t);if(r.length>0)return[["Divide",i??1,c(e,2)],r]}else{let i=h(e);if(i.length===1){let[r,s]=ee(i[0]);if(s.length>0)return[[f(e),r],s]}}return[e,[]]}function Ei(e){return(n,t)=>{if(!c(t,1))return e;let i=c(t,1),r=[];f(i)==="BuiltInFunction"?(r=["x"],i=[c(i,1),"x"]):f(i)==="Function"?(r=h(i).slice(1),i=c(i,1)):y(i)?r=[]:r=[];let s=h(t).slice(1),o=[],a=s.map((u,p)=>{if(y(u)==="Nothing")return o.push(y(r[p])??"Nothing"),"";if(y(u))return o.push(y(u)??"Nothing"),"";let d=f(u);if(d==="Tuple"||d==="Pair"||d==="Limits"||d==="Range"){if(A(u)===3){let m=c(u,1);o.push(y(m)??"Nothing");let T=c(u,2),b=c(u,3);return y(T)==="Nothing"&&(T=null),y(b)==="Nothing"&&(b=null),T!==null&&b!==null?`_{${n.serialize(T)}}^{${n.serialize(b)}}`:T!==null?`_{${n.serialize(T)}}`:b!==null?`^{${n.serialize(b)}}`:""}return`_{${n.serialize(u)}}`}if(A(u)===2){if(y(c(u,1))){o.push(y(c(u,1))??"Nothing");let b=c(u,2);return y(b)==="Nothing"?"":`_{${n.serialize(b)}}`}o.push(y(r[p])??"Nothing");let m=c(u,1),T=c(u,2);if(y(m)==="Nothing"&&(m=null),y(T)==="Nothing"&&(T=null),m!==null&&T!==null)return`_{${n.serialize(m)}}^{${n.serialize(T)}}`;if(m!==null)return`_{${n.serialize(m)}}`;if(T!==null)return`^{${n.serialize(T)}}`}else o.push(y(r[p])??"Nothing")}),l=o.filter(u=>y(u)!=="Nothing").map(u=>`\\mathrm{d}${n.serialize(y(u)??"x")}`);return l.length>0&&(l=["\\,",...l]),a.length===0?`${e}\\,${n.serialize(i)}\\!${l.join(" ")}`:a.reverse().map(u=>`${e}${u}`).join("")+"\\!"+n.serialize(i)+l.join(" ")}}var nt=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Pe("Integrate"),serialize:Ei("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Pe("Integrate")},{kind:"expression",latexTrigger:["\\iiint"],parse:Pe("Integrate")},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Pe("CircularIntegrate"),serialize:Ei("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Pe("CircularIntegrate")},{kind:"expression",latexTrigger:["\\oiiint"],parse:Pe("CircularIntegrate")}];function ki(e){let n=e.index;for(;e.match("\\cdot")||e.skipVisualSpace(););return e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"])||e.match("d")||e.match("\\differentialD")?!0:(e.index=n,!1)}function Hr(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=Zr(n),!i)break;t.push(i)}return[n,t]}function Zr(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=y(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var it=[{name:"Matrix",serialize:(e,n)=>{let t=h(c(n,1));return tt(e,t,I(c(n,2)),I(c(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=h(n);return tt(e,t.map(i=>["List",i]),I(c(n,2)),I(c(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=te(e,!1),[t,i]=ne(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Inverse",serialize:(e,n)=>e.serialize(c(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>Ae(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>Ae(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>Ae(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>Ae(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>Ae(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=c(n,1);if(f(t)==="Matrix"){let i=h(c(t,1));return tt(e,i,"||",I(c(t,2)))}return Ae(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=e.serialize(c(n,2));return`${t} \\cdot ${i}`}}];function ne(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function te(e,n=!0){let t=e.parseStringGroup(n)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function Ae(e,n,t){if(h(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=c(n,1),s=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${s}`:`${t}\\left(${s}\\right)`}function tt(e,n,t,i){t??="()";let[r,s]=["",""];typeof t=="string"&&t.length===2&&([r,s]=t);let o="";if(i)for(let p of i)p==="<"?o+="l":p===">"?o+="r":p==="="?o+="c":p==="|"?o+="|":p===":"&&(o+=":");let a=[];for(let p of n??[]){let d=[];for(let m of h(p))d.push(e.serialize(m));a.push(d.join(" & "))}let l=a.join(`\\\\
7
- `),u=o.length>0?`[${o}]`:"";return r==="("&&s===")"?x(["\\begin{pmatrix}",u,l,"\\end{pmatrix}"]):r==="["&&s==="]"?x(["\\begin{bmatrix}",u,l,"\\end{bmatrix}"]):r==="{"&&s==="}"?x(["\\begin{Bmatrix}",u,l,"\\end{Bmatrix}"]):r==="|"&&s==="|"?x(["\\begin{vmatrix}",u,l,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?x(["\\begin{Vmatrix}",u,l,"\\end{Vmatrix}"]):r==="{"&&s==="."?x(["\\begin{dcases}",u,l,"\\end{dcases}"]):r==="."&&s==="}"?x(["\\begin{rcases}",u,l,"\\end{rcases}"]):o||r!=="."||s!=="."?x(["\\left",Me[r]??r,"\\begin{array}",`{${o}}`,l,"\\end{array}","\\right",Me[s]??s]):x(["\\begin{matrix}",l,"\\end{matrix}"])}var rt=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return!t||!y(t)?null:["Mean",t]}}];var fn={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},Ni=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),dn={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function Xr(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(fn[n]!==void 0&&Ni.has(t)){let i=dn[t];if(i)return{prefixScale:fn[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(fn[n]!==void 0&&Ni.has(t)){let i=dn[t];if(i)return{prefixScale:fn[n],baseEntry:i}}}return null}function Qr(e){let n=dn[e];if(n)return n;let t=Xr(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function st(e){let n=Qr(e);return n?n.dimension:null}var ja=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[dn[e].dimension.join(","),e]));function Kr(e){let n=e.indexOf("^");if(n===-1)return e;let t=e.slice(0,n),i=e.slice(n+1),r=parseInt(i,10);return isNaN(r)?e:["Power",t,r]}function Ye(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,s=!0;for(let o=0;o<e.length-1;o++)if(e[o]==="("?r++:e[o]===")"&&r--,r===0&&o<e.length-1){s=!1;break}if(s)return Ye(e.slice(1,-1))}let n=-1,t=[],i=0;for(let r=0;r<e.length;r++)e[r]==="("?i++:e[r]===")"?i--:i===0&&(e[r]==="/"&&n===-1?n=r:e[r]==="*"&&t.push(r));if(n!==-1){let r=e.slice(0,n).trim(),s=e.slice(n+1).trim(),o=Ye(r),a=Ye(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(e.slice(s,a).trim()),s=a+1;r.push(e.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>Ye(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return e[0]==="("?null:Kr(e)}function Si(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?Ye(e):e}function Di(e){if(!e.match("<{>"))return null;let n="",t=0;for(;!e.atEnd;){let i=e.peek;if(i==="<}>"&&t===0)return e.nextToken(),n;if(i==="<}>"){t--,e.nextToken();continue}if(i==="<{>"){t++,e.nextToken();continue}if(i==="<space>"){e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var es=new Set(["d"]);function Pi(e){if(!e||e.length===0||es.has(e))return null;if(st(e)!==null)return e;if(/[/*^]/.test(e))try{let n=Si(e);if(n!==null&&ot(n))return n}catch{return null}return null}function ot(e){if(typeof e=="string")return st(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>ot(t)):n==="Power"?ot(e[1]):!1}var vi=e=>{let n=e.index,t=Di(e);if(t===null)return e.index=n,null;let i=Pi(t);return i===null?(e.index=n,null):["__unit__",i]};function he(e){let n=y(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=f(e);if(!t)return"";if(t==="Divide"){let i=c(e,1),r=c(e,2);return`${he(i)}/${he(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(he(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=c(e,1),r=c(e,2),s=typeof r=="number"?String(r):y(r)??String(r);return`${he(i)}^{${s}}`}if(t==="Square"){let i=c(e,1);return`${he(i)}^{2}`}return""}function Ii(e){let n=e.parseGroup();if(n===null)return null;let t=Ai(e);return t===null?null:["Quantity",n,t]}function Mi(e){return Ai(e)}function Ai(e){let n=e.index,t=Di(e);if(t===null)return e.index=n,null;let i=Pi(t);return i===null?(e.index=n,null):i}var at=[{latexTrigger:"\\mathrm",kind:"expression",parse:vi},{latexTrigger:"\\text",kind:"expression",parse:vi},{latexTrigger:"\\qty",parse:Ii},{latexTrigger:"\\SI",parse:Ii},{latexTrigger:"\\unit",parse:Mi},{latexTrigger:"\\si",parse:Mi},{name:"Quantity",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);if(t===null||i===null)return"";let r=y(i),s=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",o=e.options;if(s&&(o.dmsFormat||o.angleNormalization&&o.angleNormalization!=="none")){let u=N(t);if(u===null){let d=e.serialize(t),m=he(i);return x([d,"\\,",`\\mathrm{${m}}`])}let p=u;return r==="rad"?p=p*180/Math.PI:r==="arcmin"?p=p/60:r==="arcsec"&&(p=p/3600),o.angleNormalization&&o.angleNormalization!=="none"&&(p=un(p,o.angleNormalization)),o.dmsFormat?cn(p):`${p}\xB0`}let a=e.serialize(t),l=he(i);return x([a,"\\,",`\\mathrm{${l}}`])}}];function z(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}var lt=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>y(n)===null?null:["Increment",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>y(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return y(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return y(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,t="Nothing",i="Nothing";for(;!n;)e.skipSpace(),e.match("_")?i=e.parseGroup()??e.parseToken():e.match("^")?t=e.parseGroup()??e.parseToken():n=!0;let r=ae(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let s=e.parseGroup()??"Nothing";if(!P(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,i,t]},serialize:(e,n)=>{let t="\\partial",i=c(n,1),r=c(n,2),s=c(n,3);return r!==null&&r!=="Nothing"&&(f(r)==="List"?t+="_{"+e.serialize(["Sequence",...h(r)])+"}":t+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(t+="^{"+e.serialize(s)+"}"),i!==null&&i!=="Nothing"&&(t+=e.serialize(i)),t},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:z("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:z("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:z("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:z("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:z("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:z("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:z("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:z("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:z("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:z("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:z("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:z("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:z("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:z("OverGroup")},{latexTrigger:["\\textcolor"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\colorbox"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{backgroundColor:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\boxed"],parse:e=>{let n=e.parseGroup();return n!==null?["Annotated",n,{dict:{border:!0}}]:"Nothing"}},{latexTrigger:["\\displaystyle"],parse:()=>"Nothing"},{latexTrigger:["\\textstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptscriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\color"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\tiny"],parse:()=>"Nothing"},{latexTrigger:["\\scriptsize"],parse:()=>"Nothing"},{latexTrigger:["\\footnotesize"],parse:()=>"Nothing"},{latexTrigger:["\\small"],parse:()=>"Nothing"},{latexTrigger:["\\normalsize"],parse:()=>"Nothing"},{latexTrigger:["\\large"],parse:()=>"Nothing"},{latexTrigger:["\\Large"],parse:()=>"Nothing"},{latexTrigger:["\\LARGE"],parse:()=>"Nothing"},{latexTrigger:["\\huge"],parse:()=>"Nothing"},{latexTrigger:["\\Huge"],parse:()=>"Nothing"},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=Dn(c(n,2));if(i==null)return t;i.dict.mathStyle==="normal"?t=x(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"&&(t=x(["{\\textstyle",t,"}"]));let r=i.dict.size;return r!==null&&r>=1&&r<=10&&(t=x(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),i.dict.fontFamily==="monospace"?t=x(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=x(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=x(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=x(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=x(["\\textup{",t,"}"])),i.dict.color&&(t=x(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=x(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=x(["\\boxed{",t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\phantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:e=>(e.parseOptionalGroup(),e.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:e=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:e=>"Nothing"},{name:"HorizontalSpacing",serialize:(e,n)=>{if(c(n,2)!==null)return e.serialize(c(n,1));let t=N(c(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}}];var _i=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var ut=[...Yn,...Wn,...Hn,...Vn,...Zn,...me,...Qn,...Kn,...et,...nt,...it,...rt,...at,...lt,..._i];var ct;function Li(e){if(!ct){let t=`^[${["Zyyy","Zinh","Arab","Armn","Beng","Bopo","Cyrl","Deva","Ethi","Geor","Grek","Gujr","Guru","Hang","Hani","Hebr","Hira","Kana","Knda","Khmr","Laoo","Latn","Mlym","Mymr","Orya","Sinh","Taml","Telu","Thaa","Thai","Tibt"].map(i=>`\\p{Script=${i}}`).join("")}]*$`;ct=new RegExp(t,"u")}return ct.test(e)}function pe(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||_e.test(e)?!0:Li(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var ns="\\u{FE0F}",ts="\\u{20E3}",is="\\u{200D}",rs="\\p{RI}\\p{RI}",ss="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",wi=`(?:\\p{EMod}|${ns}${ts}?|${ss})`,os="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",Ji=`(?:${os}${wi}*|\\p{Emoji}${wi}+|${rs})`,Ri=`(?:${Ji})(${is}${Ji})*`,as=new RegExp(`(?:${Ri})+`,"u"),_e=new RegExp(`^(?:${Ri})+$`,"u");function Bi(e){return typeof e!="string"?"not-a-string":e===""?"empty-string":e.normalize()!==e?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(e)?"unexpected-bidi-marker":_e.test(e)?"valid":/\p{XIDC}/u.test(e)&&as.test(e)?"unexpected-mixed-emoji":Li(e)?pe(e)?"valid":pe(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}var ls={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]};function us(e){return"kind"in e&&e.kind==="matchfix"}var Oi={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function we(e,n,t){let i=e.get(n);i?i.unshift(t):e.set(n,[t])}function Fi(e,n,t){let i=cs(n,t);if(i===null)return;let r="kind"in n?n.kind:"expression",s=i.latexTrigger;typeof s=="string"&&(e.lookahead=Math.max(e.lookahead,tn(s)));let o=F(s??"");if(o.length===2&&/[_^]/.test(o[0])&&o[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=n.parse;!a&&n.name&&(r==="postfix"||r==="prefix"?a=(l,u)=>[n.name,u]:a=n.name),Fi(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[o[0],"<{>",o[1],"<}>"]},t)}if(e.defs.push(i),us(i)){let a=i.openTrigger,l=[];if(typeof a=="string"){let u=ls[a];u?l.push(...u):l.push(a),a==="||"&&l.push("|")}else Array.isArray(a)&&a.length>0&&l.push(a[0]);for(let u of l){let p=e.matchfixByOpen.get(u);p?p.unshift(i):e.matchfixByOpen.set(u,[i])}}if(i.latexTrigger&&i.latexTrigger!==""){let a=i.latexTrigger;switch(i.kind){case"infix":we(e.infixByTrigger,a,i);break;case"prefix":we(e.prefixByTrigger,a,i);break;case"postfix":we(e.postfixByTrigger,a,i);break;case"function":we(e.functionByTrigger,a,i);break;case"symbol":we(e.symbolByTrigger,a,i);break;case"expression":we(e.expressionByTrigger,a,i);break;case"environment":case"matchfix":break}}i.name!==void 0&&(e.ids.has(i.name)&&t({severity:"warning",message:["invalid-dictionary-entry",i.name,"Duplicate definition. The name (MathJSON symbol) must be unique, but triggers can be shared by multiple definitions."]}),e.ids.set(i.name,i))}function Ci(e,n){let t={lookahead:1,ids:new Map,defs:[],matchfixByOpen:new Map,infixByTrigger:new Map,prefixByTrigger:new Map,postfixByTrigger:new Map,functionByTrigger:new Map,symbolByTrigger:new Map,expressionByTrigger:new Map};for(let r of e)Fi(t,r,n);let i={"(":[")","\\rparen"],"\\lparen":[")","\\rparen"],"[":["]","\\rbrack","\\]"],"\\lbrack":["]","\\rbrack","\\]"],"\\[":["]","\\rbrack","\\]"],"{":["}","\\rbrace"],"\\lbrace":["}","\\rbrace"],"\\{":["}","\\rbrace"],"<":[">","\\rangle"],"\\langle":[">","\\rangle"],"|":["|","\\|","\\rvert","\\lvert"],"\\|":["|","\\|","\\rvert","\\lvert"],"\\lvert":["|","\\|","\\rvert","\\lvert"],"||":["||","\\Vert","\\lVert","\\rVert"],"\\Vert":["||","\\Vert","\\lVert","\\rVert"],"\\lVert":["||","\\Vert","\\lVert","\\rVert"]};for(let[r,s]of t.matchfixByOpen.entries())t.matchfixByOpen.set(r,s.sort((o,a)=>{let l=J=>typeof J=="string"?J:J[0]||"",u=J=>typeof J=="string"?J:J[0]||"",p=l(o.openTrigger),d=u(o.closeTrigger),m=i[p]?.includes(d)??!1,T=l(a.openTrigger),b=u(a.closeTrigger),v=i[T]?.includes(b)??!1;return m&&!v?-1:!m&&v?1:0}));return t}function cs(e,n){if(!ds(e,n))return null;let t={kind:"kind"in e?e.kind:"expression"},i=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?i=F(e.latexTrigger):i=e.latexTrigger);let r=null;"symbolTrigger"in e&&(r=e.symbolTrigger),i!==null&&(t.latexTrigger=U(i)),r!==null&&(t.symbolTrigger=r),e.name&&(t.name=e.name,t.serialize=ps(e,i,r)),t.kind==="matchfix"&&Ce(e)&&(t.openTrigger=e.openTrigger,t.closeTrigger=e.closeTrigger),t.kind==="symbol"&&Lt(e)&&(t.precedence=e.precedence??1e4),t.kind==="expression"&&Jt(e)&&(t.precedence=e.precedence??1e4),(t.kind==="prefix"||t.kind==="postfix")&&(en(e)||wn(e))&&(i&&(i[0]==="^"||i[0]==="_")?(t.precedence=720,e.precedence):t.precedence=e.precedence??1e4),t.kind==="infix"&&_n(e)&&(!i||i[0]!=="^"&&i[0]!=="_"||!e.associativity||e.associativity,t.associativity=e.associativity??"none",t.precedence=e.precedence??1e4);let s=fs(e,i,r);return s&&(t.parse=s),t.kind==="function"&&"arguments"in e&&(t.arguments=e.arguments),t}function ps(e,n,t){if(typeof e.serialize=="function")return e.serialize;let i=e.kind??"expression";if(i==="environment"){let a=e.symbolTrigger??e.name??"unknown";return(l,u)=>x([`\\begin{${a}}`,l.serialize(c(u,1)),`\\end{${a}}`])}if(Ce(e)){let a=typeof e.openTrigger=="string"?Oi[e.openTrigger]:U(e.openTrigger),l=typeof e.closeTrigger=="string"?Oi[e.closeTrigger]:U(e.closeTrigger);return(u,p)=>x([a,u.serialize(c(p,1)),l])}let r=e.serialize;if(r===void 0&&n&&(r=U(n)),r){let a=e.precedence??1e4;return i==="postfix"?(l,u)=>x([l.wrap(c(u,1),a),r]):i==="prefix"?(l,u)=>x([r,l.wrap(c(u,1),a)]):i==="infix"?(l,u)=>{let p=A(u);if(p===0)return"";let d=e.precedence??1e4;return x(h(u).flatMap((m,T)=>{let b=l.wrap(m,d+1);return T<p-1?[b,r]:[b]}))}:(l,u)=>f(u)?x([r,l.wrapArguments(u)]):r}let s=t??e.name??"unknown",o=e.precedence??1e4;return i==="postfix"?(a,l)=>x([a.wrap(c(l,1),o),a.serializeSymbol(s)]):i==="prefix"?(a,l)=>x([a.serializeSymbol(s),a.wrap(c(l,1),o)]):i==="infix"?(a,l)=>x([a.wrap(c(l,1),o+1),a.serializeSymbol(s),a.wrap(c(l,2),o+1)]):(a,l)=>f(l)?x([a.serializeSymbol(s),a.wrapArguments(l)]):a.serializeSymbol(s)}function fs(e,n,t){if("parse"in e&&typeof e.parse=="function")return e.parse;let i=("kind"in e?e.kind:"expression")??"expression";if(i==="environment"){let r=e.parse??e.name??t;if(r)return(s,o)=>{let a=s.parseTabular();return a===null?null:[r,["List",a.map(l=>["List",...l])]]}}if(i==="function"){let r=e.parse??e.name??t,s=("arguments"in e?e.arguments:void 0)??"enclosure";if(r)return(o,a)=>{let l=o.parseArguments(s,a);return l===null?r:[r,...l]}}if(i==="symbol"){let r=e.parse??e.name??t;if(r)return(s,o)=>r}if(i==="prefix"){let r=e.parse??e.name??t;if(r){let s=e.precedence??1e4;return(o,a)=>{let l=o.parseExpression({...a??[],minPrec:s});return l===null?null:[r,l]}}}if(i==="postfix"){let r=e.parse??e.name;if(r)return(s,o)=>o===null?null:[r,o]}if(i==="infix"){if(/[_^]/.test(n?.[0]??"")){let s=e.name??e.parse;return(o,a)=>[s,M(c(a,1)),M(c(a,2))]}let r=e.parse??e.name??t;if(r){let s=e.precedence??1e4,o=e.associativity??"none";return o==="none"?(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s}));return[r,l,p]}:o==="left"?(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s+1}));return typeof r!="string"?[r,l,p]:[r,l,p]}:o==="right"?(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s}));return typeof r!="string"?[r,l,p]:[r,l,p]}:(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s}));return typeof r!="string"?[r,l,p]:ge(r,l,p)}}}if(i==="matchfix"){let r=e.parse??e.name;if(r)return(s,o)=>P(o)?null:[r,o]}if(i==="expression"){let r=e.parse??e.name??t;if(r)return()=>r}if("parse"in e){let r=e.parse;return()=>r}}function ds(e,n){let t=e.name??e.latexTrigger??e.symbolTrigger??e.openTrigger;if(!t)try{t=JSON.stringify(e)}catch{t="???"}if(Array.isArray(t)&&(t=U(t)),"kind"in e&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(e.kind)&&n({severity:"warning",message:["invalid-dictionary-entry",t,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),e.serialize!==void 0&&!e.name)return n({severity:"warning",message:["invalid-dictionary-entry",t,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("symbolTrigger"in e&&(!("kind"in e)||e.kind!=="environment")&&(typeof e.symbolTrigger!="string"||!pe(e.symbolTrigger))&&n({severity:"warning",message:["invalid-dictionary-entry",t,"The 'symbolTrigger' property must be a valid symbol"]}),"name"in e&&(typeof e.name!="string"?e.name!==void 0&&n({severity:"warning",message:["invalid-dictionary-entry",t,"The 'name' property must be a string"]}):pe(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid symbol"]})),Ce(e)){if("latexTrigger"in e||"symbolTrigger"in en)return n({severity:"warning",message:["invalid-dictionary-entry",t,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'symbolTrigger'. "]}),!1;if(!e.openTrigger||!e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof e.openTrigger!=typeof e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(_n(e)||wn(e)||en(e)){if(Array.isArray(e.latexTrigger)&&(e.latexTrigger[0]==="_"||e.latexTrigger[0]==="^")||typeof e.latexTrigger=="string"&&(e.latexTrigger.startsWith("^")||e.latexTrigger.startsWith("_"))){if(e.precedence!==void 0||e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(e.precedence===void 0)return n({severity:"warning",message:["invalid-dictionary-entry",t,`Expected a "precedence" for ${e.kind} operator`]}),!1}else if(e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "associativity" operator']}),!1;return!Ce(e)&&!Rt(e)&&!e.latexTrigger&&!e.symbolTrigger&&!e.name?(n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'name', a 'latexTrigger' or a 'symbolTrigger'"]}),!1):e.parse===void 0&&e.name===void 0?(n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'parse' or 'name'"]}),!1):!0}var gs={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\text":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},ms={"\\mathring":"_ring","\\hat":"_hat","\\tilde":"_tilde","\\vec":"_vec","\\overline":"_bar","\\underline":"_underbar","\\dot":"_dot","\\ddot":"_ddot","\\dddot":"_dddot","\\ddddot":"_ddddot","\\acute":"_acute","\\grave":"_grave","\\breve":"_breve","\\check":"_check"};function $i(e,n){if(e.atEnd)return null;let t=e.peek,i={"\\_":"_","\\#":"hash"}[t];if(!i&&!n.toplevel&&(i={"+":"plus","-":"minus","\\plusmn":"pm","\\pm":"pm","\\ast":"ast","\\dag":"dag","\\ddag":"ddag","\\bot":"bottom","\\top":"top","\\bullet":"bullet","\\cir":"circle","\\diamond":"diamond","\\times":"times","\\square":"square","\\star":"star"}[t]),i)return e.nextToken(),i;let r=j.findIndex(a=>a[1]===t);if(r>=0)return e.nextToken(),j[r][0];let s=e.parseChar();if(s!==null)return/^\p{XIDC}+$/u.test(s)?s:[...s].length===1?"____"+s.codePointAt(0).toString(16).toUpperCase().padStart(6,"0"):s;let o=e.peek;return o&&/^[\p{XIDC}\p{M}]/u.test(o)?e.nextToken():null}function We(e){let n=pt(e),t=ms[e.peek]??null;if(t){if(e.nextToken(),!e.match("<{>"))return null;let s=We(e);if(s===null||!e.match("<}>"))return null;n=`${s}${t}`}if(n===null){for(n="";!e.atEnd;){let s=e.peek;if(s==="<}>"||s==="_"||s==="^")break;if(s==="<space>"){e.nextToken();continue}let o=$i(e,{toplevel:!1});if(o===null)return null;n+=o}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))n+="_deg";else if(e.matchAll(["^","\\circ"]))n+="_deg";else if(e.matchAll(["^","\\prime"]))n+="_prime";else if(e.matchAll(["^","<{>","\\prime","<}>"]))n+="_prime";else if(e.matchAll(["^","<{>","\\doubleprime","<}>"]))n+="_dprime";else if(e.matchAll(["^","<{>","\\prime","\\prime","<}>"]))n+="_dprime";else break;let i=[],r=[];for(;!e.atEnd;)if(e.match("_")){let s=e.match("<{>"),o=We(e);if(s&&!e.match("<}>")||o===null)return null;r.push(o)}else if(e.match("^")){let s=e.match("<{>"),o=We(e);if(s&&!e.match("<}>")||o===null)return null;i.push(o)}else break;return i.length>0&&(n+="__"+i.join("")),r.length>0&&(n+="_"+r.join("")),n}function pt(e){let n=gs[e.peek]??null;if(n===null)return null;if(e.nextToken(),e.match("<{>")){let t="",i={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[e.peek]??"";return i&&(t=i,e.nextToken()),t+=We(e),t===null||!e.match("<}>")?null:n==="_upright"&&t.length>1?t:t+n}return null}function ft(e){let n=e.index,t=pt(e);return t===null||pe(t)?null:e.error(["invalid-symbol",{str:Bi(t)}],n)}function He(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek)){let i=e.nextToken(),s=e.getSymbolType(i).matches("indexed_collection"),o=e.hasSubscriptEvaluate(i);for(;!e.atEnd&&!s&&!o&&e.peek==="_";){let l=e.index;if(e.nextToken(),e.match("<{>")){let p=e.peek;if(p==="("||p==="\\lparen"||p==="\\left"){e.index=l;break}let d=We(e),m=d!==null&&/plus|minus|times|ast/.test(d);if(d===null||d.includes(",")||m||e.peek!=="<}>"){e.index=l;break}e.match("<}>"),i+="_"+d}else{let p=e.peek;if(e.options.strict===!1&&/^[0-9]$/.test(p)){let d="";for(;!e.atEnd&&/^[0-9]$/.test(e.peek);)d+=e.peek,e.nextToken();i+="_"+d}else if(/^[a-zA-Z0-9]$/.test(p)||/^\p{XIDS}$/u.test(p))e.nextToken(),i+="_"+p;else{e.index=l;break}}}return i}let n=pt(e);if(!n){for(n="";!e.atEnd&&_e.test(n+e.peek);)n+=e.nextToken();n||(n=null)}let t=e.index;return n??=$i(e,{toplevel:!0}),n&&(n=n.normalize(),pe(n))?n:(e.index=t,null)}var zi=new Map;function D(e){if(e<=100){let n=zi.get(e);return n===void 0&&(n=10n**BigInt(e),zi.set(e,n)),n}return 10n**BigInt(e)}function Vi(e,n,t){return e*n/t}function Gi(e,n,t){return e*t/n}function Xe(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t,i=Number(e),r=Number(n);if(Number.isFinite(i)&&Number.isFinite(r)&&i>0&&r>0){let p=Math.sqrt(i/r)*r;Number.isFinite(p)&&p>0?(t=BigInt(Math.floor(p)),t===0n&&(t=1n)):t=qi(e,n)}else t=qi(e,n);let s=e*n,o;do o=t,t=(t+s/t)/2n;while(Y(t-o)>1n);let a=(t+s/t)/2n,l=Y(t*t-s);return Y(a*a-s)<l?a:t}function qi(e,n){let i=O(e),r=Math.max(0,i-15),s=Number(r>0?e/D(r):e),o=O(n),a=Math.max(0,o-15),l=Number(a>0?n/D(a):n),u=r+a,p=Math.floor(u/2),d=Math.sqrt(s*l);u%2!==0&&(d*=3.1622776601683795);let m=BigInt(Math.round(d))*D(p);return m>0n?m:1n}function Y(e){return e<0n?-e:e}function O(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n)return Math.floor(Math.log10(Number(e)))+1;let n=0,t=e,i=1;for(;t>>BigInt(i)>0n;)i*=2;for(let s=i>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(n+=s,t>>=BigInt(s));n+=1;let r=Math.ceil(n*.30102999566398);return e<D(r-1)?r-1:e>=D(r)?r+1:r}function mt(e,n){if(e===0n)return n;let t=0,i=e,r=n/2n;for(;Y(i)>r;)i=i/2n,t++;let s=n,o=i;s+=o;for(let a=2;o=o*i/(BigInt(a)*n),Y(o)!==0n;a++)s+=o;for(let a=0;a<t;a++)s=s*s/n;return s}function Ui(e,n){if(e===n)return 0n;let t=Number(e),i=Number(n),r,s=e,o=0;if(Number.isFinite(t)&&Number.isFinite(i)&&t>0&&i>0){let l=t/i;if(Number.isFinite(l)&&l>0){let u=Math.log(l);Number.isFinite(u)?r=BigInt(Math.round(u*i)):r=dt(e,n)}else r=dt(e,n)}else{s=e;let l=2n*n,u=n/2n;for(;s>l||s<u;)s=Xe(s,n),o++;r=dt(s,n)}let a=0n;for(let l=0;l<100;l++){let u=mt(r,n);if(u===0n){r=r/2n;continue}let p=r+s*n/u-n,d=Y(p-r);if(d<=1n||d<100000n&&a>0n&&a<100000n&&d*4n>=a)break;a=d,r=p}for(let l=0;l<o;l++)r=2n*r;return r}function dt(e,n){let t=O(e),i=O(n);return BigInt(t-i)*2302585n*n/1000000n}var mn="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",gn=null;function gt(e){if(gn!==null&&gn.scale===e)return gn.value;let t=O(e)-1+10,i=mn.slice(0,t+1),r=BigInt(i),s=i.length-1,o=r*e/D(s);return gn={scale:e,value:o},o}function hn(e,n){if(e===0n)return[0n,n];let t=gt(n),i=2n*t,r=t/2n,s,o=Y(e);if(o>n*(1n<<30n)){let B=O(o)-O(n)+20,se=n*D(B),de=e*D(B),Le=2n*gt(se),kn=de%Le;kn<0n&&(kn+=Le),s=kn/D(B)}else s=e%i;s<0n&&(s+=i);let a=1n,l=1n;s>3n*r?(s=i-s,a=-1n):s>t?(s=s-t,a=-1n,l=-1n):s>r&&(s=t-s,l=-1n);let u=O(n)-1,p=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(u)))),d=0,m=n>>BigInt(p);for(;s>m;)s=s/2n,d++;let T=s,b=n,v=s,J=n,G=s*s,X=n*n;for(let B=2;;B+=2){if(J=J*G/(BigInt(B)*BigInt(B-1)*X),J===0n){v=v*G/(BigInt(B+1)*BigInt(B)*X),v!==0n&&(B%4===2?(b-=J,T-=v):(b+=J,T+=v));break}if(v=v*G/(BigInt(B+1)*BigInt(B)*X),B%4===2?(b-=J,T-=v):(b+=J,T+=v),v===0n)break}for(let B=0;B<d;B++){let se=2n*T*b/n,de=2n*b*b/n-n;T=se,b=de}return[a*T,l*b]}function Ze(e,n){if(e===0n)return 0n;if(e<0n)return-Ze(-e,n);let i=gt(n)/2n;if(e>n){let d=n*n/e;return i-Ze(d,n)}let r=4n*n/10n,s=0,o=e;for(;o>r;){let d=o*o,m=(n*n+d)/n,T=Xe(m,n);o=o*n/(n+T),s++}let a=o,l=o,u=o*o,p=n*n;for(let d=3;l=l*u/p,l!==0n;d+=2)d%4===3?a-=l/BigInt(d):a+=l/BigInt(d);for(let d=0;d<s;d++)a=2n*a;return a}var ht=NaN,g=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static get PI(){e._piFullPrecision===null&&(e._piFullPrecision=new e(mn[0]+"."+mn.slice(1)));let n=e.precision;return(e._piCache===null||e._piCachePrecision!==n)&&(e._piCache=e._piFullPrecision.toPrecision(n+4),e._piCachePrecision=n),e._piCache}significand;exponent;constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=xn(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=hs(n);return}[this.significand,this.exponent]=Wi(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return ht;let T=this.exponent;if(Number.isNaN(T))return ht;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(T))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&T>=0&&T<=15){let b=this.significand*D(T),v=BigInt(n);return b<v?-1:b>v?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(t!==t||i!==i)return ht;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===i)return r<s?-1:r>s?1:0;let o=O(r),a=O(s),l=o+t,u=a+i;if(l!==u){let T=r>0n?1:-1;return l>u?T:-T}let p=r,d=s,m=Math.abs(t-i);if(m>1e3){let T=o,b=a,v=Math.max(T,b)+1;T<v&&(p=p*D(v-T)),b<v&&(d=d*D(v-b))}else t<i?d=d*D(m):p=p*D(m);return p<d?-1:p>d?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*D(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return _(this.significand+n.significand,t);let o=t-i;return o>0?_(this.significand*D(o)+n.significand,i):_(this.significand+n.significand*D(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return _(this.significand-n.significand,t);let o=t-i;return o>0?_(this.significand*D(o)-n.significand,i):_(this.significand-n.significand*D(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return _(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,s=n.significand>0n?1n:-1n;return r*s>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?_(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?_(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(_(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(_(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=_(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/D(-n);return _(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(s===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return _(0n,0);let l=e.precision,u=10,p=r<0n?-r:r,d=s<0n?-s:s,m=O(p),T=O(d),b=l+u+Math.max(0,T-m),v=D(b),J=r*v/s,G=t-i-b;return _(J,G).toPrecision(l)}if(t!==t||i!==i)return e.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(i);if(o&&a)return e.NAN;if(o){let l=r>0n?1n:-1n,u=s>0n?1n:s<0n?-1n:1n;return l*u>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return _(0n,0)}inv(){return _(1n,0).div(this)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;return Number.isFinite(t)&&Number.isFinite(i)?n.significand===0n?e.NAN:this.significand===0n?_(0n,0):this.sub(this.div(n).trunc().mul(n)).toPrecision(e.precision):t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let t=n.toBigInt();if(t===0n)return _(1n,0);if(!this.isFinite())return t>0n?this.significand<0n&&t%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:_(0n,0);if(this.isZero())return t>0n?_(0n,0):e.POSITIVE_INFINITY;if(t<0n)return this.pow(n.neg()).inv();let i=this.significand<0n?-this.significand:this.significand,r=O(i)+this.exponent,s=Number(t)*r;if(s>9e15)return this.significand<0n&&t%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(s<-9e15)return _(0n,0);let o=e.precision,a=_(1n,0),l=this,u=t;for(;u>0n;)u&1n&&(a=a.mul(l).toPrecision(o)),u>>=1n,u>0n&&(l=l.mul(l).toPrecision(o));return a}return this.isFinite()?this.isZero()?n.significand>0n?e.ZERO:e.POSITIVE_INFINITY:this.significand<0n?e.NAN:n.mul(this.ln()).exp():this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,s=n?"-":"";if(r>20||r<-6){let l=i===1?t:t[0]+"."+t.slice(1),u=r>=0?"+":"";return`${s}${l}e${u}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let l=t.slice(0,i-o),u=t.slice(i-o);return`${s}${l}.${u}`}let a=o-i;return`${s}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*D(s);else{let d=D(-s),m=r/d,T=r%d,b=d/2n;T>b?o=m+1n:T<b||d%2n!==0n||m%2n===0n?o=m:o=m+1n}let a=i&&o!==0n?"-":"",l=o.toString();if(t===0)return`${a}${l}`;if(l.length<=t){let d=l.padStart(t,"0");return`${a}0.${d}`}let u=l.slice(0,l.length-t),p=l.slice(l.length-t);return`${a}${u}.${p}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,i=O(t);if(i<=n)return this;let r=i-n,s=D(r),o=t/s,a=t%s,l=s/2n;(a>l||a===l&&o%2n!==0n)&&(o+=1n);let u=this.significand<0n?-o:o;return _(u,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*D(this.exponent);let n=D(-this.exponent);return this.significand/n}};function _(e,n){let[t,i]=xn(e,n),r=Object.create(g.prototype);return r.significand=t,r.exponent=i,r}var ji=1000000000n,Yi=1000n;function xn(e,n){if(e===0n)return[0n,0];for(;e%ji===0n;)e/=ji,n+=9;for(;e%Yi===0n;)e/=Yi,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function hs(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?xn(BigInt(e),0):Wi(e.toString())}function Wi(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let s=n.indexOf("."),o,a;s===-1?(o=n,a=""):(o=n.slice(0,s),a=n.slice(s+1)),o=o.replace(/^0+/,"")||"0";let l=o+a;if(l.length===0||!/^\d+$/.test(l))return[0n,NaN];let u=BigInt(l);r&&(u=-u);let p=-a.length;return xn(u,p+t)}function ie(e,n){let t=D(n),i=e.exponent+n;return i>=0?[e.significand*D(i),t]:[e.significand/D(-i),t]}function re(e,n,t){if(e===0n)return g.ZERO;let i=e<0n,r=i?-e:e,s=O(r);if(s>t){let u=s-t,p=D(u),d=p/2n,m=r%p;r=r/p,m>=d&&(r+=1n);let T=O(n)-1,b=u-T,v=i?-r:r;return _(v,b)}let a=-(O(n)-1),l=i?-r:r;return _(l,a)}g.prototype.sqrt=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NAN;if(this.significand<0n)return g.NAN;let e=g.precision,n=e+10,[t,i]=ie(this,n),r=Xe(t,i);return re(r,i,e)};g.prototype.cbrt=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=g.precision,n=e+10,[t,i]=ie(this,n),r=t*i*i,s,o=this.toNumber(),a=Number(i);if(Number.isFinite(o)&&o>0&&Number.isFinite(a)){let u=Math.cbrt(o);Number.isFinite(u)&&u>0?(s=BigInt(Math.floor(u*a)),s===0n&&(s=1n)):s=Hi(t,i)}else s=Hi(t,i);let l;do{l=s;let u=s*s;if(u===0n){s=1n;break}s=(2n*s+r/u)/3n}while(Y(s-l)>1n);{let u=(2n*s+r/(s*s))/3n,p=Y(s*s*s-r);Y(u*u*u-r)<p&&(s=u)}return re(s,i,e)};g.sqrt=function(e){return e.sqrt()};g.cbrt=function(e){return e.cbrt()};g.prototype.exp=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.ZERO;if(this.isZero())return g.ONE;let e=g.precision,n=e+15,[t,i]=ie(this,n),r=mt(t,i);return re(r,i,e)};g.prototype.ln=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NAN;if(this.isZero())return g.NEGATIVE_INFINITY;if(this.significand<0n)return g.NAN;if(this.eq(1))return g.ZERO;let e=g.precision,n=e+15,[t,i]=ie(this,n),r=Ui(t,i);return re(r,i,e)};g.prototype.log=function(e){let n=e instanceof g?e:new g(e);return this.ln().div(n.ln())};g.exp=function(e){return e.exp()};g.ln=function(e){return e.ln()};g.log10=function(e){return e.log(10)};g.prototype.sin=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ZERO;let e=g.precision,n=e+15,[t,i]=ie(this,n),[r]=hn(t,i);return re(r,i,e)};g.prototype.cos=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ONE;let e=g.precision,n=e+15,[t,i]=ie(this,n),[,r]=hn(t,i);return re(r,i,e)};g.prototype.tan=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ZERO;let e=g.precision,n=e+15,[t,i]=ie(this,n),[r,s]=hn(t,i);if(s===0n)return r>0n?g.POSITIVE_INFINITY:g.NEGATIVE_INFINITY;let o=r*i/s;return re(o,i,e)};g.prototype.atan=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite()){let s=g.PI.div(g.TWO);return this.significand>0n?s:s.neg()}let e=g.precision,n=e+15,[t,i]=ie(this,n),r=Ze(t,i);return re(r,i,e)};g.prototype.asin=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ZERO;let e=this.abs(),n=g.ONE;if(e.gt(n))return g.NAN;if(e.eq(n)){let d=g.PI.div(g.TWO);return this.significand>0n?d:d.neg()}let t=g.precision,i=t+20,[r,s]=ie(this,i),o=Vi(r,r,s),a=s-o,l=Xe(a,s),u=Gi(r,l,s),p=Ze(u,s);return re(p,s,t)};g.prototype.acos=function(){return this.isNaN()?g.NAN:this.isFinite()?this.abs().gt(g.ONE)?g.NAN:this.eq(1)?g.ZERO:this.eq(-1)?g.PI:g.PI.div(g.TWO).sub(this.asin()):g.NAN};g.sin=function(e){return e.sin()};g.cos=function(e){return e.cos()};g.tan=function(e){return e.tan()};g.asin=function(e){return e.asin()};g.acos=function(e){return e.acos()};g.atan=function(e){return e.atan()};g.atan2=function(e,n){let t=e instanceof g?e:new g(e);if(t.isNaN()||n.isNaN())return g.NAN;let i=g.PI,r=i.div(g.TWO);if(n.isZero())return t.isZero()?g.ZERO:t.significand>0n?r:r.neg();let s=t.div(n);return n.significand>0n?s.atan():t.significand>=0n?s.atan().add(i):s.atan().sub(i)};g.prototype.sinh=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NEGATIVE_INFINITY;let e=this.exp(),n=e.inv();return e.sub(n).div(g.TWO)};g.prototype.cosh=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ONE;if(!this.isFinite())return g.POSITIVE_INFINITY;let e=this.exp(),n=e.inv();return e.add(n).div(g.TWO)};g.prototype.tanh=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.ONE:g.NEGATIVE_ONE;let e=this.mul(g.TWO).exp();return e.sub(g.ONE).div(e.add(g.ONE))};g.sinh=function(e){return e.sinh()};g.cosh=function(e){return e.cosh()};g.tanh=function(e){return e.tanh()};function Hi(e,n){let i=O(e),r=Math.max(0,i-15),s=Number(r>0?e/D(r):e),o=O(n),a=Math.max(0,o-15),l=Number(a>0?n/D(a):n),u=r+2*a,p=Math.floor(u/3),d=u%3,m=Math.cbrt(s*l*l);d===1&&(m*=2.154434690031882),d===2&&(m*=4.641588833612779);let T=BigInt(Math.round(m))*D(p);return T>0n?T:1n}var Ul=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var xs=53,Xl=Math.floor(Math.log10(Math.pow(2,xs)));var Zi=1e6;function ys(e){let n=!!e.matchAny(["-","\u2212"]);for(;e.matchAny(["+","\uFE62"])||e.skipSpace();)e.matchAny(["-","\u2212"])&&(n=!n);return n?"-":"+"}function fe(e,n,t="whole"){let i=[],r=!1;for(;!r;){for(;/^[0-9]$/.test(e.peek);)i.push(e.nextToken()),e.skipVisualSpace();r=!0;let s=t==="whole"?n.wholeDigitGroupSeparatorTokens:n.fractionalDigitGroupSeparatorTokens;if(t!=="none"&&s.length>0){let o=e.index;e.skipVisualSpace(),e.matchAll(s)&&(e.skipVisualSpace(),/^[0-9]$/.test(e.peek)?r=!1:e.index=o)}}return i.join("")}function xt(e,n,t){let i=e.index,r=ys(e),s=fe(e,n,t);return s?r==="-"?"-"+s:s:(e.index=i,"")}function Ts(e,n){let t=e.index;if(e.skipVisualSpace(),e.matchAny(["e","E"])){let i=xt(e,n,"none");if(i)return i}if(e.index=t,e.match("\\times")&&(e.skipVisualSpace(),e.matchAll(["1","0"])&&(e.skipVisualSpace(),e.match("^")))){if(e.skipVisualSpace(),/^[0-9]$/.test(e.peek))return e.nextToken();if(e.match("<{>")){e.skipVisualSpace();let i=xt(e,n,"whole");if(e.skipVisualSpace(),i&&e.match("<}>"))return i}}if(e.index=t,e.skipVisualSpace(),e.match("\\%"))return"-2";if(e.index=t,e.matchAll(n.exponentProductTokens)&&(e.skipVisualSpace(),e.matchAll(n.beginExponentMarkerTokens))){e.skipVisualSpace();let i=xt(e,n,"none");if(e.skipVisualSpace(),i&&e.matchAll(n.endExponentMarkerTokens))return i}return e.index=t,""}function Xi(e){let n=e.index;if(e.matchAll(["\\overset","<{>"])&&(e.match(".")||e.match("\\cdots"))&&e.matchAll(["<}>","<{>"])){let t=e.nextToken();if(t&&/^\d$/.test(t)&&e.match("<}>"))return t}return e.index=n,null}function bs(e){let n=e.peek;return n==="\\overline"||n==="\\overset"||n==="\\wideparent"||n==="\\overarc"||n==="("||n==="\\left"}function Tt(e,n){let t=e.index,i=e.options.repeatingDecimal,r="";if((i==="auto"||i==="parentheses")&&e.match("("))return r=fe(e,n,"fraction"),r&&e.match(")")?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="parentheses")&&e.matchAll(["\\left","("]))return r=fe(e,n,"fraction"),r&&e.matchAll(["\\right",")"])?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="vinculum")&&e.matchAll(["\\overline","<{>"]))return r=fe(e,n,"fraction"),r&&e.match("<}>")?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="arc")&&(e.matchAll(["\\wideparen","<{>"])||e.matchAll(["\\overarc","<{>"])))return r=fe(e,n,"fraction"),r&&e.match("<}>")?`(${r})`:(e.index=t,"");if(e.index=t,i==="auto"||i==="dots"){let s=Xi(e);if(s!==null){if(r=fe(e,n,"fraction"),!r)return`(${s})`;let o=Xi(e);if(o!==null)return`(${s}${r}${o})`}}return e.index=t,""}function yt(e){return e===0?{num:"0"}:Number.isInteger(e)&&Math.abs(e)<Zi?e:{num:e.toString()}}function Qi(e,n){let t=e.options.parseNumbers;if(t===!1||t==="never")return null;let i=e.index;e.skipVisualSpace();let r=1;for(;e.peek==="-"||e.peek==="+";)e.match("-")?r=-r:e.match("+"),e.skipVisualSpace();let s="",o="",a=!1;if(e.match(".")||e.matchAll(n.decimalSeparatorTokens)){let m=e.peek;(/^[\d]$/.test(m)||bs(e))&&(a=!0,s="0")}else s=fe(e,n,"whole");if(!s)return e.index=i,null;let l=e.index,u=!1;(a||e.match(".")||e.matchAll(n.decimalSeparatorTokens))&&(o=fe(e,n,"fraction"),u=!0);let p=!1;if(u){let m=Tt(e,n);m&&(o+=m,p=!0),e.match("\\ldots")||e.matchAll(n.truncationMarkerTokens)}if(u&&!o)return e.index=l,s.length<10?yt(r*parseInt(s,10)):{num:r<0?"-"+s:s};let d=Ts(e,n);if(!u&&!d&&s.length<10)return yt(r*parseInt(s,10));if(!p&&e.options.parseNumbers==="rational"){let m=s.length>16||s.length===16&&s>"9007199254740991";if(!o){if(m){let se=r<0?"-"+s:s;return d?["Multiply",{num:se},["Power",10,d]]:{num:se}}let B=parseInt(s,10);return d?["Multiply",r*B,["Power",10,d]]:yt(r*B)}let T=o.length;if(s.length+T>15){let B=BigInt(s),se=BigInt(o),de=BigInt(10)**BigInt(T),En=B*de+se,Le=r<0?-En:En;return d?["Multiply",["Rational",{num:Le.toString()},Number(de)],["Power",10,d]]:["Rational",{num:Le.toString()},Number(de)]}let v=parseInt(s,10),J=parseInt(o,10),G=v*10**T+J,X=10**T;return d?["Multiply",["Rational",r*G,X],["Power",10,d]]:["Rational",r*G,X]}return{num:(r<0?"-":"")+s+(u?"."+o:"")+(d?"e"+d:"")}}var bt={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]},yn={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg","\\mathopen":"\\mathclose","\\mleft":"\\mright"},Et={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\lbrace":"\\rbrace","\\lparen":"\\rparen","\\langle":"\\rangle","\\lfloor":"\\rfloor","\\lceil":"\\rceil","\\vert":"\\vert","\\lvert":"\\rvert","\\Vert":"\\Vert","\\lVert":"\\rVert","\\lbrack":"\\rbrack","\\ulcorner":"\\urcorner","\\llcorner":"\\lrcorner","\\lgroup":"\\rgroup","\\lmoustache":"\\rmoustache","\\llbracket":"\\rrbracket"};function Es(e){if(e===null)return"null";if(e===void 0)return"undefined";if(e instanceof V)return"BoxedType";if(typeof e=="string")return`"${e}"`;if(typeof e=="object"){let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}return`${typeof e} (${String(e)})`}var kt=class e{options;_index=0;symbolTable={parent:null,ids:{}};pushSymbolTable(){this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(n,t){if(typeof t=="string"&&(t=new V(t)),n in this.symbolTable.ids&&this.symbolTable.ids[n].is(t.type))throw new Error(`Symbol ${n} already declared as a different type`);this.symbolTable.ids[n]=t}_quantifierScopeDepth=0;get inQuantifierScope(){return this._quantifierScopeDepth>0}enterQuantifierScope(){this._quantifierScopeDepth++}exitQuantifierScope(){this._quantifierScopeDepth>0&&this._quantifierScopeDepth--}get index(){return this._index}set index(n){this._index=n,this._lastPeek="",this._peekCounter=0}_tokens;_positiveInfinityTokens;_negativeInfinityTokens;_notANumberTokens;_decimalSeparatorTokens;_wholeDigitGroupSeparatorTokens;_fractionalDigitGroupSeparatorTokens;_exponentProductTokens;_beginExponentMarkerTokens;_endExponentMarkerTokens;_truncationMarkerTokens;_imaginaryUnitTokens;_dictionary;_boundaries=[];_lastPeek="";_peekCounter=0;constructor(n,t,i){this._tokens=n,this.options=i,this._dictionary=t,this._positiveInfinityTokens=F(this.options.positiveInfinity),this._negativeInfinityTokens=F(this.options.negativeInfinity),this._notANumberTokens=F(this.options.notANumber),this._decimalSeparatorTokens=F(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=F(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=F(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=F(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=F(this.options.exponentProduct),this._beginExponentMarkerTokens=F(this.options.beginExponentMarker),this._endExponentMarkerTokens=F(this.options.endExponentMarker),this._truncationMarkerTokens=F(this.options.truncationMarker),this._imaginaryUnitTokens=F(this.options.imaginaryUnit),this._numberFormatTokens={decimalSeparatorTokens:this._decimalSeparatorTokens,wholeDigitGroupSeparatorTokens:this._wholeDigitGroupSeparatorTokens,fractionalDigitGroupSeparatorTokens:this._fractionalDigitGroupSeparatorTokens,exponentProductTokens:this._exponentProductTokens,beginExponentMarkerTokens:this._beginExponentMarkerTokens,endExponentMarkerTokens:this._endExponentMarkerTokens,truncationMarkerTokens:this._truncationMarkerTokens}}_numberFormatTokens;getSymbolType(n){let t=this.symbolTable;for(;t;){if(n in t.ids)return t.ids[n];t=t.parent}if(this.options.getSymbolType){let i=this.options.getSymbolType(n);if(i instanceof V)return i;if(typeof i=="string")try{return new V(i)}catch(r){let s=r instanceof Error?r.message:String(r);throw new Error(`ce.parse(): getSymbolType("${n}") returned invalid type string "${i}". ${s}`)}throw new Error(`ce.parse(): getSymbolType("${n}") must return a BoxedType or a type string, received ${Es(i)}`)}return V.unknown}hasSubscriptEvaluate(n){return this.options.hasSubscriptEvaluate?this.options.hasSubscriptEvaluate(n):!1}get peek(){let n=this._tokens[this.index];if(n===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024){let t=`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`;throw console.error(t),new Error(t)}return this._lastPeek=n,n}nextToken(){return this._tokens[this.index++]}get atEnd(){return this.index>=this._tokens.length}atTerminator(n){return this.atBoundary||((n?.condition&&n.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let n=this.index;for(let t of this._boundaries)if(this.matchAll(t.tokens))return this.index=n,!0;return!1}addBoundary(n){this._boundaries.push({index:this.index,tokens:n})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let n=this._boundaries[this._boundaries.length-1],t=n&&this.matchAll(n.tokens);return t&&this._boundaries.pop(),t}boundaryError(n){let t=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(n,t.index)}canSkipMatchfixReparsing(n,t,i){return!i&&t.length===1&&(n==="("||n==="\\lparen")&&(t[0]==="]"||t[0]==="\\rbrack")}latex(n,t){return U(this._tokens.slice(n,t))}latexAhead(n){return this.latex(this.index,this.index+n)}lookAhead(){let n=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(n<=0)return[];let t=[];for(;n>0;)t.push([n,this.latexAhead(n--)]);return t}peekDefinitions(n){if(this.atEnd)return[];let t=[],i;switch(n){case"infix":i=this._dictionary.infixByTrigger;break;case"prefix":i=this._dictionary.prefixByTrigger;break;case"postfix":i=this._dictionary.postfixByTrigger;break;case"function":i=this._dictionary.functionByTrigger;break;case"symbol":i=this._dictionary.symbolByTrigger;break;case"expression":i=this._dictionary.expressionByTrigger;break;case"operator":i=void 0;break}if(i){let r=[];for(let s of this.getDefs(n))(s.latexTrigger===""||s.symbolTrigger)&&r.push(s);for(let s of r)s.latexTrigger===""&&t.push([s,0]);for(let[s,o]of this.lookAhead()){let a=i.get(o);if(a)for(let l of a)t.push([l,s])}for(let s of r)if(s.symbolTrigger){let o=Ki(this,s.symbolTrigger);o>0&&t.push([s,o])}}else{let r=[...this.getDefs(n)];for(let s of r)s.latexTrigger===""&&t.push([s,0]);for(let[s,o]of this.lookAhead())for(let a of r)a.latexTrigger===o&&t.push([a,s]);for(let s of r)if(s.symbolTrigger){let o=Ki(this,s.symbolTrigger);o>0&&t.push([s,o])}}return t}skipSpaceTokens(){for(;this.match("<space>"););}skipSpace(){if(!this.atEnd&&this.peek==="<{>"){let t=this.index;for(this.nextToken();this.match("<space>"););if(this.nextToken()==="<}>")return this.skipSpace(),!0;this.index=t}if(!this.options.skipSpace)return!1;let n=!1;for(;this.match("<space>");)n=!0;return n&&this.skipSpace(),n}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(n){return this._tokens[this.index]!==n?!1:(this.index++,!0)}matchAll(n){if(n.length===0)return!1;let t,i=0;do t=this._tokens[this.index+i]===n[i++];while(t&&i<n.length);return t&&(this.index+=i),t}matchAny(n){return n.includes(this._tokens[this.index])?this._tokens[this.index++]:""}parseLatexNumber(n=!0){let t=!1,i=this.peek;for(;i==="<space>"||i==="+"||i==="-";)i==="-"&&(t=!t),this.nextToken(),i=this.peek;let r=10,s=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,s=["0","1","2","3","4","5","6","7"],n=!0;else if(this.match('"')||this.match("x"))r=16,s=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],n=!0;else if(this.match("`"))return i=this.nextToken(),i?i.startsWith("\\")&&i.length===2?(t?-1:1)*(i.codePointAt(1)??0):(t?-1:1)*(i.codePointAt(0)??0):null;let o="";for(;s.includes(this.peek);)o+=this.nextToken();if(!n&&this.match("."))for(o+=".";s.includes(this.peek);)o+=this.nextToken();let a=n?Number.parseInt(o,r):Number.parseFloat(o);return Number.isNaN(a)?null:t?-a:a}parseChar(){let n=this.index,t=0;for(;this.match("^");)t+=1;if(t<2&&(this.index=n),t>=2){let i="",r=0;for(;r!=t;){let s=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!s)break;i+=s,r+=1}if(i.length===t)return String.fromCodePoint(Number.parseInt(i,16))}else if(this.match("\\char")){let i=Math.floor(this.parseLatexNumber()??Number.NaN);return(!Number.isFinite(i)||i<0||i>1114111)&&(i=10067),String.fromCodePoint(i)}else if(this.match("\\unicode"))if(this.skipSpaceTokens(),this.match("<{>")){let i=this.parseLatexNumber();if(this.match("<}>")&&i!==null&&i>=0&&i<=1114111)return String.fromCodePoint(i)}else{let i=this.parseLatexNumber();if(i!==null&&i>=0&&i<=1114111)return String.fromCodePoint(i)}return this.index=n,null}matchDelimiter(n,t){let i=this.index,r=yn[this.peek];r&&this.nextToken();let s=r&&this.peek==="<{>";if(s&&this.nextToken(),Array.isArray(n)){if(Array.isArray(t),n.length===1){if(!(bt[n[0]]??[n[0]]).includes(this.peek))return this.index=i,!1;let p=this.nextToken().startsWith("\\");if(s&&!this.match("<}>"))return this.index=i,!1;let d=bt[t[0]]??[t[0]],m=d.find(b=>p?b.startsWith("\\"):!b.startsWith("\\"))??d[0],T=r?s?[r,"<{>",m,"<}>"]:[r,m]:[m];return this.addBoundary(T),!0}if(!this.matchAll(n))return this.index=i,!1;let a=r?[r,...t]:t;return this.addBoundary(a),!0}if(Array.isArray(t),n==="||"&&this.matchAll(["|","|"]))return this.addBoundary(["|","|"]),!0;if(!(bt[n]??[n]).includes(this.peek))return this.index=i,!1;if(n=this.nextToken(),s&&!this.match("<}>"))return this.index=i,!1;t=Et[n]??t;let o=r?s?[r,"<{>",t,"<}>"]:[r,t]:[t];return this.addBoundary(o),!0}parseGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let t=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return t??"Nothing";for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();if(f(t)==="Error")return t;let i=this.error("expected-closing-delimiter",n);return t!==null?["InvisibleOperator",t,i]:i}return this.index=n,null}parseOptionalGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("[")){this.addBoundary(["]"]);let t=this.parseExpression();return this.skipSpace(),this.matchBoundary()?t:this.boundaryError("expected-closing-delimiter")}return this.index=n,null}parseToken(){return this.skipSpace(),[...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"].includes(this.peek)?null:/^[0-9]$/.test(this.peek)?parseInt(this.nextToken(),10):this.parseGenericExpression()??this.parseSymbol()}parseTabular(){let n=[],t=[],i=null;for(;!this.atBoundary;)if(this.skipSpace(),this.match("&"))t.push(i??"Nothing"),i=null;else if(this.match("\\\\")||this.match("\\cr"))this.skipSpace(),this.parseOptionalGroup(),i!==null&&t.push(i),n.push(t),t=[],i=null;else{let r=[],s=this.peek;for(;s!=="&"&&s!=="\\\\"&&s!=="\\cr"&&!this.atBoundary;)i=this.parseExpression({minPrec:0,condition:o=>{let a=o.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),i!==null?r.push(i):(r.push(["Error","'unexpected-token'",{str:U(s)}]),this.nextToken()),this.skipSpace(),s=this.peek;r.length>1?i=["Sequence",...r]:i=r[0]??"Nothing"}return i!==null&&t.push(i),t.length>0&&n.push(t),n}parseStringGroupContent(){let n=this.index,t="",i=0;for(;!this.atBoundary||i>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=n,"";r==="<{>"?(i+=1,t+="\\{"):r==="<}>"?(i-=1,t+="\\}"):r==="<space>"?t+=" ":(r[0],t+=r)}return t}parseStringGroup(n){n===void 0&&(n=!1);let t=this.index;for(;this.match("<space>"););if(this.match(n?"[":"<{>")){this.addBoundary([n?"]":"<}>"]);let i=this.parseStringGroupContent();if(this.matchBoundary())return i;this.removeBoundary()}return this.index=t,null}parseEnvironment(n){let t=this.index;if(!this.match("\\begin"))return null;let i=this.parseStringGroup()?.trim();if(!i)return this.error("expected-environment-name",t);this.addBoundary(["\\end","<{>",...i.split(""),"<}>"]);for(let r of this.getDefs("environment"))if(r.symbolTrigger===i){let s=r.parse(this,n);return this.skipSpace(),this.matchBoundary()?s!==null?this.decorate(s,t):(this.index=t,null):this.boundaryError("unbalanced-environment")}return this.parseTabular(),this.skipSpace(),this.matchBoundary()?this.error(["unknown-environment",{str:i}],t):this.boundaryError("unbalanced-environment")}parseRepeatingDecimal(){return Tt(this,this._numberFormatTokens)}parseNumber(){return Qi(this,this._numberFormatTokens)}parsePrefixOperator(n){n||(n={minPrec:0}),n.minPrec||(n={...n,minPrec:0});let t=this.index;for(let[i,r]of this.peekDefinitions("prefix")){this.index=t+r;let s=i.parse(this,{...n,minPrec:i.precedence+1});if(s!==null)return s}return this.index=t,null}parseInfixOperator(n,t){t??={minPrec:0},t.minPrec,t.minPrec===void 0&&(t={...t,minPrec:0});let i=this.index;for(let[r,s]of this.peekDefinitions("infix"))if(r.precedence>=t.minPrec){this.index=i+s;let o=r.parse(this,n,t);if(o!==null)return o}return this.index=i,null}wouldMatchTextInfix(n){let t=this.index;for(let[i,r]of n){if(i.kind!=="infix")continue;if(this.index=t+r,i.parse(this,"Nothing",{minPrec:0})!==null)return this.index=t,!0}return this.index=t,!1}parseArguments(n="enclosure",t){if(this.atTerminator(t))return null;let i=this.index,r=this.parseEnclosure();if(n==="enclosure")return r===null?null:ae(r)??[];if(n==="implicit"){if(f(r)==="Delimiter"){let o=c(r,1);return f(o)==="Sequence"?h(o):o===null?[]:[o]}if(r!==null)return[r];let s=this.parseExpression({...t,minPrec:C});return s===null?null:[s]}return this.index=i,null}parseEnclosure(){let n=this.index,t=this.peek,i=yn[t],r=i?this._tokens[this.index+1]:t;i&&r==="<{>"&&(r=this._tokens[this.index+2]);let s=this._dictionary.matchfixByOpen.get(r)??[];s.length===0&&!r&&(s=[...this.getDefs("matchfix")]);for(let o of s){if(this.index=n,!this.matchDelimiter(o.openTrigger,o.closeTrigger))continue;let l=this.index;this.skipSpace();let u=this.parseExpression();this.skipSpace();let p=this._boundaries[this._boundaries.length-1]?.tokens,d=this.matchBoundary(),m=typeof o.openTrigger=="string"&&typeof o.closeTrigger=="string"&&o.openTrigger===o.closeTrigger||Array.isArray(o.openTrigger)&&Array.isArray(o.closeTrigger)&&o.openTrigger.length===o.closeTrigger.length&&o.openTrigger.every((b,v)=>b===o.closeTrigger[v]);if(d&&P(u)&&m&&p){if(this.index=l,this.skipSpace(),u=this.parseExpression(),this.skipSpace(),!this.matchAll(p)){if(this.index=n,!this.atEnd)continue;return null}}else if(!d){let b=this._boundaries[this._boundaries.length-1]?.tokens;if(!b){this.index=n;continue}if(this.canSkipMatchfixReparsing(r,b,m)){this.removeBoundary(),this.index=n;continue}else if(this.removeBoundary(),this.index=l,this.skipSpace(),u=this.parseExpression(),this.skipSpace(),!this.matchAll(b)){if(this.index=n,!this.atEnd)continue;return null}}let T=o.parse(this,u??"Nothing");if(T!==null)return T}return this.index=n,null}parseGenericExpression(n){if(this.atTerminator(n))return null;let t=this.index,i=null,r=this.peekDefinitions("expression")??[];for(let[s,o]of r)if(this.index=t+o,typeof s.parse=="function"){if(i=s.parse(this,n),i!==null)return i}else return s.name;return this.index=t,null}parseFunction(n){if(this.atTerminator(n))return null;let t=this.index,i=null,r="enclosure";for(let[a,l]of this.peekDefinitions("function"))if(this.index=t+l,typeof a.parse=="function"){if(i=a.parse(this,n),i!==null)return i}else{i=a.name,r=a.arguments??"enclosure";break}let s=!1;if(i===null&&(this.index=t,i=He(this),!this.isFunctionOperator(i))){if(!this.looksLikePredicate(i))return this.index=t,null;s=!0}do{let a=this.parsePostfixOperator(i,n);if(a===null)break;i=a}while(!0);let o=this.parseArguments(r,n);return o===null?i:s&&typeof i=="string"&&(this.inQuantifierScope||i==="D"||i==="N")?["Predicate",i,...o]:typeof i=="string"?[i,...o]:["Apply",i,...o]}parseSymbol(n){if(this.atTerminator(n))return null;let t=this.index;for(let[r,s]of this.peekDefinitions("symbol"))if(this.index=t+s,typeof r.parse=="function"){let o=r.parse(this,n);if(o!==null)return o}else return r.name;this.index=t;let i=He(this);return i!==null&&!this.getSymbolType(i).matches("error")?i:(this.index=t,null)}tryParseBareFunction(n){if(this.options.strict!==!1)return null;let t=this.index;if(t>0&&/^[a-zA-Z]$/.test(this._tokens[t-1]))return null;let i="";for(;!this.atEnd&&/^[a-zA-Z]$/.test(this.peek);)i+=this.peek,this.index++;if(!i)return this.index=t,null;this.skipSpace();let r=null;if(this.peek==="_"){if(this.index++,r=this.parseGroup(),r===null){if(!this.atEnd&&/^[a-zA-Z]$/.test(this.peek))r=this.peek,this.index++;else{let p="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)p+=this.peek,this.index++;p&&(r=parseInt(p))}if(r===null)return this.index=t,null}this.skipSpace()}let s=null;if(this.peek==="^"){if(this.index++,s=this.parseGroup(),s===null){let p=!1;this.peek==="-"&&(p=!0,this.index++);let d="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)d+=this.peek,this.index++;if(d){let m=parseInt(d);s=p?-m:m}else return this.index=t,null}this.skipSpace()}if(this.peek!=="(")return this.index=t,null;let a={sin:"Sin",cos:"Cos",tan:"Tan",cot:"Cot",sec:"Sec",csc:"Csc",sinh:"Sinh",cosh:"Cosh",tanh:"Tanh",coth:"Coth",sech:"Sech",csch:"Csch",arcsin:"Arcsin",arccos:"Arccos",arctan:"Arctan",arccot:"Arccot",arcsec:"Arcsec",arccsc:"Arccsc",asin:"Arcsin",acos:"Arccos",atan:"Arctan",arcsinh:"Arsinh",arccosh:"Arcosh",arctanh:"Artanh",arccoth:"Arcoth",arcsech:"Arsech",arccsch:"Arcsch",asinh:"Arsinh",acosh:"Arcosh",atanh:"Artanh",log:"Log",ln:"Ln",exp:"Exp",lg:"Lg",lb:"Lb",sqrt:"Sqrt",abs:"Abs",sgn:"Sgn",sign:"Sgn",floor:"Floor",ceil:"Ceil",round:"Round",max:"Max",min:"Min",gcd:"Gcd",lcm:"Lcm",cbrt:"Root",binom:"Binomial",nCr:"Binomial"}[i];if(!a)return this.index=t,null;let l=this.parseArguments("enclosure",n);if(l===null)return this.index=t,null;if(i==="cbrt"){let p=["Root",l[0]??"Nothing",3];return s!==null?["Power",p,s]:p}let u;return i==="log"&&r!==null?r===2?u=["Lb",...l]:r===10?u=["Log",...l]:u=["Log",l[0],r]:u=[a,...l],s!==null?["Power",u,s]:u}static BARE_SYMBOL_MAP={alpha:"alpha",beta:"beta",gamma:"gamma",delta:"delta",epsilon:"epsilon",varepsilon:"varepsilon",zeta:"zeta",eta:"eta",theta:"theta",vartheta:"vartheta",iota:"iota",kappa:"kappa",lambda:"lambda",mu:"mu",nu:"nu",xi:"xi",omicron:"omicron",pi:"Pi",rho:"rho",sigma:"sigma",tau:"tau",upsilon:"upsilon",phi:"phi",varphi:"varphi",chi:"chi",psi:"psi",omega:"omega",Gamma:"Gamma",Delta:"Delta",Theta:"Theta",Lambda:"Lambda",Xi:"Xi",Sigma:"Sigma",Upsilon:"Upsilon",Phi:"Phi",Psi:"Psi",Omega:"Omega",oo:"PositiveInfinity",inf:"PositiveInfinity",ii:"ImaginaryUnit"};tryParseBareSymbol(){if(this.options.strict!==!1)return null;let n=this.index;if(n>0&&/^[a-zA-Z]$/.test(this._tokens[n-1]))return null;let t="";for(;!this.atEnd&&/^[a-zA-Z]$/.test(this.peek);)t+=this.peek,this.index++;if(!t)return this.index=n,null;let i=e.BARE_SYMBOL_MAP[t];return i||(this.index=n,null)}parseSupsub(n){if(this.atEnd)return n;let t=this.index;if(this.options.strict===!1&&typeof n=="string"&&n.length===1&&/^[a-zA-Z]$/.test(n)&&/^[2-9]$/.test(this.peek)){let a=parseInt(this.peek);return this.index++,this.parseSupsub(["Power",n,a])}this.skipSpace();let i=[],r=[],s=t;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(s=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",s));else{let a=this.parseGroup();if(a===null&&this.options.strict===!1){let l="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)l+=this.peek,this.index++;l&&(a=parseInt(l))}if(a??=this.parseToken(),a===null&&this.options.strict===!1&&this.peek==="("&&(a=this.parseEnclosure()),a??=this.parseStringGroup(),a===null)return this.error("missing",t);r.push(a)}else if(this.match("^"))if(s=this.index,this.match("_")||this.match("^"))i.push(this.error("syntax-error",s));else{let a=this.parseGroup();if(a===null&&this.options.strict===!1){let l=this.index,u=!1;this.peek==="-"&&(u=!0,this.index++);let p="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)p+=this.peek,this.index++;if(p){let d=parseInt(p);a=u?-d:d}else this.index=l}if(a??=this.parseToken(),a===null&&this.options.strict===!1&&this.peek==="("&&(a=this.parseEnclosure()),a===null)return this.error("missing",t);i.push(a)}s=this.index,this.skipSpace()}if(i.length===0&&r.length===0)return this.index=t,n;let o=n;if(r.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="_");if(a){let l=["Subscript",o,r.length===1?r[0]:["List",...r]];for(let u of a)if(typeof u.parse=="function"?o=u.parse(this,l,{minPrec:0}):o=l,o!==null)break}}if(i.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="^");if(a){let l=i.filter(u=>!P(u));if(l.length!==0){let u=l.length===1?l[0]:["List",...l],p=["Superscript",o,u];for(let d of a)if(typeof d.parse=="function"?o=d.parse(this,p,{minPrec:0}):o=p,o!==null)break}}}return o===null&&(this.index=t),o}parsePostfixOperator(n,t){if(n===null||this.atEnd)return null;let i=this.index;for(let[r,s]of this.peekDefinitions("postfix")){this.index=i+s;let o=r.parse(this,n,t);if(o!==null)return o}return this.index=i,null}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),M(this.parseGroup())];let t=this.peekDefinitions("operator");if(t.length>0){if(t=this.peekDefinitions("postfix"),t.length>0){let[a,l]=t[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,this.error("missing",n));if(u!==null)return u}return this.error("unexpected-operator",n)}if(t=this.peekDefinitions("prefix"),t.length>0){let[a,l]=t[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,{minPrec:0});if(u!==null)return u}return a.name?[a.name,this.parseExpression()??this.error("missing",n)]:this.error("unexpected-operator",n)}if(t=this.peekDefinitions("infix"),t.length>0){let[a,l]=t[0];this.index+=l;let u=a.parse(this,this.error("missing",n),{minPrec:0});return u!==null?u:this.error("unexpected-operator",n)}}let i=this.index,r=ft(this);if(r!==null)return r;if(r=He(this),r!==null)return this.error(["unexpected-symbol",{str:r}],i);let s=this.peek;if(!s)return this.error("syntax-error",n);if(ks(this))return this.error("unexpected-delimiter",n);if(s[0]!=="\\")return this.nextToken(),this.error(["unexpected-token",{str:U(s)}],n);let o=this.nextToken();if(this.skipSpaceTokens(),o==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",n):this.error(["unbalanced-environment",{str:a}],n)}for(;this.match("[");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="]";)this.peek==="["&&(a+=1),this.peek==="]"&&(a-=1),this.nextToken();this.match("]")}for(;this.match("<{>");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="<}>";)this.peek==="<{>"&&(a+=1),this.peek==="<}>"&&(a-=1),this.nextToken();this.match("<}>")}return this.error(["unexpected-command",{str:U(o)}],n)}parsePrimary(n){if(this.atBoundary||this.atTerminator(n))return null;let t=null,i=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",i);if(t??=this.parseGroup(),t??=this.parseNumber(),t??=this.parseEnclosure(),t??=this.parseEnvironment(n),t===null&&this.matchAll(this._positiveInfinityTokens)&&(t="PositiveInfinity"),t===null&&this.matchAll(this._negativeInfinityTokens)&&(t="NegativeInfinity"),t===null&&this.matchAll(this._notANumberTokens)&&(t="NaN"),t===null&&this.matchAll(this._imaginaryUnitTokens)&&(t="ImaginaryUnit"),t??=this.tryParseBareFunction(n),t??=this.tryParseBareSymbol(),t??=this.parseGenericExpression(n)??this.parseFunction(n)??this.parseSymbol(n)??ft(this),t!==null&&P(t))return this.parsePrimary(n);if(t!==null){t=this.decorate(t,i);let r=null,s=this.index;do{if(r=this.parsePostfixOperator(t,n),t=r??t,this.index===s&&r!==null){this.index;break}s=this.index}while(r!==null)}return t!==null&&(t=this.parseSupsub(t)),t===null&&(t=this.options.parseUnexpectedToken?.(null,this)??null,t===null&&this.peek.startsWith("\\")&&(this.nextToken(),t=this.error("unexpected-command",i))),this.decorate(t,i)}parseExpression(n){this.skipSpace();let t=this.index;if(this.atBoundary)return this.index=t,null;n??={minPrec:0},n.minPrec,n.minPrec===void 0&&(n={...n,minPrec:0});let i=this.parsePrefixOperator({...n,minPrec:0});if(i??=this.parsePrimary(n),i!==null){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let s=this.parseInfixOperator(i,n);if(s===null&&n.minPrec<=Pn){let o=this.peekDefinitions("operator");if((o.length===0||o.every(([a])=>a.latexTrigger==="\\text"))&&!(o.length>0&&this.wouldMatchTextInfix(o))){let a=this.parseExpression({...n,minPrec:Pn+1});a!==null?f(i)==="InvisibleOperator"?f(a)==="InvisibleOperator"?s=["InvisibleOperator",...h(i),...h(a)]:s=["InvisibleOperator",...h(i),a]:f(a)==="InvisibleOperator"?s=["InvisibleOperator",i,...h(a)]:s=["InvisibleOperator",i,a]:s===null&&(s=this.options.parseUnexpectedToken?.(i,this)??null)}}s!==null?i=s:r=!0}}return this.decorate(i,t)}decorate(n,t){if(n===null)return null;if(!this.options.preserveLatex)return n;let i=this.latex(t,this.index);return Array.isArray(n)?n={latex:i,fn:n}:typeof n=="number"?n={latex:i,num:Number(n).toString()}:typeof n=="string"?n.startsWith("'")?n={latex:i,str:n.slice(1,-1)}:n={latex:i,sym:n}:typeof n=="object"&&n!==null&&(n.latex=i),n}error(n,t){let i;typeof n=="string"?(n.startsWith("'"),i={str:n}):(n[0].startsWith("'"),i=["ErrorCode",{str:n[0]},...n.slice(1)]);let r=this.latex(t,this.index);return r?["Error",i,["LatexString",{str:r}]]:["Error",i]}isFunctionOperator(n){return n===null||n==="D"||n==="N"?!1:!!this.getSymbolType(n).matches("function")}looksLikePredicate(n){return n===null||typeof n!="string"||!/^[A-Z]$/.test(n)?!1:(this.skipSpace(),this.peek==="("||this.peek==="\\left")}*getDefs(n){if(n==="operator")for(let t=this._dictionary.defs.length-1;t>=0;t--){let i=this._dictionary.defs[t];/^prefix|infix|postfix/.test(i.kind)&&(yield i)}else for(let t=this._dictionary.defs.length-1;t>=0;t--){let i=this._dictionary.defs[t];i.kind===n&&(yield i)}}};function Ki(e,n){let t=e.index,i=He(e)?.trim();if(i===null)return 0;let r=i!==n?0:e.index-t;return e.index=t,r}function ks(e){let n=e.peek;return Object.values(Et).includes(n)||Et[n]?(e.nextToken(),!0):yn[n]||Object.values(yn).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function er(e,n,t){let i=new kt(F(e),n,t),r=i.parseExpression();if(!i.atEnd){let s=i.parseSyntaxError();r=r!==null?["Sequence",r,s]:s}if(r??="Nothing",t.preserveLatex){if(Array.isArray(r))return{latex:e,fn:r};if(typeof r=="number")return{latex:e,num:Number(r).toString()};if(typeof r=="string"){if(wt(r))return{latex:e,str:I(r)};if(Be(r))return{latex:e,sym:r};if(ke(r))return{latex:e,num:r}}typeof r=="object"&&r!==null&&(r.latex=e)}return r}function tr(e,n,t){if(t.repeatingDecimal&&t.repeatingDecimal!=="none"){let s=e.slice(0,-1);for(let o=0;o<e.length-16;o++){let a=s.substring(0,o);for(let l=0;l<17;l++){let u=s.substring(o,o+l+1),p=Math.floor((s.length-a.length)/u.length);if(p<=3)break;if((a+u.repeat(p+1)).startsWith(s)){if(u==="0")return Nt(a,t);let d={vinculum:"\\overline{#}",parentheses:"(#)",dots:"\\overset{\\cdots}{#1}#2\\overset{\\cdots}{#3}",arc:"\\wideparen{#}"}[t.repeatingDecimal]??"\\overline{#}";return d=d.replace(/#1/g,u[0]).replace(/#2/g,u.slice(1)).replace(/#3/g,u.slice(-1)).replace(/#/,u),Nt(a,t)+d}}}}let i=typeof t.fractionalDigits=="number"?t.fractionalDigits:1/0;i<0&&(i=i-n),i<0&&(i=0);let r=e.length>i;return r&&(e=e.substring(0,i)),e=Nt(e,t),r&&(e+=t.truncationMarker),e}function ir(e,n){return!e||e==="0"?"":n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):`10^{${e}}`}function rr(e,n){if(e===null)return"";let t;if(typeof e=="number"||typeof e=="string")t=e;else if(typeof e=="object"&&"num"in e)t=e.num;else return"";if(typeof t=="number"){if(t===1/0)return n.positiveInfinity;if(t===-1/0)return n.negativeInfinity;if(Number.isNaN(t))return n.notANumber;let s;return n.notation==="engineering"?s=Je(t.toExponential(),n,3):n.notation==="scientific"?s=Je(t.toExponential(),{...n,avoidExponentsInRange:null}):n.notation==="adaptiveScientific"&&(s=Je(t.toExponential(),n)),s??St(t.toString(),n)}if(t=t.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),t==="infinity"||t==="+infinity"||t==="oo"||t==="+oo")return n.positiveInfinity;if(t==="-infinity"||t==="-oo")return n.negativeInfinity;if(t==="nan")return n.notANumber;if(!/^[-+\.]?[0-9]/.test(t))return"";if(t=t.replace(/[nd]$/,""),/\([0-9]+\)/.test(t)){let[s,o,a,l]=t.match(/(.+)\(([0-9]+)\)(.*)$/)??[];t=o+a.repeat(6)+l}let i="";for(t[0]==="-"?(i="-",t=t.substring(1)):t[0]==="+"&&(t=t.substring(1));t[0]==="0";)t=t.substring(1);t.length===0?t="0":t[0]==="."&&(t="0"+t);let r;return n.notation==="engineering"?r=Je(t,n,3):n.notation==="scientific"?r=Je(t,{...n,avoidExponentsInRange:null}):n.notation==="adaptiveScientific"&&(r=Je(t,n)),i+(r??St(t,{...n}))}function Je(e,n,t=1){let i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!i){let p="";if(e[0]==="-"?(p="-",e=e.substring(1)):e[0]==="+"&&(e=e.substring(1)),e.indexOf(".")<0)e.length===1?e=p+e+"e+0":e=p+e[0]+"."+e.slice(1)+"e+"+(e.length-1).toString();else{let[d,m,T]=e.match(/^(.*)\.(.*)$/);for(T||(T="");m.startsWith("0");)m=m.substring(1);if(m)e=p+m[0]+"."+m.slice(1)+T+"e+"+(m.length-1).toString();else{let b=0;for(;T[b]==="0";)b++;if(b===T.length)e=p+"0e+0";else{let v=T.slice(b),J=v[0],G=v.slice(1),X=-(b+1);G?e=p+J+"."+G+"e"+X:e=p+J+"e"+X}}}i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!i)return St(e,n);let r=parseInt(i[2]),s=i[1];{let p=s.match(/^(-?)/),d=p?p[1]:"",T=(d?s.substring(1):s).match(/^(\d+)(?:\.(\d*))?$/);if(T){let b=T[1],v=T[2]??"";b.length>1&&(v=b.slice(1)+v,r+=b.length-1,b=b[0]),s=d+b,v&&(s+="."+v)}}if(Math.abs(r)%t!==0){let p=r>0?r%t:-((t+r)%t);r=r>=0?r-p:r+p;let[d,m,T]=s.match(/^(.*)\.(.*)$/)??["",s,""];s=m+(T+"00000000000000000").slice(0,Math.abs(p))+"."+T.slice(Math.abs(p))}let o=n.avoidExponentsInRange;if(o&&r>=o[0]&&r<=o[1])return;let a="",l=s;i=l.match(/^(.*)\.(.*)$/),i&&(l=i[1],a=i[2]);let u=ir(Number(r).toString(),n);return a=tr(a,l.length,n),a&&(a=n.decimalSeparator+a),l=or(l,n),u?l+a+n.exponentProduct+u:l+a}function St(e,n){let t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),i=0,r=0;t?.[1]&&t[2]&&(i=parseInt(t[2]),r=i,e=t[1]);let s=t?.[1]??e,o="";t=e.match(/^(.*)\.(.*)$/),t?.[1]&&t[2]&&(s=t[1],o=t[2]),i!==0&&o&&(s+=o,i-=o.length,o="");let a=n.avoidExponentsInRange;i!==0&&a&&r>=a[0]&&r<=a[1]&&([s,o]=vs(s,o,i),i=0);let l=ir(i.toString(),n);if(o&&(o=n.decimalSeparator+tr(o,s.length,n)),s=or(s,n),!l)return s+o;if(!o){if(s==="1")return l;if(s==="-1")return"-"+l}return s+o+n.exponentProduct+l}function nr(e,n,t){let i=new RegExp(`(\\d{${n}})(?=\\d)`,"g");return e.replace(i,`$1${t}`)}function Ns(e,n,t){let i=new RegExp(`(\\d{${n}})(?=\\d)`,"g"),r=t.split("").reverse().join("");return e.split("").reverse().join("").replace(i,`$1${r}`).split("").reverse().join("")}function Ss(e,n){let t=e.split("").reverse().join(""),i=n.split("").reverse().join(""),r=t.replace(/(\d{3})(?=\d)/,`$1${i}`);return r=r.replace(/(\d{2})(?=(\d{2})+,)/g,`$1${i}`),r.split("").reverse().join("")}function sr(e,n,t){let i=n.digitGroup;typeof i!="string"&&Array.isArray(i)&&(i=i[t]);let r=typeof n.digitGroupSeparator=="string"?n.digitGroupSeparator:n.digitGroupSeparator[t];return r?i==="lakh"?t===0?Ss(e,r):nr(e,3,r):i===!1||i<=0?e:t===1?nr(e,i,r):Ns(e,i,r):e}function Nt(e,n){return sr(e,n,1)}function or(e,n){return sr(e,n,0)}function vs(e,n,t){let i=e+n,s=e.length+t,o,a;return s>0?s>=i.length?(i=i+"0".repeat(s-i.length),o=i,a=""):(o=i.slice(0,s),a=i.slice(s)):(o="0",a="0".repeat(-s)+i),[o,a]}var It={deg:e=>`${e}\\degree`,prime:e=>`${e}^{\\prime}`,dprime:e=>`${e}^{\\doubleprime}`,ring:e=>`\\mathring{${e}}`,hat:e=>`\\hat{${e}}`,tilde:e=>`\\tilde{${e}}`,vec:e=>`\\vec{${e}}`,bar:e=>`\\overline{${e}}`,underbar:e=>`\\underline{${e}}`,dot:e=>`\\dot{${e}}`,ddot:e=>`\\ddot{${e}}`,tdot:e=>`\\dddot{${e}}`,qdot:e=>`\\ddddot{${e}}`,acute:e=>`\\acute{${e}}`,grave:e=>`\\grave{${e}}`,breve:e=>`\\breve{${e}}`,check:e=>`\\check{${e}}`},Mt={upright:e=>`\\mathrm{${e}}`,italic:e=>`\\mathit{${e}}`,bold:e=>`\\mathbf{${e}}`,script:e=>`\\mathscr{${e}}`,fraktur:e=>`\\mathfrak{${e}}`,doublestruck:e=>`\\mathbb{${e}}`,blackboard:e=>`\\mathbb{${e}}`,calligraphic:e=>`\\mathcal{${e}}`,gothic:e=>`\\mathfrak{${e}}`,sansserif:e=>`\\mathsf{${e}}`,monospace:e=>`\\mathtt{${e}}`},Dt=class{options;dictionary;level=-1;constructor(n,t){this.dictionary=n,this.options={dmsFormat:!1,angleNormalization:"none",...t}}wrap(n,t){if(n==null)return"";if(t===void 0)return this.wrapString(this.serialize(n),this.options.groupStyle(n,this.level+1));if(typeof n=="number"||ye(n)){let r=N(n);return r!==null&&r<0&&t>L?this.wrap(n):this.serialize(n)}let i=f(n);if(i&&i!=="Delimiter"&&i!=="Subscript"){let r=this.dictionary.ids.get(i);if(r&&(r.kind==="symbol"||r.kind==="expression"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<t)return this.wrapString(this.serialize(n),this.options.applyFunctionStyle(n,this.level))}return this.serialize(n)}wrapShort(n){if(n==null)return"";let t=this.serialize(n);if(y(n)!==null||oe(n)&&!/^(-|\.)/.test(t))return t;let r=f(n);return r==="Delimiter"&&A(n)===1||r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?t:this.wrapString(t,this.options.groupStyle(n,this.level+1))}wrapString(n,t,i){if(t==="none")return n;i??="()";let r=i?.[0]??".",s=i?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=Me[r]??r,s==='"'?s="''":s==="|"?s="\\rvert":s=Me[s]??s,r==="."&&s==="."?n:((r==="."||s===".")&&t==="normal"&&(t="scaled"),t==="scaled"?`\\left${r}${n}\\right${s}}`:t==="big"?`${`\\Bigl${r}`}${n}${`\\Bigr${s}`})`:r+n+s)}wrapArguments(n){return this.wrapString(h(n).map(t=>this.serialize(t)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,t){return typeof n=="string"||Te(n),t?.kind==="function"?vt(y(n)??"")??"":t?.serialize?.(this,n)??vt(y(n))??""}serializeFunction(n,t){if(t?.serialize)return t.serialize(this,n);let i=f(n);return vt(i,"auto")+this.wrapArguments(n)}serialize(n){if(n==null)return"";this.level+=1;try{let t=(()=>{let i=rr(n,this.options);if(i)return i;let r=I(n);if(r!==null)return`\\text{${r}}`;let s=y(n);if(s!==null)return this.serializeSymbol(n,this.dictionary.ids.get(s));let o=f(n);if(o){let a=this.dictionary.ids.get(o);return this.serializeFunction(n,a)}throw Error(`Syntax error ${n?JSON.stringify(n,void 0,4):""}`)})();return this.level-=1,t??""}catch{}return this.level-=1,""}applyFunctionStyle(n,t){return this.options.applyFunctionStyle(n,t)}groupStyle(n,t){return this.options.groupStyle(n,t)}rootStyle(n,t){return this.options.rootStyle(n,t)}fractionStyle(n,t){return this.options.fractionStyle(n,t)}logicStyle(n,t){return this.options.logicStyle(n,t)}powerStyle(n,t){return this.options.powerStyle(n,t)}numericSetStyle(n,t){return this.options.numericSetStyle(n,t)}};function Pt(e){let n=e.match(/^____([0-9A-Fa-f]{6})(.*)/s);if(n)return[`\\unicode{"${(n[1].replace(/^0+/,"")||"0").padStart(4,"0")}}`,n[2]];let t=e.match(/^([^_]+)/)?.[1]??"",i=j.findIndex(a=>t===a[0]);if(i>=0)return[j[i][1],e.substring(j[i][0].length)];let r={zero:"0",one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9",ten:"10"};if(i=Object.keys(r).findIndex(a=>e.startsWith(a)),i>=0){let a=Object.keys(r)[i];return[r[a],e.substring(a.length)]}let s=e.codePointAt(0);if(i=j.findIndex(a=>a[2]===s),i>=0)return[j[i][1],e.substring(1)];let o={plus:"+",minus:"-",pm:"\\pm",ast:"\\ast",dag:"\\dag",ddag:"\\ddag",hash:"\\#",bottom:"\\bot",top:"\\top",bullet:"\\bullet",circle:"\\circ",diamond:"\\diamond",times:"\\times",square:"\\square",star:"\\star"};if(i=Object.keys(o).findIndex(a=>t===a),i>=0){let a=Object.keys(o)[i];return[o[a],e.substring(a.length)]}return[t,e.substring(t.length)]}function Is(e){let[n,t]=Pt(e),i=[];for(;t.length>0;){let s=t.match(/^_([a-zA-Z]+)(.*)/);if(!s||!It[s[1]])break;i.push(s[1]),t=s[2]}let r=[];for(;t.length>0;){let s=t.match(/^_([a-zA-Z]+)(.*)/);if(!s||!Mt[s[1]])break;r.push(s[1]),t=s[2]}return[n,i,r,t]}function Tn(e,n=!0,t="auto"){let[i,r,s,o]=Is(e);for(let a of r)It[a]&&(i=It[a](i));for(;o.length>0&&!o.startsWith("_")&&!/^\d/.test(o);){let[a,l]=Pt(o);if(a===""||l===o)break;i+=a,o=l}if(n){let a=[],l=[],u=i.match(/^([^\d].*?)(\d+)$/);for(u&&(l.push(u[2]),i=u[1]);o.length>0;){let p=o.match(/^____([0-9A-Fa-f]{6})(.*)/s);if(p){let d=p[1].replace(/^0+/,"")||"0";if(i+=`\\unicode{"${d.padStart(4,"0")}}`,o=p[2],o.length>0&&!o.startsWith("_")){let[m,T]=Pt(o);i+=m,o=T}}else if(o.startsWith("__")){let[d,m]=Tn(o.substring(2),!1,"none");a.push(d),o=m}else if(o.startsWith("_")){let[d,m]=Tn(o.substring(1),!1,"none");l.push(d),o=m}else break}a.length>0&&(i=le("^",i,a.join(","))),l.length>0&&(i=le("_",i,l.join(",")))}for(let a of s)Mt[a]&&(i=Mt[a](i));if(s.length===0&&t!=="none")switch(t){case"auto":tn(i)>1&&(i.includes("\\unicode")?i=`\\operatorname{${i}}`:i=`\\mathrm{${i}}`);break;case"operator":i=`\\operatorname{${i}}`;break;case"italic":i=`\\mathit{${i}}`;break;case"upright":i=`\\mathrm{${i}}`;break}return[i,o]}function vt(e,n="auto"){if(e===null)return null;if(_e.test(e))return e;let t=e.match(/^(_+)(.*)/);if(t&&!e.match(/^____[0-9A-Fa-f]{6}/)){let[s,o]=Tn(t[2],!0,"none");return`\\operatorname{${"\\_".repeat(t[1].length)+s+o}}`}let[i,r]=Tn(e,!0,n);return r.length>0?`\\operatorname{${e}}`:i}function ar(e,n,t){return new Dt(n,t).serialize(e)}function Ms(e){return{imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:e.decimalSeparator??".",digitGroupSeparator:e.digitGroupSeparator??"\\,",digitGroup:e.digitGroup??3,exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"auto",strict:e.parseStrict??!0,skipSpace:e.skipSpace??!0,parseNumbers:e.parseNumbers??"auto",preserveLatex:e.preserveLatex??!1,quantifierScope:e.quantifierScope??"tight",timeDerivativeVariable:e.timeDerivativeVariable??"t",getSymbolType:n=>V.unknown,hasSubscriptEvaluate:n=>!1,parseUnexpectedToken:(n,t)=>null}}function Ds(e){return{imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:e.decimalSeparator??".",digitGroupSeparator:e.digitGroupSeparator??"\\,",digitGroup:e.digitGroup??3,exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"vinculum",fractionalDigits:e.fractionalDigits??"max",notation:e.notation??"auto",avoidExponentsInRange:e.avoidExponentsInRange??[-7,20],prettify:e.prettify??!0,materialization:!1,invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",dmsFormat:!1,angleNormalization:"none",applyFunctionStyle:oi,groupStyle:ai,rootStyle:li,fractionStyle:ui,logicStyle:ci,powerStyle:pi,numericSetStyle:fi}}var bn=class{_options;_indexed;constructor(n){this._options=n??{}}get indexed(){if(!this._indexed){let n=this._options.dictionary??ut;this._indexed=Ci(n,t=>{console.error("LatexSyntax dictionary warning:",t)})}return this._indexed}parse(n,t){let i=Ms(this._options);return er(n,this.indexed,{...i,...t})}serialize(n,t){let i=Ds(this._options);return ar(n,this.indexed,{...i,...t})}},lr=null;function ur(){return lr??=new bn,lr}function Ps(e){return ur().parse(e)}function As(e){return ur().serialize(e)}var Ju="0.55.3";export{Hn as ALGEBRA_DICTIONARY,Qn as ARITHMETIC_DICTIONARY,nt as CALCULUS_DICTIONARY,Kn as COMPLEX_DICTIONARY,Yn as CORE_DICTIONARY,me as INEQUALITIES_DICTIONARY,ut as LATEX_DICTIONARY,it as LINEAR_ALGEBRA_DICTIONARY,Vn as LOGIC_DICTIONARY,bn as LatexSyntax,lt as OTHERS_DICTIONARY,_i as PHYSICS_DICTIONARY,Zn as SETS_DICTIONARY,rt as STATISTICS_DICTIONARY,Wn as SYMBOLS_DICTIONARY,et as TRIGONOMETRY_DICTIONARY,at as UNITS_DICTIONARY,Ps as parse,As as serialize,Ju as version};
5
+ `))}advance(){let n=this.current;return this.current=this.lexer.consumeToken(),n}match(n){return this.current.type===n?(this.advance(),!0):!1}expect(n){return this.current.type!==n&&this.error(`Expected ${n}, got ${this.current.type}`),this.advance()}createNode(n,t={}){return{kind:n,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();if(n||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return n}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let n=this.lexer.saveState(),t=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(n),this.current=t,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(n),this.current=t}catch(i){if(this.lexer.restoreState(n),this.current=t,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let n=this.parseIntersectionType();if(!n)return;let t=[n];for(;this.match("|");){let i=this.parseIntersectionType();i||this.error("Expected type after |"),t.push(i)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let n=this.parsePrimaryType();if(!n)return;let t=[n];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),t.push(i)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let n=this.parsePrimaryType();return n||this.error("Expected type after !"),this.createNode("negation",{type:n})}if(this.current.type==="("){let n=this.parseFunctionSignature();if(n)return n;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let n=this.lexer.saveState(),t=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(n),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let n=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),n.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(o=>o.modifier==="optional"),r=n.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=n.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:n,returnType:t})}parseArgument(){let n=this.parseNamedElement();if(!n)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:n,modifier:t})}parseNamedElement(){let n;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){n=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:n,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let n=this.current,i=this.lexer.peekToken().type==="<";switch(n.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let n=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}return this.createNode("list",{elementType:n,dimensions:t})}parseVectorType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(n=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:n,size:t})}parseMatrixType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:n,dimensions:t})}parseTensorType(){let n=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("tensor",{elementType:n})}parseDimensions(){let n=[],t=this.parseDimension();if(t){for(n.push(t);this.match("x");){let i=this.parseDimension();i||this.error("Expected dimension after x"),n.push(i)}return n}}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let n=parseInt(this.advance().value);return this.createNode("dimension",{size:n})}}parseDimensionWithX(){if(this.current.type==="NUMBER_LITERAL"){let n=[],t=parseInt(this.advance().value);if(n.push(this.createNode("dimension",{size:t})),this.current.type==="IDENTIFIER"&&this.current.value.startsWith("x")){let i=this.current.value,r=i.match(/x(\d+)/g);if(r&&r.join("")===i){this.advance();for(let s of r){let o=parseInt(s.substring(1));n.push(this.createNode("dimension",{size:o}))}}else(i==="x"||i.startsWith("x"))&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`")}if(n.length>1)return n}}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),t.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let n=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),n.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:n})}}parseRecordEntry(){let n;if(this.current.type==="IDENTIFIER")n=this.advance().value;else if(this.current.type==="VERBATIM_STRING")n=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:n,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("dictionary",{valueType:n})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("set",{elementType:n})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value==="indexed_collection",t=this.current.value==="collection";if(n||t){this.advance();let i=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:n})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let i=this.parseValue();this.expect("..");let r=this.parseValue();return this.expect(">"),this.createNode("numeric",{baseType:t,lowerBound:i,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value;if(ce.includes(n))return this.advance(),this.createNode("primitive",{name:n})}}parseValue(){let n,t;switch(this.current.type){case"STRING_LITERAL":n=this.advance().value,t="string";break;case"NUMBER_LITERAL":n=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),n=!0,t="boolean";break;case"FALSE":this.advance(),n=!1,t="boolean";break;case"NAN":this.advance(),n=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),n=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),n=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:n,valueType:t})}parseTypeReference(){let n=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(n&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,i=this.advance().value;return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:n}):n&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0}):(n||this.errorAtToken(t,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:n}))}}};function Vt(e,n){switch(e.kind){case"function_signature":return n.visitFunctionSignature(e);case"union":return n.visitUnionType(e);case"intersection":return n.visitIntersectionType(e);case"negation":return n.visitNegationType(e);case"group":return n.visitGroupType(e);case"list":return n.visitListType(e);case"vector":return n.visitVectorType(e);case"matrix":return n.visitMatrixType(e);case"tensor":return n.visitTensorType(e);case"tuple":return n.visitTupleType(e);case"record":return n.visitRecordType(e);case"dictionary":return n.visitDictionaryType(e);case"set":return n.visitSetType(e);case"collection":return n.visitCollectionType(e);case"expression":return n.visitExpressionType(e);case"symbol":return n.visitSymbolType(e);case"numeric":return n.visitNumericType(e);case"primitive":return n.visitPrimitiveType(e);case"type_reference":return n.visitTypeReference(e);case"value":return n.visitValue(e);default:throw new Error(`Unknown node kind: ${e.kind}`)}}var $n=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return Vt(n,this)}visitFunctionSignature(n){let t=[],i=[],r,s;for(let l of n.arguments){let u=this.buildNamedElement(l.element);switch(l.modifier){case"optional":i.push(u);break;case"variadic_zero":r=u,s=0;break;case"variadic_one":r=u,s=1;break;default:t.push(u);break}}let o=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(n){return{kind:"union",types:n.types.map(i=>this.buildType(i))}}visitIntersectionType(n){return{kind:"intersection",types:n.types.map(i=>this.buildType(i))}}visitNegationType(n){return{kind:"negation",type:this.buildType(n.type)}}visitGroupType(n){return this.buildType(n.type)}visitListType(n){let t=this.buildType(n.elementType),i=n.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}visitVectorType(n){let t=this.buildType(n.elementType);return n.size!==void 0?{kind:"list",elements:t,dimensions:[n.size]}:{kind:"list",elements:t}}visitMatrixType(n){let t=this.buildType(n.elementType);if(n.dimensions){let i=n.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(n){return{kind:"list",elements:this.buildType(n.elementType)}}visitTupleType(n){return{kind:"tuple",elements:n.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(n){if(n.entries.length===0)return"record";let t={};for(let i of n.entries)t[i.key]=this.buildType(i.valueType);return{kind:"record",elements:t}}visitDictionaryType(n){let t=this.buildType(n.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(n){let t=this.buildType(n.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(n){let t=this.buildType(n.elementType);return n.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(n){return{kind:"expression",operator:n.operator}}visitSymbolType(n){return{kind:"symbol",name:n.name}}visitNumericType(n){if(!n.lowerBound&&!n.upperBound)return n.baseType;let t=n.lowerBound?this.buildValue(n.lowerBound):-1/0,i=n.upperBound?this.buildValue(n.upperBound):1/0;return t===-1/0&&i===1/0?n.baseType:{kind:"numeric",type:n.baseType,lower:t,upper:i}}visitPrimitiveType(n){return n.name}visitTypeReference(n){let t=this.typeResolver.resolve(n.name);if(t)return t;if(n.isForward){let i=this.typeResolver.forward(n.name);if(i)return i}return n.name}visitValue(n){return{kind:"value",value:n.value}}buildNamedElement(n){let t=this.buildType(n.type);return n.name?{name:n.name,type:t}:{type:t}}buildDimension(n){return n.size??-1}buildValue(n){return n.value}isAnyType(n){return n==="any"||typeof n=="object"&&"kind"in n&&n.kind==="primitive"&&"name"in n&&n.name==="any"}};function Gt(e,n){return new $n(n).buildType(e)}function Ie(e,n){if(e!==void 0){if(Cn(e))return e;if(typeof e=="string")try{let i=new an(e,{typeResolver:n}).parseType();return Gt(i,n)}catch(t){throw new Error(`Failed to parse type "${e}": ${t instanceof Error?t.message:String(t)}`)}}}var Mr={number:Se,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:ce,unknown:[],nothing:[],never:[],error:[],value:On,scalar:sn,collection:rn,indexed_collection:Bn,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],expression:Fn};function $e(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:Mr[n].includes(e)}function k(e,n){if(typeof e=="string"&&!ce.includes(e)&&(e=Ie(e)),typeof n=="string"&&!ce.includes(n)&&(n=Ie(n)),n==="any")return!0;if(n==="never")return!1;if(n==="error")return e==="error";if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?$e(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?$e("integer",n):$e("number",n):typeof e.value=="boolean"?$e("boolean",n):typeof e.value=="string"?$e("string",n):!1:e.kind==="union"?e.types.every(t=>k(t,n)):e.kind==="intersection"?e.types.some(t=>k(t,n)):e.kind==="negation"?!k(e.type,n):e.kind==="numeric"?!!k(e.type,n):n==="number"?Ut(e):n==="symbol"?zn(e):n==="expression"?Dr(e):n==="function"?Zt(e):n==="scalar"?jt(e):n==="value"?Ht(e):n==="indexed_collection"?Wt(e):n==="collection"?Yt(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="record"?e.kind==="record":n==="dictionary"?e.kind==="dictionary":!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(t=>n.types.some(i=>k(t,i))):n.types.some(t=>k(e,t));if(n.kind==="expression"){if(e==="symbol")return!0;if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?zn(e):e.operator===n.operator;if(e.kind==="symbol")return!0}if(typeof e=="string")return!1;if(n.kind==="reference"){if(e.kind==="reference")return e.name===n.name;if(n.alias===!0&&n.def)return k(e,n.def)}if(e.kind==="union")return e.types.some(t=>k(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>k(i,t)));if(e.kind==="intersection")return e.types.every(t=>k(t,n));if(n.kind==="intersection")return n.types.every(t=>k(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!k(e.result,n.result))return!1;if(e.optArgs||e.variadicArg){if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let t=0;t<n.args.length;t++)if(!k(n.args[t].type,e.args[t].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let t=0;t<e.optArgs.length;t++)if(!k(n.optArgs[t].type,e.optArgs[t].type))return!1}else if(e.optArgs)return!1;if(n.variadicArg){if(!e.variadicArg||e.variadicMin!=n.variadicMin||!k(n.variadicArg.type,e.variadicArg.type))return!1}else if(e.variadicArg)return!1}else{if(n.args&&!e.args)return!1;let t=0;if(n.args){if(e.args.length<n.args.length)return!1;for(;t<n.args.length;){if(!k(n.args[t].type,e.args[t].type))return!1;t+=1}}if(n.optArgs){if(t>=e.args.length)return!0;for(let i=0;i<n.optArgs.length;i++){if(!k(n.optArgs[i].type,e.args[t].type))return!1;if(t+=1,t>=e.args.length)return!0}}if(n.variadicArg){if(t>=e.args.length&&n.variadicMin===0)return!0;if(n.variadicMin>0&&t+n.variadicMin>e.args.length)return!1;for(;t<e.args.length;){if(!k(n.variadicArg.type,e.args[t].type))return!1;t+=1}}}return!0}if(e.kind==="record"&&n.kind==="record"){for(let t of Object.keys(n.elements))if(!(t in e.elements)||!k(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return k(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?k(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>k(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return k(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>k(t.type,n.elements));if(e.kind==="set")return k(e.elements,n.elements);if(e.kind==="dictionary")return k({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return k({kind:"tuple",elements:[{type:"string"},{type:ze(...Object.values(e.elements))}]},n.elements)}if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let t=0;t<e.elements.length;t++){let i=e.elements[t],r=n.elements[t];if(!k(i.type,r.type)||i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!k(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let t=0;t<e.dimensions.length;t++)if(n.dimensions[t]!==-1&&e.dimensions[t]!==n.dimensions[t])return!1}return!0}if(e.kind==="symbol"&&n.kind==="symbol")return e.name===n.name;if(e.kind==="numeric"&&n.kind==="numeric")return!(!k(e.type,n.type)||(e.lower??-1/0)<(n.lower??-1/0)||(e.upper??1/0)>(n.upper??1/0));if(n.kind==="set"&&e.kind==="set")return!!k(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return k(e.type,n.type);if(n.kind==="negation")return!k(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return k("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?k("integer",n):k("real",n);if(typeof e.value=="string")return k("string",n)}return!1}function Ut(e){return typeof e=="string"?Se.includes(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function jt(e){return Ut(e)?!0:typeof e=="string"?sn.includes(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function Yt(e){return Wt(e)?!0:typeof e=="string"?rn.includes(e):["collection","set","record","dictionary"].includes(e.kind)}function Wt(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function Ht(e){return jt(e)||Yt(e)}function Zt(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function Dr(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||Ht(e)||Zt(e)||zn(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function zn(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function Pr(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||k(e,n)?e:k(n,e)?n:Xt(e,n)}function Ar(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:k(e,n)?n:k(n,e)?e:Xt(e,n)}function qn(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>Pr(n,t))}function ze(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>Ar(n,t))}function Xt(e,n){return e===n?e:e==="any"||n==="any"?"any":e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"?e:e==="nothing"?n:n==="nothing"?e:w(e,n,"non_finite_number")?"non_finite_number":w(e,n,"finite_integer")?"finite_integer":w(e,n,"integer")?"integer":w(e,n,"finite_rational")?"finite_rational":w(e,n,"rational")?"rational":w(e,n,"finite_real")?"finite_real":w(e,n,"real")?"real":w(e,n,"imaginary")?"imaginary":w(e,n,"finite_complex")?"finite_complex":w(e,n,"complex")?"complex":w(e,n,"finite_number")?"finite_number":w(e,n,"number")?"number":w(e,n,"list")?"list":w(e,n,"record")?"record":w(e,n,"dictionary")?"dictionary":w(e,n,"set")?"set":w(e,n,"tuple")?"tuple":w(e,n,"indexed_collection")?"indexed_collection":w(e,n,"collection")?"collection":w(e,n,"scalar")?"scalar":w(e,n,"value")?"value":w(e,n,"function")?"function":w(e,n,"expression")?"expression":"any"}function w(e,n,t){return!!(k(e,t)&&k(n,t))}var V=class e{static unknown=new e("unknown");static number=new e("number");static non_finite_number=new e("non_finite_number");static finite_number=new e("finite_number");static finite_integer=new e("finite_integer");static finite_real=new e("finite_real");static string=new e("string");static dictionary=new e("dictionary");static setNumber=new e("set<number>");static setComplex=new e("set<complex>");static setImaginary=new e("set<imaginary>");static setReal=new e("set<real>");static setRational=new e("set<rational>");static setFiniteInteger=new e("set<finite_integer>");static setInteger=new e("set<integer>");type;static widen(...n){return new e(ze(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(qn(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=Ie(n,t):this.type=n}matches(n){return n instanceof e?k(this.type,n.type):k(this.type,n)}is(n){return k(this.type,n)&&k(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return R(this.type)}toJSON(){return R(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return R(this.type)}};var Vn=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:235},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:235},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:230},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:230},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:232},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:232},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:232},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\Longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["=",">"],kind:"infix",precedence:220,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:220});return i===null?null:["Implies",n,i]}},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\Longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["<","=",">"],kind:"infix",precedence:219,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:219});return i===null?null:["Equivalent",n,i]}},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:219}),r=e.index,s=e.parseExpression({...t,minPrec:219});return s!==null&&f(s)==="Mod"?["Congruent",n,i,M(c(s,1))]:(e.index=r,["Equivalent",n,M(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:qe("\\forall"),parse:pe("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:qe("\\exists"),parse:pe("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:qe("\\exists!"),parse:pe("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:qe("\\lnot\\forall"),parse:pe("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:qe("\\lnot\\exists"),parse:pe("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=h(n);return t.length===0?"\\delta":t.every(i=>y(i))?`\\delta_{${t.map(i=>e.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>e.serialize(i)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let i=e.parseToken();return i?["KroneckerDelta",i]:null}let t=le(n);return t&&t.length<=2?["KroneckerDelta",...t]:f(n)==="InvisibleOperator"?["KroneckerDelta",...h(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=f(n);return!t||!me.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=f(n);return!t||!me.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=h(n);if(t.length===0)return"";let i=t[0],r=typeof i=="string"?i:e.serialize(i);if(t.length===1)return r;let s=t.slice(1).map(o=>e.serialize(o));return`${r}(${s.join(", ")})`}}];function qe(e){return(n,t)=>{let i=h(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),s=n.serialize(i[1]);return`${e} ${r}, ${s}`}}function Qt(e,n){return e.peek==="\\to"||e.peek==="\\rightarrow"||e.peek==="\\implies"||e.peek==="\\Rightarrow"||e.peek==="\\iff"||e.peek==="\\Leftrightarrow"||e.peek==="\\land"||e.peek==="\\wedge"||e.peek==="\\lor"||e.peek==="\\vee"||(n.condition?.(e)??!1)}function pe(e){return(n,t)=>{let i=n.index,r=n.options.quantifierScope!=="loose",s=n.parseSymbol(t);if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let u=r?{...t,condition:d=>Qt(d,t)}:t;n.enterQuantifierScope();let p=n.parseExpression(u);return n.exitQuantifierScope(),[e,s,M(p)]}n.enterQuantifierScope();let l=n.parseEnclosure();if(n.exitQuantifierScope(),l)return[e,s,M(l)]}n.index=i;let o={...t,condition:l=>l.peek===":"||l.peek==="\\colon"||(t.condition?.(l)??!1)},a=n.parseExpression(o);if(a===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let l=r?{...t,condition:p=>Qt(p,t)}:t;n.enterQuantifierScope();let u=n.parseExpression(l);return n.exitQuantifierScope(),[e,a,M(u)]}if(n.match("(")){n.enterQuantifierScope();let l=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,a,M(l)]:null}return null}}function Gn(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let s=t?[t]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:i});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r),o||e.skipVisualSpace())}return s}function H(e=""){return(n,t)=>{if(!t)return"";let i=h(t);if(i.length===0)return"";if(i.length===1)return n.serialize(i[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=i.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),x(r)}}var Yn=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:Q,parse:(e,n,t)=>{let i=[];if(f(n)==="Delimiter"&&(n=c(n,1)??"Nothing"),f(n)==="Sequence")for(let s of h(n)){if(!y(s))return null;i.push(y(s))}else{if(!y(n))return null;i=[y(n)]}let r=e.parseExpression({minPrec:Q})??"Nothing";return f(r)==="Delimiter"&&(r=c(r,1)??"Nothing"),f(r)==="Sequence"&&(r=["Block",...h(r)]),["Function",r,...i]},serialize:(e,n)=>{let t=h(n);return t.length<1?"()\\mapsto()":t.length===1?x(["()","\\mapsto",e.serialize(c(n,1))]):t.length===2?x([e.serialize(c(n,2)),"\\mapsto",e.serialize(c(n,1))]):x([e.wrapString(h(n)?.slice(1).map(i=>e.serialize(i)).join(", "),"normal"),"\\mapsto",e.serialize(c(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=c(n,1),i=f(t);if(i==="InverseFunction"||i==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=h(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(l=>e.serialize(l)).join(", "),o)}let r=c(n,2);if(typeof t=="string"||!r){let o=h(n).slice(1);return e.serialize(o)}if(A(n)===2)return x([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return x(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...h(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n,t)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=c(n,1);if(!t)return"";let i=h(n).slice(1);if(f(t)==="Function"){let r=h(t).slice(1),s=c(t,1);if(f(s)==="Block"&&A(s)===1&&(s=c(s,1)),r.length>0)return`\\left.\\left(${e.serialize(s)}\\right)\\right|_{${r.map((o,a)=>`${e.serialize(o)}=${e.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${e.serialize(t)}\\right)\\right|_{${i.map(r=>e.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:Oe,serialize:(e,n)=>{let t=Mn(c(n,1));if(f(c(n,2))==="Function"){let i=c(n,2),r=Mn(c(i,1)),s=h(i).slice(1);return x([e.serialize(t),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return x([e.serialize(t),"\\coloneq",e.serialize(c(n,2))])},parse:ln},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:Oe,parse:ln},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:Oe,parse:ln},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:Oe,parse:ln},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:250,serialize:(e,n)=>x([e.serialize(c(n,1)),"\\colon",e.serialize(c(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:250,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=N(c(n,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=N(c(n,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),s=0;if(t===2||t===10?s=4:t===16?s=2:t>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(c(n,1))+", "+e.serialize(c(n,2))+")"}},{name:"Sequence",serialize:H(" ")},{name:"InvisibleOperator",serialize:H("")},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=c(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[f(i)],s=r?i:["Sequence",i];if(r??="(,)",A(n)>1){let p=I(c(n,2));typeof p=="string"&&p.length<=3&&(r=p)}let[o,a,l]=["","",""];r.length===3?[o,a,l]=r:r.length===2?[o,l]=r:r.length===1&&(a=r);let u=i?s?H(a)(e,s):e.serialize(i):"";return e.wrapString(u,t,o+l)}},{name:"Tuple",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>x(["(",H(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>f(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(c(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let t=c(n,1);if(I(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=wr(e,n)||"\\blacksquare",r=f(t)==="ErrorCode"?I(c(t,1)):I(t);return r==="incompatible-type"?y(c(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(c(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(c(t,3))}\\notin ${e.serialize(c(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=I(c(n,1));return t==="missing"?e.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${Kt(I(c(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":x(Ke(n,t=>I(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":x(Ke(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:_r},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:jn("]"),serialize:(e,n)=>x(["\\lbrack",H(", ")(e,n),"\\rbrack"])},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:jn("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:jn("\\right","\\rbrack")},{kind:"postfix",latexTrigger:["_"],parse:(e,n,t)=>{let i=e.parseGroup()??e.parseToken();i===null&&e.options.strict===!1&&e.peek==="("&&(i=e.parseEnclosure());let r=y(n);return i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||f(n)==="List")?(f(i)==="Delimiter"&&(i=c(i,1)??"Nothing"),f(i)==="Sequence"?["At",n,...h(i)]:["At",n,i]):["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:ii,serialize:Lr},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:Jr},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Gn(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Gn(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:Rr,serialize:(e,n)=>{let t=h(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(c(n,1));if(t.length===2)return e.wrap(c(n,1),10)+".."+e.wrap(c(n,2),10);if(t.length===3){let i=N(c(n,3)),r=N(c(n,1));return i!==null&&r!==null?e.wrap(c(n,1),10)+".."+e.wrap(r+i,10)+".."+e.wrap(c(n,2),10):e.wrap(c(n,1),10)+"..("+(e.wrap(c(n,1),L)+"+"+e.wrap(c(n,3),L))+").."+e.wrap(c(n,2),10)}return""}},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Gn(e,t,n,19,";");return i===null?null:i.some(r=>f(r)==="Assign")?Br(i):["Delimiter",["Sequence",...i],"';'"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>{let i=e.index;return $(e,"where")?ti(e,n,t):(e.index=i,null)}},{symbolTrigger:"where",kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>ti(e,n,t)},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:235,parse:(e,n,t)=>{let i=e.index;if(!$(e,"and"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:235});return["And",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:230,parse:(e,n,t)=>{let i=e.index;if(!$(e,"or"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:230});return["Or",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!$(e,"iff"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!$(e,"if and only if"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:21,parse:(e,n,t)=>{let i=e.index;if(!$(e,"such that"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:21});return["Colon",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return $(e,"for all")?pe("ForAll")(e,n):(e.index=t,null)}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return $(e,"there exists")?pe("Exists")(e,n):(e.index=t,null)}},{name:"Block",serialize:(e,n)=>{let t=h(n);return!t||t.length===0?"":t.filter(r=>f(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=h(n);return!t||t.length<3?"":x(["\\text{if }",e.serialize(t[0]),"\\text{ then }",e.serialize(t[1]),"\\text{ else }",e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=h(n);if(!t||t.length<2)return"";let i=t[0],r=t[1];if(f(r)==="Element"){let s=c(r,1),o=c(r,2);if(f(o)==="Range"){let a=c(o,1),l=c(o,2);return x(["\\text{for }",e.serialize(s),"\\text{ from }",e.serialize(a),"\\text{ to }",e.serialize(l),"\\text{ do }",e.serialize(i)])}}return x(["\\operatorname{Loop}(",e.serialize(i),", ",e.serialize(r),")"])}},{name:"Break",serialize:()=>"\\text{break}"},{name:"Continue",serialize:()=>"\\text{continue}"},{name:"Return",serialize:(e,n)=>{let t=c(n,1);return!t||y(t)==="Nothing"?"\\text{return}":x(["\\text{return }",e.serialize(t)])}},{symbolTrigger:"if",kind:"prefix",precedence:245,parse:(e,n)=>ei(e,n)},{symbolTrigger:"for",kind:"prefix",precedence:245,parse:(e,n)=>ni(e,n)},{symbolTrigger:"break",kind:"prefix",precedence:245,parse:()=>["Break"]},{symbolTrigger:"continue",kind:"prefix",precedence:245,parse:()=>["Continue"]},{symbolTrigger:"return",kind:"prefix",precedence:245,parse:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{name:"Text",serialize:(e,n)=>{let t=h(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)I(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return x(t.map(a=>e.serialize(a)));let s=[];for(let a=0;a<i;a++)s.push(e.serialize(t[a]));let o="";for(let a=i;a<=r;a++){let l=I(t[a]);l!==null?o+=Kt(l):f(t[a])==="Annotated"||f(t[a])==="Text"?o+=e.serialize(t[a]):o+="$"+e.serialize(t[a])+"$"}s.push("\\text{"+o+"}");for(let a=r+1;a<t.length;a++)s.push(e.serialize(t[a]));return x(s)}},{name:"String",latexTrigger:["\\text"],parse:(e,n)=>{let t=e.index;return $(e,"if")?ei(e,n):(e.index=t,$(e,"for")?ni(e,n):(e.index=t,$(e,"break")?["Break"]:(e.index=t,$(e,"continue")?["Continue"]:(e.index=t,$(e,"return")?["Return",e.parseExpression(n)??"Nothing"]:(e.index=t,W(e))))))},serialize:(e,n)=>{let t=h(n);return t.length===0?"\\text{}":x(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>A(n)===2?e.serialize(c(n,1))+"_{"+e.serialize(c(n,2))+"}":"_{"+e.serialize(c(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix",parse:(e,n)=>e.options.strict===!1&&/^[0-9]$/.test(e.peek)?null:["Superminus",n]},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>K(e,n,1),serialize:(e,n)=>{let t=N(c(n,2))??1,i=e.serialize(c(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(c(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>K(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>K(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>K(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>K(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>K(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=y(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return!e.matchBoundary()||!e.match("<}>")?null:["Derivative",n,r]}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(f(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=y(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new V("matrix")))return e.match("<}>"),["Inverse",n];if(!i.matches("function"))return null;let r=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))r++;else if(e.match("\\prime"))r++;else if(e.match("\\doubleprime"))r+=2;else if(e.match("\\tripleprime"))r+=3;else return null;return r===1?["Derivative",["InverseFunction",n]]:r>0?["Derivative",["InverseFunction",n],r]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(c(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=N(c(n,2))??1,i=e.serialize(c(n,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+e.serialize(c(n,2))+")}"}},{name:"D",serialize:(e,n)=>{if(f(n)!=="D")return"D";let t=c(n,1),i=c(n,2);if(!t||!i)return"D";let r=1,s=t;for(;f(s)==="D";){let u=c(s,2);if(y(u)===y(i))r++,s=c(s,1);else break}let o=s;f(s)==="Function"&&(o=c(s,1)??s);let a=e.serialize(o),l=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${l}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${l}^{${r}}}${a}`}},{name:"NewtonDerivative1",latexTrigger:["\\dot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",n,t]}},{name:"NewtonDerivative2",latexTrigger:["\\ddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",n,t],t]}},{name:"NewtonDerivative3",latexTrigger:["\\dddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",n,t],t],t]}},{name:"NewtonDerivative4",latexTrigger:["\\ddddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",["D",n,t],t],t],t]}},{name:"EulerDerivative",latexTrigger:["D"],kind:"expression",parse:e=>{let n=1,t=null,i=!1;for(;!i;)if(e.match("_")){if(t=e.parseGroup()??e.parseToken(),!t)return null}else if(e.match("^")){let o=e.parseGroup()??e.parseToken();n=N(o)??1}else i=!0;if(!t)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let s=r;for(let o=0;o<n;o++)s=["D",s,t];return s}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:Un,serialize:(e,n)=>{let t=[],i=h(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let s=[];s.push(e.serialize(i[r+1])),s.push(e.serialize(i[r])),t.push(s.join("&"))}return x(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:Un},{kind:"environment",symbolTrigger:"rcases",parse:Un}];function W(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,s=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,Qe(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")s(),t.push(W(e));else if(e.match("\\textbf"))s(),t.push(W(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))s(),t.push(W(e,{fontStyle:"normal"}));else if(e.match("\\textup"))s(),t.push(W(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))s(),t.push(W(e,{fontStyle:"italic"}));else if(e.match("\\textit"))s(),t.push(W(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))s(),t.push(W(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))s(),t.push(W(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,l=e.parseStringGroup();if(l!==null){s();let u=W(e);t.push(["Annotated",u,Qe({color:l})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(s(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,l=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(s(),t.push(l)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,l=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(s(),t.push(l)):(i+="$$",e.index=a)}else{let a=e.parseChar()??e.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}s();let o;return t.length===1?o=t[0]:t.every(a=>I(a)!==null)?o="'"+t.map(a=>I(a)).join()+"'":o=["Text",...t],n?["Annotated",o,Qe(n)]:o}function _r(e,n){return n===null?"":x(Ke(n,t=>{let i=I(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Kt(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function wr(e,n){let t=c(n,2);return t?f(t)==="LatexString"?I(c(t,1))??"":f(t)==="Hold"?e.serialize(c(t,1)):e.serialize(t):""}function K(e,n,t){for(;!e.atEnd;)if(e.match("'")||e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else break;let i=f(n);if(i==="Derivative"||i==="Prime"){let a=N(c(n,2))??1;return[i,M(c(n,1)),a+t]}let r=y(n),s=r&&e.getSymbolType(r).matches("function")||f(n);e.skipSpace();let o=e.parseArguments("enclosure");if(o&&o.length>0){let a=o[0],l=y(a)??"x",p=typeof n=="string"?[n,...o]:["Apply",n,...o];for(let d=0;d<t;d++)p=["D",p,l];return p}return s?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",M(n)]:["Prime",M(n),t]}function Jr(e,n){if(P(n))return["Delimiter"];let t=f(n);if(t==="Delimiter"&&c(n,2)!==null){let i=I(c(n,2));if(i?.length===1)return["Delimiter",c(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(I(c(n,2))??"..")===".."?["Matrix",c(n,1)]:["Delimiter",n]}function ii(e,n){if(P(n))return["List"];let t=f(n);if(t==="Range"||t==="Linspace")return n;if(t==="Sequence")return["List",...h(n)];if(t==="Delimiter"){let i=I(c(n,2))??"...";if(i===";"||i===".;.")return["List",...(h(c(n,1))??[]).map(r=>ii(e,r))];if(i===","||i===".,.")return n=c(n,1),f(n)==="Sequence"?["List",...h(n)]:["List",n??"Nothing"]}return["List",n]}function Lr(e,n){return A(n)>1&&h(n).every(t=>{let i=f(t);return Rn(i)||Ln(i)})?x(["\\begin{cases}",H("\\\\")(e,n),"\\end{cases}"]):x(["\\bigl\\lbrack",H(", ")(e,n),"\\bigr\\rbrack"])}function Rr(e,n){if(n===null)return null;let t=e.parseExpression({minPrec:270});if(t===null)return null;if(f(t)==="Range"){let i=c(t,1),r=c(t,2);return i&&r?["Range",n,r,["Subtract",i,n]]:null}return["Range",n,t]}var De={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function ln(e,n,t){let i=(t?.minPrec??0)>=19,r=y(n);if(r&&r.includes("_")){let a=r.indexOf("_"),l=r.substring(0,a),u=r.substring(a+1),p=parseInt(u,10),d=!isNaN(p)&&String(p)===u?p:u,m=d!==""&&(typeof d=="number"||typeof d=="string"&&d.length===1);(e.getSymbolType(l).matches("indexed_collection")||!i&&m)&&(n=["Subscript",l,d])}if(f(n)==="InvisibleOperator"&&A(n)===2&&f(c(n,2))==="Delimiter"){let a=y(c(n,1));if(!a)return null;let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let u=c(c(n,2),1),p=[];return f(u)==="Sequence"?p=[...h(u)]:u&&(p=[u]),["Assign",a,["Function",l,...p??[]]]}if(f(n)==="Subscript"&&y(c(n,1))){let a=y(c(n,1));if(!e.getSymbolType(a).matches("indexed_collection")){let p=c(n,2),d=(p!==null&&typeof p=="string"?p:void 0)??(p!==null&&typeof p=="number"?String(p):void 0);if(d&&i){let m=e.parseExpression({...t??{},minPrec:20});return m===null?null:["Assign",a+"_"+d,m]}}let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let u=c(n,2);return I(u)!==null?["Assign",n,l]:y(u)?["Assign",n,l]:["Assign",n,l]}let s=f(n);if(s){let a=h(n),l=e.parseExpression({...t??{},minPrec:20});return l===null?null:["Assign",s,["Function",l,...a]]}if(!y(n))return null;let o=e.parseExpression({...t??{},minPrec:20});return o===null?null:["Assign",n,o]}function Un(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=f(i[0]);return Ln(r)||Rn(r)}))return["List",...n.map(i=>i[0])];let t=[];for(let i of n)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=I(i[1]);t.push(r?"True":In(i[1])??"True"),t.push(i[0])}return["Which",...t]}function $(e,n){let t=e.index;if(!e.match("<{>"))return e.index=t,!1;for(;e.match("<space>"););for(let i=0;i<n.length;i++)if(n[i]===" "){if(!e.match("<space>"))return e.index=t,!1;for(;e.match("<space>"););}else{if(e.peek!==n[i])return e.index=t,!1;e.nextToken()}for(;e.match("<space>"););return e.match("<}>")?!0:(e.index=t,!1)}function Me(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("\\text")){if($(e,n))return!0;e.index=t}let i=e.index,r=e.parseSymbol();return r!==null&&y(r)===n?!0:(e.index=i,!1)}function Ve(e,n){let t=e.index,i=Me(e,n);return e.index=t,i}function ei(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:s=>Ve(s,"then")});if(t===null||!Me(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:s=>Ve(s,"else")});if(i===null||!Me(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function ni(e,n){let t=e.parseExpression({minPrec:0,condition:a=>Ve(a,"from")}),i=t?y(t):null;if(!i||!Me(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>Ve(a,"to")});if(r===null||!Me(e,"to"))return null;let s=e.parseExpression({minPrec:0,condition:a=>Ve(a,"do")});return s===null||!Me(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,s]]]}function ti(e,n,t){let i={minPrec:21,condition:o=>{if(t?.condition?.(o))return!0;let a=o.index;o.skipVisualSpace();let l=o.peek===",";return o.index=a,l}},r=[];do{e.skipVisualSpace();let o=e.parseExpression(i);if(!o)break;r.push(o),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let s=[];for(let o of r){let a=ri(o);f(a)==="Assign"&&s.push(["Declare",c(a,1)]),s.push(a)}return s.push(n),["Block",...s]}function Br(e){let n=[];for(let t of e){let i=ri(t);f(i)==="Assign"&&n.push(["Declare",c(i,1)]),n.push(i)}return["Block",...n]}function ri(e){if(f(e)!=="Assign")return e;let n=c(e,1);if(f(n)!=="Subscript")return e;let t=y(c(n,1));if(!t)return e;let i=c(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,c(e,2)??"Nothing"]:e}function jn(...e){return(n,t)=>{if(!y(t)&&f(t)!=="List")return null;let i=null;return e.length===0&&(i=n.parseGroup()),i??=n.parseExpression({minPrec:0}),i===null||e.length>0&&!n.matchAll(e)||I(i)!==null?null:(f(i)==="Delimiter"&&(i=c(i,1)??"Nothing"),f(i)==="Sequence"?["At",t,...h(i)]:["At",t,i])}}var j=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],Wn=[...j.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...j.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var Hn=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["-",">"],kind:"infix",precedence:270,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:270});return i===null?null:["To",n,i]}}];function Z(e,n,t){if(P(e))return null;let i,r=f(e);if(r==="Delimiter"){let u=I(c(e,2));if(u!==","&&u!=="(,)"&&u!=="[,]")return null;let p=c(e,1);f(p)==="Sequence"?i=[...h(p)]:i=p?[p]:[]}else if(r==="Sequence")i=[...h(e)];else return null;if(i.length!==2)return null;let[s,o]=i;return["Interval",n?["Open",s]:s,t?["Open",o]:o]}var Zn=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix"},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:si},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>Z(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>Z(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>Z(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>Z(n,!0,!0)},{name:"Multiple",serialize:si},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>P(n)?"EmptySet":(f(n)=="Delimiter"&&I(c(n,2))===","&&(n=c(n,1)),f(n)!=="Sequence"?["Set",n]:["Set",...h(n)]),serialize:(e,n)=>x(["\\lbrace",h(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:S},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function si(e,n){if(n===null)return"";let t=f(n);if(!t)return"";if(t==="Set")return A(n)===0?"\\emptyset":A(n)===2&&f(c(n,2))==="Condition"?x(["\\left\\lbrace",e.serialize(c(n,1)),"\\middle\\mid",e.serialize(c(n,2)),"\\right\\rbrace"]):x(["\\left\\lbrace",...h(n).map(r=>e.serialize(r)+" ,"),"\\right\\rbrace"]);if(t==="Range")return x(["\\mathopen\\lbrack",e.serialize(c(n,1)),", ",e.serialize(c(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=c(n,1),s=c(n,2),o=!1,a=!1;return f(r)==="Open"&&(r=c(r,1),o=!0),f(s)==="Open"&&(s=c(s,1),a=!0),x([o?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(s),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function oi(e,n){return"normal"}function ai(e,n){return"normal"}function li(e,n){return n>2?"solidus":"radical"}function ui(e,n){if(n>3)return"inline-solidus";if(f(e)==="Divide"){let[t,i]=h(e),[r,s]=[Re(t),Re(i)];if(s<=2&&r>5)return"factor";let o=f(i);if(r<=2&&s>5&&o!=="Sqrt"&&o!=="Root")return"reciprocal"}return"quotient"}function ci(e,n){return"boolean"}function pi(e,n){return"solidus"}function fi(e,n){return"compact"}function Pe(e,n,t){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let i=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return x(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function un(e,n){if(n==="none")return e;if(n==="0...360"){let t=e%360;return(t<0?t+360:t)||0}if(n==="-180...180"){let t=e%360;return t>180&&(t-=360),t<-180&&(t+=360),t||0}return e}function Or(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,s=Math.floor(r),o=(r-s)*60,a=Math.round(o*1e3)/1e3,l=s,u=i;return a>=60&&(a=0,l++),l>=60&&(l=0,u++),{deg:n*u||0,min:n*l||0,sec:a===0?0:n*a}}function cn(e){let{deg:n,min:t,sec:i}=Or(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let s=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(s))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function Fr(e){if(f(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of h(e))if(f(i)==="Power"){let r=c(i,1),s=c(i,2);if(f(s)==="Negate"){let o=c(s,1);r&&o&&t.push(["Power",r,o])}else{let o=N(s)??NaN;o===-1?r&&t.push(r):o<0?r&&t.push(["Power",r,-o]):n.push(i)}}else if(f(i)==="Rational"&&A(i)===2||f(i)==="Divide"){let r=c(i,1),s=c(i,2);N(r)!==1&&n.push(r),N(s)!==1&&t.push(s)}else{let r=ke(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function Cr(e){let n=e.parseOptionalGroup(),t=e.parseGroup()??e.parseToken();return P(t)?n!==null?["Root",ye,M(n)]:["Sqrt",ye]:n!==null?["Root",t,n]:["Sqrt",t]}function $r(e){if(typeof e=="number")return-e;if(typeof e=="string")return e.startsWith("-")?e.slice(1):e.startsWith("+")?"-"+e.slice(1):"-"+e;let n=e.num;return n.startsWith("-")?{num:n.slice(1)}:n.startsWith("+")?{num:"-"+n.slice(1)}:{num:"-"+n}}function Ue(e,n,t,i){return t==null?"\\sqrt{}":(i=i??2,n==="solidus"?e.wrapShort(t)+"^{1/"+e.serialize(i)+"}":n==="quotient"?e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(i)+"}}":N(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}function zr(e,n){e.level-=1;let t=f(n),i="",r=c(n,1);if(t==="Negate")i="-"+e.wrap(r,L+1);else if(t==="Subtract"){i=e.wrap(r,L);let s=c(n,2);if(s!==null){let o=e.wrap(s,L);o[0]==="-"?i+="+"+o.slice(1):o[0]==="+"?i+="-"+o.slice(1):i=i+"-"+o}}else if(t==="Add"){if(e.options.prettify&&A(n)===2&&e.options.invisiblePlus!=="+"){let[a,l]=[c(n,1),c(n,2)],[u,p]=[a,l],d=N(u),m=ke(p);if((d===null||m===null)&&([u,p]=[l,a],d=N(u),m=ke(p)),d!==null&&m!==null&&isFinite(d)&&Number.isInteger(d)&&d>=0&&d<=1e3&&isFinite(m[0])&&isFinite(m[1])&&m[0]>0&&m[0]<=100&&m[1]<=100)return i=Pe(e.options.invisiblePlus,e.serialize(u),e.serialize(p)),e.level+=1,i}if(e.options.prettify&&A(n)===2){let[a,l]=je(r),[u,p]=je(c(n,2));if(l<0&&p>0)return i=e.wrap(u,L)+"-"+e.wrap(a,L),e.level+=1,i}i=e.serialize(r);let s=A(n)+1,o=h(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[l,u]=je(r),p=e.wrap(l,L);u>0?p.startsWith("+")||p.startsWith("-")?i+=p:i+="+"+p:p.startsWith("+")?i+="-"+p.slice(1):p.startsWith("-")?i+="+"+p.slice(1):i+="-"+p}else{let l=e.wrap(r,L);l[0]==="-"||l[0]==="+"?i+=l:i+="+"+l}}return e.level+=1,i}function Ti(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[l,u]=Fr(n);u.length>0&&(u.length===1&&u[0]===1?l.length===0?t="1":l.length===1?t=e.serialize(l[0]):t=Ti(e,["Multiply",...l]):t=e.serialize(["Divide",l.length===1?l[0]:["Multiply",...l],u.length===1?u[0]:["Multiply",...u]]))}if(t)return e.level+=1,t;let i=!1,r=null,s=A(n)+1,o=h(n);e.options.prettify===!0&&o.length===2&&ae(o[1])&&!ae(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let l=1;l<s;l++){if(r=o[l-1],r===null)continue;let u;if(ae(r)){u=e.serialize(r),u==="-1"&&!t?(t="",i=!i):(u[0]==="-"&&(u=u.slice(1),i=!i),t?t=Pe(e.options.multiply,t,u):t=u),a=!0;continue}if(f(r)==="Power"){let p=ke(c(r,2));if(p!=null){let[d,m]=p;if(d===1&&m!==null){t+=Ue(e,e.rootStyle(r,e.level),c(r,1),m),a=!1;continue}}}if(f(r)==="Power"&&!isNaN(N(c(r,1))??NaN)){u=e.serialize(r),t?t=Pe(e.options.multiply,t,u):t=u,a=!0;continue}if(f(r)==="Negate"&&(r=c(r,1),i=!i),u=e.wrap(r,C),!t)t=u;else{let p=f(r);a&&(p==="Divide"||p==="Rational")?t=Pe(e.options.multiply,t,u):e.options.invisibleMultiply?t=Pe(e.options.invisibleMultiply,t,u):t=x([t,u])}a=!1}return e.level+=1,i?"-"+t:t}function pn(e){let n=e.parseGroup(),t=null;if(n===null?(n=e.parseToken(),t=e.parseToken()):t=e.parseGroup(),n=M(n),t=M(t),f(n)==="PartialDerivative"&&(f(t)==="PartialDerivative"||f(t)==="Multiply"&&f(c(t,1))==="PartialDerivative")){let s=c(n,3)??null,o=c(n,1);o==null&&(o=M(e.parseExpression()));let a=[];if(f(t)==="Multiply"){for(let l of h(t))if(f(l)==="PartialDerivative"){let u=c(l,2);u&&a.push(u)}}else{let l=c(t,2);l&&a.push(l)}return a.length>1&&(a=["List",...a]),["PartialDerivative",o,...a,s===null?1:s]}let i=y(n);if(i==="d"||i==="d_upright"||i==="differentialD"){let s=[],o=a=>{if(!a)return;let l=y(a);if(l&&l!=="d"&&l!=="d_upright"&&l!=="differentialD"){s.push(a);return}let u=f(a);if(u==="Sequence"||u==="Multiply"||u==="InvisibleOperator")for(let p of h(a))o(p)};if(o(t),s.length===0){let a=y(t);a&&a.length>1&&a[0]==="d"&&s.push(a.slice(1))}if(s.length>0)return["D",M(e.parseExpression()),...s]}return["Divide",n,t]}function di(e,n){if(n===null)return"";let t=M(c(n,1)),i=M(c(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let l=e.wrapShort(t),u=e.wrapShort(i);return r==="inline-solidus"?`${l}/${u}`:`{}^{${l}}\\!\\!/\\!{}_{${u}}`}else{if(r==="reciprocal")return N(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return N(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(t),a=e.serialize(i);return`${s}{${o}}{${a}}`}function Xn(e,n){if(!n)return"";let t=f(n),i=M(c(n,1));if(t==="Sqrt")return Ue(e,e.rootStyle(n,e.level-1),i,2);let r=M(c(n,2));if(t==="Root")return Ue(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let o=N(r)??1;if(o===-1)return e.serialize(["Divide","1",i]);if(o<0)return e.serialize(["Divide","1",["Power",i,-o]]);if(f(r)==="Divide"||f(r)==="Rational"){let a=N(c(r,1)),l=N(c(r,2));if(a===1){let u=e.rootStyle(n,e.level);return Ue(e,u,i,c(r,2))}if(a===-1)return l===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,c(r,2)??ye]]);if(l===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(c(r,1))}}`}else if(f(r)==="Power"&&N(c(r,2))===-1){let a=e.rootStyle(n,e.level);return Ue(e,a,i,c(r,1))}}let s=o=>o.startsWith("-")?e.wrapString(o,"normal"):o;if(f(i)==="Power"){let o=c(i,1),a=c(i,2),l=s(e.wrapShort(o)),u=e.wrapShort(a);return`
6
+ ${l}^{${ue("^",u,e.serialize(r))}}`}return ue("^",s(e.wrapShort(i)),e.serialize(r))}function Ge(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,s=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=N(i),e.skipSpace();let l=e.index,u=e.parseNumber();u!==null&&(e.match('"')||e.match("\\doubleprime"))?s=N(u):e.index=l}else return e.index=t,["Degrees",n];let o=N(n);if(o!==null&&r!==null){let l=o+r/60;return s!==null&&(l+=s/3600),["Degrees",l]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),s!==null&&a.push(["Quantity",s,"arcsec"]),["Add",...a]}var Qn=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ge(e,n),serialize:(e,n)=>{let t=e.options,i=c(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=N(i);if(r!==null){let s=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(s=un(s,t.angleNormalization)),t.dmsFormat?cn(s):`${s}\xB0`}}return x([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ge(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>Ge(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>Ge(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>Ge(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=N(c(n,1)),i=N(c(n,2)),r=N(c(n,3));if(t!==null){let o=i??0,a=r??0,l=`${t}\xB0`;return(o!==0||a!==0)&&(l+=`${o}'`),a!==0&&(l+=`${a}"`),l}let s=[];for(let o of[1,2,3]){let a=c(n,o);a!==null&&s.push(e.serialize(a))}return`\\operatorname{DMS}(${s.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{latexTrigger:"\\exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>P(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>P(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:L,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:L});if(i===null)return null;if(f(i)==="Negate"){let r=c(i,1);if(ae(r))return ge("Add",n,$r(r))}return ge("Add",n,i)},serialize:zr},{kind:"prefix",latexTrigger:["+"],precedence:L,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>P(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>P(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:L-1,serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=N(c(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":x([e.serialize(c(n,2)),"\\imaginaryI"]);return N(c(n,1))===0?r:i!==null&&i<0?x([t,r]):x([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:q,parse:pn,serialize:di},{latexTrigger:"\\dfrac",precedence:q,parse:pn},{latexTrigger:"\\tfrac",precedence:q,parse:pn},{latexTrigger:"\\cfrac",precedence:q,parse:pn},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:q,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:q,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:q,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:q,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=c(n,1);return y(t)||N(t)!==null?x(["\\exponentialE^{",e.serialize(t),"}"]):x(["\\exp",e.wrap(M(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:An},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:An},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>P(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>P(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{latexTrigger:["\\zeta"],kind:"function",parse:"Zeta"},{latexTrigger:["\\Beta"],kind:"function",parse:"Beta"},{name:"LambertW",latexTrigger:["\\operatorname{W}"],kind:"function",serialize:(e,n)=>"\\operatorname{W}"+e.wrapArguments(n)},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{J}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselJ",i]):"\\operatorname{J}"+e.wrapArguments(n)}},{name:"BesselY",latexTrigger:["\\operatorname{Y}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{Y}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselY",i]):"\\operatorname{Y}"+e.wrapArguments(n)}},{name:"BesselI",latexTrigger:["\\operatorname{I}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{I}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselI",i]):"\\operatorname{I}"+e.wrapArguments(n)}},{name:"BesselK",latexTrigger:["\\operatorname{K}"],kind:"function",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"AiryAi",latexTrigger:["\\operatorname{Ai}"],kind:"function",serialize:(e,n)=>"\\operatorname{Ai}"+e.wrapArguments(n)},{name:"AiryBi",latexTrigger:["\\operatorname{Bi}"],kind:"function",serialize:(e,n)=>"\\operatorname{Bi}"+e.wrapArguments(n)},{name:"GCD",latexTrigger:["\\gcd"],kind:"function"},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>yi("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>yi("Log",e),serialize:(e,n)=>{let[t,i]=h(n);return i?x(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",latexTrigger:["\\lcm"],kind:"function"},{symbolTrigger:"lcm",kind:"function",parse:"LCM"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max",arguments:"implicit"},{symbolTrigger:"min",kind:"function",parse:"Min",arguments:"implicit"},{name:"Max",latexTrigger:"\\max",kind:"function",arguments:"implicit"},{name:"Min",latexTrigger:"\\min",kind:"function",arguments:"implicit"},{name:"Supremum",latexTrigger:"\\sup",kind:"function",arguments:"implicit"},{name:"Infimum",latexTrigger:"\\inf",kind:"function",arguments:"implicit"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(f(n)!=="To")return null;let t=e.parseArguments("implicit");return t?["Limit",["Function",t[0],c(n,1)],c(n,2)]:null},serialize:(e,n)=>{let t=c(n,1),i=c(t,2),r=c(n,2);return x(["\\lim_{",e.serialize(i),"\\to",e.serialize(r),"}",e.serialize(c(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:Q},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:C,serialize:Ti},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:C,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:C+2});return i===null?null:ge("Multiply",n,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:C,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:C+2});return i===null?["Multiply",n,ye]:ge("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:q,serialize:(e,n)=>{if(A(n)!==2)return"";let t=e.serialize(c(n,1)),i=e.serialize(c(n,2));return x([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:q,parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:S,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",M(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=e.serialize(c(n,2));if(c(n,3)===null)return x([t,"\\equiv",i]);let r=e.serialize(c(n,3));return x([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:Fe+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:Fe+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>P(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>P(n)?null:["Norm",n],serialize:(e,n)=>{let t=c(n,1);if(f(t)==="Matrix"){let i=c(t,1),r=c(t,2),s=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(s)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:Q,serialize:(e,n)=>{let t=c(n,1);if(t===null)return"\\pm";if(A(n)===1)return x(["\\pm",e.serialize(t)]);let i=c(n,2);return x([e.serialize(t),"\\pm",e.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:Q,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,M(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:Q,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["PlusMinus",n,M(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:Q,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",M(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Xn},{latexTrigger:"\\prod",precedence:C,name:"Product",parse:mi("Product","Multiply",C),serialize:xi("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:Fe,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:Fe});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:q,serialize:(e,n)=>n&&A(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):di(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=c(n,1);if(!t)return"";let i=c(n,2);return y(i)==="Add"?`\\sum ${e.serialize(t)}`:y(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(c(n,2))}\\right)`}},{name:"Root",serialize:Xn},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(c(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:L,name:"Sum",parse:mi("Sum","Add",C),serialize:xi("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:Cr,serialize:Xn},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:L+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:L+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(c(n,1),L+2),i=e.wrap(c(n,2),L+3);return x([t,"-",i])}}];function qr(e,n){if(e!==null){if(y(e))return{index:y(e)??"Nothing",upper:n};if(f(e)==="GreaterEqual"){let t=y(c(e,1))??"Nothing",i=c(e,2)??1;return{index:t,lower:i,upper:n}}if(f(e)==="Equal"){let t=y(c(e,1))??"Nothing",i=c(e,2);if(f(i)==="Range"){let s=c(i,1)??1,o=c(i,2)??void 0;return{index:t,lower:s,upper:o}}return{index:t,lower:i??1,upper:n}}if(f(e)==="Element")return{index:y(c(e,1))??"Nothing",element:e}}}function Vr(e){let n=f(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function gi(e){if(e===null)return[];let n=le(e);if(n)return[...n];if(f(e)==="Tuple"){let t=h(e);return t?[...t]:[e]}return[e]}function Gr(e,n){P(e)&&(e=null),P(n)&&(n=null);let t=gi(e),i=gi(n),r=[],s=0;for(;s<t.length;){let o=t[s],a=qr(o,i[s]);if(a){if(a.element&&s+1<t.length){let l=t[s+1];if(Vr(l)&&f(l)!=="Element"&&f(l)!=="Equal"){let u=a.element;if(Array.isArray(u)&&u.length>=3){let p=[u[0],...u.slice(1),l];a.element=p}s++}}r.push(a)}s++}return r}function mi(e,n,t){return i=>{i.skipSpace(),i.pushSymbolTable();let r=null,s=null;for(;!(s&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?s=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!s){let u=i.parseExpression({minPrec:t});return i.popSymbolTable(),u?["Reduce",u,n]:null}let o=Gr(s,r),a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[e];let l=[];for(let u of o){if(u.element){l.push(u.element);continue}let p=u.lower,d=u.upper,m=u.index??"Nothing";d!=null?l.push(["Tuple",m,p??1,d]):p!=null?l.push(["Tuple",m,p]):l.push(["Tuple",m])}return[e,a,...l]}}var Ur=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function hi(e){return e==null||y(e)==="Nothing"?null:e}function jr(e){let n=[],t=h(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=f(i);if(r&&Ur.has(r)){n.push(i);continue}break}return n}function Yr(e,n){if(f(n)==="Element"){let u=e.serialize(c(n,1)),p=e.serialize(c(n,2));return{sub:`${u}\\in ${p}`}}let t=c(n,1);t!==null&&f(t)==="Hold"&&(t=c(t,1));let i=hi(c(n,2)),r=hi(c(n,3)),s={},o=t?y(t):null,a=o!==null&&o!=="Nothing",l=a&&t?e.serialize(t):void 0;return a&&i!==null&&l?s.sub=`${l}=${e.serialize(i)}`:a&&l?s.sub=l:i!==null&&(s.sub=e.serialize(i)),r!==null&&(s.sup=e.serialize(r)),s}function xi(e){return(n,t)=>{let i=c(t,1);if(!i)return e;let r=jr(t),s=e;if(r.length>0){let o=[],a=[];for(let l of r){let u=Yr(n,l);u.sub&&o.push(u.sub),u.sup&&a.push(u.sup)}o.length>0&&(s=ue("_",s,o.join(", "))),a.length>0&&(s=ue("^",s,a.join(", ")))}return x([s,n.serialize(i)])}}function yi(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=n.parseArguments("implicit");return i===null&&t===null?[e]:i===null?[e,t]:t===null?[e,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function je(e){let n=1,t=e;do{e=t;let i=f(e);if(i==="Negate")n*=-1,t=c(e,1);else if(i==="Multiply"){let[r,s]=je(c(e,1));s<0&&(n*=-1,r===1?t=["Multiply",...h(e).slice(1)]:t=["Multiply",r,...h(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,s]=je(c(e,1));s<0&&(n*=-1,t=[i,r,c(e,2)])}else{let r=N(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var Kn=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function E(e){return(n,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcsinh":"Arsinh","\\arcosh":"Arcosh","\\arccosh":"Arcosh","\\artanh":"Artanh","\\arctanh":"Artanh","\\arsech":"Arsech","\\arcsech":"Arsech","\\arcsch":"Arcsch","\\arccsch":"Arcsch","\\arcoth":"Arcoth","\\arccoth":"Arcoth","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Cosh","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[e??""]??e??"";if(n.atTerminator(t))return r;let s=r;do{let u=n.parsePostfixOperator(s,t);if(u===null)break;s=u}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:C,condition:u=>i[u.peek]||(t?.condition?.(u)??!1)}),l=a===null?s:typeof s=="string"?[s,...a]:["Apply",s,...a];return o===null?l:["Power",l,o]}}var et=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:E("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:E("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:E("Arctan")},{latexTrigger:["\\arctg"],parse:E("Arctan")},{symbolTrigger:"arctg",parse:E("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:E("Arccot")},{latexTrigger:["\\arcctg"],parse:E("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:E("Arcoth")},{symbolTrigger:"arccoth",parse:E("Arcoth")},{latexTrigger:["\\arcoth"],parse:E("Arcoth")},{latexTrigger:["\\arccoth"],parse:E("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:E("Arcsec")},{latexTrigger:["\\arcsec"],parse:E("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:E("Arccsc")},{latexTrigger:["\\arccsc"],parse:E("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:E("Arsinh")},{symbolTrigger:"arcsinh",parse:E("Arsinh")},{latexTrigger:["\\arsinh"],parse:E("Arsinh")},{latexTrigger:["\\arcsinh"],parse:E("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:E("Arcosh")},{symbolTrigger:"arccosh",parse:E("Arcosh")},{latexTrigger:"\\arcosh",parse:E("Arcosh")},{latexTrigger:"\\arccosh",parse:E("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:E("Artanh")},{symbolTrigger:"arctanh",parse:E("Artanh")},{latexTrigger:"\\artanh",parse:E("Artanh")},{latexTrigger:["\\arctanh"],parse:E("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:E("Arsech")},{symbolTrigger:"arcsech",parse:E("Arsech")},{latexTrigger:["\\arsech"],parse:E("Arsech")},{latexTrigger:["\\arcsech"],parse:E("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:E("Arcsch")},{symbolTrigger:"arccsch",parse:E("Arcsch")},{latexTrigger:["\\arcsch"],parse:E("Arcsch")},{latexTrigger:["\\arccsch"],parse:E("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:E("Cosec")},{latexTrigger:["\\cosec"],parse:E("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:E("Cosh")},{latexTrigger:["\\ch"],parse:E("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:E("Cot")},{latexTrigger:["\\cotg"],parse:E("Cot")},{latexTrigger:["\\ctg"],parse:E("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:E("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:E("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:E("Coth")},{latexTrigger:["\\cth"],parse:E("Coth")},{symbolTrigger:"cth",parse:E("Coth")},{latexTrigger:["\\coth"],parse:E("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:E("Sec")},{name:"Sech",symbolTrigger:"sech",parse:E("Sech")},{latexTrigger:["\\sech"],parse:E("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:E("Sinh")},{latexTrigger:["\\sh"],parse:E("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:E("Tan")},{latexTrigger:["\\tg"],parse:E("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:E("Tanh")},{latexTrigger:["\\th"],parse:E("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:E("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:E("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"}];function Ae(e){return n=>{let t=!1,i=[],r=[];for(;!t;){n.skipVisualSpace(),n.match("\\limits"),n.skipSpace();let a=null,l=null;for(;!(l!==null&&a!==null)&&(n.peek==="_"||n.peek==="^");)n.match("_")?l=n.parseGroup()??n.parseToken():n.match("^")&&(a=n.parseGroup()??n.parseToken()),n.skipSpace();P(l)&&(l=null),P(a)&&(a=null),i.push(l??"Nothing"),r.push(a??"Nothing"),n.skipVisualSpace(),t=!n.match(e)}let[s,o]=Wr(n);if(s&&o.length===0){if(f(s)==="Add"||f(s)==="Subtract"){let a=[],l=[];for(let u of h(s))if(o)l.push(u);else{let p;[p,o]=ee(u),a.push(p??u)}if(o!==null&&l.length>0)return["Add",bi(e,["Add",...a],{indexes:o,subs:i,sups:r})??"Nothing",...l]}else if(f(s)==="Divide"){let a;[a,o]=ee(c(s,1)),a!==null&&o!==null&&(s=["Divide",a,c(s,2)])}}return bi(e,s,{indexes:o,subs:i,sups:r})}}function bi(e,n,t){if(!n)return null;if(t.sups.length===0&&t.subs.length===0)return[e,n,...t.indexes];let i=t.indexes.length===0?f(n)==="Function"?h(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let o=0;o<r;o++)i.push("Nothing");else if(i.length!==r)for(let o=i.length;o<r;o++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let o=t.subs.length;o<r;o++)t.subs.push("Nothing");if(t.sups.length!==r)for(let o=t.sups.length;o<r;o++)t.sups.push("Nothing");let s=i.map((o,a)=>{let l=t.sups[a],u=t.subs[a];return u==="Nothing"&&l==="Nothing"?o:["Tuple",o,u,l]});return[e,n,...s]}function Wr(e){let n=!1,t=e.parseExpression({minPrec:266,condition:()=>{let i=e.index;return n=ki(e),e.index=i,n}});return t!==null&&!n?ee(t):[t,Hr(e)]}function Hr(e){let n=[];for(;ki(e);){e.skipVisualSpace();let t=y(e.parseSymbol());if(t===null)return n;n.push(t)}return n}function ee(e){let n=f(e),t=c(e,1);if(!t)return[e,[]];if(n==="Sequence"&&A(e)===1)return ee(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=h(e);if(i){let[r,s]=Zr(i);return r.length>0?[[n,...r],s]:[null,s]}}else if(n==="Delimiter"){let[i,r]=ee(t);if(r)return i?[["Delimiter",["Sequence",i],...h(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=h(e);if(i.length>0){let[r,s]=ee(i[i.length-1]);if(s.length>0){if(r)return[["Add",...i.slice(0,-1),r],s];if(i.length>2)return[["Add",...i.slice(0,-1)],s];if(i.length>2)return[i[0],s]}}}else if(n==="Negate"){let[i,r]=ee(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=ee(t);if(r.length>0)return[["Divide",i??1,c(e,2)],r]}else{let i=h(e);if(i.length===1){let[r,s]=ee(i[0]);if(s.length>0)return[[f(e),r],s]}}return[e,[]]}function Ei(e){return(n,t)=>{if(!c(t,1))return e;let i=c(t,1),r=[];f(i)==="BuiltInFunction"?(r=["x"],i=[c(i,1),"x"]):f(i)==="Function"?(r=h(i).slice(1),i=c(i,1)):y(i)?r=[]:r=[];let s=h(t).slice(1),o=[],a=s.map((u,p)=>{if(y(u)==="Nothing")return o.push(y(r[p])??"Nothing"),"";if(y(u))return o.push(y(u)??"Nothing"),"";let d=f(u);if(d==="Tuple"||d==="Pair"||d==="Limits"||d==="Range"){if(A(u)===3){let m=c(u,1);o.push(y(m)??"Nothing");let T=c(u,2),b=c(u,3);return y(T)==="Nothing"&&(T=null),y(b)==="Nothing"&&(b=null),T!==null&&b!==null?`_{${n.serialize(T)}}^{${n.serialize(b)}}`:T!==null?`_{${n.serialize(T)}}`:b!==null?`^{${n.serialize(b)}}`:""}return`_{${n.serialize(u)}}`}if(A(u)===2){if(y(c(u,1))){o.push(y(c(u,1))??"Nothing");let b=c(u,2);return y(b)==="Nothing"?"":`_{${n.serialize(b)}}`}o.push(y(r[p])??"Nothing");let m=c(u,1),T=c(u,2);if(y(m)==="Nothing"&&(m=null),y(T)==="Nothing"&&(T=null),m!==null&&T!==null)return`_{${n.serialize(m)}}^{${n.serialize(T)}}`;if(m!==null)return`_{${n.serialize(m)}}`;if(T!==null)return`^{${n.serialize(T)}}`}else o.push(y(r[p])??"Nothing")}),l=o.filter(u=>y(u)!=="Nothing").map(u=>`\\mathrm{d}${n.serialize(y(u)??"x")}`);return l.length>0&&(l=["\\,",...l]),a.length===0?`${e}\\,${n.serialize(i)}\\!${l.join(" ")}`:a.reverse().map(u=>`${e}${u}`).join("")+"\\!"+n.serialize(i)+l.join(" ")}}var nt=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Ae("Integrate"),serialize:Ei("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Ae("Integrate")},{kind:"expression",latexTrigger:["\\iiint"],parse:Ae("Integrate")},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Ae("CircularIntegrate"),serialize:Ei("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Ae("CircularIntegrate")},{kind:"expression",latexTrigger:["\\oiiint"],parse:Ae("CircularIntegrate")}];function ki(e){let n=e.index;for(;e.match("\\cdot")||e.skipVisualSpace(););return e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"])||e.match("d")||e.match("\\differentialD")?!0:(e.index=n,!1)}function Zr(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=Xr(n),!i)break;t.push(i)}return[n,t]}function Xr(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=y(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var it=[{name:"Matrix",serialize:(e,n)=>{let t=h(c(n,1));return tt(e,t,I(c(n,2)),I(c(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=h(n);return tt(e,t.map(i=>["List",i]),I(c(n,2)),I(c(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=te(e,!1),[t,i]=ne(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=te(e),[t,i]=ne(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Inverse",serialize:(e,n)=>e.serialize(c(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>_e(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>_e(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>_e(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>_e(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>_e(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=c(n,1);if(f(t)==="Matrix"){let i=h(c(t,1));return tt(e,i,"||",I(c(t,2)))}return _e(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=e.serialize(c(n,2));return`${t} \\cdot ${i}`}}];function ne(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function te(e,n=!0){let t=e.parseStringGroup(n)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function _e(e,n,t){if(h(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=c(n,1),s=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${s}`:`${t}\\left(${s}\\right)`}function tt(e,n,t,i){t??="()";let[r,s]=["",""];typeof t=="string"&&t.length===2&&([r,s]=t);let o="";if(i)for(let p of i)p==="<"?o+="l":p===">"?o+="r":p==="="?o+="c":p==="|"?o+="|":p===":"&&(o+=":");let a=[];for(let p of n??[]){let d=[];for(let m of h(p))d.push(e.serialize(m));a.push(d.join(" & "))}let l=a.join(`\\\\
7
+ `),u=o.length>0?`[${o}]`:"";return r==="("&&s===")"?x(["\\begin{pmatrix}",u,l,"\\end{pmatrix}"]):r==="["&&s==="]"?x(["\\begin{bmatrix}",u,l,"\\end{bmatrix}"]):r==="{"&&s==="}"?x(["\\begin{Bmatrix}",u,l,"\\end{Bmatrix}"]):r==="|"&&s==="|"?x(["\\begin{vmatrix}",u,l,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?x(["\\begin{Vmatrix}",u,l,"\\end{Vmatrix}"]):r==="{"&&s==="."?x(["\\begin{dcases}",u,l,"\\end{dcases}"]):r==="."&&s==="}"?x(["\\begin{rcases}",u,l,"\\end{rcases}"]):o||r!=="."||s!=="."?x(["\\left",De[r]??r,"\\begin{array}",`{${o}}`,l,"\\end{array}","\\right",De[s]??s]):x(["\\begin{matrix}",l,"\\end{matrix}"])}var rt=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return!t||!y(t)?null:["Mean",t]}}];var fn={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},Ni=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),dn={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function Qr(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(fn[n]!==void 0&&Ni.has(t)){let i=dn[t];if(i)return{prefixScale:fn[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(fn[n]!==void 0&&Ni.has(t)){let i=dn[t];if(i)return{prefixScale:fn[n],baseEntry:i}}}return null}function Kr(e){let n=dn[e];if(n)return n;let t=Qr(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function st(e){let n=Kr(e);return n?n.dimension:null}var ja=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[dn[e].dimension.join(","),e]));function es(e){let n=e.indexOf("^");if(n===-1)return e;let t=e.slice(0,n),i=e.slice(n+1),r=parseInt(i,10);return isNaN(r)?e:["Power",t,r]}function Ye(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,s=!0;for(let o=0;o<e.length-1;o++)if(e[o]==="("?r++:e[o]===")"&&r--,r===0&&o<e.length-1){s=!1;break}if(s)return Ye(e.slice(1,-1))}let n=-1,t=[],i=0;for(let r=0;r<e.length;r++)e[r]==="("?i++:e[r]===")"?i--:i===0&&(e[r]==="/"&&n===-1?n=r:e[r]==="*"&&t.push(r));if(n!==-1){let r=e.slice(0,n).trim(),s=e.slice(n+1).trim(),o=Ye(r),a=Ye(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(e.slice(s,a).trim()),s=a+1;r.push(e.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>Ye(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return e[0]==="("?null:es(e)}function Si(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?Ye(e):e}function Di(e){if(!e.match("<{>"))return null;let n="",t=0;for(;!e.atEnd;){let i=e.peek;if(i==="<}>"&&t===0)return e.nextToken(),n;if(i==="<}>"){t--,e.nextToken();continue}if(i==="<{>"){t++,e.nextToken();continue}if(i==="<space>"){e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var ns=new Set(["d"]);function Pi(e){if(!e||e.length===0||ns.has(e))return null;if(st(e)!==null)return e;if(/[/*^]/.test(e))try{let n=Si(e);if(n!==null&&ot(n))return n}catch{return null}return null}function ot(e){if(typeof e=="string")return st(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>ot(t)):n==="Power"?ot(e[1]):!1}var vi=e=>{let n=e.index,t=Di(e);if(t===null)return e.index=n,null;let i=Pi(t);return i===null?(e.index=n,null):["__unit__",i]};function he(e){let n=y(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=f(e);if(!t)return"";if(t==="Divide"){let i=c(e,1),r=c(e,2);return`${he(i)}/${he(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(he(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=c(e,1),r=c(e,2),s=typeof r=="number"?String(r):y(r)??String(r);return`${he(i)}^{${s}}`}if(t==="Square"){let i=c(e,1);return`${he(i)}^{2}`}return""}function Ii(e){let n=e.parseGroup();if(n===null)return null;let t=Ai(e);return t===null?null:["Quantity",n,t]}function Mi(e){return Ai(e)}function Ai(e){let n=e.index,t=Di(e);if(t===null)return e.index=n,null;let i=Pi(t);return i===null?(e.index=n,null):i}var at=[{latexTrigger:"\\mathrm",kind:"expression",parse:vi},{latexTrigger:"\\text",kind:"expression",parse:vi},{latexTrigger:"\\qty",parse:Ii},{latexTrigger:"\\SI",parse:Ii},{latexTrigger:"\\unit",parse:Mi},{latexTrigger:"\\si",parse:Mi},{name:"Quantity",serialize:(e,n)=>{let t=c(n,1),i=c(n,2);if(t===null||i===null)return"";let r=y(i),s=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",o=e.options;if(s&&(o.dmsFormat||o.angleNormalization&&o.angleNormalization!=="none")){let u=N(t);if(u===null){let d=e.serialize(t),m=he(i);return x([d,"\\,",`\\mathrm{${m}}`])}let p=u;return r==="rad"?p=p*180/Math.PI:r==="arcmin"?p=p/60:r==="arcsec"&&(p=p/3600),o.angleNormalization&&o.angleNormalization!=="none"&&(p=un(p,o.angleNormalization)),o.dmsFormat?cn(p):`${p}\xB0`}let a=e.serialize(t),l=he(i);return x([a,"\\,",`\\mathrm{${l}}`])}}];function z(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}var lt=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>y(n)===null?null:["Increment",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>y(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return y(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return y(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,t="Nothing",i="Nothing";for(;!n;)e.skipSpace(),e.match("_")?i=e.parseGroup()??e.parseToken():e.match("^")?t=e.parseGroup()??e.parseToken():n=!0;let r=le(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let s=e.parseGroup()??"Nothing";if(!P(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,i,t]},serialize:(e,n)=>{let t="\\partial",i=c(n,1),r=c(n,2),s=c(n,3);return r!==null&&r!=="Nothing"&&(f(r)==="List"?t+="_{"+e.serialize(["Sequence",...h(r)])+"}":t+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(t+="^{"+e.serialize(s)+"}"),i!==null&&i!=="Nothing"&&(t+=e.serialize(i)),t},precedence:740},{name:"OverBar",latexTrigger:["\\overline"],parse:z("OverBar")},{name:"UnderBar",latexTrigger:["\\underline"],parse:z("UnderBar")},{name:"OverVector",latexTrigger:["\\vec"],parse:z("OverVector")},{name:"OverTilde",latexTrigger:["\\tilde"],parse:z("OverTilde")},{name:"OverHat",latexTrigger:["\\hat"],parse:z("OverHat")},{name:"OverRightArrow",latexTrigger:["\\overrightarrow"],parse:z("OverRightArrow")},{name:"OverLeftArrow",latexTrigger:["\\overleftarrow"],parse:z("OverLeftArrow")},{name:"OverRightDoubleArrow",latexTrigger:["\\Overrightarrow"],parse:z("OverRightDoubleArrow")},{name:"OverLeftHarpoon",latexTrigger:["\\overleftharpoon"],parse:z("OverLeftHarpoon")},{name:"OverRightHarpoon",latexTrigger:["\\overrightharpoon"],parse:z("OverRightHarpoon")},{name:"OverLeftRightArrow",latexTrigger:["\\overleftrightarrow"],parse:z("OverLeftRightArrow")},{name:"OverBrace",latexTrigger:["\\overbrace"],parse:z("OverBrace")},{name:"OverLineSegment",latexTrigger:["\\overlinesegment"],parse:z("OverLineSegment")},{name:"OverGroup",latexTrigger:["\\overgroup"],parse:z("OverGroup")},{latexTrigger:["\\textcolor"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\colorbox"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{backgroundColor:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\boxed"],parse:e=>{let n=e.parseGroup();return n!==null?["Annotated",n,{dict:{border:!0}}]:"Nothing"}},{latexTrigger:["\\displaystyle"],parse:()=>"Nothing"},{latexTrigger:["\\textstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\scriptscriptstyle"],parse:()=>"Nothing"},{latexTrigger:["\\color"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\tiny"],parse:()=>"Nothing"},{latexTrigger:["\\scriptsize"],parse:()=>"Nothing"},{latexTrigger:["\\footnotesize"],parse:()=>"Nothing"},{latexTrigger:["\\small"],parse:()=>"Nothing"},{latexTrigger:["\\normalsize"],parse:()=>"Nothing"},{latexTrigger:["\\large"],parse:()=>"Nothing"},{latexTrigger:["\\Large"],parse:()=>"Nothing"},{latexTrigger:["\\LARGE"],parse:()=>"Nothing"},{latexTrigger:["\\huge"],parse:()=>"Nothing"},{latexTrigger:["\\Huge"],parse:()=>"Nothing"},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(c(n,1)),i=Dn(c(n,2));if(i==null)return t;i.dict.mathStyle==="normal"?t=x(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"&&(t=x(["{\\textstyle",t,"}"]));let r=i.dict.size;return r!==null&&r>=1&&r<=10&&(t=x(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),i.dict.fontFamily==="monospace"?t=x(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=x(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=x(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=x(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=x(["\\textup{",t,"}"])),i.dict.color&&(t=x(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=x(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=x(["\\boxed{",t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\phantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:e=>(e.parseOptionalGroup(),e.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:e=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:e=>"Nothing"},{name:"HorizontalSpacing",serialize:(e,n)=>{if(c(n,2)!==null)return e.serialize(c(n,1));let t=N(c(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}}];var _i=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var ut=[...Yn,...Wn,...Hn,...Vn,...Zn,...me,...Qn,...Kn,...et,...nt,...it,...rt,...at,...lt,..._i];var ct;function Li(e){if(!ct){let t=`^[${["Zyyy","Zinh","Arab","Armn","Beng","Bopo","Cyrl","Deva","Ethi","Geor","Grek","Gujr","Guru","Hang","Hani","Hebr","Hira","Kana","Knda","Khmr","Laoo","Latn","Mlym","Mymr","Orya","Sinh","Taml","Telu","Thaa","Thai","Tibt"].map(i=>`\\p{Script=${i}}`).join("")}]*$`;ct=new RegExp(t,"u")}return ct.test(e)}function ie(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||xe.test(e)?!0:Li(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var ts="\\u{FE0F}",is="\\u{20E3}",rs="\\u{200D}",ss="\\p{RI}\\p{RI}",os="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",wi=`(?:\\p{EMod}|${ts}${is}?|${os})`,as="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",Ji=`(?:${as}${wi}*|\\p{Emoji}${wi}+|${ss})`,Ri=`(?:${Ji})(${rs}${Ji})*`,ls=new RegExp(`(?:${Ri})+`,"u"),xe=new RegExp(`^(?:${Ri})+$`,"u");function pt(e){return typeof e!="string"?"not-a-string":e===""?"empty-string":e.normalize()!==e?"expected-nfc":/[\u200E\u200F\u2066-\u2069\u202A-\u202E]/.test(e)?"unexpected-bidi-marker":xe.test(e)?"valid":/\p{XIDC}/u.test(e)&&ls.test(e)?"unexpected-mixed-emoji":Li(e)?ie(e)?"valid":ie(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}var us={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]};function cs(e){return"kind"in e&&e.kind==="matchfix"}var Bi={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function we(e,n,t){let i=e.get(n);i?i.unshift(t):e.set(n,[t])}function Oi(e,n,t){let i=ps(n,t);if(i===null)return;let r="kind"in n?n.kind:"expression",s=i.latexTrigger;typeof s=="string"&&(e.lookahead=Math.max(e.lookahead,tn(s)));let o=F(s??"");if(o.length===2&&/[_^]/.test(o[0])&&o[1]!=="<{>"&&r!=="function"&&r!=="environment"&&r!=="matchfix"){let a=n.parse;!a&&n.name&&(r==="postfix"||r==="prefix"?a=(l,u)=>[n.name,u]:a=n.name),Oi(e,{...n,kind:r,name:void 0,serialize:void 0,parse:a,latexTrigger:[o[0],"<{>",o[1],"<}>"]},t)}if(e.defs.push(i),cs(i)){let a=i.openTrigger,l=[];if(typeof a=="string"){let u=us[a];u?l.push(...u):l.push(a),a==="||"&&l.push("|")}else Array.isArray(a)&&a.length>0&&l.push(a[0]);for(let u of l){let p=e.matchfixByOpen.get(u);p?p.unshift(i):e.matchfixByOpen.set(u,[i])}}if(i.latexTrigger&&i.latexTrigger!==""){let a=i.latexTrigger;switch(i.kind){case"infix":we(e.infixByTrigger,a,i);break;case"prefix":we(e.prefixByTrigger,a,i);break;case"postfix":we(e.postfixByTrigger,a,i);break;case"function":we(e.functionByTrigger,a,i);break;case"symbol":we(e.symbolByTrigger,a,i);break;case"expression":we(e.expressionByTrigger,a,i);break;case"environment":case"matchfix":break}}i.name!==void 0&&(e.ids.has(i.name)&&t({severity:"warning",message:["invalid-dictionary-entry",i.name,"Duplicate definition. The name (MathJSON symbol) must be unique, but triggers can be shared by multiple definitions."]}),e.ids.set(i.name,i))}function Fi(e,n){let t={lookahead:1,ids:new Map,defs:[],matchfixByOpen:new Map,infixByTrigger:new Map,prefixByTrigger:new Map,postfixByTrigger:new Map,functionByTrigger:new Map,symbolByTrigger:new Map,expressionByTrigger:new Map};for(let r of e)Oi(t,r,n);let i={"(":[")","\\rparen"],"\\lparen":[")","\\rparen"],"[":["]","\\rbrack","\\]"],"\\lbrack":["]","\\rbrack","\\]"],"\\[":["]","\\rbrack","\\]"],"{":["}","\\rbrace"],"\\lbrace":["}","\\rbrace"],"\\{":["}","\\rbrace"],"<":[">","\\rangle"],"\\langle":[">","\\rangle"],"|":["|","\\|","\\rvert","\\lvert"],"\\|":["|","\\|","\\rvert","\\lvert"],"\\lvert":["|","\\|","\\rvert","\\lvert"],"||":["||","\\Vert","\\lVert","\\rVert"],"\\Vert":["||","\\Vert","\\lVert","\\rVert"],"\\lVert":["||","\\Vert","\\lVert","\\rVert"]};for(let[r,s]of t.matchfixByOpen.entries())t.matchfixByOpen.set(r,s.sort((o,a)=>{let l=J=>typeof J=="string"?J:J[0]||"",u=J=>typeof J=="string"?J:J[0]||"",p=l(o.openTrigger),d=u(o.closeTrigger),m=i[p]?.includes(d)??!1,T=l(a.openTrigger),b=u(a.closeTrigger),v=i[T]?.includes(b)??!1;return m&&!v?-1:!m&&v?1:0}));return t}function ps(e,n){if(!gs(e,n))return null;let t={kind:"kind"in e?e.kind:"expression"},i=null;"latexTrigger"in e&&(typeof e.latexTrigger=="string"?i=F(e.latexTrigger):i=e.latexTrigger);let r=null;"symbolTrigger"in e&&(r=e.symbolTrigger),i!==null&&(t.latexTrigger=U(i)),r!==null&&(t.symbolTrigger=r),e.name&&(t.name=e.name,t.serialize=fs(e,i,r)),t.kind==="matchfix"&&Ce(e)&&(t.openTrigger=e.openTrigger,t.closeTrigger=e.closeTrigger),t.kind==="symbol"&&Lt(e)&&(t.precedence=e.precedence??1e4),t.kind==="expression"&&Jt(e)&&(t.precedence=e.precedence??1e4),(t.kind==="prefix"||t.kind==="postfix")&&(en(e)||wn(e))&&(i&&(i[0]==="^"||i[0]==="_")?(t.precedence=720,e.precedence):t.precedence=e.precedence??1e4),t.kind==="infix"&&_n(e)&&(!i||i[0]!=="^"&&i[0]!=="_"||!e.associativity||e.associativity,t.associativity=e.associativity??"none",t.precedence=e.precedence??1e4);let s=ds(e,i,r);return s&&(t.parse=s),t.kind==="function"&&"arguments"in e&&(t.arguments=e.arguments),t}function fs(e,n,t){if(typeof e.serialize=="function")return e.serialize;let i=e.kind??"expression";if(i==="environment"){let a=e.symbolTrigger??e.name??"unknown";return(l,u)=>x([`\\begin{${a}}`,l.serialize(c(u,1)),`\\end{${a}}`])}if(Ce(e)){let a=typeof e.openTrigger=="string"?Bi[e.openTrigger]:U(e.openTrigger),l=typeof e.closeTrigger=="string"?Bi[e.closeTrigger]:U(e.closeTrigger);return(u,p)=>x([a,u.serialize(c(p,1)),l])}let r=e.serialize;if(r===void 0&&n&&(r=U(n)),r){let a=e.precedence??1e4;return i==="postfix"?(l,u)=>x([l.wrap(c(u,1),a),r]):i==="prefix"?(l,u)=>x([r,l.wrap(c(u,1),a)]):i==="infix"?(l,u)=>{let p=A(u);if(p===0)return"";let d=e.precedence??1e4;return x(h(u).flatMap((m,T)=>{let b=l.wrap(m,d+1);return T<p-1?[b,r]:[b]}))}:(l,u)=>f(u)?x([r,l.wrapArguments(u)]):r}let s=t??e.name??"unknown",o=e.precedence??1e4;return i==="postfix"?(a,l)=>x([a.wrap(c(l,1),o),a.serializeSymbol(s)]):i==="prefix"?(a,l)=>x([a.serializeSymbol(s),a.wrap(c(l,1),o)]):i==="infix"?(a,l)=>x([a.wrap(c(l,1),o+1),a.serializeSymbol(s),a.wrap(c(l,2),o+1)]):(a,l)=>f(l)?x([a.serializeSymbol(s),a.wrapArguments(l)]):a.serializeSymbol(s)}function ds(e,n,t){if("parse"in e&&typeof e.parse=="function")return e.parse;let i=("kind"in e?e.kind:"expression")??"expression";if(i==="environment"){let r=e.parse??e.name??t;if(r)return(s,o)=>{let a=s.parseTabular();return a===null?null:[r,["List",a.map(l=>["List",...l])]]}}if(i==="function"){let r=e.parse??e.name??t,s=("arguments"in e?e.arguments:void 0)??"enclosure";if(r)return(o,a)=>{let l=o.parseArguments(s,a);return l===null?r:[r,...l]}}if(i==="symbol"){let r=e.parse??e.name??t;if(r)return(s,o)=>r}if(i==="prefix"){let r=e.parse??e.name??t;if(r){let s=e.precedence??1e4;return(o,a)=>{let l=o.parseExpression({...a??[],minPrec:s});return l===null?null:[r,l]}}}if(i==="postfix"){let r=e.parse??e.name;if(r)return(s,o)=>o===null?null:[r,o]}if(i==="infix"){if(/[_^]/.test(n?.[0]??"")){let s=e.name??e.parse;return(o,a)=>[s,M(c(a,1)),M(c(a,2))]}let r=e.parse??e.name??t;if(r){let s=e.precedence??1e4,o=e.associativity??"none";return o==="none"?(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s}));return[r,l,p]}:o==="left"?(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s+1}));return typeof r!="string"?[r,l,p]:[r,l,p]}:o==="right"?(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s}));return typeof r!="string"?[r,l,p]:[r,l,p]}:(a,l,u)=>{if(l===null)return null;let p=M(a.parseExpression({...u,minPrec:s}));return typeof r!="string"?[r,l,p]:ge(r,l,p)}}}if(i==="matchfix"){let r=e.parse??e.name;if(r)return(s,o)=>P(o)?null:[r,o]}if(i==="expression"){let r=e.parse??e.name??t;if(r)return()=>r}if("parse"in e){let r=e.parse;return()=>r}}function gs(e,n){let t=e.name??e.latexTrigger??e.symbolTrigger??e.openTrigger;if(!t)try{t=JSON.stringify(e)}catch{t="???"}if(Array.isArray(t)&&(t=U(t)),"kind"in e&&!["expression","symbol","function","infix","postfix","prefix","matchfix","environment"].includes(e.kind)&&n({severity:"warning",message:["invalid-dictionary-entry",t,"The 'kind' property must be one of 'expression', 'symbol', 'function', 'infix', 'postfix', 'prefix', 'matchfix', 'environment'"]}),e.serialize!==void 0&&!e.name)return n({severity:"warning",message:["invalid-dictionary-entry",t,"A 'name' property must be provided if a 'serialize' handler is provided"]}),!1;if("symbolTrigger"in e&&(!("kind"in e)||e.kind!=="environment")&&(typeof e.symbolTrigger!="string"||!ie(e.symbolTrigger))&&n({severity:"warning",message:["invalid-dictionary-entry",t,"The 'symbolTrigger' property must be a valid symbol"]}),"name"in e&&(typeof e.name!="string"?e.name!==void 0&&n({severity:"warning",message:["invalid-dictionary-entry",t,"The 'name' property must be a string"]}):ie(e.name)||n({severity:"warning",message:["invalid-dictionary-entry",e.name,"The 'name' property must be a valid symbol"]})),Ce(e)){if("latexTrigger"in e||"symbolTrigger"in en)return n({severity:"warning",message:["invalid-dictionary-entry",t,"'matchfix' operators use a 'openTrigger' and 'closeTrigger' instead of a 'latexTrigger' or 'symbolTrigger'. "]}),!1;if(!e.openTrigger||!e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openTrigger` and a `closeTrigger` for matchfix operator"]}),!1;if(typeof e.openTrigger!=typeof e.closeTrigger)return n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openTrigger` and `closeTrigger` to both be strings or array of LatexToken"]}),!1}if(_n(e)||wn(e)||en(e)){if(Array.isArray(e.latexTrigger)&&(e.latexTrigger[0]==="_"||e.latexTrigger[0]==="^")||typeof e.latexTrigger=="string"&&(e.latexTrigger.startsWith("^")||e.latexTrigger.startsWith("_"))){if(e.precedence!==void 0||e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(e.precedence===void 0)return n({severity:"warning",message:["invalid-dictionary-entry",t,`Expected a "precedence" for ${e.kind} operator`]}),!1}else if(e.associativity!==void 0)return n({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "associativity" operator']}),!1;return!Ce(e)&&!Rt(e)&&!e.latexTrigger&&!e.symbolTrigger&&!e.name?(n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'name', a 'latexTrigger' or a 'symbolTrigger'"]}),!1):e.parse===void 0&&e.name===void 0?(n({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'parse' or 'name'"]}),!1):!0}var Ci={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\text":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},ms={"\\mathring":"_ring","\\hat":"_hat","\\tilde":"_tilde","\\vec":"_vec","\\overline":"_bar","\\underline":"_underbar","\\dot":"_dot","\\ddot":"_ddot","\\dddot":"_dddot","\\ddddot":"_ddddot","\\acute":"_acute","\\grave":"_grave","\\breve":"_breve","\\check":"_check"};function $i(e,n){if(e.atEnd)return null;let t=e.peek,i={"\\_":"_","\\#":"hash"}[t];if(!i&&!n.toplevel&&(i={"+":"plus","-":"minus","\\plusmn":"pm","\\pm":"pm","\\ast":"ast","\\dag":"dag","\\ddag":"ddag","\\bot":"bottom","\\top":"top","\\bullet":"bullet","\\cir":"circle","\\diamond":"diamond","\\times":"times","\\square":"square","\\star":"star"}[t]),i)return e.nextToken(),i;let r=j.findIndex(a=>a[1]===t);if(r>=0)return e.nextToken(),j[r][0];let s=e.parseChar();if(s!==null)return/^\p{XIDC}+$/u.test(s)?s:[...s].length===1?"____"+s.codePointAt(0).toString(16).toUpperCase().padStart(6,"0"):s;let o=e.peek;return o&&/^[\p{XIDC}\p{M}]/u.test(o)?e.nextToken():null}function We(e){let n=ft(e),t=ms[e.peek]??null;if(t){if(e.nextToken(),!e.match("<{>"))return null;let s=We(e);if(s===null||!e.match("<}>"))return null;n=`${s}${t}`}if(n===null){for(n="";!e.atEnd;){let s=e.peek;if(s==="<}>"||s==="_"||s==="^")break;if(s==="<space>"){e.nextToken();continue}if(xe.test(n+s)){n+=e.nextToken();continue}let o=$i(e,{toplevel:!1});if(o===null)return null;n+=o}for(;!e.atEnd&&/\d/.test(e.peek);)n+=e.nextToken()}for(;!e.atEnd;)if(e.match("\\degree"))n+="_deg";else if(e.matchAll(["^","\\circ"]))n+="_deg";else if(e.matchAll(["^","\\prime"]))n+="_prime";else if(e.matchAll(["^","<{>","\\prime","<}>"]))n+="_prime";else if(e.matchAll(["^","<{>","\\doubleprime","<}>"]))n+="_dprime";else if(e.matchAll(["^","<{>","\\prime","\\prime","<}>"]))n+="_dprime";else break;let i=[],r=[];for(;!e.atEnd;)if(e.match("_")){let s=e.match("<{>"),o=We(e);if(s&&!e.match("<}>")||o===null)return null;r.push(o)}else if(e.match("^")){let s=e.match("<{>"),o=We(e);if(s&&!e.match("<}>")||o===null)return null;i.push(o)}else break;return i.length>0&&(n+="__"+i.join("")),r.length>0&&(n+="_"+r.join("")),n}function ft(e){let n=Ci[e.peek]??null;if(n===null)return null;let t=e.index;if(e.nextToken(),e.match("<{>")){let i="",r={0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine"}[e.peek]??"";return r&&(i=r,e.nextToken()),i+=We(e),i===null||!e.match("<}>")?(e.index=t,null):n==="_upright"&&i.length>1?i:i+n}return e.index=t,null}function dt(e){let n=e.index,t=ft(e);if(t!==null)return ie(t)?null:e.error(["invalid-symbol",{str:pt(t)}],n);if(e.index=n,(Ci[e.peek]??null)===null)return null;if(e.nextToken(),!e.match("<{>"))return e.index=n,null;let r=e.index,s=0;for(;!e.atEnd&&!(s===0&&e.peek==="<}>");)e.peek==="<{>"&&(s+=1),e.peek==="<}>"&&(s-=1),e.nextToken();let o=e.latex(r,e.index);return ie(o)?(e.index=n,null):(e.match("<}>"),e.error(["invalid-symbol",{str:pt(o)}],n))}function He(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek)){let i=e.nextToken(),s=e.getSymbolType(i).matches("indexed_collection"),o=e.hasSubscriptEvaluate(i);for(;!e.atEnd&&!s&&!o&&e.peek==="_";){let l=e.index;if(e.nextToken(),e.match("<{>")){let p=e.peek;if(p==="("||p==="\\lparen"||p==="\\left"){e.index=l;break}let d=We(e),m=d!==null&&/plus|minus|times|ast/.test(d);if(d===null||d.includes(",")||m||e.peek!=="<}>"){e.index=l;break}e.match("<}>"),i+="_"+d}else{let p=e.peek;if(e.options.strict===!1&&/^[0-9]$/.test(p)){let d="";for(;!e.atEnd&&/^[0-9]$/.test(e.peek);)d+=e.peek,e.nextToken();i+="_"+d}else if(/^[a-zA-Z0-9]$/.test(p)||/^\p{XIDS}$/u.test(p))e.nextToken(),i+="_"+p;else{e.index=l;break}}}return i}let n=ft(e);if(!n){for(n="";!e.atEnd&&xe.test(n+e.peek);)n+=e.nextToken();n||(n=null)}let t=e.index;return n??=$i(e,{toplevel:!0}),n&&(n=n.normalize(),ie(n))?n:(e.index=t,null)}var zi=new Map;function D(e){if(e<=100){let n=zi.get(e);return n===void 0&&(n=10n**BigInt(e),zi.set(e,n)),n}return 10n**BigInt(e)}function Vi(e,n,t){return e*n/t}function Gi(e,n,t){return e*t/n}function Xe(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t,i=Number(e),r=Number(n);if(Number.isFinite(i)&&Number.isFinite(r)&&i>0&&r>0){let p=Math.sqrt(i/r)*r;Number.isFinite(p)&&p>0?(t=BigInt(Math.floor(p)),t===0n&&(t=1n)):t=qi(e,n)}else t=qi(e,n);let s=e*n,o;do o=t,t=(t+s/t)/2n;while(Y(t-o)>1n);let a=(t+s/t)/2n,l=Y(t*t-s);return Y(a*a-s)<l?a:t}function qi(e,n){let i=O(e),r=Math.max(0,i-15),s=Number(r>0?e/D(r):e),o=O(n),a=Math.max(0,o-15),l=Number(a>0?n/D(a):n),u=r+a,p=Math.floor(u/2),d=Math.sqrt(s*l);u%2!==0&&(d*=3.1622776601683795);let m=BigInt(Math.round(d))*D(p);return m>0n?m:1n}function Y(e){return e<0n?-e:e}function O(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n)return Math.floor(Math.log10(Number(e)))+1;let n=0,t=e,i=1;for(;t>>BigInt(i)>0n;)i*=2;for(let s=i>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(n+=s,t>>=BigInt(s));n+=1;let r=Math.ceil(n*.30102999566398);return e<D(r-1)?r-1:e>=D(r)?r+1:r}function ht(e,n){if(e===0n)return n;let t=0,i=e,r=n/2n;for(;Y(i)>r;)i=i/2n,t++;let s=n,o=i;s+=o;for(let a=2;o=o*i/(BigInt(a)*n),Y(o)!==0n;a++)s+=o;for(let a=0;a<t;a++)s=s*s/n;return s}function Ui(e,n){if(e===n)return 0n;let t=Number(e),i=Number(n),r,s=e,o=0;if(Number.isFinite(t)&&Number.isFinite(i)&&t>0&&i>0){let l=t/i;if(Number.isFinite(l)&&l>0){let u=Math.log(l);Number.isFinite(u)?r=BigInt(Math.round(u*i)):r=gt(e,n)}else r=gt(e,n)}else{s=e;let l=2n*n,u=n/2n;for(;s>l||s<u;)s=Xe(s,n),o++;r=gt(s,n)}let a=0n;for(let l=0;l<100;l++){let u=ht(r,n);if(u===0n){r=r/2n;continue}let p=r+s*n/u-n,d=Y(p-r);if(d<=1n||d<100000n&&a>0n&&a<100000n&&d*4n>=a)break;a=d,r=p}for(let l=0;l<o;l++)r=2n*r;return r}function gt(e,n){let t=O(e),i=O(n);return BigInt(t-i)*2302585n*n/1000000n}var mn="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",gn=null;function mt(e){if(gn!==null&&gn.scale===e)return gn.value;let t=O(e)-1+10,i=mn.slice(0,t+1),r=BigInt(i),s=i.length-1,o=r*e/D(s);return gn={scale:e,value:o},o}function hn(e,n){if(e===0n)return[0n,n];let t=mt(n),i=2n*t,r=t/2n,s,o=Y(e);if(o>n*(1n<<30n)){let B=O(o)-O(n)+20,oe=n*D(B),de=e*D(B),Le=2n*mt(oe),kn=de%Le;kn<0n&&(kn+=Le),s=kn/D(B)}else s=e%i;s<0n&&(s+=i);let a=1n,l=1n;s>3n*r?(s=i-s,a=-1n):s>t?(s=s-t,a=-1n,l=-1n):s>r&&(s=t-s,l=-1n);let u=O(n)-1,p=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(u)))),d=0,m=n>>BigInt(p);for(;s>m;)s=s/2n,d++;let T=s,b=n,v=s,J=n,G=s*s,X=n*n;for(let B=2;;B+=2){if(J=J*G/(BigInt(B)*BigInt(B-1)*X),J===0n){v=v*G/(BigInt(B+1)*BigInt(B)*X),v!==0n&&(B%4===2?(b-=J,T-=v):(b+=J,T+=v));break}if(v=v*G/(BigInt(B+1)*BigInt(B)*X),B%4===2?(b-=J,T-=v):(b+=J,T+=v),v===0n)break}for(let B=0;B<d;B++){let oe=2n*T*b/n,de=2n*b*b/n-n;T=oe,b=de}return[a*T,l*b]}function Ze(e,n){if(e===0n)return 0n;if(e<0n)return-Ze(-e,n);let i=mt(n)/2n;if(e>n){let d=n*n/e;return i-Ze(d,n)}let r=4n*n/10n,s=0,o=e;for(;o>r;){let d=o*o,m=(n*n+d)/n,T=Xe(m,n);o=o*n/(n+T),s++}let a=o,l=o,u=o*o,p=n*n;for(let d=3;l=l*u/p,l!==0n;d+=2)d%4===3?a-=l/BigInt(d):a+=l/BigInt(d);for(let d=0;d<s;d++)a=2n*a;return a}var xt=NaN,g=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static get PI(){e._piFullPrecision===null&&(e._piFullPrecision=new e(mn[0]+"."+mn.slice(1)));let n=e.precision;return(e._piCache===null||e._piCachePrecision!==n)&&(e._piCache=e._piFullPrecision.toPrecision(n+4),e._piCachePrecision=n),e._piCache}significand;exponent;constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=xn(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=hs(n);return}[this.significand,this.exponent]=Wi(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return xt;let T=this.exponent;if(Number.isNaN(T))return xt;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(T))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&T>=0&&T<=15){let b=this.significand*D(T),v=BigInt(n);return b<v?-1:b>v?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(t!==t||i!==i)return xt;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===i)return r<s?-1:r>s?1:0;let o=O(r),a=O(s),l=o+t,u=a+i;if(l!==u){let T=r>0n?1:-1;return l>u?T:-T}let p=r,d=s,m=Math.abs(t-i);if(m>1e3){let T=o,b=a,v=Math.max(T,b)+1;T<v&&(p=p*D(v-T)),b<v&&(d=d*D(v-b))}else t<i?d=d*D(m):p=p*D(m);return p<d?-1:p>d?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*D(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return _(this.significand+n.significand,t);let o=t-i;return o>0?_(this.significand*D(o)+n.significand,i):_(this.significand+n.significand*D(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return _(this.significand-n.significand,t);let o=t-i;return o>0?_(this.significand*D(o)-n.significand,i):_(this.significand-n.significand*D(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return _(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,s=n.significand>0n?1n:-1n;return r*s>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?_(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?_(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(_(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(_(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=_(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/D(-n);return _(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(s===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return _(0n,0);let l=e.precision,u=10,p=r<0n?-r:r,d=s<0n?-s:s,m=O(p),T=O(d),b=l+u+Math.max(0,T-m),v=D(b),J=r*v/s,G=t-i-b;return _(J,G).toPrecision(l)}if(t!==t||i!==i)return e.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(i);if(o&&a)return e.NAN;if(o){let l=r>0n?1n:-1n,u=s>0n?1n:s<0n?-1n:1n;return l*u>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return _(0n,0)}inv(){return _(1n,0).div(this)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;return Number.isFinite(t)&&Number.isFinite(i)?n.significand===0n?e.NAN:this.significand===0n?_(0n,0):this.sub(this.div(n).trunc().mul(n)).toPrecision(e.precision):t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let t=n.toBigInt();if(t===0n)return _(1n,0);if(!this.isFinite())return t>0n?this.significand<0n&&t%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:_(0n,0);if(this.isZero())return t>0n?_(0n,0):e.POSITIVE_INFINITY;if(t<0n)return this.pow(n.neg()).inv();let i=this.significand<0n?-this.significand:this.significand,r=O(i)+this.exponent,s=Number(t)*r;if(s>9e15)return this.significand<0n&&t%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(s<-9e15)return _(0n,0);let o=e.precision,a=_(1n,0),l=this,u=t;for(;u>0n;)u&1n&&(a=a.mul(l).toPrecision(o)),u>>=1n,u>0n&&(l=l.mul(l).toPrecision(o));return a}return this.isFinite()?this.isZero()?n.significand>0n?e.ZERO:e.POSITIVE_INFINITY:this.significand<0n?e.NAN:n.mul(this.ln()).exp():this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,s=n?"-":"";if(r>20||r<-6){let l=i===1?t:t[0]+"."+t.slice(1),u=r>=0?"+":"";return`${s}${l}e${u}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let l=t.slice(0,i-o),u=t.slice(i-o);return`${s}${l}.${u}`}let a=o-i;return`${s}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*D(s);else{let d=D(-s),m=r/d,T=r%d,b=d/2n;T>b?o=m+1n:T<b||d%2n!==0n||m%2n===0n?o=m:o=m+1n}let a=i&&o!==0n?"-":"",l=o.toString();if(t===0)return`${a}${l}`;if(l.length<=t){let d=l.padStart(t,"0");return`${a}0.${d}`}let u=l.slice(0,l.length-t),p=l.slice(l.length-t);return`${a}${u}.${p}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,i=O(t);if(i<=n)return this;let r=i-n,s=D(r),o=t/s,a=t%s,l=s/2n;(a>l||a===l&&o%2n!==0n)&&(o+=1n);let u=this.significand<0n?-o:o;return _(u,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*D(this.exponent);let n=D(-this.exponent);return this.significand/n}};function _(e,n){let[t,i]=xn(e,n),r=Object.create(g.prototype);return r.significand=t,r.exponent=i,r}var ji=1000000000n,Yi=1000n;function xn(e,n){if(e===0n)return[0n,0];for(;e%ji===0n;)e/=ji,n+=9;for(;e%Yi===0n;)e/=Yi,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function hs(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?xn(BigInt(e),0):Wi(e.toString())}function Wi(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let s=n.indexOf("."),o,a;s===-1?(o=n,a=""):(o=n.slice(0,s),a=n.slice(s+1)),o=o.replace(/^0+/,"")||"0";let l=o+a;if(l.length===0||!/^\d+$/.test(l))return[0n,NaN];let u=BigInt(l);r&&(u=-u);let p=-a.length;return xn(u,p+t)}function re(e,n){let t=D(n),i=e.exponent+n;return i>=0?[e.significand*D(i),t]:[e.significand/D(-i),t]}function se(e,n,t){if(e===0n)return g.ZERO;let i=e<0n,r=i?-e:e,s=O(r);if(s>t){let u=s-t,p=D(u),d=p/2n,m=r%p;r=r/p,m>=d&&(r+=1n);let T=O(n)-1,b=u-T,v=i?-r:r;return _(v,b)}let a=-(O(n)-1),l=i?-r:r;return _(l,a)}g.prototype.sqrt=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NAN;if(this.significand<0n)return g.NAN;let e=g.precision,n=e+10,[t,i]=re(this,n),r=Xe(t,i);return se(r,i,e)};g.prototype.cbrt=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=g.precision,n=e+10,[t,i]=re(this,n),r=t*i*i,s,o=this.toNumber(),a=Number(i);if(Number.isFinite(o)&&o>0&&Number.isFinite(a)){let u=Math.cbrt(o);Number.isFinite(u)&&u>0?(s=BigInt(Math.floor(u*a)),s===0n&&(s=1n)):s=Hi(t,i)}else s=Hi(t,i);let l;do{l=s;let u=s*s;if(u===0n){s=1n;break}s=(2n*s+r/u)/3n}while(Y(s-l)>1n);{let u=(2n*s+r/(s*s))/3n,p=Y(s*s*s-r);Y(u*u*u-r)<p&&(s=u)}return se(s,i,e)};g.sqrt=function(e){return e.sqrt()};g.cbrt=function(e){return e.cbrt()};g.prototype.exp=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.ZERO;if(this.isZero())return g.ONE;let e=g.precision,n=e+15,[t,i]=re(this,n),r=ht(t,i);return se(r,i,e)};g.prototype.ln=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NAN;if(this.isZero())return g.NEGATIVE_INFINITY;if(this.significand<0n)return g.NAN;if(this.eq(1))return g.ZERO;let e=g.precision,n=e+15,[t,i]=re(this,n),r=Ui(t,i);return se(r,i,e)};g.prototype.log=function(e){let n=e instanceof g?e:new g(e);return this.ln().div(n.ln())};g.exp=function(e){return e.exp()};g.ln=function(e){return e.ln()};g.log10=function(e){return e.log(10)};g.prototype.sin=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ZERO;let e=g.precision,n=e+15,[t,i]=re(this,n),[r]=hn(t,i);return se(r,i,e)};g.prototype.cos=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ONE;let e=g.precision,n=e+15,[t,i]=re(this,n),[,r]=hn(t,i);return se(r,i,e)};g.prototype.tan=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ZERO;let e=g.precision,n=e+15,[t,i]=re(this,n),[r,s]=hn(t,i);if(s===0n)return r>0n?g.POSITIVE_INFINITY:g.NEGATIVE_INFINITY;let o=r*i/s;return se(o,i,e)};g.prototype.atan=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite()){let s=g.PI.div(g.TWO);return this.significand>0n?s:s.neg()}let e=g.precision,n=e+15,[t,i]=re(this,n),r=Ze(t,i);return se(r,i,e)};g.prototype.asin=function(){if(this.isNaN())return g.NAN;if(!this.isFinite())return g.NAN;if(this.isZero())return g.ZERO;let e=this.abs(),n=g.ONE;if(e.gt(n))return g.NAN;if(e.eq(n)){let d=g.PI.div(g.TWO);return this.significand>0n?d:d.neg()}let t=g.precision,i=t+20,[r,s]=re(this,i),o=Vi(r,r,s),a=s-o,l=Xe(a,s),u=Gi(r,l,s),p=Ze(u,s);return se(p,s,t)};g.prototype.acos=function(){return this.isNaN()?g.NAN:this.isFinite()?this.abs().gt(g.ONE)?g.NAN:this.eq(1)?g.ZERO:this.eq(-1)?g.PI:g.PI.div(g.TWO).sub(this.asin()):g.NAN};g.sin=function(e){return e.sin()};g.cos=function(e){return e.cos()};g.tan=function(e){return e.tan()};g.asin=function(e){return e.asin()};g.acos=function(e){return e.acos()};g.atan=function(e){return e.atan()};g.atan2=function(e,n){let t=e instanceof g?e:new g(e);if(t.isNaN()||n.isNaN())return g.NAN;let i=g.PI,r=i.div(g.TWO);if(n.isZero())return t.isZero()?g.ZERO:t.significand>0n?r:r.neg();let s=t.div(n);return n.significand>0n?s.atan():t.significand>=0n?s.atan().add(i):s.atan().sub(i)};g.prototype.sinh=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.POSITIVE_INFINITY:g.NEGATIVE_INFINITY;let e=this.exp(),n=e.inv();return e.sub(n).div(g.TWO)};g.prototype.cosh=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ONE;if(!this.isFinite())return g.POSITIVE_INFINITY;let e=this.exp(),n=e.inv();return e.add(n).div(g.TWO)};g.prototype.tanh=function(){if(this.isNaN())return g.NAN;if(this.isZero())return g.ZERO;if(!this.isFinite())return this.significand>0n?g.ONE:g.NEGATIVE_ONE;let e=this.mul(g.TWO).exp();return e.sub(g.ONE).div(e.add(g.ONE))};g.sinh=function(e){return e.sinh()};g.cosh=function(e){return e.cosh()};g.tanh=function(e){return e.tanh()};function Hi(e,n){let i=O(e),r=Math.max(0,i-15),s=Number(r>0?e/D(r):e),o=O(n),a=Math.max(0,o-15),l=Number(a>0?n/D(a):n),u=r+2*a,p=Math.floor(u/3),d=u%3,m=Math.cbrt(s*l*l);d===1&&(m*=2.154434690031882),d===2&&(m*=4.641588833612779);let T=BigInt(Math.round(m))*D(p);return T>0n?T:1n}var Ul=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var xs=53,Xl=Math.floor(Math.log10(Math.pow(2,xs)));var Zi=1e6;function ys(e){let n=!!e.matchAny(["-","\u2212"]);for(;e.matchAny(["+","\uFE62"])||e.skipSpace();)e.matchAny(["-","\u2212"])&&(n=!n);return n?"-":"+"}function fe(e,n,t="whole"){let i=[],r=!1;for(;!r;){for(;/^[0-9]$/.test(e.peek);)i.push(e.nextToken()),e.skipVisualSpace();r=!0;let s=t==="whole"?n.wholeDigitGroupSeparatorTokens:n.fractionalDigitGroupSeparatorTokens;if(t!=="none"&&s.length>0){let o=e.index;e.skipVisualSpace(),e.matchAll(s)&&(e.skipVisualSpace(),/^[0-9]$/.test(e.peek)?r=!1:e.index=o)}}return i.join("")}function yt(e,n,t){let i=e.index,r=ys(e),s=fe(e,n,t);return s?r==="-"?"-"+s:s:(e.index=i,"")}function Ts(e,n){let t=e.index;if(e.skipVisualSpace(),e.matchAny(["e","E"])){let i=yt(e,n,"none");if(i)return i}if(e.index=t,e.match("\\times")&&(e.skipVisualSpace(),e.matchAll(["1","0"])&&(e.skipVisualSpace(),e.match("^")))){if(e.skipVisualSpace(),/^[0-9]$/.test(e.peek))return e.nextToken();if(e.match("<{>")){e.skipVisualSpace();let i=yt(e,n,"whole");if(e.skipVisualSpace(),i&&e.match("<}>"))return i}}if(e.index=t,e.skipVisualSpace(),e.match("\\%"))return"-2";if(e.index=t,e.matchAll(n.exponentProductTokens)&&(e.skipVisualSpace(),e.matchAll(n.beginExponentMarkerTokens))){e.skipVisualSpace();let i=yt(e,n,"none");if(e.skipVisualSpace(),i&&e.matchAll(n.endExponentMarkerTokens))return i}return e.index=t,""}function Xi(e){let n=e.index;if(e.matchAll(["\\overset","<{>"])&&(e.match(".")||e.match("\\cdots"))&&e.matchAll(["<}>","<{>"])){let t=e.nextToken();if(t&&/^\d$/.test(t)&&e.match("<}>"))return t}return e.index=n,null}function bs(e){let n=e.peek;return n==="\\overline"||n==="\\overset"||n==="\\wideparent"||n==="\\overarc"||n==="("||n==="\\left"}function bt(e,n){let t=e.index,i=e.options.repeatingDecimal,r="";if((i==="auto"||i==="parentheses")&&e.match("("))return r=fe(e,n,"fraction"),r&&e.match(")")?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="parentheses")&&e.matchAll(["\\left","("]))return r=fe(e,n,"fraction"),r&&e.matchAll(["\\right",")"])?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="vinculum")&&e.matchAll(["\\overline","<{>"]))return r=fe(e,n,"fraction"),r&&e.match("<}>")?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="arc")&&(e.matchAll(["\\wideparen","<{>"])||e.matchAll(["\\overarc","<{>"])))return r=fe(e,n,"fraction"),r&&e.match("<}>")?`(${r})`:(e.index=t,"");if(e.index=t,i==="auto"||i==="dots"){let s=Xi(e);if(s!==null){if(r=fe(e,n,"fraction"),!r)return`(${s})`;let o=Xi(e);if(o!==null)return`(${s}${r}${o})`}}return e.index=t,""}function Tt(e){return e===0?{num:"0"}:Number.isInteger(e)&&Math.abs(e)<Zi?e:{num:e.toString()}}function Qi(e,n){let t=e.options.parseNumbers;if(t===!1||t==="never")return null;let i=e.index;e.skipVisualSpace();let r=1;for(;e.peek==="-"||e.peek==="+";)e.match("-")?r=-r:e.match("+"),e.skipVisualSpace();let s="",o="",a=!1;if(e.match(".")||e.matchAll(n.decimalSeparatorTokens)){let m=e.peek;(/^[\d]$/.test(m)||bs(e))&&(a=!0,s="0")}else s=fe(e,n,"whole");if(!s)return e.index=i,null;let l=e.index,u=!1;(a||e.match(".")||e.matchAll(n.decimalSeparatorTokens))&&(o=fe(e,n,"fraction"),u=!0);let p=!1;if(u){let m=bt(e,n);m&&(o+=m,p=!0),e.match("\\ldots")||e.matchAll(n.truncationMarkerTokens)}if(u&&!o)return e.index=l,s.length<10?Tt(r*parseInt(s,10)):{num:r<0?"-"+s:s};let d=Ts(e,n);if(!u&&!d&&s.length<10)return Tt(r*parseInt(s,10));if(!p&&e.options.parseNumbers==="rational"){let m=s.length>16||s.length===16&&s>"9007199254740991";if(!o){if(m){let oe=r<0?"-"+s:s;return d?["Multiply",{num:oe},["Power",10,d]]:{num:oe}}let B=parseInt(s,10);return d?["Multiply",r*B,["Power",10,d]]:Tt(r*B)}let T=o.length;if(s.length+T>15){let B=BigInt(s),oe=BigInt(o),de=BigInt(10)**BigInt(T),En=B*de+oe,Le=r<0?-En:En;return d?["Multiply",["Rational",{num:Le.toString()},Number(de)],["Power",10,d]]:["Rational",{num:Le.toString()},Number(de)]}let v=parseInt(s,10),J=parseInt(o,10),G=v*10**T+J,X=10**T;return d?["Multiply",["Rational",r*G,X],["Power",10,d]]:["Rational",r*G,X]}return{num:(r<0?"-":"")+s+(u?"."+o:"")+(d?"e"+d:"")}}var Ki={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"]},yn={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg","\\mathopen":"\\mathclose","\\mleft":"\\mright"},Et={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\lbrace":"\\rbrace","\\lparen":"\\rparen","\\langle":"\\rangle","\\lfloor":"\\rfloor","\\lceil":"\\rceil","\\vert":"\\vert","\\lvert":"\\rvert","\\Vert":"\\Vert","\\lVert":"\\rVert","\\lbrack":"\\rbrack","\\ulcorner":"\\urcorner","\\llcorner":"\\lrcorner","\\lgroup":"\\rgroup","\\lmoustache":"\\rmoustache","\\llbracket":"\\rrbracket"};function Es(e){if(e===null)return"null";if(e===void 0)return"undefined";if(e instanceof V)return"BoxedType";if(typeof e=="string")return`"${e}"`;if(typeof e=="object"){let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}return`${typeof e} (${String(e)})`}var kt=class e{options;_index=0;symbolTable={parent:null,ids:{}};pushSymbolTable(){this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(n,t){if(typeof t=="string"&&(t=new V(t)),n in this.symbolTable.ids&&this.symbolTable.ids[n].is(t.type))throw new Error(`Symbol ${n} already declared as a different type`);this.symbolTable.ids[n]=t}_quantifierScopeDepth=0;get inQuantifierScope(){return this._quantifierScopeDepth>0}enterQuantifierScope(){this._quantifierScopeDepth++}exitQuantifierScope(){this._quantifierScopeDepth>0&&this._quantifierScopeDepth--}get index(){return this._index}set index(n){this._index=n,this._lastPeek="",this._peekCounter=0}_tokens;_positiveInfinityTokens;_negativeInfinityTokens;_notANumberTokens;_decimalSeparatorTokens;_wholeDigitGroupSeparatorTokens;_fractionalDigitGroupSeparatorTokens;_exponentProductTokens;_beginExponentMarkerTokens;_endExponentMarkerTokens;_truncationMarkerTokens;_imaginaryUnitTokens;_dictionary;_boundaries=[];_lastPeek="";_peekCounter=0;constructor(n,t,i){this._tokens=n,this.options=i,this._dictionary=t,this._positiveInfinityTokens=F(this.options.positiveInfinity),this._negativeInfinityTokens=F(this.options.negativeInfinity),this._notANumberTokens=F(this.options.notANumber),this._decimalSeparatorTokens=F(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=F(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=F(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=F(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=F(this.options.exponentProduct),this._beginExponentMarkerTokens=F(this.options.beginExponentMarker),this._endExponentMarkerTokens=F(this.options.endExponentMarker),this._truncationMarkerTokens=F(this.options.truncationMarker),this._imaginaryUnitTokens=F(this.options.imaginaryUnit),this._numberFormatTokens={decimalSeparatorTokens:this._decimalSeparatorTokens,wholeDigitGroupSeparatorTokens:this._wholeDigitGroupSeparatorTokens,fractionalDigitGroupSeparatorTokens:this._fractionalDigitGroupSeparatorTokens,exponentProductTokens:this._exponentProductTokens,beginExponentMarkerTokens:this._beginExponentMarkerTokens,endExponentMarkerTokens:this._endExponentMarkerTokens,truncationMarkerTokens:this._truncationMarkerTokens}}_numberFormatTokens;getSymbolType(n){let t=this.symbolTable;for(;t;){if(n in t.ids)return t.ids[n];t=t.parent}if(this.options.getSymbolType){let i=this.options.getSymbolType(n);if(i instanceof V)return i;if(typeof i=="string")try{return new V(i)}catch(r){let s=r instanceof Error?r.message:String(r);throw new Error(`ce.parse(): getSymbolType("${n}") returned invalid type string "${i}". ${s}`)}throw new Error(`ce.parse(): getSymbolType("${n}") must return a BoxedType or a type string, received ${Es(i)}`)}return V.unknown}hasSubscriptEvaluate(n){return this.options.hasSubscriptEvaluate?this.options.hasSubscriptEvaluate(n):!1}get peek(){let n=this._tokens[this.index];if(n===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024){let t=`Infinite loop detected while parsing "${this.latex(0)}" at "${this._lastPeek}" (index ${this.index})`;throw console.error(t),new Error(t)}return this._lastPeek=n,n}nextToken(){return this._tokens[this.index++]}get atEnd(){return this.index>=this._tokens.length}atTerminator(n){return this.atBoundary||((n?.condition&&n.condition(this))??!1)}get atBoundary(){if(this.atEnd)return!0;let n=this.index;for(let t of this._boundaries)if(this.matchAll(t.tokens))return this.index=n,!0;return!1}addBoundary(n){this._boundaries.push({index:this.index,tokens:n})}removeBoundary(){this._boundaries.pop()}matchBoundary(){let n=this._boundaries[this._boundaries.length-1],t=n&&this.matchAll(n.tokens);return t&&this._boundaries.pop(),t}boundaryError(n){let t=this._boundaries[this._boundaries.length-1];return this._boundaries.pop(),this.error(n,t.index)}canSkipMatchfixReparsing(n,t,i){return!i&&t.length===1&&(n==="("||n==="\\lparen")&&(t[0]==="]"||t[0]==="\\rbrack")}latex(n,t){return U(this._tokens.slice(n,t))}latexAhead(n){return this.latex(this.index,this.index+n)}lookAhead(){let n=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);if(n<=0)return[];let t=[];for(;n>0;)t.push([n,this.latexAhead(n--)]);return t}peekDefinitions(n){if(this.atEnd)return[];let t=[],i;switch(n){case"infix":i=this._dictionary.infixByTrigger;break;case"prefix":i=this._dictionary.prefixByTrigger;break;case"postfix":i=this._dictionary.postfixByTrigger;break;case"function":i=this._dictionary.functionByTrigger;break;case"symbol":i=this._dictionary.symbolByTrigger;break;case"expression":i=this._dictionary.expressionByTrigger;break;case"operator":i=void 0;break}if(i){let r=[];for(let s of this.getDefs(n))(s.latexTrigger===""||s.symbolTrigger)&&r.push(s);for(let s of r)s.latexTrigger===""&&t.push([s,0]);for(let[s,o]of this.lookAhead()){let a=i.get(o);if(a)for(let l of a)t.push([l,s])}for(let s of r)if(s.symbolTrigger){let o=er(this,s.symbolTrigger);o>0&&t.push([s,o])}}else{let r=[...this.getDefs(n)];for(let s of r)s.latexTrigger===""&&t.push([s,0]);for(let[s,o]of this.lookAhead())for(let a of r)a.latexTrigger===o&&t.push([a,s]);for(let s of r)if(s.symbolTrigger){let o=er(this,s.symbolTrigger);o>0&&t.push([s,o])}}return t}skipSpaceTokens(){for(;this.match("<space>"););}skipSpace(){if(!this.atEnd&&this.peek==="<{>"){let t=this.index;for(this.nextToken();this.match("<space>"););if(this.nextToken()==="<}>")return this.skipSpace(),!0;this.index=t}if(!this.options.skipSpace)return!1;let n=!1;for(;this.match("<space>");)n=!0;return n&&this.skipSpace(),n}skipVisualSpace(){this.options.skipSpace&&(this.skipSpace(),["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"].includes(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.skipSpace())}match(n){return this._tokens[this.index]!==n?!1:(this.index++,!0)}matchAll(n){if(n.length===0)return!1;let t,i=0;do t=this._tokens[this.index+i]===n[i++];while(t&&i<n.length);return t&&(this.index+=i),t}matchAny(n){return n.includes(this._tokens[this.index])?this._tokens[this.index++]:""}parseLatexNumber(n=!0){let t=!1,i=this.peek;for(;i==="<space>"||i==="+"||i==="-";)i==="-"&&(t=!t),this.nextToken(),i=this.peek;let r=10,s=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,s=["0","1","2","3","4","5","6","7"],n=!0;else if(this.match('"')||this.match("x"))r=16,s=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],n=!0;else if(this.match("`"))return i=this.nextToken(),i?i.startsWith("\\")&&i.length===2?(t?-1:1)*(i.codePointAt(1)??0):(t?-1:1)*(i.codePointAt(0)??0):null;let o="";for(;s.includes(this.peek);)o+=this.nextToken();if(!n&&this.match("."))for(o+=".";s.includes(this.peek);)o+=this.nextToken();let a=n?Number.parseInt(o,r):Number.parseFloat(o);return Number.isNaN(a)?null:t?-a:a}parseChar(){let n=this.index,t=0;for(;this.match("^");)t+=1;if(t<2&&(this.index=n),t>=2){let i="",r=0;for(;r!=t;){let s=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!s)break;i+=s,r+=1}if(i.length===t)return String.fromCodePoint(Number.parseInt(i,16))}else if(this.match("\\char")){let i=Math.floor(this.parseLatexNumber()??Number.NaN);return(!Number.isFinite(i)||i<0||i>1114111)&&(i=10067),String.fromCodePoint(i)}else if(this.match("\\unicode"))if(this.skipSpaceTokens(),this.match("<{>")){let i=this.parseLatexNumber();if(this.match("<}>")&&i!==null&&i>=0&&i<=1114111)return String.fromCodePoint(i)}else{let i=this.parseLatexNumber();if(i!==null&&i>=0&&i<=1114111)return String.fromCodePoint(i)}return this.index=n,null}matchDelimiter(n,t){let i=this.index,r=yn[this.peek];r&&this.nextToken();let s=r&&this.peek==="<{>";if(s&&this.nextToken(),Array.isArray(n)){if(Array.isArray(t),n.length===1){if(!(Ki[n[0]]??[n[0]]).includes(this.peek))return this.index=i,!1;if(this.nextToken(),s&&!this.match("<}>"))return this.index=i,!1;let u=t[0],p=r?s?[r,"<{>",u,"<}>"]:[r,u]:[u];return this.addBoundary(p),!0}if(!this.matchAll(n))return this.index=i,!1;let a=r?[r,...t]:t;return this.addBoundary(a),!0}if(Array.isArray(t),n==="||"&&this.matchAll(["|","|"]))return this.addBoundary(["|","|"]),!0;if(!(Ki[n]??[n]).includes(this.peek))return this.index=i,!1;if(n=this.nextToken(),s&&!this.match("<}>"))return this.index=i,!1;t=Et[n]??t;let o=r?s?[r,"<{>",t,"<}>"]:[r,t]:[t];return this.addBoundary(o),!0}parseGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("<{>")){this.addBoundary(["<}>"]);let t=this.parseExpression();if(this.skipSpace(),this.matchBoundary())return t??"Nothing";for(;!this.matchBoundary()&&!this.atEnd;)this.nextToken();if(f(t)==="Error")return t;let i=this.error("expected-closing-delimiter",n);return t!==null?["InvisibleOperator",t,i]:i}return this.index=n,null}parseOptionalGroup(){let n=this.index;if(this.skipSpaceTokens(),this.match("[")){this.addBoundary(["]"]);let t=this.parseExpression();return this.skipSpace(),this.matchBoundary()?t:this.boundaryError("expected-closing-delimiter")}return this.index=n,null}parseToken(){return this.skipSpace(),[...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"].includes(this.peek)?null:/^[0-9]$/.test(this.peek)?parseInt(this.nextToken(),10):this.parseGenericExpression()??this.parseSymbol()}parseTabular(){let n=[],t=[],i=null;for(;!this.atBoundary;)if(this.skipSpace(),this.match("&"))t.push(i??"Nothing"),i=null;else if(this.match("\\\\")||this.match("\\cr"))this.skipSpace(),this.parseOptionalGroup(),i!==null&&t.push(i),n.push(t),t=[],i=null;else{let r=[],s=this.peek;for(;s!=="&"&&s!=="\\\\"&&s!=="\\cr"&&!this.atBoundary;)i=this.parseExpression({minPrec:0,condition:o=>{let a=o.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),i!==null?r.push(i):(r.push(["Error","'unexpected-token'",{str:U(s)}]),this.nextToken()),this.skipSpace(),s=this.peek;r.length>1?i=["Sequence",...r]:i=r[0]??"Nothing"}return i!==null&&t.push(i),t.length>0&&n.push(t),n}parseStringGroupContent(){let n=this.index,t="",i=0;for(;!this.atBoundary||i>0;){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=n,"";r==="<{>"?(i+=1,t+="\\{"):r==="<}>"?(i-=1,t+="\\}"):r==="<space>"?t+=" ":(r[0],t+=r)}return t}parseStringGroup(n){n===void 0&&(n=!1);let t=this.index;for(;this.match("<space>"););if(this.match(n?"[":"<{>")){this.addBoundary([n?"]":"<}>"]);let i=this.parseStringGroupContent();if(this.matchBoundary())return i;this.removeBoundary()}return this.index=t,null}parseEnvironment(n){let t=this.index;if(!this.match("\\begin"))return null;let i=this.parseStringGroup()?.trim();if(!i)return this.error("expected-environment-name",t);this.addBoundary(["\\end","<{>",...i.split(""),"<}>"]);for(let r of this.getDefs("environment"))if(r.symbolTrigger===i){let s=r.parse(this,n);return this.skipSpace(),this.matchBoundary()?s!==null?this.decorate(s,t):(this.index=t,null):this.boundaryError("unbalanced-environment")}return this.parseTabular(),this.skipSpace(),this.matchBoundary()?this.error(["unknown-environment",{str:i}],t):this.boundaryError("unbalanced-environment")}parseRepeatingDecimal(){return bt(this,this._numberFormatTokens)}parseNumber(){return Qi(this,this._numberFormatTokens)}parsePrefixOperator(n){n||(n={minPrec:0}),n.minPrec||(n={...n,minPrec:0});let t=this.index;for(let[i,r]of this.peekDefinitions("prefix")){this.index=t+r;let s=i.parse(this,{...n,minPrec:i.precedence+1});if(s!==null)return s}return this.index=t,null}parseInfixOperator(n,t){t??={minPrec:0},t.minPrec,t.minPrec===void 0&&(t={...t,minPrec:0});let i=this.index;for(let[r,s]of this.peekDefinitions("infix"))if(r.precedence>=t.minPrec){this.index=i+s;let o=r.parse(this,n,t);if(o!==null)return o}return this.index=i,null}wouldMatchTextInfix(n){let t=this.index;for(let[i,r]of n){if(i.kind!=="infix")continue;if(this.index=t+r,i.parse(this,"Nothing",{minPrec:0})!==null)return this.index=t,!0}return this.index=t,!1}parseArguments(n="enclosure",t){if(this.atTerminator(t))return null;let i=this.index,r=this.parseEnclosure();if(n==="enclosure")return r===null?null:le(r)??[];if(n==="implicit"){if(f(r)==="Delimiter"){let o=c(r,1);return f(o)==="Sequence"?h(o):o===null?[]:[o]}if(r!==null)return[r];let s=this.parseExpression({...t,minPrec:C});return s===null?null:[s]}return this.index=i,null}parseEnclosure(){let n=this.index,t=this.peek,i=yn[t],r=i?this._tokens[this.index+1]:t;i&&r==="<{>"&&(r=this._tokens[this.index+2]);let s=this._dictionary.matchfixByOpen.get(r)??[];s.length===0&&!r&&(s=[...this.getDefs("matchfix")]);for(let o of s){if(this.index=n,!this.matchDelimiter(o.openTrigger,o.closeTrigger))continue;let l=this.index;this.skipSpace();let u=this.parseExpression();this.skipSpace();let p=this._boundaries[this._boundaries.length-1]?.tokens,d=this.matchBoundary(),m=typeof o.openTrigger=="string"&&typeof o.closeTrigger=="string"&&o.openTrigger===o.closeTrigger||Array.isArray(o.openTrigger)&&Array.isArray(o.closeTrigger)&&o.openTrigger.length===o.closeTrigger.length&&o.openTrigger.every((b,v)=>b===o.closeTrigger[v]);if(d&&P(u)&&m&&p){if(this.index=l,this.skipSpace(),u=this.parseExpression(),this.skipSpace(),!this.matchAll(p)){if(this.index=n,!this.atEnd)continue;return null}}else if(!d){let b=this._boundaries[this._boundaries.length-1]?.tokens;if(!b){this.index=n;continue}if(this.canSkipMatchfixReparsing(r,b,m)){this.removeBoundary(),this.index=n;continue}else if(this.removeBoundary(),this.index=l,this.skipSpace(),u=this.parseExpression(),this.skipSpace(),!this.matchAll(b)){if(this.index=n,!this.atEnd)continue;return null}}let T=o.parse(this,u??"Nothing");if(T!==null)return T}return this.index=n,null}parseGenericExpression(n){if(this.atTerminator(n))return null;let t=this.index,i=null,r=this.peekDefinitions("expression")??[];for(let[s,o]of r)if(this.index=t+o,typeof s.parse=="function"){if(i=s.parse(this,n),i!==null)return i}else return s.name;return this.index=t,null}parseFunction(n){if(this.atTerminator(n))return null;let t=this.index,i=null,r="enclosure";for(let[a,l]of this.peekDefinitions("function"))if(this.index=t+l,typeof a.parse=="function"){if(i=a.parse(this,n),i!==null)return i}else{i=a.name,r=a.arguments??"enclosure";break}let s=!1;if(i===null&&(this.index=t,i=He(this),!this.isFunctionOperator(i))){if(!this.looksLikePredicate(i))return this.index=t,null;s=!0}do{let a=this.parsePostfixOperator(i,n);if(a===null)break;i=a}while(!0);let o=this.parseArguments(r,n);return o===null?i:s&&typeof i=="string"&&(this.inQuantifierScope||i==="D"||i==="N")?["Predicate",i,...o]:typeof i=="string"?[i,...o]:["Apply",i,...o]}parseSymbol(n){if(this.atTerminator(n))return null;let t=this.index;for(let[r,s]of this.peekDefinitions("symbol"))if(this.index=t+s,typeof r.parse=="function"){let o=r.parse(this,n);if(o!==null)return o}else return r.name;this.index=t;let i=He(this);return i!==null&&!this.getSymbolType(i).matches("error")?i:(this.index=t,null)}tryParseBareFunction(n){if(this.options.strict!==!1)return null;let t=this.index;if(t>0&&/^[a-zA-Z]$/.test(this._tokens[t-1]))return null;let i="";for(;!this.atEnd&&/^[a-zA-Z]$/.test(this.peek);)i+=this.peek,this.index++;if(!i)return this.index=t,null;this.skipSpace();let r=null;if(this.peek==="_"){if(this.index++,r=this.parseGroup(),r===null){if(!this.atEnd&&/^[a-zA-Z]$/.test(this.peek))r=this.peek,this.index++;else{let p="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)p+=this.peek,this.index++;p&&(r=parseInt(p))}if(r===null)return this.index=t,null}this.skipSpace()}let s=null;if(this.peek==="^"){if(this.index++,s=this.parseGroup(),s===null){let p=!1;this.peek==="-"&&(p=!0,this.index++);let d="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)d+=this.peek,this.index++;if(d){let m=parseInt(d);s=p?-m:m}else return this.index=t,null}this.skipSpace()}if(this.peek!=="(")return this.index=t,null;let a={sin:"Sin",cos:"Cos",tan:"Tan",cot:"Cot",sec:"Sec",csc:"Csc",sinh:"Sinh",cosh:"Cosh",tanh:"Tanh",coth:"Coth",sech:"Sech",csch:"Csch",arcsin:"Arcsin",arccos:"Arccos",arctan:"Arctan",arccot:"Arccot",arcsec:"Arcsec",arccsc:"Arccsc",asin:"Arcsin",acos:"Arccos",atan:"Arctan",arcsinh:"Arsinh",arccosh:"Arcosh",arctanh:"Artanh",arccoth:"Arcoth",arcsech:"Arsech",arccsch:"Arcsch",asinh:"Arsinh",acosh:"Arcosh",atanh:"Artanh",log:"Log",ln:"Ln",exp:"Exp",lg:"Lg",lb:"Lb",sqrt:"Sqrt",abs:"Abs",sgn:"Sgn",sign:"Sgn",floor:"Floor",ceil:"Ceil",round:"Round",max:"Max",min:"Min",gcd:"Gcd",lcm:"Lcm",cbrt:"Root",binom:"Binomial",nCr:"Binomial"}[i];if(!a)return this.index=t,null;let l=this.parseArguments("enclosure",n);if(l===null)return this.index=t,null;if(i==="cbrt"){let p=["Root",l[0]??"Nothing",3];return s!==null?["Power",p,s]:p}let u;return i==="log"&&r!==null?r===2?u=["Lb",...l]:r===10?u=["Log",...l]:u=["Log",l[0],r]:u=[a,...l],s!==null?["Power",u,s]:u}static BARE_SYMBOL_MAP={alpha:"alpha",beta:"beta",gamma:"gamma",delta:"delta",epsilon:"epsilon",varepsilon:"varepsilon",zeta:"zeta",eta:"eta",theta:"theta",vartheta:"vartheta",iota:"iota",kappa:"kappa",lambda:"lambda",mu:"mu",nu:"nu",xi:"xi",omicron:"omicron",pi:"Pi",rho:"rho",sigma:"sigma",tau:"tau",upsilon:"upsilon",phi:"phi",varphi:"varphi",chi:"chi",psi:"psi",omega:"omega",Gamma:"Gamma",Delta:"Delta",Theta:"Theta",Lambda:"Lambda",Xi:"Xi",Sigma:"Sigma",Upsilon:"Upsilon",Phi:"Phi",Psi:"Psi",Omega:"Omega",oo:"PositiveInfinity",inf:"PositiveInfinity",ii:"ImaginaryUnit"};tryParseBareSymbol(){if(this.options.strict!==!1)return null;let n=this.index;if(n>0&&/^[a-zA-Z]$/.test(this._tokens[n-1]))return null;let t="";for(;!this.atEnd&&/^[a-zA-Z]$/.test(this.peek);)t+=this.peek,this.index++;if(!t)return this.index=n,null;let i=e.BARE_SYMBOL_MAP[t];return i||(this.index=n,null)}parseSupsub(n){if(this.atEnd)return n;let t=this.index;if(this.options.strict===!1&&typeof n=="string"&&n.length===1&&/^[a-zA-Z]$/.test(n)&&/^[2-9]$/.test(this.peek)){let a=parseInt(this.peek);return this.index++,this.parseSupsub(["Power",n,a])}this.skipSpace();let i=[],r=[],s=t;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(s=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",s));else{let a=this.parseGroup();if(a===null&&this.options.strict===!1){let l="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)l+=this.peek,this.index++;l&&(a=parseInt(l))}if(a??=this.parseToken(),a===null&&this.options.strict===!1&&this.peek==="("&&(a=this.parseEnclosure()),a??=this.parseStringGroup(),a===null)return this.error("missing",t);r.push(a)}else if(this.match("^"))if(s=this.index,this.match("_")||this.match("^"))i.push(this.error("syntax-error",s));else{let a=this.parseGroup();if(a===null&&this.options.strict===!1){let l=this.index,u=!1;this.peek==="-"&&(u=!0,this.index++);let p="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)p+=this.peek,this.index++;if(p){let d=parseInt(p);a=u?-d:d}else this.index=l}if(a??=this.parseToken(),a===null&&this.options.strict===!1&&this.peek==="("&&(a=this.parseEnclosure()),a===null)return this.error("missing",t);i.push(a)}s=this.index,this.skipSpace()}if(i.length===0&&r.length===0)return this.index=t,n;let o=n;if(r.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="_");if(a){let l=["Subscript",o,r.length===1?r[0]:["List",...r]];for(let u of a)if(typeof u.parse=="function"?o=u.parse(this,l,{minPrec:0}):o=l,o!==null)break}}if(i.length>0){let a=[...this.getDefs("infix")].filter(l=>l.latexTrigger==="^");if(a){let l=i.filter(u=>!P(u));if(l.length!==0){let u=l.length===1?l[0]:["List",...l],p=["Superscript",o,u];for(let d of a)if(typeof d.parse=="function"?o=d.parse(this,p,{minPrec:0}):o=p,o!==null)break}}}return o===null&&(this.index=t),o}parsePostfixOperator(n,t){if(n===null||this.atEnd)return null;let i=this.index;for(let[r,s]of this.peekDefinitions("postfix")){this.index=i+s;let o=r.parse(this,n,t);if(o!==null)return o}return this.index=i,null}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),M(this.parseGroup())];let t=this.peekDefinitions("operator");if(t.length>0){if(t=this.peekDefinitions("postfix"),t.length>0){let[a,l]=t[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,this.error("missing",n));if(u!==null)return u}return this.error("unexpected-operator",n)}if(t=this.peekDefinitions("prefix"),t.length>0){let[a,l]=t[0];if(this.index+=l,typeof a.parse=="function"){let u=a.parse(this,{minPrec:0});if(u!==null)return u}return a.name?[a.name,this.parseExpression()??this.error("missing",n)]:this.error("unexpected-operator",n)}if(t=this.peekDefinitions("infix"),t.length>0){let[a,l]=t[0];this.index+=l;let u=a.parse(this,this.error("missing",n),{minPrec:0});return u!==null?u:this.error("unexpected-operator",n)}}let i=this.index,r=dt(this);if(r!==null)return r;if(r=He(this),r!==null)return this.error(["unexpected-symbol",{str:r}],i);let s=this.peek;if(!s)return this.error("syntax-error",n);if(ks(this))return this.error("unexpected-delimiter",n);if(s[0]!=="\\")return this.nextToken(),this.error(["unexpected-token",{str:U(s)}],n);let o=this.nextToken();if(this.skipSpaceTokens(),o==="\\end"){let a=this.parseStringGroup();return a===null?this.error("expected-environment-name",n):this.error(["unbalanced-environment",{str:a}],n)}for(;this.match("[");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="]";)this.peek==="["&&(a+=1),this.peek==="]"&&(a-=1),this.nextToken();this.match("]")}for(;this.match("<{>");){let a=0;for(;!this.atEnd&&a===0&&this.peek!=="<}>";)this.peek==="<{>"&&(a+=1),this.peek==="<}>"&&(a-=1),this.nextToken();this.match("<}>")}return this.error(["unexpected-command",{str:U(o)}],n)}parsePrimary(n){if(this.atBoundary||this.atTerminator(n))return null;let t=null,i=this.index;if(this.match("<}>"))return this.error("unexpected-closing-delimiter",i);if(t??=this.parseGroup(),t??=this.parseNumber(),t??=this.parseEnclosure(),t??=this.parseEnvironment(n),t===null&&this.matchAll(this._positiveInfinityTokens)&&(t="PositiveInfinity"),t===null&&this.matchAll(this._negativeInfinityTokens)&&(t="NegativeInfinity"),t===null&&this.matchAll(this._notANumberTokens)&&(t="NaN"),t===null&&this.matchAll(this._imaginaryUnitTokens)&&(t="ImaginaryUnit"),t??=this.tryParseBareFunction(n),t??=this.tryParseBareSymbol(),t??=this.parseGenericExpression(n)??this.parseFunction(n)??this.parseSymbol(n)??dt(this),t!==null&&P(t))return this.parsePrimary(n);if(t!==null){t=this.decorate(t,i);let r=null,s=this.index;do{if(r=this.parsePostfixOperator(t,n),t=r??t,this.index===s&&r!==null){this.index;break}s=this.index}while(r!==null)}return t!==null&&(t=this.parseSupsub(t)),t===null&&(t=this.options.parseUnexpectedToken?.(null,this)??null,t===null&&this.peek.startsWith("\\")&&(this.nextToken(),t=this.error("unexpected-command",i))),this.decorate(t,i)}parseExpression(n){this.skipSpace();let t=this.index;if(this.atBoundary)return this.index=t,null;n??={minPrec:0},n.minPrec,n.minPrec===void 0&&(n={...n,minPrec:0});let i=this.parsePrefixOperator({...n,minPrec:0});if(i??=this.parsePrimary(n),i!==null){let r=!1;for(;!r&&!this.atTerminator(n);){this.skipSpace();let s=this.parseInfixOperator(i,n);if(s===null&&n.minPrec<=Pn){let o=this.peekDefinitions("operator");if((o.length===0||o.every(([a])=>a.latexTrigger==="\\text"))&&!(o.length>0&&this.wouldMatchTextInfix(o))){let a=this.parseExpression({...n,minPrec:Pn+1});a!==null?f(i)==="InvisibleOperator"?f(a)==="InvisibleOperator"?s=["InvisibleOperator",...h(i),...h(a)]:s=["InvisibleOperator",...h(i),a]:f(a)==="InvisibleOperator"?s=["InvisibleOperator",i,...h(a)]:s=["InvisibleOperator",i,a]:s===null&&(s=this.options.parseUnexpectedToken?.(i,this)??null)}}s!==null?i=s:r=!0}}return this.decorate(i,t)}decorate(n,t){if(n===null)return null;if(!this.options.preserveLatex)return n;let i=this.latex(t,this.index);return Array.isArray(n)?n={latex:i,fn:n}:typeof n=="number"?n={latex:i,num:Number(n).toString()}:typeof n=="string"?n.startsWith("'")?n={latex:i,str:n.slice(1,-1)}:n={latex:i,sym:n}:typeof n=="object"&&n!==null&&(n.latex=i),n}error(n,t){let i;typeof n=="string"?(n.startsWith("'"),i={str:n}):(n[0].startsWith("'"),i=["ErrorCode",{str:n[0]},...n.slice(1)]);let r=this.latex(t,this.index);return r?["Error",i,["LatexString",{str:r}]]:["Error",i]}isFunctionOperator(n){return n===null||n==="D"||n==="N"?!1:!!this.getSymbolType(n).matches("function")}looksLikePredicate(n){return n===null||typeof n!="string"||!/^[A-Z]$/.test(n)?!1:(this.skipSpace(),this.peek==="("||this.peek==="\\left")}*getDefs(n){if(n==="operator")for(let t=this._dictionary.defs.length-1;t>=0;t--){let i=this._dictionary.defs[t];/^prefix|infix|postfix/.test(i.kind)&&(yield i)}else for(let t=this._dictionary.defs.length-1;t>=0;t--){let i=this._dictionary.defs[t];i.kind===n&&(yield i)}}};function er(e,n){let t=e.index,i=He(e)?.trim();if(i===null)return 0;let r=i!==n?0:e.index-t;return e.index=t,r}function ks(e){let n=e.peek;return Object.values(Et).includes(n)||Et[n]?(e.nextToken(),!0):yn[n]||Object.values(yn).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function nr(e,n,t){let i=new kt(F(e),n,t),r=i.parseExpression();if(!i.atEnd){let s=i.parseSyntaxError();r=r!==null?["Sequence",r,s]:s}if(r??="Nothing",t.preserveLatex){if(Array.isArray(r))return{latex:e,fn:r};if(typeof r=="number")return{latex:e,num:Number(r).toString()};if(typeof r=="string"){if(wt(r))return{latex:e,str:I(r)};if(Be(r))return{latex:e,sym:r};if(Ne(r))return{latex:e,num:r}}typeof r=="object"&&r!==null&&(r.latex=e)}return r}function ir(e,n,t){if(t.repeatingDecimal&&t.repeatingDecimal!=="none"){let s=e.slice(0,-1);for(let o=0;o<e.length-16;o++){let a=s.substring(0,o);for(let l=0;l<17;l++){let u=s.substring(o,o+l+1),p=Math.floor((s.length-a.length)/u.length);if(p<=3)break;if((a+u.repeat(p+1)).startsWith(s)){if(u==="0")return Nt(a,t);let d={vinculum:"\\overline{#}",parentheses:"(#)",dots:"\\overset{\\cdots}{#1}#2\\overset{\\cdots}{#3}",arc:"\\wideparen{#}"}[t.repeatingDecimal]??"\\overline{#}";return d=d.replace(/#1/g,u[0]).replace(/#2/g,u.slice(1)).replace(/#3/g,u.slice(-1)).replace(/#/,u),Nt(a,t)+d}}}}let i=typeof t.fractionalDigits=="number"?t.fractionalDigits:1/0;i<0&&(i=i-n),i<0&&(i=0);let r=e.length>i;return r&&(e=e.substring(0,i)),e=Nt(e,t),r&&(e+=t.truncationMarker),e}function rr(e,n){return!e||e==="0"?"":n.beginExponentMarker?n.beginExponentMarker+e+(n.endExponentMarker??""):`10^{${e}}`}function sr(e,n){if(e===null)return"";let t;if(typeof e=="number"||typeof e=="string")t=e;else if(typeof e=="object"&&"num"in e)t=e.num;else return"";if(typeof t=="number"){if(t===1/0)return n.positiveInfinity;if(t===-1/0)return n.negativeInfinity;if(Number.isNaN(t))return n.notANumber;let s;return n.notation==="engineering"?s=Je(t.toExponential(),n,3):n.notation==="scientific"?s=Je(t.toExponential(),{...n,avoidExponentsInRange:null}):n.notation==="adaptiveScientific"&&(s=Je(t.toExponential(),n)),s??St(t.toString(),n)}if(t=t.toLowerCase().replace(/[\u0009-\u000d\u0020\u00a0]/g,""),t==="infinity"||t==="+infinity"||t==="oo"||t==="+oo")return n.positiveInfinity;if(t==="-infinity"||t==="-oo")return n.negativeInfinity;if(t==="nan")return n.notANumber;if(!/^[-+\.]?[0-9]/.test(t))return"";if(t=t.replace(/[nd]$/,""),/\([0-9]+\)/.test(t)){let[s,o,a,l]=t.match(/(.+)\(([0-9]+)\)(.*)$/)??[];t=o+a.repeat(6)+l}let i="";for(t[0]==="-"?(i="-",t=t.substring(1)):t[0]==="+"&&(t=t.substring(1));t[0]==="0";)t=t.substring(1);t.length===0?t="0":t[0]==="."&&(t="0"+t);let r;return n.notation==="engineering"?r=Je(t,n,3):n.notation==="scientific"?r=Je(t,{...n,avoidExponentsInRange:null}):n.notation==="adaptiveScientific"&&(r=Je(t,n)),i+(r??St(t,{...n}))}function Je(e,n,t=1){let i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/);if(!i){let p="";if(e[0]==="-"?(p="-",e=e.substring(1)):e[0]==="+"&&(e=e.substring(1)),e.indexOf(".")<0)e.length===1?e=p+e+"e+0":e=p+e[0]+"."+e.slice(1)+"e+"+(e.length-1).toString();else{let[d,m,T]=e.match(/^(.*)\.(.*)$/);for(T||(T="");m.startsWith("0");)m=m.substring(1);if(m)e=p+m[0]+"."+m.slice(1)+T+"e+"+(m.length-1).toString();else{let b=0;for(;T[b]==="0";)b++;if(b===T.length)e=p+"0e+0";else{let v=T.slice(b),J=v[0],G=v.slice(1),X=-(b+1);G?e=p+J+"."+G+"e"+X:e=p+J+"e"+X}}}i=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/)}if(!i)return St(e,n);let r=parseInt(i[2]),s=i[1];{let p=s.match(/^(-?)/),d=p?p[1]:"",T=(d?s.substring(1):s).match(/^(\d+)(?:\.(\d*))?$/);if(T){let b=T[1],v=T[2]??"";b.length>1&&(v=b.slice(1)+v,r+=b.length-1,b=b[0]),s=d+b,v&&(s+="."+v)}}if(Math.abs(r)%t!==0){let p=r>0?r%t:-((t+r)%t);r=r>=0?r-p:r+p;let[d,m,T]=s.match(/^(.*)\.(.*)$/)??["",s,""];s=m+(T+"00000000000000000").slice(0,Math.abs(p))+"."+T.slice(Math.abs(p))}let o=n.avoidExponentsInRange;if(o&&r>=o[0]&&r<=o[1])return;let a="",l=s;i=l.match(/^(.*)\.(.*)$/),i&&(l=i[1],a=i[2]);let u=rr(Number(r).toString(),n);return a=ir(a,l.length,n),a&&(a=n.decimalSeparator+a),l=ar(l,n),u?l+a+n.exponentProduct+u:l+a}function St(e,n){let t=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i),i=0,r=0;t?.[1]&&t[2]&&(i=parseInt(t[2]),r=i,e=t[1]);let s=t?.[1]??e,o="";t=e.match(/^(.*)\.(.*)$/),t?.[1]&&t[2]&&(s=t[1],o=t[2]),i!==0&&o&&(s+=o,i-=o.length,o="");let a=n.avoidExponentsInRange;i!==0&&a&&r>=a[0]&&r<=a[1]&&([s,o]=vs(s,o,i),i=0);let l=rr(i.toString(),n);if(o&&(o=n.decimalSeparator+ir(o,s.length,n)),s=ar(s,n),!l)return s+o;if(!o){if(s==="1")return l;if(s==="-1")return"-"+l}return s+o+n.exponentProduct+l}function tr(e,n,t){let i=new RegExp(`(\\d{${n}})(?=\\d)`,"g");return e.replace(i,`$1${t}`)}function Ns(e,n,t){let i=new RegExp(`(\\d{${n}})(?=\\d)`,"g"),r=t.split("").reverse().join("");return e.split("").reverse().join("").replace(i,`$1${r}`).split("").reverse().join("")}function Ss(e,n){let t=e.split("").reverse().join(""),i=n.split("").reverse().join(""),r=t.replace(/(\d{3})(?=\d)/,`$1${i}`);return r=r.replace(/(\d{2})(?=(\d{2})+,)/g,`$1${i}`),r.split("").reverse().join("")}function or(e,n,t){let i=n.digitGroup;typeof i!="string"&&Array.isArray(i)&&(i=i[t]);let r=typeof n.digitGroupSeparator=="string"?n.digitGroupSeparator:n.digitGroupSeparator[t];return r?i==="lakh"?t===0?Ss(e,r):tr(e,3,r):i===!1||i<=0?e:t===1?tr(e,i,r):Ns(e,i,r):e}function Nt(e,n){return or(e,n,1)}function ar(e,n){return or(e,n,0)}function vs(e,n,t){let i=e+n,s=e.length+t,o,a;return s>0?s>=i.length?(i=i+"0".repeat(s-i.length),o=i,a=""):(o=i.slice(0,s),a=i.slice(s)):(o="0",a="0".repeat(-s)+i),[o,a]}var It={deg:e=>`${e}\\degree`,prime:e=>`${e}^{\\prime}`,dprime:e=>`${e}^{\\doubleprime}`,ring:e=>`\\mathring{${e}}`,hat:e=>`\\hat{${e}}`,tilde:e=>`\\tilde{${e}}`,vec:e=>`\\vec{${e}}`,bar:e=>`\\overline{${e}}`,underbar:e=>`\\underline{${e}}`,dot:e=>`\\dot{${e}}`,ddot:e=>`\\ddot{${e}}`,tdot:e=>`\\dddot{${e}}`,qdot:e=>`\\ddddot{${e}}`,acute:e=>`\\acute{${e}}`,grave:e=>`\\grave{${e}}`,breve:e=>`\\breve{${e}}`,check:e=>`\\check{${e}}`},Mt={upright:e=>`\\mathrm{${e}}`,italic:e=>`\\mathit{${e}}`,bold:e=>`\\mathbf{${e}}`,script:e=>`\\mathscr{${e}}`,fraktur:e=>`\\mathfrak{${e}}`,doublestruck:e=>`\\mathbb{${e}}`,blackboard:e=>`\\mathbb{${e}}`,calligraphic:e=>`\\mathcal{${e}}`,gothic:e=>`\\mathfrak{${e}}`,sansserif:e=>`\\mathsf{${e}}`,monospace:e=>`\\mathtt{${e}}`},Dt=class{options;dictionary;level=-1;constructor(n,t){this.dictionary=n,this.options={dmsFormat:!1,angleNormalization:"none",...t}}wrap(n,t){if(n==null)return"";if(t===void 0)return this.wrapString(this.serialize(n),this.options.groupStyle(n,this.level+1));if(typeof n=="number"||Te(n)){let r=N(n);return r!==null&&r<0&&t>L?this.wrap(n):this.serialize(n)}let i=f(n);if(i&&i!=="Delimiter"&&i!=="Subscript"){let r=this.dictionary.ids.get(i);if(r&&(r.kind==="symbol"||r.kind==="expression"||r.kind==="prefix"||r.kind==="infix"||r.kind==="postfix")&&r.precedence<t)return this.wrapString(this.serialize(n),this.options.applyFunctionStyle(n,this.level))}return this.serialize(n)}wrapShort(n){if(n==null)return"";let t=this.serialize(n);if(y(n)!==null||ae(n)&&!/^(-|\.)/.test(t))return t;let r=f(n);return r==="Delimiter"&&A(n)===1||r!=="Add"&&r!=="Negate"&&r!=="Subtract"&&r!=="PlusMinus"&&r!=="Multiply"?t:this.wrapString(t,this.options.groupStyle(n,this.level+1))}wrapString(n,t,i){if(t==="none")return n;i??="()";let r=i?.[0]??".",s=i?.[1]??".";return r==='"'?r="``":r==="|"?r="\\lvert":r=De[r]??r,s==='"'?s="''":s==="|"?s="\\rvert":s=De[s]??s,r==="."&&s==="."?n:((r==="."||s===".")&&t==="normal"&&(t="scaled"),t==="scaled"?`\\left${r}${n}\\right${s}}`:t==="big"?`${`\\Bigl${r}`}${n}${`\\Bigr${s}`})`:r+n+s)}wrapArguments(n){return this.wrapString(h(n).map(t=>this.serialize(t)).join(", "),this.options.applyFunctionStyle(n,this.level))}serializeSymbol(n,t){return typeof n=="string"||be(n),t?.kind==="function"?vt(y(n)??"")??"":t?.serialize?.(this,n)??vt(y(n))??""}serializeFunction(n,t){if(t?.serialize)return t.serialize(this,n);let i=f(n);return vt(i,"auto")+this.wrapArguments(n)}serialize(n){if(n==null)return"";this.level+=1;try{let t=(()=>{let i=sr(n,this.options);if(i)return i;let r=I(n);if(r!==null)return`\\text{${r}}`;let s=y(n);if(s!==null)return this.serializeSymbol(n,this.dictionary.ids.get(s));let o=f(n);if(o){let a=this.dictionary.ids.get(o);return this.serializeFunction(n,a)}throw Error(`Syntax error ${n?JSON.stringify(n,void 0,4):""}`)})();return this.level-=1,t??""}catch{}return this.level-=1,""}applyFunctionStyle(n,t){return this.options.applyFunctionStyle(n,t)}groupStyle(n,t){return this.options.groupStyle(n,t)}rootStyle(n,t){return this.options.rootStyle(n,t)}fractionStyle(n,t){return this.options.fractionStyle(n,t)}logicStyle(n,t){return this.options.logicStyle(n,t)}powerStyle(n,t){return this.options.powerStyle(n,t)}numericSetStyle(n,t){return this.options.numericSetStyle(n,t)}};function Pt(e){let n=e.match(/^____([0-9A-Fa-f]{6})(.*)/s);if(n)return[`\\unicode{"${(n[1].replace(/^0+/,"")||"0").padStart(4,"0")}}`,n[2]];let t=e.match(/^([^_]+)/)?.[1]??"",i=j.findIndex(a=>t===a[0]);if(i>=0)return[j[i][1],e.substring(j[i][0].length)];let r={zero:"0",one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9",ten:"10"};if(i=Object.keys(r).findIndex(a=>e.startsWith(a)),i>=0){let a=Object.keys(r)[i];return[r[a],e.substring(a.length)]}let s=e.codePointAt(0);if(i=j.findIndex(a=>a[2]===s),i>=0)return[j[i][1],e.substring(1)];let o={plus:"+",minus:"-",pm:"\\pm",ast:"\\ast",dag:"\\dag",ddag:"\\ddag",hash:"\\#",bottom:"\\bot",top:"\\top",bullet:"\\bullet",circle:"\\circ",diamond:"\\diamond",times:"\\times",square:"\\square",star:"\\star"};if(i=Object.keys(o).findIndex(a=>t===a),i>=0){let a=Object.keys(o)[i];return[o[a],e.substring(a.length)]}return[t,e.substring(t.length)]}function Is(e){let[n,t]=Pt(e),i=[];for(;t.length>0;){let s=t.match(/^_([a-zA-Z]+)(.*)/);if(!s||!It[s[1]])break;i.push(s[1]),t=s[2]}let r=[];for(;t.length>0;){let s=t.match(/^_([a-zA-Z]+)(.*)/);if(!s||!Mt[s[1]])break;r.push(s[1]),t=s[2]}return[n,i,r,t]}function Tn(e,n=!0,t="auto"){let[i,r,s,o]=Is(e);for(let a of r)It[a]&&(i=It[a](i));for(;o.length>0&&!o.startsWith("_")&&!/^\d/.test(o);){let[a,l]=Pt(o);if(a===""||l===o)break;i+=a,o=l}if(n){let a=[],l=[],u=i.match(/^([^\d].*?)(\d+)$/);for(u&&(l.push(u[2]),i=u[1]);o.length>0;){let p=o.match(/^____([0-9A-Fa-f]{6})(.*)/s);if(p){let d=p[1].replace(/^0+/,"")||"0";if(i+=`\\unicode{"${d.padStart(4,"0")}}`,o=p[2],o.length>0&&!o.startsWith("_")){let[m,T]=Pt(o);i+=m,o=T}}else if(o.startsWith("__")){let[d,m]=Tn(o.substring(2),!1,"none");a.push(d),o=m}else if(o.startsWith("_")){let[d,m]=Tn(o.substring(1),!1,"none");l.push(d),o=m}else break}a.length>0&&(i=ue("^",i,a.join(","))),l.length>0&&(i=ue("_",i,l.join(",")))}for(let a of s)Mt[a]&&(i=Mt[a](i));if(s.length===0&&t!=="none")switch(t){case"auto":tn(i)>1&&(i.includes("\\unicode")?i=`\\operatorname{${i}}`:i=`\\mathrm{${i}}`);break;case"operator":i=`\\operatorname{${i}}`;break;case"italic":i=`\\mathit{${i}}`;break;case"upright":i=`\\mathrm{${i}}`;break}return[i,o]}function vt(e,n="auto"){if(e===null)return null;if(xe.test(e))return e;let t=e.match(/^(_+)(.*)/);if(t&&!e.match(/^____[0-9A-Fa-f]{6}/)){let[s,o]=Tn(t[2],!0,"none");return`\\operatorname{${"\\_".repeat(t[1].length)+s+o}}`}let[i,r]=Tn(e,!0,n);return r.length>0?`\\operatorname{${e}}`:i}function lr(e,n,t){return new Dt(n,t).serialize(e)}function Ms(e){return{imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:e.decimalSeparator??".",digitGroupSeparator:e.digitGroupSeparator??"\\,",digitGroup:e.digitGroup??3,exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"auto",strict:e.parseStrict??!0,skipSpace:e.skipSpace??!0,parseNumbers:e.parseNumbers??"auto",preserveLatex:e.preserveLatex??!1,quantifierScope:e.quantifierScope??"tight",timeDerivativeVariable:e.timeDerivativeVariable??"t",getSymbolType:n=>V.unknown,hasSubscriptEvaluate:n=>!1,parseUnexpectedToken:(n,t)=>null}}function Ds(e){return{imaginaryUnit:"\\imaginaryI",positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalSeparator:e.decimalSeparator??".",digitGroupSeparator:e.digitGroupSeparator??"\\,",digitGroup:e.digitGroup??3,exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",truncationMarker:"\\ldots",repeatingDecimal:"vinculum",fractionalDigits:e.fractionalDigits??"max",notation:e.notation??"auto",avoidExponentsInRange:e.avoidExponentsInRange??[-7,20],prettify:e.prettify??!0,materialization:!1,invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\blacksquare",dmsFormat:!1,angleNormalization:"none",applyFunctionStyle:oi,groupStyle:ai,rootStyle:li,fractionStyle:ui,logicStyle:ci,powerStyle:pi,numericSetStyle:fi}}var bn=class{_options;_indexed;constructor(n){this._options=n??{}}get indexed(){if(!this._indexed){let n=this._options.dictionary??ut;this._indexed=Fi(n,t=>{console.error("LatexSyntax dictionary warning:",t)})}return this._indexed}parse(n,t){let i=Ms(this._options);return nr(n,this.indexed,{...i,...t})}serialize(n,t){let i=Ds(this._options);return lr(n,this.indexed,{...i,...t})}},ur=null;function cr(){return ur??=new bn,ur}function Ps(e){return cr().parse(e)}function As(e){return cr().serialize(e)}var Ju="0.55.4";export{Hn as ALGEBRA_DICTIONARY,Qn as ARITHMETIC_DICTIONARY,nt as CALCULUS_DICTIONARY,Kn as COMPLEX_DICTIONARY,Yn as CORE_DICTIONARY,me as INEQUALITIES_DICTIONARY,ut as LATEX_DICTIONARY,it as LINEAR_ALGEBRA_DICTIONARY,Vn as LOGIC_DICTIONARY,bn as LatexSyntax,lt as OTHERS_DICTIONARY,_i as PHYSICS_DICTIONARY,Zn as SETS_DICTIONARY,rt as STATISTICS_DICTIONARY,Wn as SYMBOLS_DICTIONARY,et as TRIGONOMETRY_DICTIONARY,at as UNITS_DICTIONARY,Ps as parse,As as serialize,Ju as version};