@cortex-js/compute-engine 0.86.1 → 0.86.2

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 (320) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/esm-min/chunks/{chunk-RF2RDYMF.js → chunk-7WM7O5R7.js} +30 -30
  3. package/dist/esm-min/chunks/{chunk-JBEE4TIQ.js → chunk-S6GEG7AN.js} +1 -1
  4. package/dist/esm-min/compile.js +14 -14
  5. package/dist/esm-min/compute-engine.js +2 -2
  6. package/dist/esm-min/core.js +14 -14
  7. package/dist/esm-min/cortex.js +3 -3
  8. package/dist/esm-min/identities.js +2 -2
  9. package/dist/esm-min/integration-rules.js +3 -3
  10. package/dist/esm-min/interval.js +2 -2
  11. package/dist/esm-min/latex-syntax.js +2 -2
  12. package/dist/esm-min/math-json.js +2 -2
  13. package/dist/esm-min/numerics.js +2 -2
  14. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  15. package/dist/types/big-decimal/index.d.ts +1 -1
  16. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  17. package/dist/types/big-decimal/utils.d.ts +1 -1
  18. package/dist/types/common/ansi-codes.d.ts +1 -1
  19. package/dist/types/common/configuration-change.d.ts +1 -1
  20. package/dist/types/common/debug.d.ts +1 -1
  21. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  22. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  23. package/dist/types/common/interruptible.d.ts +1 -1
  24. package/dist/types/common/one-of.d.ts +1 -1
  25. package/dist/types/common/signals.d.ts +1 -1
  26. package/dist/types/common/styled-text.d.ts +1 -1
  27. package/dist/types/common/terminal.d.ts +1 -1
  28. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  29. package/dist/types/common/type/boxed-type.d.ts +1 -1
  30. package/dist/types/common/type/lexer.d.ts +1 -1
  31. package/dist/types/common/type/parse.d.ts +1 -1
  32. package/dist/types/common/type/parser.d.ts +1 -1
  33. package/dist/types/common/type/primitive.d.ts +1 -1
  34. package/dist/types/common/type/reduce.d.ts +1 -1
  35. package/dist/types/common/type/serialize.d.ts +1 -1
  36. package/dist/types/common/type/subtype.d.ts +1 -1
  37. package/dist/types/common/type/type-builder.d.ts +1 -1
  38. package/dist/types/common/type/types.d.ts +1 -1
  39. package/dist/types/common/type/utils.d.ts +1 -1
  40. package/dist/types/common/utils.d.ts +1 -1
  41. package/dist/types/compile.d.ts +1 -1
  42. package/dist/types/compute-engine/assume.d.ts +1 -1
  43. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
  44. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  45. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  46. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  47. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  48. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  49. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  50. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  51. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  52. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  53. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  54. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/conditional-value.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/diophantine.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/exp-to-trig.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/explain-labels.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/explain.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/function-literal.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/match-dispatch.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/modular-arithmetic.d.ts +1 -1
  82. package/dist/types/compute-engine/boxed-expression/multivariate-gcd.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/multivariate-poly.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  88. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/rule-index.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-congruence.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/solve-domain.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  99. package/dist/types/compute-engine/boxed-expression/solve-system.d.ts +1 -1
  100. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  103. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  104. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  105. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  106. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  107. package/dist/types/compute-engine/compilation/angular-unit.d.ts +1 -1
  108. package/dist/types/compute-engine/compilation/base-compiler.d.ts +18 -1
  109. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  110. package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  112. package/dist/types/compute-engine/compilation/gpu-target.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  114. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  115. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  116. package/dist/types/compute-engine/compilation/types.d.ts +1 -1
  117. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  118. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  119. package/dist/types/compute-engine/differential-equation-utils.d.ts +1 -1
  120. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  121. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  133. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  134. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  135. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  136. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  137. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  138. package/dist/types/compute-engine/function-properties/index.d.ts +1 -1
  139. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  140. package/dist/types/compute-engine/fungrim/loader.d.ts +1 -1
  141. package/dist/types/compute-engine/fungrim/types.d.ts +1 -1
  142. package/dist/types/compute-engine/global-types.d.ts +1 -1
  143. package/dist/types/compute-engine/index.d.ts +1 -1
  144. package/dist/types/compute-engine/interpret-oeis.d.ts +1 -1
  145. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  146. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  147. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  148. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  149. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  150. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  151. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  170. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  172. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  173. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  174. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  175. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  176. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  177. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  178. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  179. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  180. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  181. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  182. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  183. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  184. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  185. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  186. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  187. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  188. package/dist/types/compute-engine/library/core.d.ts +1 -1
  189. package/dist/types/compute-engine/library/distributions.d.ts +1 -1
  190. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  191. package/dist/types/compute-engine/library/library.d.ts +1 -1
  192. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  193. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  194. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  195. package/dist/types/compute-engine/library/measurement-arithmetic.d.ts +1 -1
  196. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  197. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  198. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  199. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  200. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  201. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  202. package/dist/types/compute-engine/library/special-functions.d.ts +1 -1
  203. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  204. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  205. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  206. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  207. package/dist/types/compute-engine/library/units.d.ts +1 -1
  208. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  209. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  210. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  211. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  212. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/bernoulli.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/complex-esm-augment.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/differential-equations.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/diophantine.d.ts +1 -1
  218. package/dist/types/compute-engine/numerics/distributions.d.ts +1 -1
  219. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  220. package/dist/types/compute-engine/numerics/gauss-kronrod.d.ts +1 -1
  221. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  222. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  223. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  224. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  225. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  226. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  227. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  228. package/dist/types/compute-engine/numerics/oscillatory-quadrature.d.ts +1 -1
  229. package/dist/types/compute-engine/numerics/polynomial-roots.d.ts +1 -1
  230. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  231. package/dist/types/compute-engine/numerics/random.d.ts +1 -1
  232. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  233. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  234. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  235. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  236. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  237. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  238. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  239. package/dist/types/compute-engine/oeis.d.ts +1 -1
  240. package/dist/types/compute-engine/rubi/compile.d.ts +1 -1
  241. package/dist/types/compute-engine/rubi/driver.d.ts +1 -1
  242. package/dist/types/compute-engine/rubi/explain-trace.d.ts +1 -1
  243. package/dist/types/compute-engine/rubi/loader.d.ts +1 -1
  244. package/dist/types/compute-engine/rubi/match.d.ts +1 -1
  245. package/dist/types/compute-engine/rubi/normal-form.d.ts +1 -1
  246. package/dist/types/compute-engine/rubi/rubi-utils.d.ts +1 -1
  247. package/dist/types/compute-engine/rubi/types.d.ts +1 -1
  248. package/dist/types/compute-engine/sequence.d.ts +1 -1
  249. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  250. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  251. package/dist/types/compute-engine/symbolic/differential-equations.d.ts +1 -1
  252. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  253. package/dist/types/compute-engine/symbolic/explain-derivative.d.ts +1 -1
  254. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  255. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  256. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  257. package/dist/types/compute-engine/symbolic/interpret.d.ts +1 -1
  258. package/dist/types/compute-engine/symbolic/limit.d.ts +1 -1
  259. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  260. package/dist/types/compute-engine/symbolic/recurrences.d.ts +1 -1
  261. package/dist/types/compute-engine/symbolic/residue.d.ts +1 -1
  262. package/dist/types/compute-engine/symbolic/series.d.ts +1 -1
  263. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  264. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  265. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  266. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  267. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  268. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  269. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  270. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  271. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  272. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  273. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  274. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  275. package/dist/types/compute-engine/symbolic/solver-utils.d.ts +1 -1
  276. package/dist/types/compute-engine/symbolic/trig-rewrite.d.ts +1 -1
  277. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  278. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  279. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  280. package/dist/types/compute-engine/types-engine.d.ts +1 -1
  281. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  282. package/dist/types/compute-engine/types-expression.d.ts +1 -1
  283. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
  284. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  285. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  286. package/dist/types/compute-engine/types.d.ts +1 -1
  287. package/dist/types/compute-engine.d.ts +1 -1
  288. package/dist/types/core.d.ts +1 -1
  289. package/dist/types/cortex/characters.d.ts +1 -1
  290. package/dist/types/cortex/diagnostics.d.ts +1 -1
  291. package/dist/types/cortex/execute-cortex.d.ts +1 -1
  292. package/dist/types/cortex/formatter.d.ts +1 -1
  293. package/dist/types/cortex/lexer.d.ts +1 -1
  294. package/dist/types/cortex/operators.d.ts +1 -1
  295. package/dist/types/cortex/parse-cortex.d.ts +1 -1
  296. package/dist/types/cortex/parser.d.ts +1 -1
  297. package/dist/types/cortex/reserved-words.d.ts +1 -1
  298. package/dist/types/cortex/serialize-cortex.d.ts +1 -1
  299. package/dist/types/cortex/tokens.d.ts +1 -1
  300. package/dist/types/cortex.d.ts +2 -2
  301. package/dist/types/identities.d.ts +1 -1
  302. package/dist/types/integration-rules.d.ts +1 -1
  303. package/dist/types/interval.d.ts +1 -1
  304. package/dist/types/latex-syntax.d.ts +2 -2
  305. package/dist/types/math-json/symbols.d.ts +1 -1
  306. package/dist/types/math-json/types.d.ts +1 -1
  307. package/dist/types/math-json/utils.d.ts +1 -1
  308. package/dist/types/math-json.d.ts +2 -2
  309. package/dist/types/numerics.d.ts +1 -1
  310. package/dist/umd-min/compile.cjs +14 -14
  311. package/dist/umd-min/compute-engine.cjs +14 -14
  312. package/dist/umd-min/core.cjs +14 -14
  313. package/dist/umd-min/cortex.cjs +15 -15
  314. package/dist/umd-min/identities.cjs +2 -2
  315. package/dist/umd-min/integration-rules.cjs +2 -2
  316. package/dist/umd-min/interval.cjs +2 -2
  317. package/dist/umd-min/latex-syntax.cjs +2 -2
  318. package/dist/umd-min/math-json.cjs +2 -2
  319. package/dist/umd-min/numerics.cjs +2 -2
  320. package/package.json +1 -1
@@ -1,17 +1,17 @@
1
- /** Compile 0.86.1 */
1
+ /** Compile 0.86.2 */
2
2
  (function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Compile = {}));})(this, (function (exports) { 'use strict';
3
3
  "use strict";var Compile=(()=>{var is=Object.defineProperty;var Th=Object.getOwnPropertyDescriptor;var _h=Object.getOwnPropertyNames;var Ih=Object.prototype.hasOwnProperty;var Sh=(e,n)=>{for(var t in n)is(e,t,{get:n[t],enumerable:!0})},wh=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of _h(n))!Ih.call(e,r)&&r!==t&&is(e,r,{get:()=>n[r],enumerable:!(i=Th(n,r))||i.enumerable});return e};var Mh=e=>wh(is({},"__esModule",{value:!0}),e);var rE={};Sh(rE,{BaseCompiler:()=>N,GLSLTarget:()=>Vo,GPUShaderTarget:()=>Yn,IntervalJavaScriptTarget:()=>es,JavaScriptTarget:()=>Oo,PythonTarget:()=>jo,WGSLTarget:()=>qo,compile:()=>ep,version:()=>iE});var Le=class extends Error{cause;value;constructor({message:n,value:t,cause:i}={}){super(n??"Operation canceled"),t&&(this.value=t),this.cause=i,this.name="CancellationError"}};function rn(e){if(e!==void 0&&Date.now()>=e)throw new Le({cause:"timeout",message:"Timeout exceeded"})}var fr;function It(){return fr}function dr(e,n){let t=fr;fr=e;try{return n()}finally{fr=t}}function Rn(e,n){let t=Date.now();for(;;){let{done:i,value:r}=e.next();if(i)return r;if(Date.now()-t>=n)throw new Le({value:r,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}}function pr(e,n,t={}){let{contract:i=.125,step:r=1,power:o=1,atol:s=1e-16,rtol:a=s>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2,deadline:c=It()}=t;return isFinite(n)?dr(c,()=>{let f=r,d=Math.pow(1/i,o),p=e(n+f),h=[p],b=1/0,y=1;for(;y<u;){rn(c),y+=1,f*=i,h.push(e(n+f));let v=d,T=1/0;for(let _=h.length-2;_>=0;_--){let A=h[_];h[_]=h[_+1]+(h[_+1]-h[_])/(v-1);let k=Math.abs(h[_]-A);T=Math.min(T,k),k<b&&(p=h[_],b=k),v*=d}if(T>l*b||!isFinite(T)||b<=Math.max(a*Math.abs(p),s))break}return[p,b]}):pr(f=>e(1/f),1/n,{rtol:a,atol:s,maxeval:u,contract:Math.abs(i)>1?1/i:i,step:1/r,power:o,deadline:c})}var ql=new Map,kh=1e5;function Y(e){if(e<=kh){let n=ql.get(e);return n===void 0&&(n=10n**BigInt(e),ql.set(e,n)),n}return 10n**BigInt(e)}function yn(e){if(e<0n&&(e=-e),e===0n)return 0;let n=0,t=1;for(;e>>BigInt(t)>0n;)t*=2;for(let i=t>>1;i>=1;i>>=1)e>>BigInt(i)>0n&&(n+=i,e>>=BigInt(i));return n+1}function zl(e,n,t){return e*n>>BigInt(t)}function jl(e,n,t){return(e<<BigInt(t))/n}function gr(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t=e<<BigInt(n),i;if(n<Ah){i=os(t);let a;do a=i,i=(i+t/i)/2n;while(ze(i-a)>1n)}else i=ss(t,yn(t));let r=(i+t/i)/2n,o=ze(i*i-t);return ze(r*r-t)<o?r:i}function os(e){let n=yn(e);if(n<=1023){let s=Math.sqrt(Number(e));if(Number.isFinite(s)&&s>=1)return BigInt(Math.floor(s))}let t=n-52,i=Number(e>>BigInt(t)),r=Math.sqrt(i);t&1&&(r*=Math.SQRT2);let o=BigInt(Math.round(r))<<BigInt(t>>1);return o>0n?o:1n}var Gl=1024,Ah=640;function ss(e,n){if(n<Gl){let o=os(e),s;do s=o,o=(o+e/o)/2n;while(ze(o-s)>1n);for(;o*o>e;)o-=1n;for(;(o+1n)*(o+1n)<=e;)o+=1n;return o}let t=n>>2<<1,i=ss(e>>BigInt(t),n-t)<<BigInt(t>>1),r;do r=i,i=(i+e/i)/2n;while(ze(i-r)>1n);for(;i*i>e;)i-=1n;for(;(i+1n)*(i+1n)<=e;)i+=1n;return i}function ze(e){return e<0n?-e:e}function wt(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n){let i=Number(e);return i<1e8?i<1e4?i<100?i<10?1:2:i<1e3?3:4:i<1e6?i<1e5?5:6:i<1e7?7:8:i<1e12?i<1e10?i<1e9?9:10:i<1e11?11:12:i<1e14?i<1e13?13:14:i<1e15?15:16}let n=e.toString(16).length*4,t=Math.ceil(n*.30102999566398);for(;e<Y(t-1);)t--;for(;e>=Y(t);)t++;return t}var Ch=.7;function as(e,n){if(e===0n)return 1n<<BigInt(n);let t=Math.round(Ch*Math.sqrt(n)),i=t+8,r=n+i,o=BigInt(r),s=1n<<o,a=BigInt(i),u=e<<a,l=u<0n,c=l?-u:u,f=Math.max(0,yn(c)-r+t);c>>=BigInt(f),u=l?-c:c;let d=s,p=u;d+=p;for(let h=2;p=(p*u>>o)/BigInt(h),p!==0n;h++)d+=p;for(let h=0;h<f;h++)d=d*d>>o;return d+(1n<<a-1n)>>a}var $h=4e4;function us(e,n){let t=1n<<BigInt(n);if(e<=0n)throw new RangeError("fpln: input must be positive");return e===t?0n:n>=$h?Dh(e,n):Rh(e,n)}function Rh(e,n){let t=BigInt(n),i=1n<<t,r=52,o=n-r,s;if(o>0){let h=Number(e>>BigInt(o))/2**r;s=BigInt(Math.round(Math.log(h)*2**r))<<BigInt(o)}else{let h=Number(e)/Number(i);s=BigInt(Math.round(Math.log(h)*Number(i)))}let a=e*as(-s,n)>>t,l=(a-i<<t)/(a+i),c=l<0n?-l:l,f=c*c>>t,d=c,p=c;for(let h=3n;d=d*f>>t,d!==0n;h+=2n)p+=d/h;return s+(l<0n?-2n:2n)*p}var Kn=null;function Ph(e){if(Kn!==null){if(Kn.bits===e)return Kn.value;if(Kn.bits>e)return Kn.value>>BigInt(Kn.bits-e)}let n=Math.ceil(e*br)+12,t;if(n<=Jl.length){let i=Jl.slice(0,n);t=(BigInt(i)<<BigInt(e))/Y(i.length)}else t=qh(e);return Kn={bits:e,value:t},t}function Dh(e,n){let t=BigInt(n),i=yn(e)-n,r=Math.max(2,Math.ceil(n/2+4-i)),o=e<<BigInt(r-2),s=1n<<t,a=o;for(;ze(s-a)>1n;){let l=s+a>>1n;a=oi(s*a),s=l}return hr(n)*o/(2n*s)-BigInt(r)*Ph(n)}var St="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",br=Math.log10(2),Jl="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",Fh=13591409n,Oh=545140134n,Bh=10939058860032000n,Lh=47.11;function mr(e,n){if(n-e===1){let l,c;if(e===0)l=1n,c=1n;else{l=BigInt(6*e-5)*BigInt(2*e-1)*BigInt(6*e-1);let d=BigInt(e);c=d*d*d*Bh}let f=l*(Fh+Oh*BigInt(e));return e&1&&(f=-f),[l,c,f]}let t=e+n>>1,[i,r,o]=mr(e,t),[s,a,u]=mr(t,n);return[i*s,r*a,a*o+i*u]}function Ul(e){return Math.max(2,Math.floor(e/Lh)+3)}function Vh(e){let[,n,t]=mr(0,Ul(e)),i=1n<<BigInt(e),r=oi(10005n*i*i);return n*426880n*r/t}function Hl(e){let[,n,t]=mr(0,Ul(Math.ceil(e/br))),i=Y(e),r=oi(10005n*i*i);return n*426880n*r/t}function rs(e,n){if(n-e===1){let l=e===0?1n:BigInt(2*e-1),c=e===0?1n:9n*BigInt(2*e+1);return[l,c,l]}let t=e+n>>1,[i,r,o]=rs(e,t),[s,a,u]=rs(t,n);return[i*s,r*a,a*o+i*u]}function qh(e){let n=Math.max(2,Math.ceil(e/3.169925)+5),[,t,i]=rs(0,n);return(i<<BigInt(e+1))/(3n*t)}function oi(e){if(e<0n)throw new RangeError("bigintSqrt: negative input");if(e===0n)return 0n;let n=yn(e);if(n>=Gl)return ss(e,n);let t=os(e),i;do i=t,t=(t+e/t)/2n;while(ze(t-i)>1n);for(;t*t>e;)t-=1n;for(;(t+1n)*(t+1n)<=e;)t+=1n;return t}var Qn=null;function hr(e){if(Qn!==null){if(Qn.bits===e)return Qn.value;if(Qn.bits>e)return Qn.value>>BigInt(Qn.bits-e)}let n=Jh(e);return Qn={bits:e,value:n},n}function Jh(e){let n=Math.ceil(e*br)+12;if(n+1<=St.length){let t=St.slice(0,n+1);return(BigInt(t)<<BigInt(e))/Y(t.length-1)}return Vh(e)}function yr(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return[0n,i];let r=hr(n),o=2n*r,s=r/2n,a,u=ze(e);if(u>i<<30n){let k=yn(u)-n+64,O=n+k,j=e<<BigInt(k),re=2n*hr(O),oe=j%re;oe<0n&&(oe+=re),a=oe>>BigInt(k)}else a=e%o;a<0n&&(a+=o);let l=1n,c=1n;a>3n*s?(a=o-a,l=-1n):a>r?(a=a-r,l=-1n,c=-1n):a>s&&(a=r-a,c=-1n);let f=Math.round(n*br),d=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(f)))),p=0,h=i>>BigInt(d);for(;a>h;)a=a/2n,p++;let b=a,y=i,v=a,T=i,_=a*a,A=2n*t;for(let k=2;;k+=2){if(T=(T*_>>A)/(BigInt(k)*BigInt(k-1)),T===0n){v=(v*_>>A)/(BigInt(k+1)*BigInt(k)),v!==0n&&(k%4===2?(y-=T,b-=v):(y+=T,b+=v));break}if(v=(v*_>>A)/(BigInt(k+1)*BigInt(k)),k%4===2?(y-=T,b-=v):(y+=T,b+=v),v===0n)break}for(let k=0;k<p;k++){let O=2n*b*y>>t,j=(2n*y*y>>t)-i;b=O,y=j}return[l*b,c*y]}function ri(e,n){if(e===0n)return 0n;if(e<0n)return-ri(-e,n);let t=BigInt(n),i=1n<<t,o=hr(n)/2n;if(e>i){let p=(i<<t)/e;return o-ri(p,n)}let s=4n*i/10n,a=0,u=e;for(;u>s;){let p=u*u,h=(i<<t)+p>>t,b=gr(h,n);u=(u<<t)/(i+b),a++}let l=u,c=u,f=u*u,d=2n*t;for(let p=3;c=c*f>>d,c!==0n;p+=2)p%4===3?l-=c/BigInt(p):l+=c/BigInt(p);for(let p=0;p<a;p++)l=2n*l;return l}var ls=NaN,x=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let n=e.precision;if(e._piCache!==null&&e._piCachePrecision===n)return e._piCache;let t=n+4,i;if(t+1<=St.length)e._piFullPrecision===null&&(e._piFullPrecision=new e(St[0]+"."+St.slice(1))),i=e._piFullPrecision.toPrecision(t);else{let r=t+4;i=W(Hl(r),-r).toPrecision(t)}return e._piCache=i,e._piCachePrecision=n,i}static get EULER_GAMMA(){let n=e.precision;if(e._eulerGammaCache!==null&&e._eulerGammaCachePrecision>=n)return e._eulerGammaCache.toPrecision(n);let t=Gh(n);return e._eulerGammaCache=t,e._eulerGammaCachePrecision=n,t}significand;exponent;_digits;digitCount(){return this._digits??(this._digits=wt(this.significand))}constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=xr(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=Uh(n);return}[this.significand,this.exponent]=Kl(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 ls;let p=this.exponent;if(Number.isNaN(p))return ls;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(p))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)&&p>=0&&p<=15){let h=this.significand*Y(p),b=BigInt(n);return h<b?-1:h>b?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,o=n.significand;if(t!==t||i!==i)return ls;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===o?0:r>o?1:-1:Number.isFinite(t)?o>0n?-1:1:r>0n?1:-1;if(r===0n)return o===0n?0:o>0n?-1:1;if(o===0n)return r>0n?1:-1;if(r>0n&&o<0n)return 1;if(r<0n&&o>0n)return-1;if(t===i)return r<o?-1:r>o?1:0;let s=this.digitCount(),a=n.digitCount(),u=s+t,l=a+i;if(u!==l){let p=r>0n?1:-1;return u>l?p:-p}let c=r,f=o,d=Math.abs(t-i);if(d>1e3){let p=s,h=a,b=Math.max(p,h)+1;p<b&&(c=c*Y(b-p)),h<b&&(f=f*Y(b-h))}else t<i?f=f*Y(d):c=c*Y(d);return c<f?-1:c>f?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*Y(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 W(this.significand+n.significand,t);let s=t-i;return s>0?W(this.significand*Y(s)+n.significand,i):W(this.significand+n.significand*Y(-s),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),o=!Number.isFinite(i);return r&&o?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 W(this.significand-n.significand,t);let s=t-i;return s>0?W(this.significand*Y(s)-n.significand,i):W(this.significand-n.significand*Y(-s),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),o=!Number.isFinite(i);return r&&o?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 W(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,o=n.significand>0n?1n:-1n;return r*o>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}mulToPrecision(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,o=this.significand,s=n.significand;if(o!==0n&&s!==0n&&Number.isFinite(i)&&Number.isFinite(r)){let a=o*s,u=i+r,l=this.digitCount()+n.digitCount()-1,f=(a<0n?-a:a)>=Y(l)?l+1:l;return f<=t?W(a,u):Zl(a,u).roundToPrecKnownDigits(t,f)}return this.mul(n).toPrecision(t)}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?W(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?W(-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(W(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(W(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=W(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/Y(-n);return W(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,o=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(o===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return W(0n,0);let u=e.precision,l=10,c=this.digitCount(),f=n.digitCount(),d=u+l+Math.max(0,f-c),p=Y(d),h=r*p/o,b=t-i-d,y=h<0n?-h:h,v=c+d-f,T=y>=Y(v)?v+1:v;return Zl(h,b).roundToPrecKnownDigits(u,T)}if(t!==t||i!==i)return e.NAN;let s=!Number.isFinite(t),a=!Number.isFinite(i);if(s&&a)return e.NAN;if(s){let u=r>0n?1n:-1n,l=o>0n?1n:o<0n?-1n:1n;return u*l>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return W(0n,0)}inv(){return W(1n,0).div(this)}divToward(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,o=this.significand,s=n.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||s===0n||o===0n)return this.div(n);let a=o<0n!=s<0n,u=o<0n?-o:o,l=s<0n?-s:s,c=e.precision,d=c+10+Math.max(0,n.digitCount()-this.digitCount()),p=u*Y(d),h=p/l,b=p%l!==0n,y=i-r-d,v=this.digitCount()+d-n.digitCount(),T=h>=Y(v)?v+1:v,_=a?t==="floor":t==="ceiling",[A,k]=Yl(h,b,y,c,_,T);return W(a?-A:A,k)}sqrtToward(n){if(this.significand===0n)return this.exponent!==this.exponent?this:e.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?e.POSITIVE_INFINITY:e.NAN;if(this.significand<0n)return e.NAN;let t=e.precision,i=4,r=this.significand,o=this.exponent,s=o+this.digitCount()-1,a=Math.floor(s/2),u=t+i-a;o+2*u<0&&(u=Math.ceil(-o/2)+1);let l=o+2*u,c=l>=0?r*Y(l):r/Y(-l),f=oi(c),d=f*f!==c,[p,h]=Yl(f,d,-u,t,n==="ceiling");return W(p,h)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(n.significand===0n)return e.NAN;if(this.significand===0n)return W(0n,0);let r=t-i,o=r>=0?this.significand*Y(r):this.significand,s=r>=0?n.significand:n.significand*Y(-r),a=o/s;return this.sub(W(a,0).mul(n))}return 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 a=n.toBigInt();if(a===0n)return W(1n,0);if(!this.isFinite())return a>0n?this.significand<0n&&a%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:W(0n,0);if(this.isZero())return a>0n?W(0n,0):e.POSITIVE_INFINITY;if(a<0n)return this.pow(n.neg()).inv();let u=this.significand<0n?-this.significand:this.significand,l=this.digitCount(),c=l>15?l-15:0,f=c>0?Number(u/10n**BigInt(c)):Number(u),d=Math.log10(f)+c+this.exponent,p=Number(a)*d;if(p>9e15)return this.significand<0n&&a%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(p<-9e15)return W(0n,0);let h=e.precision,b=a.toString(2).length,y=Math.min(2*b+5,100),v=h+y,T=W(1n,0),_=this,A=a;for(;A>0n;)A&1n&&(T=T.mulToPrecision(_,v)),A>>=1n,A>0n&&(_=_.mulToPrecision(_,v));return T.toPrecision(h)}if(!this.isFinite())return this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO;if(this.isZero())return n.significand>0n?e.ZERO:e.POSITIVE_INFINITY;if(this.significand<0n)return e.NAN;let t=this.exponent+this.digitCount()-1,r=n.exponent+n.digitCount()-1+Math.log10(Math.abs(t)*2.303+3)+1,o=Math.min(20,Math.max(2,Math.ceil(r)+2)),s=e.precision;e.precision=s+o;try{let a=jh(this,s+o);return n.mul(a).exp().toPrecision(s)}finally{e.precision=s}}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,o=n?"-":"";if(r>20||r<-6){let u=i===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${o}${u}e${l}${r}`}if(this.exponent>=0)return o+t+"0".repeat(this.exponent);let s=-this.exponent;if(s<i){let u=t.slice(0,i-s),l=t.slice(i-s);return`${o}${u}.${l}`}let a=s-i;return`${o}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,o=this.exponent+t,s,a;if(o>=0)a=r===0n,s=a?"0":r.toString()+"0".repeat(o);else{let f=Y(-o),d=r/f,p=r%f,h=f/2n,b;p>h?b=d+1n:p<h||f%2n!==0n||d%2n===0n?b=d:b=d+1n,a=b===0n,s=b.toString()}let u=i&&!a?"-":"";if(t===0)return`${u}${s}`;if(s.length<=t){let f=s.padStart(t,"0");return`${u}0.${f}`}let l=s.slice(0,s.length-t),c=s.slice(s.length-t);return`${u}${l}.${c}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.digitCount();return t<=n?this:this.roundToPrecKnownDigits(n,t)}roundToPrecKnownDigits(n,t){let i=this.significand<0n?-this.significand:this.significand,r=t-n,o=Y(r),s=i/o,a=i-s*o,u=o/2n;(a>u||a===u&&s%2n!==0n)&&(s+=1n);let l=this.significand<0n?-s:s;return W(l,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*Y(this.exponent);let n=Y(-this.exponent);return this.significand/n}},zh=8,si=[];function jh(e,n){let t=e.significand,i=e.exponent;for(let o=si.length-1;o>=0;o--){let s=si[o];if(s.prec===n&&s.exp===i&&s.sig===t)return s.ln}let r=e.ln();return si.push({sig:t,exp:i,prec:n,ln:r}),si.length>zh&&si.shift(),r}function Gh(e){let n=e+20+Math.ceil(Math.log10(e+10)),t=x.precision;x.precision=n;try{let i=Math.ceil(n*Math.LN10/4)+5,r=new x(i),o=r.mul(r),s=x.ONE,a=x.ONE,u=x.ZERO,l=x.ZERO,c=x.ONE.div(new x(10).pow(n)),f=6*i+100;for(let d=1;d<=f;d++){let p=new x(d).mul(d);if(s=s.mul(o).div(p).toPrecision(n),l=l.add(x.ONE.div(d)).toPrecision(n),a=a.add(s).toPrecision(n),u=u.add(s.mul(l)).toPrecision(n),d>i&&s.lt(a.mul(c)))break}return u.div(a).sub(r.ln()).toPrecision(e)}finally{x.precision=t}}function W(e,n){let[t,i]=xr(e,n),r=Object.create(x.prototype);return r.significand=t,r.exponent=i,r}function Zl(e,n){let t=Object.create(x.prototype);return t.significand=e,t.exponent=n,t}function Yl(e,n,t,i,r,o){if(e===0n)return[r&&n?1n:0n,t];let s=o??wt(e);if(s<=i)return[r&&n?e+1n:e,t];let a=s-i,u=Y(a),l=e/u,c=n||e%u!==0n;return r&&c&&(l+=1n),[l,t+a]}var Wl=1000000000n,Xl=1000n;function xr(e,n){if(e===0n)return[0n,0];if((e&1n)!==0n)return[e,n];if(e%10n!==0n)return[e,n];for(;e%Wl===0n;)e/=Wl,n+=9;for(;e%Xl===0n;)e/=Xl,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function Uh(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?xr(BigInt(e),0):Kl(e.toString())}function Kl(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 o=n.indexOf("."),s,a;o===-1?(s=n,a=""):(s=n.slice(0,o),a=n.slice(o+1)),s=s.replace(/^0+/,"")||"0";let u=s+a;if(u.length===0||!/^\d+$/.test(u))return[0n,NaN];let l=BigInt(u);r&&(l=-l);let c=-a.length;return xr(l,c+t)}var Hh=Math.log2(10),nc=Math.log10(2),Zh=16,fs=1e6;function xn(e,n){let t=Math.ceil(n*Hh)+Zh,i=BigInt(t);return e.exponent>=0?[e.significand*Y(e.exponent)<<i,t]:[(e.significand<<i)/Y(-e.exponent),t]}function En(e,n,t){if(e===0n)return x.ZERO;let i=e<0n,r=i?-e:e,o=BigInt(n),s=yn(r)-n,a=Math.floor(s*nc),u=t+4-a,l,c;if(u>=0)l=r*Y(u)+(1n<<o-1n)>>o,c=-u;else{let d=Y(-u)<<o;l=(r+d/2n)/d,c=-u}if(l===0n)return x.ZERO;let f=wt(l);if(f>t){let d=f-t,p=Y(d),h=p/2n,b=l%p;l=l/p,b>=h&&(l+=1n),c+=d}return W(i?-l:l,c)}function Ae(e){return e.exponent+e.digitCount()-1}function cs(e,n){if(e===0n)return 0;let t=e<0n?-e:e,i=n*nc-(wt(t)-1);return i>0?Math.ceil(i):0}var tc=5,Ql=BigInt(Number.MAX_SAFE_INTEGER),et=null;function ic(e){if(et!==null){if(et.bits===e)return et.value;if(et.bits>e)return et.value>>BigInt(et.bits-e)}let n=us(10n<<BigInt(e),e);return et={bits:e,value:n},n}x.prototype.sqrt=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.significand<0n)return x.NAN;let e=x.precision,n=e+10,t=Ae(this),i=Math.floor(t/2),r=W(this.significand,this.exponent-2*i),[o,s]=xn(r,n),a=gr(o,s),u=En(a,s,e);return W(u.significand,u.exponent+i)};x.prototype.cbrt=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=x.precision,n=e+10,t=Ae(this),i=Math.floor(t/3),r=W(this.significand,this.exponent-3*i),[o,s]=xn(r,n),a=o<<BigInt(2*s),u,l=r.toNumber();if(s<=1e3&&Number.isFinite(l)&&l>0){let d=Number(1n<<BigInt(s)),p=Math.cbrt(l);Number.isFinite(p)&&p>0?(u=BigInt(Math.floor(p*d)),u===0n&&(u=1n)):u=ec(a)}else u=ec(a);let c;do{c=u;let d=u*u;if(d===0n){u=1n;break}u=(2n*u+a/d)/3n}while(ze(u-c)>1n);{let d=(2n*u+a/(u*u))/3n,p=ze(u*u*u-a);ze(d*d*d-a)<p&&(u=d)}let f=En(u,s,e);return W(f.significand,f.exponent+i)};x.sqrt=function(e){return e.sqrt()};x.cbrt=function(e){return e.cbrt()};x.prototype.exp=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.ZERO;if(this.isZero())return x.ONE;if(Ae(this)>=17)return this.significand>0n?x.POSITIVE_INFINITY:x.ZERO;let e=x.precision,n=Math.max(0,this.exponent+this.digitCount()),t=e+20+n,[i,r]=xn(this,t),o=ic(r),s=i/o,a=i-s*o;if(a<0n&&(s-=1n,a+=o),s>Ql||s<-Ql)return s>0n?x.POSITIVE_INFINITY:x.ZERO;let u=En(as(a,r),r,e),l=u.exponent+Number(s);return Number.isSafeInteger(l)?W(u.significand,l):s>0n?x.POSITIVE_INFINITY:x.ZERO};x.prototype.ln=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.isZero())return x.NEGATIVE_INFINITY;if(this.significand<0n)return x.NAN;if(this.eq(1))return x.ZERO;let e=x.precision,n=this.significand,t=this.digitCount(),i=this.exponent+t-1,r=W(n,-(t-1)),o=Math.abs(i).toString().length,s=0;if(i===0||i===-1){let d=this.sub(x.ONE);if(!d.isZero()){let p=Ae(d);p<0&&(s=-p)}}let a=e+20+o+s,[u,l]=xn(r,a),c=ic(l),f=us(u,l)+BigInt(i)*c;return En(f,l,e)};x.prototype.log=function(e){let n=e instanceof x?e:new x(e),t=x.precision;x.precision=t+10;try{return this.ln().div(n.ln()).toPrecision(t)}finally{x.precision=t}};x.exp=function(e){return e.exp()};x.ln=function(e){return e.ln()};x.log10=function(e){return e.log(10)};x.log2=function(e){return e.log(2)};x.prototype.sin=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=x.precision,n=Ae(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>fs)return x.NAN;let[i,r]=xn(this,t),[o]=yr(i,r);return En(o,r,e)};x.prototype.cos=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ONE;let e=x.precision,n=Ae(this),t=0;for(let i=0;;i++){let r=e+15+t;if(n+r+30>fs)return x.NAN;let[o,s]=xn(this,r),[,a]=yr(o,s);if(a===0n){if(i>=3)return x.ZERO;t+=e+30;continue}let u=cs(a,s);if(u<=t+tc||i>=3)return En(a,s,e);t=u+5}};x.prototype.tan=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=x.precision,n=Ae(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=n<0?-n:0,i=0;for(let r=0;;r++){let o=e+15+t+i;if(n+o+30>fs)return x.NAN;let[s,a]=xn(this,o),[u,l]=yr(s,a);if(l===0n){if(r>=3)return u>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;i+=e+30;continue}let c=Math.max(u===0n?0:cs(u,a),cs(l,a));if(c<=i+tc||r>=3){let f=(u<<BigInt(a))/l;return En(f,a,e)}i=c+5}};x.prototype.atan=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite()){let s=x.PI.div(x.TWO);return this.significand>0n?s:s.neg()}let e=x.precision,n=Ae(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0),[i,r]=xn(this,t),o=ri(i,r);return En(o,r,e)};x.prototype.asin=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=this.abs(),n=x.ONE;if(e.gt(n))return x.NAN;if(e.eq(n)){let p=x.PI.div(x.TWO);return this.significand>0n?p:p.neg()}let t=x.precision,i=Ae(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=t+20+(i<0?-i:0),[o,s]=xn(this,r),a=1n<<BigInt(s),u=zl(o,o,s),l=a-u,c=gr(l,s),f=jl(o,c,s),d=ri(f,s);return En(d,s,t)};x.prototype.acos=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.abs().gt(x.ONE))return x.NAN;if(this.eq(1))return x.ZERO;if(this.eq(-1))return x.PI;let n=x.precision,t=x.precision;x.precision=n+10;try{let i=x.TWO;if(this.significand>=0n){let o=x.ONE.sub(this).mulToPrecision(x.HALF,n+10).sqrt();return i.mulToPrecision(o.asin(),n)}let r=x.ONE.add(this).mulToPrecision(x.HALF,n+10).sqrt();return x.PI.sub(i.mul(r.asin())).toPrecision(n)}finally{x.precision=t}};x.sin=function(e){return e.sin()};x.cos=function(e){return e.cos()};x.tan=function(e){return e.tan()};x.asin=function(e){return e.asin()};x.acos=function(e){return e.acos()};x.atan=function(e){return e.atan()};x.atan2=function(e,n){let t=e instanceof x?e:new x(e);if(t.isNaN()||n.isNaN())return x.NAN;let i=x.PI,r=i.div(x.TWO);if(n.isZero())return t.isZero()?x.ZERO:t.significand>0n?r:r.neg();let o=t.div(n);return n.significand>0n?o.atan():t.significand>=0n?o.atan().add(i):o.atan().sub(i)};x.prototype.sinh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;let e=x.precision,n=Ae(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let r=x.precision;x.precision=e-n+5;try{let o=this.exp();return o.sub(o.inv()).mulToPrecision(x.HALF,e)}finally{x.precision=r}}if(Math.abs(this.toNumber())>1.16*(e+3)){let r=this.abs().exp().div(x.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),i=t.inv();return t.sub(i).div(x.TWO)};x.prototype.cosh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ONE;if(!this.isFinite())return x.POSITIVE_INFINITY;let e=x.precision;if(Math.abs(this.toNumber())>1.16*(e+3))return this.abs().exp().div(x.TWO);let n=this.exp(),t=n.inv();return n.add(t).div(x.TWO)};x.prototype.tanh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.ONE:x.NEGATIVE_ONE;let e=x.precision,n=Ae(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let i=x.precision;x.precision=e-n+5;try{let r=this.mul(x.TWO).exp();return r.sub(x.ONE).div(r.add(x.ONE)).toPrecision(e)}finally{x.precision=i}}if(Math.abs(this.toNumber())>1.16*(e+3))return this.significand>0n?x.ONE:x.NEGATIVE_ONE;let t=this.mul(x.TWO).exp();return t.sub(x.ONE).div(t.add(x.ONE))};x.sinh=function(e){return e.sinh()};x.cosh=function(e){return e.cosh()};x.tanh=function(e){return e.tanh()};x.prototype.expm1=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_ONE;if(this.isZero())return x.ZERO;let e=x.precision,n=Ae(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let t=x.precision;x.precision=e-n+5;try{return this.exp().sub(x.ONE).toPrecision(e)}finally{x.precision=t}}return this.exp().sub(x.ONE)};x.prototype.log1p=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.isZero())return x.ZERO;let e=x.ONE.add(this);if(e.isZero())return x.NEGATIVE_INFINITY;if(e.significand<0n)return x.NAN;let n=x.precision,t=Ae(this);if(t<0&&-t>=n+2)return this.toPrecision(n);if(t<0){let i=x.precision;x.precision=n-t+5;try{return x.ONE.add(this).ln().toPrecision(n)}finally{x.precision=i}}return x.ONE.add(this).ln()};x.prototype.asinh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;let e=this.significand<0n,n=this.abs(),t=x.precision,i=Ae(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=()=>n.add(n.mul(n).add(x.ONE).sqrt()).ln(),o;if(i<0){let s=x.precision;x.precision=t-i+5;try{o=r().toPrecision(t)}finally{x.precision=s}}else o=r();return e?o.neg():o};x.prototype.acosh=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.lt(x.ONE))return x.NAN;if(this.eq(1))return x.ZERO;let e=this.sub(x.ONE).div(x.TWO).sqrt();return x.TWO.mul(e.asinh())};x.prototype.atanh=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=this.abs();if(e.eq(1))return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;if(e.gt(x.ONE))return x.NAN;let n=x.precision,t=Ae(this);if(-2*t>=n+4)return this.toPrecision(n);let i=x.precision;x.precision=n-t+5;try{return x.ONE.add(this).div(x.ONE.sub(this)).ln().mulToPrecision(x.HALF,n)}finally{x.precision=i}};x.prototype.nthRoot=function(e){if(this.isNaN()||!Number.isInteger(e)||e===0)return x.NAN;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.cbrt();if(e<0)return this.nthRoot(-e).inv();if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:e%2===0?x.NAN:x.NEGATIVE_INFINITY;if(this.significand<0n)return e%2===0?x.NAN:this.neg().nthRoot(e).neg();let n=x.precision,t=x.precision;x.precision=n+8;try{return x.exp(this.ln().div(new x(e))).toPrecision(n)}finally{x.precision=t}};x.asinh=function(e){return e.asinh()};x.acosh=function(e){return e.acosh()};x.atanh=function(e){return e.atanh()};x.expm1=function(e){return e.expm1()};x.log1p=function(e){return e.log1p()};x.nthRoot=function(e,n){return e.nthRoot(n)};function ec(e){let n=yn(e);if(n<=1023){let u=Math.cbrt(Number(e));if(Number.isFinite(u)&&u>=1)return BigInt(Math.floor(u))}let t=n-51,i=Number(e>>BigInt(t)),r=Math.cbrt(i),o=Math.floor(t/3),s=t%3;s===1&&(r*=1.2599210498948732),s===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(o);return a>0n?a:1n}var EE=1n<<32n;var vE=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var Yh=53,rc=Math.floor(Math.log10(Math.pow(2,Yh))),Wh=1e-10,Ve=1e6;var Mt=1e4;function kt(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function vr(e,n){if(e===0||n===0)return 0;let t=BigInt(e)*BigInt(n)/BigInt(kt(e,n));return t<0n&&(t=-t),Number(t)}var oc=1e-6;function ds(e,n,t=oc){if(e=Math.abs(e),n=Math.abs(n),!Number.isFinite(e)||!Number.isFinite(n))return NaN;if(e===0)return n;if(n===0)return e;if(Number.isInteger(e)&&Number.isInteger(n)){for(;n!==0;)[e,n]=[n,e%n];return e}let i=Math.min(e,n),r=t*Math.max(e,n);for(let o=0;o<1e4&&n>r;o++)[e,n]=[n,e%n];return e>i?i:e}function sc(e,n,t=oc){if(e===0||n===0)return 0;if(Number.isInteger(e)&&Number.isInteger(n))return vr(e,n);let i=ds(e,n,t);return!Number.isFinite(i)||i===0?NaN:Math.abs(e*n/i)}function ui(e){if(!Number.isInteger(e)||e<0)return NaN;if(e>=170)return 1/0;let n=1;for(let t=2;t<=e;t++)n=n*t;return n}function li(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}function ci(e,n=Wh){return typeof e=="number"&&Math.abs(e)<=n?0:e}function Xh(e,n,t,i){let s=!Number.isFinite(n),a=h=>s?1/h:n+h,u=(h,b,y)=>{let v=.01*Math.max(1,Math.abs(y));for(let T=1;T<=5;T++){rn(i);let _=e(a(h*Math.pow(b/h,T/6)));if(!Number.isFinite(_)||Math.abs(_-y)>v)return!1}return!0},l=s?1/t:t,c=0,f=!1,d=NaN,p=NaN;for(let h=1;h<=60;h++){rn(i);let b=e(a(l));if(!Number.isFinite(b))return h-1;let y=Math.abs(b);if(h===1){c=y,d=y,p=l,l*=.125;continue}if(Math.abs(y-d)<=1e-10*Math.max(1,y))return u(p,l,b)?1/0:0;if(f&&c>1e-6&&y<1e-8*c)return h-1;y>c&&(f=!0,c=y),d=y,p=l,l*=.125}return 1/0}function Er(e,n,t=1,i){if(i??=It(),t===0){let u=Er(e,n,-1,i),l=Er(e,n,1,i);return u===void 0||l===void 0?NaN:Math.abs(u-l)>1e-5?NaN:(u+l)/2}let r=t>0?1:-1,o=Xh(e,n,r,i);if(o===0)return NaN;let[s,a]=pr(e,n,{step:r,deadline:i,...Number.isFinite(o)?{maxeval:o}:{}});return Number.isFinite(s)&&a>1e-6*Math.max(1,Math.abs(s))?NaN:s}var Nr=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],ps=["indexed_collection","list","tuple"],Tr=[...ps,"collection","set","record","dictionary"],_r=["scalar",...Nr,"boolean","string"],ms=["value","color",...Tr,..._r],hs=["expression","symbol","function",...ms],gs=["any","unknown","nothing","never","error",...hs],At=new Set(Nr),ac=new Set(Tr),uc=new Set(_r),nt=new Set(gs);function lc(e){return typeof e!="string"?!1:nt.has(e)}function Ir(e){return typeof e=="string"?nt.has(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="value"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="broadcastable"||e.kind==="symbol"||e.kind==="expression"||e.kind==="numeric"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var Sr=class{input;pos=0;line=1;column=1;tokens=[];tolerant;constructor(n,t){this.input=n,this.tolerant=t?.tolerant??!1}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===`
4
4
  `?(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");if(this.tolerant)return this.createToken("EOF","");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 wr=class{lexer;typeResolver;current;allowTrailing;_end=0;constructor(n,t){this.allowTrailing=t?.allowTrailing??!1,this.lexer=new Sr(n,{tolerant:this.allowTrailing}),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}get endOffset(){return this._end}error(n,t){this.errorAtToken(this.current,n,t)}errorAtToken(n,t,i){let r=this.lexer.input;this.allowTrailing&&(r=r.slice(0,n.position+n.value.length));let s=r.split(`
5
5
  `)[n.line-1]||r,a=n.column,u=" ".repeat(Math.max(0,a-1))+"^",l=["","Invalid type",`| ${s}`,`| ${u}`,"|",`| ${t}`];i&&l.push(`| ${i}`),l.push("");let c=new Error(l.join(`
6
- `));throw c.position=n.position,c.rawMessage=t,c}advance(){let n=this.current;return this._end=n.position+n.value.length,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}parseTypePrefix(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();return n||this.error("Expected a type"),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,o=0,s=10;for(;this.current.type!=="EOF"&&o<s;){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}o++}this.advance(),o++}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.parseBroadcastableType()||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 s=this.parseArgument();s||this.error("Expected argument"),n.push(s)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(s=>s.modifier==="optional"),r=n.some(s=>s.modifier==="variadic_zero"||s.modifier==="variadic_one"),o=n.filter(s=>s.modifier==="variadic_zero"||s.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),o>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 o=this.parseUnionType();return o?this.createNode("named_element",{name:n,type:o}):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.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}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.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}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=this.parseDimension();if(!n)return;let t=[n];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),t.push(this.parseDimension())}else break}return t}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})}}parseCaretDimensions(){let n=this.match("("),t=this.parseDimensions();return n&&this.expect(")"),t}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 o=this.parseNamedElement();o||this.error("Expected tuple element"),r&&!o.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&o.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(o)}}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})}}parseBroadcastableType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="broadcastable"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("broadcastable",{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();this.expect(">");let o=i?.value??-1/0,s=r?.value??1/0;return(Number.isNaN(o)||Number.isNaN(s))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),o>s&&this.error(`Invalid range: ${o}..${s}`,"The lower bound must be less than the upper bound"),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(nt.has(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 cc(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"broadcastable":return n.visitBroadcastableType(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 bs=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return cc(n,this)}visitFunctionSignature(n){let t=[],i=[],r,o;for(let u of n.arguments){let l=this.buildNamedElement(u.element);switch(u.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,o=0;break;case"variadic_one":r=l,o=1;break;default:t.push(l);break}}let s=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:s};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=o),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}}visitBroadcastableType(n){return{kind:"broadcastable",elements:this.buildType(n.elementType)}}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 fc(e,n){return new bs(n).buildType(e)}var Mr=new Map,Kh=2048;function dc(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;Object.freeze(e);for(let n of Object.values(e))dc(n);return e}function L(e,n){if(e===void 0)return;if(Ir(e))return e;if(typeof e!="string")return;let t=n===void 0;if(t){let i=Mr.get(e);if(i!==void 0)return i}try{let r=new wr(e,{typeResolver:n}).parseType(),o=fc(r,n);return t&&(Mr.size>=Kh&&Mr.clear(),Mr.set(e,dc(o))),o}catch(i){throw new Error(`Failed to parse type "${e}": ${i instanceof Error?i.message:String(i)}`)}}var pc={number:Nr,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","real","rational","integer","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:gs,unknown:[],nothing:[],never:[],error:[],value:ms,scalar:_r,collection:Tr,indexed_collection:ps,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:hs},fi=(()=>{let e={},n=t=>{if(e[t])return e[t];let i=new Set([t]);e[t]=i;for(let r of pc[t])if(r!==t)for(let o of n(r))i.add(o);return i};for(let t of Object.keys(pc))n(t);return e})();function Ct(e,n){return n==="any"||e==="never"?!0:n==="never"?!1:n==="error"?e==="error":n==="nothing"?e==="nothing":e==="nothing"?!1:n==="unknown"?!0:e==="unknown"?!1:e===n?!0:fi[n].has(e)}function pi(e,n){if(e===n)return[e];let t=fi[e],i=fi[n];if(t.has(n))return[n];if(i.has(e))return[e];let r=e<n?`${e}|${n}`:`${n}|${e}`,o=mc.get(r);if(o)return o;let s=[];for(let u of t)i.has(u)&&s.push(u);let a=s.filter(u=>!s.some(l=>l!==u&&fi[l].has(u)));return mc.set(r,a),a}var mc=new Map;function Qh(e){return e.lower!==void 0&&e.upper!==void 0&&Number.isFinite(e.lower)&&Number.isFinite(e.upper)}function eg(e){switch(e){case"number":return"finite_number";case"complex":return"finite_complex";case"real":return"finite_real";case"rational":return"finite_rational";case"integer":return"finite_integer";default:return e}}var xs={finite_number:"number",finite_complex:"complex",finite_real:"real",finite_rational:"rational",finite_integer:"integer"};function ng(e){if(!e.some(t=>t==="non_finite_number"))return e;let n;for(let t of e){if(typeof t!="string")continue;let i=xs[t];i&&(n??=[]).push(i)}return n?[...e,...n]:e}function tg(e,n){if(e==="never"||n==="never")return!0;if(e==="any"||n==="any"||e==="unknown"||n==="unknown")return!1;if(e==="nothing"||n==="nothing")return e!==n;if(C(e,n)||C(n,e))return!1;if(typeof e=="object"&&e.kind==="value"||typeof n=="object"&&n.kind==="value")return!0;if(typeof e=="string"&&typeof n=="string")return pi(e,n).length===0;if(typeof e=="object"&&e.kind==="numeric"&&typeof n=="object"&&n.kind==="numeric"){if(pi(e.type,n.type).length===0)return!0;let r=e.lower??-1/0,o=e.upper??1/0,s=n.lower??-1/0,a=n.upper??1/0;return o<s||a<r}let t=di(e),i=di(n);if(t!==i){let r=t?n:e;if(!Es(r)&&!vs(r)&&!di(r))return!0}return!1}function C(e,n){if(typeof e=="string"&&!nt.has(e)&&(e=L(e)),typeof n=="string"&&!nt.has(n)&&(n=L(n)),n==="any"||e==="never")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"){if(typeof e=="string")return Ct(e,n);if(e.kind==="broadcastable")return C(e.elements,n)&&C({kind:"indexed_collection",elements:e.elements},n);if(e.kind==="value")return typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?Ct("integer",n):Ct("real",n):typeof e.value=="boolean"?Ct("boolean",n):typeof e.value=="string"?Ct("string",n):!1;if(e.kind==="union")return e.types.every(t=>C(t,n));if(e.kind==="intersection")return e.types.some(t=>C(t,n));if(e.kind==="negation")return!1;if(e.kind==="numeric"){let t=Qh(e)?eg(e.type):e.type;return!!C(t,n)}return n==="number"?di(e):n==="symbol"?ys(e):n==="expression"?rg(e):n==="function"?xc(e):n==="scalar"?Es(e):n==="value"?vs(e):n==="indexed_collection"?yc(e):n==="collection"?bc(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"){let t=ng(n.types),i=r=>C(r.elements,n)&&C({kind:"indexed_collection",elements:r.elements},n);return typeof e!="string"&&e.kind==="broadcastable"?i(e):typeof e!="string"&&e.kind==="union"?e.types.every(r=>typeof r!="string"&&r.kind==="broadcastable"?i(r):t.some(o=>C(r,o))):t.some(r=>C(e,r))}if(n.kind==="negation")return typeof e!="string"&&e.kind==="negation"?C(n.type,e.type):tg(e,n.type);if(n.kind==="expression"){if(e==="symbol")return n.operator==="Symbol";if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?ys(e):e.operator===n.operator;if(e.kind==="symbol")return n.operator==="Symbol"}if(n.kind==="broadcastable"){if(typeof e!="string"&&e.kind==="broadcastable")return C(e.elements,n.elements);if(typeof e!="string"&&e.kind==="union")return e.types.every(i=>C(i,n));if(C(e,n.elements))return!0;let t=ig(e);return t!==void 0?C(t,n.elements):!1}if(typeof e!="string"&&e.kind==="broadcastable")return C(e.elements,n)&&C({kind:"indexed_collection",elements:e.elements},n);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 C(e,n.def)}if(e.kind==="union")return e.types.some(t=>C(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>C(i,t)));if(e.kind==="intersection")return e.types.every(t=>C(t,n));if(n.kind==="intersection")return n.types.every(t=>C(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!C(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(!C(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(!C(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||!C(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(!C(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(!C(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(!C(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)||!C(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return C(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?C(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>C(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return C(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>C(t.type,n.elements));if(e.kind==="set")return C(e.elements,n.elements);if(e.kind==="dictionary")return C({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return C({kind:"tuple",elements:[{type:"string"},{type:ve(...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(!C(i.type,r.type)||r.name!==void 0&&i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!C(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(n.kind==="numeric"&&e.kind==="value"){if(typeof e.value!="number")return!1;let t=Number.isInteger(e.value)?"finite_integer":"finite_real";return!(!Ct(t,n.type)||e.value<(n.lower??-1/0)||e.value>(n.upper??1/0))}if(e.kind==="numeric"&&n.kind==="numeric")return!(!C(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!!C(e.elements,n.elements);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return C("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?C("integer",n):C("real",n);if(typeof e.value=="string")return C("string",n)}return!1}function di(e){return typeof e=="string"?At.has(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function Es(e){return di(e)?!0:typeof e=="string"?uc.has(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function bc(e){return yc(e)?!0:typeof e=="string"?ac.has(e):["collection","set","record","dictionary"].includes(e.kind)}function yc(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function ig(e){if(typeof e=="string")return e==="indexed_collection"||e==="list"?"any":void 0;if(e.kind==="indexed_collection")return e.elements;if(e.kind==="list"){let n=e.dimensions;return n&&n.length>1?{kind:"list",elements:e.elements,dimensions:n.slice(1)}:e.elements}}function vs(e){return Es(e)||bc(e)}function xc(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function rg(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||vs(e)||xc(e)||ys(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function ys(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function og(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"||C(e,n)?e:C(n,e)?n:"never"}function sg(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(C(e,n))return n;if(C(n,e))return e;let t=lg(e,n);return ag.has(t)?ug(e,n):t}var ag=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function ug(e,n){let t=[],i=new Set,r=o=>{if(typeof o=="object"&&o.kind==="union"){for(let a of o.types)r(a);return}let s=typeof o=="string"?o:JSON.stringify(o);i.has(s)||(i.add(s),t.push(o))};return r(e),r(n),t.length===1?t[0]:{kind:"union",types:t}}function Ns(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>og(n,t))}function ve(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>sg(n,t))}var hc=["non_finite_number","finite_integer","integer","finite_rational","rational","finite_real","real","imaginary","finite_complex","complex","finite_number","number","list","record","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],gc=new Map;function lg(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(typeof e=="string"&&typeof n=="string"){let t=e<n?`${e}|${n}`:`${n}|${e}`,i=gc.get(t);if(i===void 0){i="any";for(let r of hc){let o=fi[r];if(o.has(e)&&o.has(n)){i=r;break}}gc.set(t,i)}return i}for(let t of hc)if(C(e,t)&&C(n,t))return t;return"any"}var vc=3,Nc=1,Tc=2,cg=4,fg=5,dg=6,pg=7,mg=8,hg=9,gg=10,bg=11;function q(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=`!${q(e.type,vc)}`;break;case"union":{let u=[],l=c=>{typeof c=="object"&&c.kind==="union"?c.types.forEach(l):u.push(q(c,Nc))};e.types.forEach(l),t=u.sort().join(" | ");break}case"intersection":t=e.types.map(u=>q(u,Tc)).join(" & ");break;case"expression":t=`expression<${Ec(e.operator)}>`;break;case"symbol":t=`symbol<${Ec(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"&&At.has(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<${q(e.elements)}>`:t=`vector<${q(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${q(e.elements)}>`:t=`matrix<${q(e.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${q(e.elements)}${u}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([u,l])=>`${u}: ${q(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${q(e.values)}>`;break;case"set":t=`set<${q(e.elements)}>`;break;case"broadcastable":t=`broadcastable<${q(e.elements)}>`;break;case"collection":t=`collection<${q(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${q(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[u]=e.elements;t=`tuple<${$t(u)}>`}else t="tuple<"+e.elements.map(u=>$t(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>$t(u)).join(", "):"",o=e.optArgs?e.optArgs.map(u=>$t(u)+"?").join(", "):"",s=e.variadicArg?e.variadicMin===0?`${$t(e.variadicArg)}*`:`${$t(e.variadicArg)}+`:"";t=`(${[r,o,s].filter(u=>u).join(", ")}) -> ${q(e.result)}`;break;default:t="error"}return n>0&&n>yg(e.kind)?`(${t})`:t}function $t(e){return e.name?`${e.name}: ${q(e.type)}`:q(e.type)}function Ec(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function yg(e){switch(e){case"negation":return vc;case"union":return Nc;case"intersection":return Tc;case"list":return cg;case"record":return fg;case"dictionary":return dg;case"set":return pg;case"collection":case"indexed_collection":case"broadcastable":return mg;case"tuple":return hg;case"signature":return gg;case"value":return bg;default:return 0}}function _c(e){if(e==="function")return L("(any*) -> unknown");if(typeof e!="string"&&e.kind==="signature")return e}function Pn(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function le(e){if(e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="dictionary"||e==="record")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="indexed_collection")return e.elements;if(e.kind==="list"){let n=e.dimensions;return n&&n.length>1?{kind:"list",elements:e.elements,dimensions:n.slice(1)}:e.elements}if(e.kind==="set"||e.kind==="broadcastable")return e.elements;if(e.kind==="tuple")return ve(...e.elements.map(n=>n.type));if(e.kind==="dictionary")return L(`tuple<string, ${q(e.values)}>`);if(e.kind==="record")return L(`tuple<string, ${q(ve(...Object.values(e.elements)))}>`)}}function kr(e){return C(e,"complex")&&!C(e,"real")}var pe=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(ve(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(Ns(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=L(n,t):this.type=n}matches(n){return n instanceof e?C(this.type,n.type):C(this.type,n)}is(n){return C(this.type,n)&&C(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return q(this.type)}toJSON(){return q(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return q(this.type)}};function F(e){return e?._kind==="number"}function S(e,n){return e?._kind==="symbol"&&(n===void 0||e.symbol===n)}function g(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function ne(e){return e?._kind==="string"}function tt(e){return e?._kind==="tensor"}function Dn(e){return e?._kind==="dictionary"}function Q(e){return e?._kind==="symbol"?e.symbol:void 0}var C2=Object.freeze({bySubject:new Map,membership:new Map,geEdges:new Map,inequalitySubjects:new Set});var O2=[0,-1,1,Math.PI,Math.E,-Math.PI,-Math.E,.5,-.5];function vg(e){if(!e)return;let n=ne(e)?e.string:Q(e);if(n!==void 0)try{return L(n)}catch{return}}function he(e){return g(e,"Typed")?Q(e.op1)??"":Q(e)??""}function mi(e){if(g(e,"Typed"))return vg(e.op2)}var Ar;function me(e){if(!e||ne(e))return;if(e.operator==="Function"&&e.isCanonical||S(e))return e;if(g(e,"BuiltinFunction"))return e.op1;if(g(e,"Delimiter")){let o=e.op1;if(g(o,"Sequence"))if(o.nops===1)e=o;else return me(e.engine._fn("Block",o.ops,{canonical:!1}));return me(g(e)?e.op1:void 0)}if(g(e,"Function"))return hi(e.engine,e.ops);e.operator;let n=e.engine,t=e.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=n.function("Block",[t]):t=t.canonical;let o=t.unknowns;o.length>0&&(r=o.map(s=>n.symbol(s,{canonical:!1})))}return hi(n,[t,...r])}function hi(e,n){if(n.length===0)return;let t=n.slice(1).map(u=>S(u)?u:g(u,"Typed")&&S(u.op1)?Tg(e,u):e.error("expected-a-symbol",u.toString())),i=[],r=new Map;for(let u of t){let l=he(u);if(!l)continue;i.push(l);let c=mi(u);c!==void 0&&r.set(l,c)}let o=n[0],s;g(o,"Typed")&&(s=kc(e,o.op2),o=o.op1),e._pushShadowedParameters(i,r.size>0?r:void 0);let a;try{if(s===void 0)a=o.operator==="Block"?o.canonical:e.function("Block",[o]);else{let u=g(o,"Block")?[...o.ops]:[o];u.length===0&&u.push(e.Nothing);let l=u.length-1;u[l]=e._fn("Typed",[u[l],s],{canonical:!1}),a=e.function("Block",u)}}finally{e._popShadowedParameters()}a.isScoped;for(let u of t){let l=he(u);if(!l||a.localScope.bindings.has(l))continue;let c=mi(u);c!==void 0?e.declare(l,{inferred:!1,type:c},a.localScope):e.declare(l,{inferred:!0,type:"unknown"},a.localScope)}return e._fn("Function",[a,...t])}function kc(e,n){if(!n)return e.string("unknown");let t=ne(n)?n.string:Q(n);return t!==void 0?e.string(t):n}function Tg(e,n){return g(n)?e._fn("Typed",[n.op1,kc(e,n.op2)],{canonical:!1}):n}function Ic(e,n,t){if(!e.strict)return;let i=mi(n);if(i!==void 0)return t.type.matches(i)?i:void 0}function Ts(e,n){let t=e.Nothing;for(let i of n){t=i.evaluate();let r=t.operator;if(r==="Return"||r==="Break"||r==="Continue")break}return t}function _s(e,n){return n.operator==="Return"&&g(n)?n.ops.length>0?n.op1:e.Nothing:n}function Sc(e,n){let t=[],i=new Set(n.filter(r=>r));for(let[r,o]of[...e.bindings])(i.has(r)||"value"in o&&o.value.inferredType&&o.value.value===void 0)&&(t.push([r,o]),e.bindings.delete(r));return t}function wc(e,n){for(let[t,i]of n)e.bindings.set(t,i)}function Mc(e,n){if(!S(n))return n;let t=e.lookupDefinition(n.symbol);if(t&&"operator"in t){let i=t.operator._lambdaLiteral;if(i!==void 0)return i}return n}function Ss(e,n,t){if(n.operator==="Function"&&g(n)){let i=n.op1;if(i&&g(i)&&i.localScope){let r=new Set(n.ops.slice(1).map(u=>he(u)).filter(u=>u)),o=new Map;for(let[u,l]of i.localScope.bindings)r.has(u)&&o.set(u,l);let s={parent:t,bindings:o},a=e._fn("Block",i.ops,{scope:s});return e._fn("Function",[a,...n.ops.slice(1)])}return n}if(g(n)&&n.ops.length>0){let i=!1,r=n.ops.map(o=>{let s=Ss(e,o,t);return s!==o&&(i=!0),s});if(i)return e._fn(n.operator,r)}return n}function Ac(e,n){let t=e.engine,i=n;if(g(e,"Function")){let a=e.ops.slice(1).map(u=>he(u)).filter(u=>!!u);if(a.some(u=>u in n)){i={...n};for(let u of a)delete i[u]}}if(Object.keys(i).length===0)return e;let r=Q(e);if(r!==void 0)return i[r]??e;if(!g(e)||tt(e))return e.subs(i);let o=e.ops.map(a=>Ac(a,i)),s=e.isCanonical||e.isStructural?"canonical":"raw";return o.every(a=>a.isValid)?t.function(e.operator,o,{form:s}):t.function(e.operator,o,{form:"raw"})}var _g=new Set(["If","Which","When","Match"]);function Cc(e,n){return g(e)?_g.has(e.operator)&&e.has(n)?!0:e.ops.some(t=>Cc(t,n)):!1}function Is(e,n){return(t,i)=>{e._enterRecursion();try{return n(t,i)}finally{e._exitRecursion()}}}function Ig(e){let n=e.engine;if(S(e)){let f=e.symbol;return(d,p)=>n.function(f,d).evaluate(p)}let t=me(e);if(!t)throw new Error("Invalid function literal");e=t,e.operator,e.isCanonical;let i=e;if(i.ops.length===1){i.ops[0];let f=i.ops[0];if(!f.isScoped||!f.localScope)return Is(n,(p,h)=>f.evaluate(h));let d=f;return Is(n,(p,h)=>{let b=d.localScope,v={parent:b.parent??n.context.lexicalScope,bindings:new Map},T=b.parent;b.parent=v,n.pushScope(v);let _;try{_=_s(n,Ts(n,d.ops)),_=Mc(n,_),_=Ss(n,_,v),h?.numericApproximation&&(_=_.evaluate({numericApproximation:!0}))}finally{n.popScope(),b.parent=T}return _.isValid?_:void 0})}let[r,...o]=i.ops;if(r.isScoped,!r.localScope)throw new Error("Function body must be a scoped Block expression");let s=r,a=o.some(f=>mi(f)!==void 0),u=s.ops[s.ops.length-1],l=g(u,"Typed")?u.op2:void 0;return Is(n,(f,d)=>{if(f.length>o.length)throw new Error(`Too many arguments for function "${e.toString()}": expected ${o.length}, got ${f.length}`);if(n.strict&&!f.every(k=>k.isValid))return;if(f.length<o.length){let k=o.slice(f.length),O=new Set([...r.symbols,...o.map(de=>he(de))]),j=k.map((de,Be)=>{let Je=`_${Be+1}`,ts=0;for(;O.has(Je);)Je=`_${Be+1}_${ts++}`;return O.add(Je),n.symbol(Je,{canonical:!1})}),G=k.map((de,Be)=>g(de,"Typed")?n._fn("Typed",[j[Be],de.op2],{canonical:!1}):j[Be]),re=Object.fromEntries(k.map((de,Be)=>[he(de),j[Be]])),oe=f.map(de=>de.evaluate());if(n.strict&&a&&Ar){let de=i.type.type;if(typeof de!="string"&&de.kind==="signature"){let Be={kind:"signature",args:(de.args??[]).slice(0,f.length),result:de.result},Je=Ar(n,oe,Be);if(Je!==null){if(Je.some(ts=>!ts.isValid))return n._fn("Apply",[i,...Je]);oe=[...Je]}}}let ie={parent:s.localScope.parent??n.context.lexicalScope,bindings:new Map};for(let de=0;de<f.length;de++){let Be=he(o[de]);if(Be){let Je=Ic(n,o[de],oe[de]);Je!==void 0?n.declare(Be,{value:oe[de],type:Je,inferred:!1},ie):n.declare(Be,{value:oe[de],inferred:!0},ie)}}let ae=s.localScope,ke=ae.parent;ae.parent=ie;let Xn=o.slice(0,f.length).map(de=>he(de)),ns=Sc(ae,Xn);n.pushScope(ie);let Ll;try{Ll=_s(n,Ts(n,s.ops))}finally{n.popScope(),ae.parent=ke,wc(ae,ns)}let Vl=Ll.subs(re),Nh=l!==void 0?n._fn("Typed",[Vl,l],{canonical:!1}):Vl;return n.function("Function",[Nh,...G])}let p=f.map(k=>k.evaluate());if(n.strict&&a&&Ar){let k=Ar(n,p,i.type.type);if(k!==null){if(k.some(O=>!O.isValid))return n._fn("Apply",[i,...k]);p=[...k]}}let b={parent:s.localScope.parent??n.context.lexicalScope,bindings:new Map},y=o.map(k=>he(k));for(let k=0;k<o.length;k++)if(y[k]){let O=Ic(n,o[k],p[k]);O!==void 0?n.declare(y[k],{value:p[k],type:O,inferred:!1},b):n.declare(y[k],{value:p[k],inferred:!0},b)}let v=s.localScope,T=v.parent;v.parent=b;let _=Sc(v,y);n.pushScope(b);let A;try{if(A=_s(n,Ts(n,s.ops)),A=Mc(n,A),A=Ss(n,A,b),A.has(y)){let k;for(let O=0;O<o.length;O++){let j=y[O];if(!j||!A.has(j))continue;let G=p[O];G.has(j)&&(A.isSame(G)||!Cc(A,j))||((k??={})[j]=G)}k!==void 0&&(A=Ac(A,k))}d?.numericApproximation&&(A=A.evaluate({numericApproximation:!0}))}finally{n.popScope(),v.parent=T,wc(v,_)}return A.isValid?A:void 0})}function X(e){return Ig(e)??((n,t)=>e.engine.function("Apply",[e,...n]).evaluate(t))}var on=100;function sn(e){return(e.isFiniteCollection??!1)&&e.isIndexedCollection}var Sg=new Set(["Tuple","Pair","Triple","Single"]);function it(e){let n=e.type.type;return typeof n=="string"||n.kind!=="tuple"?!1:n.elements.every(t=>C(t.type,"number"))}function gi(e){let n=e.type.type;return n==="unknown"||n==="any"||n==="value"?g(e):typeof n!="string"&&n.kind==="broadcastable"}function ws(e){return it(e)||!C(e.type.type,"number")?!1:F(e)?!0:S(e)?!e.valueDefinition?.inferredType:g(e)?!(!e.operatorDefinition||e.operatorDefinition.inferredSignature):!1}function Rt(e){let n=e.type.type;if(typeof n!="string"&&n.kind==="tuple")return!0;if(S(e)){let t=e.value;if(t!==void 0&&!S(t)){let i=t.type.type;return typeof i!="string"&&i.kind==="tuple"}}return!1}function bi(e){return g(e)&&Sg.has(e.operator)&&(e.ops?.length??0)>0}function Cr(e,n,t,i,r=!1){let o=d=>sn(d)&&!Rt(d),s=t.filter(o);if(s.length===0)return;let a=1/0;for(let d of s){let p=d.count;if(p===void 0||p<0)return;p<a&&(a=p)}if(!Number.isFinite(a))return;if(r&&a>on)return yi(e,n,t,o,i);let u={numericApproximation:i},l=t.map(d=>o(d)),c=t.map((d,p)=>l[p]?d.each():void 0),f=[];for(let d=1;d<=a;d++){let p=[];for(let h=0;h<t.length;h++){let b=c[h];if(b===void 0){p.push(t[h]);continue}let{value:y,done:v}=b.next();p.push(v||y===void 0?e.Nothing:y)}f.push(e._fn(n,p).evaluate(u))}return e._fn("List",f)}function yi(e,n,t,i,r=!1){let o=new Set;for(let d of t)if(!i(d))for(let p of d.symbols)o.add(p);let s=[],a=[],u=[],l=0;for(let d of t)if(i(d)){let p;do l+=1,p=`_${l}`;while(o.has(p));let h=e.symbol(p,{canonical:!1});a.push(h),u.push(h),s.push(d)}else u.push(d);let c=e._fn(n,u,{canonical:!1});r&&(c=e._fn("N",[c],{canonical:!1}));let f=e.function("Function",[c,...a]);return e.function("Map",[...s,f])}function $c(e){let n=(t,i)=>Number.isFinite(i)?t.keepPartial?Math.ceil(i/t.size):i>=t.size?Math.floor((i-t.size)/t.step)+1:0:1/0;return{isLazy:()=>!0,count:t=>{let i=e(t);if(i===void 0)return;let r=i.src.count;if(r!==void 0)return n(i,r)},isFinite:t=>{let i=e(t);if(i!==void 0)return i.src.isFiniteCollection},isEmpty:t=>{let i=e(t);if(i===void 0)return;let r=i.src.count;if(r!==void 0)return n(i,r)===0},at:(t,i)=>{if(typeof i!="number"||i<1)return;let r=e(t);if(r===void 0)return;let{src:o,size:s,step:a,keepPartial:u}=r,l=o.count;if(l===void 0)return;let c=(i-1)*a+1,f=c+s-1,d=f;if(Number.isFinite(l)){if(u){if(c>l)return;d>l&&(d=l)}else if(f>l)return}let p=[];for(let h=c;h<=d;h++){let b=o.at(h);if(b===void 0)return;p.push(b)}return t.engine.function("List",p)},iterator:t=>{let i=e(t);if(i===void 0)return;let{src:r,size:o,step:s,keepPartial:a}=i,u=t.engine,l=r.each(),c=[],f=0,d=!1;return{next:()=>{if(d)return{value:void 0,done:!0};for(;f>0;){if(l.next().done)return d=!0,{value:void 0,done:!0};f-=1}for(;c.length<o;){let h=l.next();if(h.done){if(d=!0,a&&c.length>0){let b=c.splice(0,c.length);return{value:u.function("List",b),done:!1}}return{value:void 0,done:!0}}c.push(h.value)}let p=c.slice(0,o);return s<o?c.splice(0,s):(c.length=0,f=s-o),{value:u.function("List",p),done:!1}}}}}}function wg(e,n,t){if(!(e.isFiniteCollection!==!0||n.isFiniteCollection!==!0)){for(let i of e.each())if(n.contains(i)!==!0)return!1;if(t){let i=e.count;if(i===void 0)return!1;let r=n.count;if(r===void 0||i===r)return!1}return!0}}function Mg(e,n){if(g(e)){for(let t=0;t!==e.nops;t+=1)if(n(e.ops[t]))return t+1}}function $r(){return{isLazy:e=>!1,count:e=>g(e)?e.nops:0,isEmpty:e=>!g(e)||e.nops===0,isFinite:e=>!0,contains:(e,n)=>g(e)?e.ops.some(t=>t.isSame(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.nops;return{next:()=>n===t+1?{value:void 0,done:!0}:(n+=1,{value:e.ops[n-1-1],done:!1})}},subsetOf:wg,at:(e,n)=>{if(!(typeof n!="number"||!g(e))&&(n<0&&(n=e.nops+n+1),!(n<1||n>e.nops)))return e.ops[n-1]},indexWhere:Mg,eltsgn:e=>{},elttype:e=>!g(e)||e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:ve(...e.ops.map(n=>n.type.type))}}var xi=["Error","'missing'"];function Ye(e){return!!(typeof e=="number"||Pt(e)||typeof e=="string"&&Fr(e))}function Pt(e){return e!==null&&typeof e=="object"&&"num"in e}function Rr(e){return e!==null&&typeof e=="object"&&"sym"in e}function Dc(e){return e!==null&&typeof e=="object"&&"str"in e}function Fc(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function Dt(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function z(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):Fr(e)||Cs(e)?null:e}function ks(e){if(e==null||z(e)!==null)return null;let n=E(e);return n?[n,...I(e).map(t=>ks(t)).filter(t=>t!==null)]:e}function E(e){return Array.isArray(e)?e[0]:e==null?"":Dt(e)?e.fn[0]:""}function I(e){return Array.isArray(e)?e.slice(1):e!==void 0&&Dt(e)?e.fn.slice(1):[]}function m(e,n){return Array.isArray(e)?e[n]??null:e===null||!Dt(e)?null:e.fn[n]??null}function U(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Dt(e)?Math.max(0,e.fn.length-1):0}function As(e){return e==null?null:E(e)==="Hold"?m(e,1):e}function w(e){return typeof e=="string"&&Cs(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:Rr(e)?e.sym:null}function Rc(e){let n=E(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=I(e),r=z(t);return r?[r,i??"Nothing"]:null}return null}function Oc(e){if(e===null)return null;if(Fc(e))return e;let n=Rc(e);if(n)return{dict:{[n[0]]:Pc(n[1])??"Nothing"}};if(E(e)==="Dictionary"){let t={};for(let i of I(e)){let r=Rc(i);r&&(t[r[0]]=Pc(r[1])??"Nothing")}return{dict:t}}return null}function Pr(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Ms(i)??"Nothing"]))}}function Cg(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 D(e){return typeof e=="number"?e:typeof e=="string"&&Fr(e)?Cg(e):e!==void 0&&Pt(e)?D(e.num):null}function rt(e){if(e==null)return null;if(w(e)==="Half")return[1,2];let n=E(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=rt(I(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,o]=I(e);t=D(r)??NaN,i=D(o)??NaN}if(n==="Power"){let[r,o]=I(e),s=D(o);s===1?(t=D(r),i=1):s===-1&&(t=1,i=D(r))}if(n==="Multiply"){let[r,o]=I(e);if(E(o)==="Power"){let[s,a]=I(o);D(a)===-1&&(t=D(r),i=D(s))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function Dr(e,n){let t=null;if(Array.isArray(e)&&(t=e),Dt(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 Ft(e,n,t){let i=E(n),r=E(t);return i===e&&r===e?[e,...I(n),...I(t)]:i===e?[e,...I(n),t]:r===e?[e,n,...I(t)]:[e,n,t]}function vn(e){if(e==null)return null;let n=E(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(n=E(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:I(e)}function K(e){return e==null||e==="Nothing"?!0:E(e)==="Sequence"&&U(e)===0}function H(e){return K(e)?xi:e}function Fr(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.([0-9]+(\([0-9]+\))?|\([0-9]+\)))?([eE][+-]?[0-9]+)?$/.test(e)}function Cs(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function Ms(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=>Ms(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Ms(e[t])??"Nothing";return{dict:n}}return Dt(e)||Rr(e)||Pt(e)||Dc(e)||Fc(e)?e:null}function Pc(e){return e==null?null:Dc(e)?e.str:Pt(e)?parseFloat(e.num):Rr(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}function Bc(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}function Lc(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function $s(e){if(Lc(e)){if(e[1]<0&&(e=[-e[0],-e[1]]),e[0]===1||e[1]===1)return e;if(!Number.isFinite(e[1]))return[0,1];let r=kt(e[0],e[1]);return r<=1?e:[e[0]/r,e[1]/r]}e[1]<0&&(e=[-e[0],-e[1]]);let n=Bc(e[0],e[1]),[t,i]=n<=1?e:[e[0]/n,e[1]/n];return t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?[Number(t),Number(i)]:[t,i]}function Vc(e,n){if(!Number.isFinite(e))return null;for(let t=1;t<=1e6;t*=10){let i=e*t;if(Number.isInteger(i))return!Number.isSafeInteger(i)||!Number.isSafeInteger(n*t)?null:$s([i,n*t])}return null}function qc(e,n){return typeof e=="number"?Number.isFinite(e)?parseFloat(e.toPrecision(n)):e:e.toPrecision(n)}function Ei(e,n){return e.toFixed(n)}function Rs(e,n,t="auto"){if(t==="max")return{value:String(e),error:String(n)};if(typeof t=="object"&&"fractional"in t){let u=t.fractional;return{value:Ei(e,u),error:Ei(n,u)}}let i=t==="auto"?2:t.significant,r=qc(n,i),o=parseInt(r.toExponential().split("e")[1],10),s=i-1-o;if(s>0)return{value:Ei(e,s),error:Ei(r,s)};let a=Math.pow(10,-s);return{value:String(Math.round(e/a)*a),error:String(Math.round(r/a)*a)}}var Rg=new Map;function Nn(e){for(let[n,t]of Object.entries(e))Rg.set(n,t)}Nn({"simplify-terms":"Simplify the terms",fu:"Apply trigonometric simplification (Fu algorithm)","exp-to-trig":"Rewrite exponentials as trigonometric functions (Euler\u2019s formula)","simplify-relational-operator":"Simplify both sides of the relation",addition:"Add the terms",multiplication:"Multiply the factors",division:"Divide the terms",negation:"Negate",power:"Evaluate the power",root:"Evaluate the root",sqrt:"Evaluate the square root",rational:"Simplify the fraction",expand:"Expand the expression","cancel common polynomial factors":"Cancel the common factors","partial fraction decomposition":"Decompose into partial fractions","a/a -> 1":"Cancel the common factor: a\u2044a = 1","combined powers":"Combine the powers","combined powers with same base":"Combine powers with the same base","x^n * x^m -> x^{n+m}":"Combine powers with the same base: x\u207F\xB7x\u1D50 = x\u207F\u207A\u1D50","x * x^n -> x^{n+1}":"Combine powers with the same base: x\xB7x\u207F = x\u207F\u207A\xB9","a^m / a^n -> a^{m-n}":"Subtract the exponents: a\u1D50\u2044a\u207F = a\u1D50\u207B\u207F","a^m / a -> a^{m-1}":"Subtract the exponents: a\u1D50\u2044a = a\u1D50\u207B\xB9","a / a^n -> a^{1-n}":"Subtract the exponents: a\u2044a\u207F = a\xB9\u207B\u207F","(-x)^n -> -x^n when n is odd":"Factor out the sign: (\u2212x)\u207F = \u2212x\u207F for odd n","(-x)^n -> x^n when n is even":"Drop the sign: (\u2212x)\u207F = x\u207F for even n","(-x)^{n/m} -> x^{n/m} when n is even and m is odd":"Drop the sign: (\u2212x)\u207F\u141F\u1D50 = x\u207F\u141F\u1D50 for even n and odd m","(-x)^{n/m} -> -x^{n/m} when n and m are odd":"Factor out the sign: (\u2212x)\u207F\u141F\u1D50 = \u2212x\u207F\u141F\u1D50 for odd n and m","root(-a, n) -> -root(a, n) when n odd":"Factor the sign out of the odd root: \u207F\u221A(\u2212a) = \u2212\u207F\u221Aa","a / (b/c)^d -> a * (c/b)^d":"Dividing by (b\u2044c)\u1D48 is multiplying by (c\u2044b)\u1D48","denest \u221A(a+b\u221Ac) -> \u221Ax+\u221Ay":"Denest the radical","sqrt(x^2) -> |x|":"Apply \u221A(x\xB2) = |x|","sqrt(x^{2n}) -> |x|^n":"Apply \u221A(x\xB2\u207F) = |x|\u207F","root(x^n, n) -> x when n odd":"Apply \u207F\u221A(x\u207F) = x for odd n","root(x^n, n) -> |x| when n even":"Apply \u207F\u221A(x\u207F) = |x| for even n","root(x^m, n) -> |x|^{m/n}":"Rewrite the root as a power: \u207F\u221A(x\u1D50) = |x|\u1D50\u141F\u207F","root(1, n) -> 1":"A root of 1 is 1","root(0, n) -> 0 when n > 0":"A root of 0 is 0","root(root(x, m), n) -> x^{1/(m*n)}":"Combine the nested roots: \u207F\u221A(\u1D50\u221Ax) = x^(1\u2044(m\xB7n))","sqrt(sqrt(x)) -> x^{1/4}":"Combine the nested roots: \u221A(\u221Ax) = x^(1\u20444)","root(sqrt(x), n) -> x^{1/(2n)}":"Combine the nested roots: \u207F\u221A(\u221Ax) = x^(1\u2044(2n))","sqrt(root(x, n)) -> x^{1/(2n)}":"Combine the nested roots: \u221A(\u207F\u221Ax) = x^(1\u2044(2n))","root(product, n) -> factored":"Distribute the root over the product",ln:"Simplify the natural logarithm",log:"Simplify the logarithm","combine ln terms":"Combine the logarithms","combine log terms":"Combine the logarithms","e^ln(x) -> x":"Apply e^(ln x) = x: exp and ln are inverses","c^log_c(x) -> x":"Apply c^(log\uA700 x) = x: the exponential and the logarithm are inverses","e^(ln(x) + y) -> x * e^y":"Split the exponent: e^(ln x + y) = x\xB7e\u02B8","e^(ln(x) * y) -> x^y":"Apply e^(y\xB7ln x) = x\u02B8","c^(log_c(x) + y) -> x * c^y":"Split the exponent: c^(log\uA700 x + y) = x\xB7c\u02B8","c^(log_c(x) * y) -> x^y":"Apply c^(y\xB7log\uA700 x) = x\u02B8","ln(e^x * y) -> x + ln(y)":"Expand the logarithm: ln(e\u02E3\xB7y) = x + ln y","log_c(c) -> 1":"The logarithm of the base is 1","log_c(c^x) -> x":"Apply log\uA700(c\u02E3) = x: the logarithm and the exponential are inverses","log_c(c^x * y) -> x + log_c(y)":"Expand the logarithm: log\uA700(c\u02E3\xB7y) = x + log\uA700 y","log_c(c^x / y) -> x - log_c(y)":"Expand the logarithm: log\uA700(c\u02E3\u2044y) = x \u2212 log\uA700 y","log_c(y / c^x) -> log_c(y) - x":"Expand the logarithm: log\uA700(y\u2044c\u02E3) = log\uA700 y \u2212 x","log_c(x^n) -> n*log_c(x)":"Bring the exponent out: log(x\u207F) = n\xB7log x","log_c(x^n) -> n*log_c(|x|) when n even":"Bring the exponent out: log(x\u207F) = n\xB7log|x| for even n","log_c(x^{p/q}) -> (p/q)*log_c(x)":"Bring the exponent out: log(x\u1D56\u141F\u{107A5}) = (p\u2044q)\xB7log x","log_c(x^{p/q}) -> (p/q)*log_c(|x|) when p even":"Bring the exponent out: log(x\u1D56\u141F\u{107A5}) = (p\u2044q)\xB7log|x| for even p","ln(a)/ln(b) -> k when a = b^k":"Recognize the logarithm ratio: ln(b\u1D4F)\u2044ln(b) = k","log_{1/c}(a) -> -log_c(a)":"Invert the base: log\u2081\u2044\uA700(a) = \u2212log\uA700(a)","log_c(a) / log_c(b) -> ln(a) / ln(b)":"Change of base: log\uA700(a)\u2044log\uA700(b) = ln(a)\u2044ln(b)","log_c(a) / ln(a) -> 1/ln(c)":"Change of base: log\uA700(a)\u2044ln(a) = 1\u2044ln(c)","ln(a) / log_c(a) -> ln(c)":"Change of base: ln(a)\u2044log\uA700(a) = ln(c)","log base 0 or 1 -> NaN":"A logarithm base of 0 or 1 is undefined","log_c(0) -> NaN":"The logarithm of 0 is undefined","abs-negate":"Apply |\u2212x| = |x|","|-x| -> |x|":"Apply |\u2212x| = |x|","|x| -> x":"Drop the absolute value: the argument is non-negative","|x| -> -x":"Resolve the absolute value: the argument is non-positive","|xy| -> x|y| when x >= 0":"Move the non-negative factor out of the absolute value","|x/y| -> |x|/y when y >= 0":"Move the non-negative denominator out of the absolute value","|x/y| -> x/|y| when x >= 0":"Move the non-negative numerator out of the absolute value","|x|^n -> x^n when n is even":"Drop the absolute value: |x|\u207F = x\u207F for even n","|x^n| -> x^n when n is even":"Drop the absolute value: x\u207F \u2265 0 for even n","|x^n| -> |x|^n when n is odd":"Move the absolute value onto the base: |x\u207F| = |x|\u207F for odd n","|x|^(p/q) -> x^(p/q) when p is even":"Drop the absolute value: |x|\u1D56\u141F\u{107A5} = x\u1D56\u141F\u{107A5} for even p","|x^(p/q)| -> x^(p/q) when p is even":"Drop the absolute value: x\u1D56\u141F\u{107A5} \u2265 0 for even p","|x^(p/q)| -> |x|^(p/q) when p is odd":"Move the absolute value onto the base: |x\u1D56\u141F\u{107A5}| = |x|\u1D56\u141F\u{107A5} for odd p","sign positive":"The sign of a positive quantity is 1","sign negative":"The sign of a negative quantity is \u22121","sign zero":"The sign of zero is 0","sin\xB2(x) + cos\xB2(x) -> 1":"Apply the Pythagorean identity: sin\xB2x + cos\xB2x = 1","a*sin\xB2(x) + a*cos\xB2(x) -> a":"Apply the Pythagorean identity: sin\xB2x + cos\xB2x = 1","tan\xB2(x) + 1 -> sec\xB2(x)":"Apply the Pythagorean identity: tan\xB2x + 1 = sec\xB2x","1 + cot\xB2(x) -> csc\xB2(x)":"Apply the Pythagorean identity: 1 + cot\xB2x = csc\xB2x","sin(x)cos(y)+cos(x)sin(y) -> sin(x+y)":"Apply the angle-addition identity: sin x cos y + cos x sin y = sin(x + y)","sin(x)cos(y)-cos(x)sin(y) -> sin(x-y)":"Apply the angle-subtraction identity: sin x cos y \u2212 cos x sin y = sin(x \u2212 y)"});Nn({"solve.move-terms":"Move all terms to one side","solve.simplify":"Simplify the equation","solve.apply-inverse":"Apply the inverse function to both sides","solve.equate-exponents":"The bases are equal, so equate the exponents","solve.apply-tangent":"Take the tangent of both sides to clear the inverse trigonometric functions","solve.clear-denominators":"Multiply through to clear the denominators","solve.square-both-sides":"Square both sides to eliminate the radical","solve.substitute":"Substitute a new variable","solve.substituted-equation":"Rewrite the equation in the substituted variable","solve.back-substitute":"Substitute back to the original variable","solve.factor-zero-product":"A product is zero exactly when one of its factors is zero","solve.harmonize":"Rewrite the equation in an equivalent form","solve.expand":"Expand the equation","solve.quadratic-formula":"Apply the quadratic formula","solve.rational-roots":"Find the rational roots (rational-root theorem)","solve.polynomial-roots":"Find the remaining roots of the polynomial","solve.candidates":"Candidate solutions","solve.validate-roots":"Check each candidate in the original equation; reject the extraneous ones","solve.filter-domain":"Discard solutions outside the domain of the variable","solve.roots":"The solutions","solve.template":"Solve the matched equation pattern","solve.system.eliminate":"Eliminate a variable from the remaining equations","solve.system.back-substitute":"Substitute the known value back to solve for the next variable","solve.system.parametric":"Express the solutions in terms of a free parameter","solve.system.solve-for":"Solve one equation for one variable","solve.system.substitute":"Substitute into the remaining equations","solve.system.product-sum":"Rewrite the sum and product conditions as a quadratic","solve.case":"Consider the next case","solve.system.normalize-inequality":"Rewrite the inequality with zero on the right-hand side","solve.system.intersect-boundaries":"Find the intersection points of the boundary lines","solve.system.vertices":"Keep the corner points that satisfy every inequality","solve.system.check-constraints":"Substitute the candidate solution into each constraint","solve.system.reject":"Reject the candidate: it violates a constraint"});Nn({"solve.linear-monomial":"A multiple of the unknown is zero when the unknown is zero","solve.reciprocal":"Solve the reciprocal equation","solve.linear":"Isolate the unknown: subtract the constant, then divide by the coefficient","solve.linear-negated":"Isolate the unknown: subtract the constant, then divide by the coefficient","solve.power":"Take the n-th root of both sides","solve.power-negative-root":"Take the n-th root of both sides (negative root)","solve.quadratic-no-constant-zero":"Factor out the unknown: one solution is 0","solve.quadratic-no-constant":"Factor out the unknown and solve the remaining linear factor","solve.quadratic-formula-positive":"Apply the quadratic formula (positive branch)","solve.quadratic-formula-negative":"Apply the quadratic formula (negative branch)","solve.exponential":"Take the logarithm of both sides","solve.exponential-natural":"Take the natural logarithm of both sides","solve.exponential-natural-unit-exponent":"Take the natural logarithm of both sides","solve.exponential-natural-simple":"Take the natural logarithm of both sides","solve.exponential-natural-unit-coefficient":"Take the natural logarithm of both sides","solve.logarithm-base":"Exponentiate both sides to clear the logarithm","solve.logarithm-base-no-constant":"Exponentiate both sides to clear the logarithm","solve.absolute-value-positive":"Resolve the absolute value (positive case)","solve.absolute-value-negative":"Resolve the absolute value (negative case)","solve.quadratic-in-sqrt-positive":"Solve as a quadratic in the square root of the unknown","solve.quadratic-in-sqrt-negative":"Solve as a quadratic in the square root of the unknown","solve.quadratic-in-sqrt-negated-positive":"Solve as a quadratic in the square root of the unknown","solve.quadratic-in-sqrt-negated-negative":"Solve as a quadratic in the square root of the unknown","solve.radical":"Isolate the radical, then square both sides","solve.logarithm-natural-scaled":"Exponentiate both sides to clear the logarithm","solve.logarithm-natural":"Exponentiate both sides to clear the logarithm","solve.sine":"Apply the inverse sine","solve.sine-second-branch":"Apply the inverse sine (second branch: \u03C0 \u2212 arcsin)","solve.sine-unit":"Apply the inverse sine","solve.sine-unit-second-branch":"Apply the inverse sine (second branch: \u03C0 \u2212 arcsin)","solve.cosine":"Apply the inverse cosine","solve.cosine-negative-branch":"Apply the inverse cosine (negative branch)","solve.cosine-unit":"Apply the inverse cosine","solve.cosine-unit-negative-branch":"Apply the inverse cosine (negative branch)","solve.tangent":"Apply the inverse tangent","solve.tangent-unit":"Apply the inverse tangent","solve.cotangent":"Apply the inverse cotangent","solve.cotangent-unit":"Apply the inverse cotangent","solve.sine-cosine-linear-combination":"Rewrite a\xB7sin x + b\xB7cos x as a single sinusoid"});Nn({"integrate.constant":"The integral of a constant: \u222Bc dx = c\xB7x","integrate.variable":"The integral of the variable: \u222Bx dx = x\xB2/2","integrate.sum":"Integrate term by term: \u222B(u+v) dx = \u222Bu dx + \u222Bv dx","integrate.constant-factor":"Move the constant factor out of the integral","integrate.collected-power":"Integrate the power of the linear expression","integrate.hyperbolic-to-exp":"Rewrite the hyperbolic functions as exponentials","integrate.trig-to-exp":"Rewrite the trigonometric functions as exponentials","integrate.by-parts":"Integrate by parts","integrate.si-ci":"Express the integral with the sine and cosine integral functions Si and Ci","integrate.trig-to-single-exp":"Substitute a single exponential for the trigonometric functions","integrate.exponential-substitution":"Substitute for the exponential and integrate the rational function","integrate.partial-fractions":"Integrate using partial-fraction decomposition","integrate.previous-result":"Use the integral computed earlier","integrate.simplify":"Simplify the result","integrate.antiderivative":"Find the antiderivative of the integrand","integrate.fundamental-theorem":"Apply the Fundamental Theorem of Calculus: \u222B\u1D43\u1D47 f dx = F(b) \u2212 F(a)","integrate.evaluate-bounds":"Evaluate the antiderivative at the bounds"});Nn({"derivative.sum-rule":"Apply the sum rule: (u + v)\u2032 = u\u2032 + v\u2032","derivative.product-rule":"Apply the product rule: (u\xB7v)\u2032 = u\u2032\xB7v + u\xB7v\u2032","derivative.quotient-rule":"Apply the quotient rule: (u\u2044v)\u2032 = (u\u2032\xB7v \u2212 u\xB7v\u2032)\u2044v\xB2","derivative.power-rule":"Apply the power rule: (u\u207F)\u2032 = n\xB7u\u207F\u207B\xB9\xB7u\u2032","derivative.exponential-rule":"Differentiate the exponential: (a\u1D58)\u2032 = a\u1D58\xB7ln(a)\xB7u\u2032","derivative.general-power-rule":"Differentiate by logarithmic differentiation: (f^g)\u2032 = f^g\xB7(g\u2032\xB7ln f + g\xB7f\u2032\u2044f)","derivative.chain-rule":"Apply the chain rule: f(u)\u2032 = f\u2032(u)\xB7u\u2032","derivative.known-derivative":"Differentiate using a known derivative","derivative.constant-multiple":"Apply the constant-multiple rule: (c\xB7u)\u2032 = c\xB7u\u2032","derivative.rewrite":"Rewrite in an equivalent differentiable form","derivative.expand-definition":"Expand the definition of the function","derivative.zero":"The expression is locally constant: its derivative is 0","derivative.simplify":"Simplify the result"});{let e=["Sin","Tan","Cot","Csc","Sinh","Tanh","Coth","Csch","Arcsin","Arctan","Arccsc","Arsinh","Artanh","Arcsch"],n=["Cos","Sec","Cosh","Sech"],t={};for(let i of e){let r=i.toLowerCase();t[`${i}(-x) -> -${i}(x)`]=`Use the odd symmetry: ${r}(\u2212x) = \u2212${r}(x)`}for(let i of n){let r=i.toLowerCase();t[`${i}(-x) -> ${i}(x)`]=`Use the even symmetry: ${r}(\u2212x) = ${r}(x)`}Nn(t)}{let e=["Sin","Tan","Cot","Csc","Sinh","Tanh","Coth","Csch","Arcsin","Arctan","Arccot","Arccsc","Arsinh","Artanh","Arcoth","Arcsch"],n=["Cos","Sec","Cosh","Sech"],t={};for(let i of e){let r=i.toLowerCase();t[`|${i}(x)| -> ${i}(|x|) (odd function)`]=`Move the absolute value onto the argument: |${r}(x)| = ${r}(|x|) because ${r} is odd`}for(let i of n){let r=i.toLowerCase();t[`${i}(|x|) -> ${i}(x) (even function)`]=`Drop the absolute value: ${r}(|x|) = ${r}(x) because ${r} is even`}Nn(t)}Nn({"Sin(\u03C0 + x) -> -Sin(x)":"Shift the angle by \u03C0: sin(\u03C0 + x) = \u2212sin(x)","Cos(\u03C0 + x) -> -Cos(x)":"Shift the angle by \u03C0: cos(\u03C0 + x) = \u2212cos(x)","Tan(\u03C0 + x) -> Tan(x)":"Use the period \u03C0 of tangent: tan(\u03C0 + x) = tan(x)","Cot(\u03C0 + x) -> Cot(x)":"Use the period \u03C0 of cotangent: cot(\u03C0 + x) = cot(x)","Sec(\u03C0 + x) -> -Sec(x)":"Shift the angle by \u03C0: sec(\u03C0 + x) = \u2212sec(x)","Csc(\u03C0 + x) -> -Csc(x)":"Shift the angle by \u03C0: csc(\u03C0 + x) = \u2212csc(x)","Sin(\u03C0/2 - x) -> Cos(x)":"Apply the cofunction identity: sin(\u03C0\u20442 \u2212 x) = cos(x)","Cos(\u03C0/2 - x) -> Sin(x)":"Apply the cofunction identity: cos(\u03C0\u20442 \u2212 x) = sin(x)","Tan(\u03C0/2 - x) -> Cot(x)":"Apply the cofunction identity: tan(\u03C0\u20442 \u2212 x) = cot(x)","Cot(\u03C0/2 - x) -> Tan(x)":"Apply the cofunction identity: cot(\u03C0\u20442 \u2212 x) = tan(x)","Sec(\u03C0/2 - x) -> Csc(x)":"Apply the cofunction identity: sec(\u03C0\u20442 \u2212 x) = csc(x)","Csc(\u03C0/2 - x) -> Sec(x)":"Apply the cofunction identity: csc(\u03C0\u20442 \u2212 x) = sec(x)"});{let e=["Sin","Cos","Tan","Cot","Sec","Csc","Arcsin","Arccos"],n={};for(let t of e)n[`${t}(infinity) -> NaN`]=`${t.toLowerCase()} has no limit at infinity`;for(let t of["arctan(+inf) -> \u03C0/2","arctan(-inf) -> -\u03C0/2","arccot(+inf) -> 0","arccot(-inf) -> \u03C0","arcsec(\xB1inf) -> \u03C0/2","arccsc(\xB1inf) -> 0","sinh(+inf) -> +inf","sinh(-inf) -> -inf","cosh(+inf) -> +inf","cosh(-inf) -> +inf","tanh(+inf) -> 1","tanh(-inf) -> -1","coth(+inf) -> 1","coth(-inf) -> -1","sech(+inf) -> 0","sech(-inf) -> 0","csch(+inf) -> 0","csch(-inf) -> 0","arsinh(+inf) -> +inf","arsinh(-inf) -> -inf","arcosh(+inf) -> +inf","arcoth(\xB1inf) -> 0","arcsch(\xB1inf) -> 0","ln(+inf) -> +inf","log_c(+inf) -> +inf when c > 1","log_c(+inf) -> -inf when 0 < c < 1","log_c(0) -> -inf when c > 1","log_c(0) -> +inf when 0 < c < 1","log_inf(x) -> 0","root(+inf, n) -> +inf when n > 0"])n[t]="Evaluate the limit at infinity";for(let t of["artanh(\xB1inf) -> NaN","arsech(\xB1inf) -> NaN","arcosh(-inf) -> NaN","log_inf(inf) -> NaN"])n[t]="The value is undefined at infinity";for(let t of["root(x, 0) -> NaN","root(0, n) -> NaN when n <= 0"])n[t]="The root is undefined";Nn(n)}function Pg(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 o=i-55296,s=r-56320;i=2**16+o*2**10+s,t++}}n.push(i)}return n}var Or=8205,Jc=[127462,127487];function zc(e){return e===Or||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function Dg(e){return e>=Jc[0]&&e<=Jc[1]}function jc(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],t=Pg(e),i=0;for(;i<t.length;){let r=t[i++],o=t[i];if(o===Or){let s=i-1;for(i+=2;t[i]===Or;)i+=2;n.push(String.fromCodePoint(...t.slice(s,i)))}else if(zc(o)){let s=i-1;for(;zc(t[i]);)i+=t[i]===Or?2:1;n.push(String.fromCodePoint(...t.slice(s,i)))}else Dg(r)?(i+=1,n.push(String.fromCodePoint(...t.slice(i-2,i)))):n.push(String.fromCodePoint(r))}return n}var Fg={"\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"},Og={"\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u208B":"-"},Gc=new Map;function Bg(e){let n=Gc.get(e.source);if(!n){let t=e.source.startsWith("^")?e.source.slice(1):e.source;n=new RegExp(t,"y"),Gc.set(e.source,n)}return n}var Ps=class{s;pos;joined;offsets=null;obeyspaces=!1;constructor(n){if(n=n.normalize("NFC"),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=>Fg[r]).join("")}}`),n=n.replace(/[₀₁₂₃₄₅₆₇₈₉₋]+/g,t=>`_{${Array.from(t).map(r=>Og[r]).join("")}}`),this.s=jc(n),this.pos=0,typeof this.s=="string")this.joined=this.s;else{this.joined=this.s.join("");let t=new Array(this.s.length+1),i=0;for(let r=0;r<this.s.length;r++)t[r]=i,i+=this.s[r].length;t[this.s.length]=i,this.offsets=t}}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=Bg(n);typeof this.s=="string"?t.lastIndex=this.pos:t.lastIndex=this.offsets[this.pos<this.s.length?this.pos:this.s.length];let i=t.exec(this.joined);return i?.[0]?(this.pos+=i[0].length,i[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 Lg(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"){let r="",o=!1,s=[];do s.length===0&&(t=e.next(),s=t?[t]:[]),o=s.length===0,!o&&t==="\\endcsname"&&(o=!0,s.shift()),o||(o=t==="<$>"||t==="<$$>"||t==="<{>"||t==="<}>"||!!t&&t.length>1&&t[0]==="\\"),o||(r+=s.shift());while(!o);r&&i.push("\\"+r),i=i.concat(s)}else if(t!=="\\endcsname")if(t.length>1&&t[0]==="#"){let r=t.slice(1),o=n;i=i.concat(Ce(o?.[r]??o?.["?"]??"\\placeholder{}",n))}else i.push(t)}return i}function Ce(e,n=[],t){let r=e.toString().split(/(\r?\n)/),o="",s="",a=0;for(let c=0;c<r.length;c+=2){let f=r[c],d=r[c+1]??"";o+=s,s=" ";let p=f.match(/((?:\\%)|[^%])*/);if(p!==null&&(o+=p[0],t!==void 0&&p[0].length<f.length)){let h=a+p[0].length,b=a+f.length;t.push({start:h,end:b,discardedLength:f.length-p[0].length})}a+=f.length+d.length}let u=new Ps(o),l=[];do l.push(...Lg(u,n));while(!u.end());return l}function $(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 ot(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}function Ot(e){let n=[];if(Array.isArray(e))for(let i of e)if(Array.isArray(i))for(let r of i)n.push(r);else n.push(i);else n=[e];return $(n.map(i=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[i]??i))}var B=245,vi=260,We=270,ce=275,te=390,Te=600,st=650,Ni=700,at=810;function Br(e,n){return(t,i,r)=>{let o=t.parseExpression({...r,minPrec:n});return o===null?null:["Not",[e,i,o]]}}var ut=[{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:B+5,parse:"LessEqual"},{latexTrigger:["\u2264"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\u2265"],kind:"infix",associativity:"any",precedence:242,parse:"GreaterEqual"},{latexTrigger:["\u2260"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:B},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:B},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:B+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:B+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:B,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:B},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:B},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:B},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:B,parse:"Equal"},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:B+5},{name:"Tilde",latexTrigger:["\\sim"],kind:"infix",associativity:"right",precedence:B},{name:"NotTilde",latexTrigger:["\\nsim"],kind:"infix",associativity:"right",precedence:B},{name:"TildeEqual",latexTrigger:["\\simeq"],kind:"infix",associativity:"right",precedence:B},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:B},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:B},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{latexTrigger:["\u2248"],kind:"infix",associativity:"right",precedence:247,parse:"Approx"},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:B},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{latexTrigger:["\\neq"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{latexTrigger:["\\not","="],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{latexTrigger:["\\not","\\le"],kind:"infix",associativity:"right",precedence:241,parse:Br("LessEqual",241)},{latexTrigger:["\\not","\\leq"],kind:"infix",associativity:"right",precedence:241,parse:Br("LessEqual",241)},{latexTrigger:["\\not","\\ge"],kind:"infix",associativity:"right",precedence:242,parse:Br("GreaterEqual",242)},{latexTrigger:["\\not","\\geq"],kind:"infix",associativity:"right",precedence:242,parse:Br("GreaterEqual",242)},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:B,parse:"NotEqual"},{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:B+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:B},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:B},{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:B},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:B},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:B+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:B+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:B},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:B},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:B},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:B},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:B},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:B},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:B},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:B+5}];function lt(e){return typeof e!="string"?!1:ut.some(n=>n.name===e)}function Lr(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function Vr(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}function Vg(e){let n=e.index;e.skipVisualSpace();let t=!1;return e.match("(")&&(e.skipVisualSpace(),t=e.peek==="\\bmod"||e.peek==="\\pmod"||e.peek==="\\mod"||e.matchAll(["m","o","d"])),e.index=n,t}function qg(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("(")){if(e.skipVisualSpace(),e.match("\\bmod")||e.match("\\pmod")||e.match("\\mod")||e.matchAll(["m","o","d"])){e.skipVisualSpace();let o=e.parseExpression({...n,minPrec:0})??e.parseGroup();if(e.skipVisualSpace(),o!==null&&e.match(")"))return o}return e.index=t,null}let i=e.parseExpression({...n,minPrec:at});if(i!==null&&E(i)==="Mod"){let r=U(i)>=2?m(i,2):m(i,1);if(r!==null)return r}return e.index=t,null}function Ti(e,n,t){let i=e.parseExpression({...t,minPrec:B,condition:o=>Vg(o)||(t.condition?.(o)??!1)}),r=qg(e,t);return r!==null?E(n)==="Congruent"?["And",n,["Congruent",H(m(n,2)),H(i),r]]:["Congruent",n,H(i),r]:["Equivalent",n,H(i)]}var Hc=[{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:"\\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:["\\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:B,parse:Ti},{latexTrigger:["\u2261"],kind:"infix",associativity:"right",precedence:B,parse:Ti},{latexTrigger:["\\equiv"],kind:"prefix",precedence:B,parse:(e,n)=>Ti(e,e.error("missing",e.index),n??{minPrec:0})},{latexTrigger:["\\not","\\equiv"],kind:"infix",associativity:"right",precedence:B,parse:(e,n,t)=>["Not",Ti(e,n,t)]},{latexTrigger:["\u2262"],kind:"infix",associativity:"right",precedence:B,parse:(e,n,t)=>["Not",Ti(e,n,t)]},{latexTrigger:["\\pmod"],kind:"infix",precedence:B-1,parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return["Mod",n,H(t)]}},{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:_i("\\forall"),parse:Fn("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:_i("\\exists"),parse:Fn("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:_i("\\exists!"),parse:Fn("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:_i("\\lnot\\forall"),parse:Fn("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:_i("\\lnot\\exists"),parse:Fn("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=I(n);return t.length===0?"\\delta":t.every(i=>w(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=vn(n);return t&&t.length<=2?["KroneckerDelta",...t]:E(n)==="InvisibleOperator"?["KroneckerDelta",...I(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=E(n);return!t||!ut.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=E(n);return!t||!ut.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=I(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 o=t.slice(1).map(s=>e.serialize(s));return`${r}(${o.join(", ")})`}}];function _i(e){return(n,t)=>{let i=I(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),o=n.serialize(i[1]);return`${e} ${r}, ${o}`}}function Uc(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 Fn(e){return(n,t)=>{let i=n.index,r=n.diagnosticsCheckpoint(),o=n.options.quantifierScope!=="loose",s=n.parseSymbol(t),a=typeof s=="string"?s:null;if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let f=o?{...t,condition:p=>Uc(p,t)}:t;n.enterQuantifierScope();let d=n.parseExpression(f);return n.exitQuantifierScope(),a&&n.pruneUndeclared([a],r),[e,s,H(d)]}n.enterQuantifierScope();let c=n.parseEnclosure();if(n.exitQuantifierScope(),c)return a&&n.pruneUndeclared([a],r),[e,s,H(c)]}n.index=i;let u={...t,condition:c=>c.peek===":"||c.peek==="\\colon"||(t?.condition?.(c)??!1)},l=n.parseExpression(u);if(l===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let c=o?{...t,condition:d=>Uc(d,t)}:t;n.enterQuantifierScope();let f=n.parseExpression(c);return n.exitQuantifierScope(),[e,l,H(f)]}if(n.match("(")){n.enterQuantifierScope();let c=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,l,H(c)]:null}return E(l)!==""?[e,l,"True"]:null}}var Jg={x:"PointX",y:"PointY",z:"PointZ",real:"Real",re:"Real",imag:"Imaginary",im:"Imaginary",count:"Length",length:"Length",total:"Sum",max:"Max",min:"Min"};function Ds(e){return Jg[e]??null}function Zc(e){let n=null;if(typeof e=="number")Number.isSafeInteger(e)&&e>=0&&(n=e.toString());else if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.num=="string"){let t=e.num;/^[0-9]+$/.test(t)&&(n=t)}return n===null||!/^[0-9]+$/.test(n)?null:n}function zg(e,n){if(!(typeof n=="number"&&Number.isInteger(n)&&n>=2)){let a=w(n);if(a===null||a==="Nothing")return null;let u=Zc(e);if(u===null)return null;let l=[],c=u.length;for(let d=0;d<c;d++){let p=u.charCodeAt(d)-48;if(p===0)continue;let h=c-1-d;if(h===0)l.push(p);else if(h===1)l.push(p===1?a:["Multiply",p,a]);else{let b=["Power",a,h];l.push(p===1?b:["Multiply",p,b])}}return["BaseForm",l.length===0?0:l.length===1?l[0]:["Add",...l],a]}let t=n,i=Zc(e);if(i===null)return null;let r=BigInt(t),o=0n;for(let a=0;a<i.length;a++){let u=i.charCodeAt(a)-48;if(u>=t)return null;o=o*r+BigInt(u)}return["BaseForm",o<=BigInt(Number.MAX_SAFE_INTEGER)?Number(o):{num:o.toString()},t]}function jg(e){if(typeof e=="number")return Number.isSafeInteger(e)?BigInt(e):null;if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.num=="string"){let n=e.num;if(/^[+-]?[0-9]+$/.test(n))return BigInt(n)}return null}function Gg(e,n){if(e==null)return null;let t=E(e)==="Add"?[...I(e)]:[e],i=new Map;for(let s of t){let a,u,l=f=>{if(w(f)===n)return 1;if(E(f)==="Square"&&w(m(f,1))===n)return 2;if(E(f)==="Power"&&w(m(f,1))===n){let d=D(m(f,2));return d===null?null:d}return null},c=w(s);if(c!==null){if(c!==n)return null;a=1,u=1}else if(E(s)==="Power"||E(s)==="Square"){let f=l(s);if(f===null)return null;a=1,u=f}else if(E(s)==="Multiply"){let f=[...I(s)];if(f.length!==2)return null;let d=D(f[0]);if(d===null)return null;a=d;let p=l(f[1]);if(p===null)return null;u=p}else{let f=D(s);if(f===null)return null;a=f,u=0}if(!Number.isInteger(a)||a<0||a>9||!Number.isInteger(u)||u<0||u>40||i.has(u))return null;i.set(u,a)}let r=Math.max(0,...i.keys()),o="";for(let s=r;s>=0;s--)o+=String(i.get(s)??0);return o}function Ug(e,n){if(e===0n)return"0";let t=BigInt(n),i=[],r=e;for(;r>0n;){let o=Number(r%t);if(o<10)i.push(String.fromCharCode(48+o));else if(o<36)i.push(String.fromCharCode(97+o-10));else return null;r=r/t}return i.reverse().join("")}function Hg(e,n){if(e.skipVisualSpace(),!Ye(n)&&typeof e.peek=="string"&&/^\d$/.test(e.peek)){let i="";for(;typeof e.peek=="string"&&/^\d$/.test(e.peek);)i+=e.nextToken();return["InvisibleOperator",n,{num:"0."+i}]}if(e.match("\\operatorname")){let i=e.parseStringGroup();if(i===null)return null;let r=Ds(i.trim());return r===null?null:[r,n]}let t=e.peek;if(typeof t=="string"&&t.startsWith("\\")){let i=t.slice(1),r=Ds(i);return r!==null?(e.nextToken(),[r,n]):null}if(typeof t=="string"&&/^[a-zA-Z]$/.test(t)){let i=w(n);if(i!==null&&e.getSymbolType(i).matches("dictionary")){let o="";for(;typeof e.peek=="string"&&/^[a-zA-Z]$/.test(e.peek);)o+=e.nextToken();return["At",n,{str:o}]}let r=Ds(t);return r===null?null:(e.nextToken(),[r,n])}return null}function Zg(e){let n=e;return E(n)==="Delimiter"&&(n=m(n,1)??n),E(n)==="Sequence"?I(n):[e]}function of(e){let n=E(e);return Lr(n)||Vr(n)||["And","Or","Not","Element","NotElement"].includes(n)}function Yg(e){let n=[];for(let t=0;t<e.length;t++){let i=e[t];if(E(i)==="Colon"&&U(i)===2)n.push(m(i,1),m(i,2));else if(of(i))n.push(i,1);else if(t===e.length-1)n.push("True",i);else return null}return n}function Yc(e,n,t){e.addBoundary(t),e.skipVisualSpace();let i=e.parseExpression({minPrec:0});if(i===null||(e.skipVisualSpace(),!e.matchBoundary()))return e.removeBoundary(),null;let r=Zg(i);if(r.length>1||E(r[0])==="Colon"){if(r.some(o=>E(o)==="Colon")){let o=Yg(r);if(o!==null)return["Multiply",n,["Which",...o]]}else if(r.every(of))return["When",n,["Or",...r]]}return["When",n,i]}var Wg={"+":"Add","-":"Subtract","*":"Multiply","\\cdot":"Multiply","\\times":"Multiply","\\circ":"Ring","\\cup":"Union","\\cap":"Intersection","\\oplus":"CirclePlus","\\otimes":"CircleTimes","\\star":"Star"};function Xg(e,n,t){let i=Wg[e.peek];if(i===void 0)return null;let r=e.index;return e.nextToken(),e.skipSpace(),e.peek===t||e.atTerminator(n)?i:(e.index=r,null)}function Fs(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let o=u=>{E(u)==="Sequence"?s.push(...I(u)):s.push(u)},s=[];t?o(t):s.push("Nothing");let a=!1;for(;!a;){for(a=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let u=Xg(e,n,r);if(u!==null)s.push(u),a=!1;else{let l=e.parseExpression({...n,minPrec:i});l!==null?o(l):s.push("Nothing"),a=l===null}}a||(e.skipSpace(),a=!e.match(r),a||e.skipVisualSpace())}return s}function Kg(e,n){if(!n)return"";let t=I(n);if(t.length===0)return"";if(t.length===1)return e.serialize(t[0]);let i=t.map(o=>e.serialize(o)),r=[i[0]];for(let o=1;o<i.length;o++){let s=i[o-1],a=i[o],u=/[0-9]$/.test(s)&&/^[-+0-9]/.test(a);r.push(u?", ":" ",a)}return $(r)}function Qg(e,n){let t=E(n);if(t!=="Divide"&&t!=="Rational"||U(n)!==2||!e.options.prettify)return!1;let i=e.options.fractionStyle(n,e.level+1);return i==="inline-solidus"||i==="nice-solidus"}function e0(e,n){if(!n)return"";let t=I(n);return t.length===0?"":t.length===1?e.serialize(t[0]):$(t.map((i,r)=>{let o=e.serialize(i);return r<t.length-1&&Qg(e,i)?e.wrapString(o,e.groupStyle(n,e.level+1)):o}))}function ct(e=""){return(n,t)=>{if(!t)return"";let i=I(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((o,s)=>(o.push(n.serialize(s),e),o),[]);return r.pop(),$(r)}}var n0=[{surface:"if",kind:"prefix",precedence:245,operatorname:!0,build:m0},{surface:"for",kind:"prefix",precedence:245,operatorname:!0,build:h0},{surface:"for",kind:"infix",precedence:19,associativity:"none",operatorname:!0,build:(e,n,t)=>{let i=e.index,r=df(e,n,t);if(r!==null)return r;e.index=i;let o=tf(e,t);return o===null?(e.index=i,null):["ForAll",o,rf(n)]}},{surface:"break",kind:"prefix",precedence:245,operatorname:!0,build:()=>["Break"]},{surface:"continue",kind:"prefix",precedence:245,operatorname:!0,build:()=>["Continue"]},{surface:"return",kind:"prefix",precedence:245,operatorname:!0,build:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{surface:"for all",kind:"prefix",precedence:200,build:(e,n)=>Fn("ForAll")(e,n)},{surface:"for all",kind:"infix",precedence:19,associativity:"none",build:(e,n,t)=>{let i=e.index,r=tf(e,t);return r===null?(e.index=i,null):["ForAll",r,rf(n)]}},{surface:"there exists",kind:"prefix",precedence:200,build:(e,n)=>Fn("Exists")(e,n)},{surface:"where",kind:"infix",precedence:21,associativity:"none",operatorname:!0,build:(e,n,t)=>b0(e,n,t)},{surface:"such that",kind:"infix",precedence:21,associativity:"right",build:(e,n,t)=>["Colon",n,e.parseExpression({...t,minPrec:21})??"Nothing"]},{surface:"and",kind:"prefix",precedence:235,build:(e,n)=>(e.skipVisualSpace(),e.parseExpression(n)??"Nothing")},{surface:"and",kind:"infix",precedence:235,associativity:"right",build:(e,n,t)=>["And",n,e.parseExpression({...t,minPrec:235})??"Nothing"]},{surface:"or",kind:"infix",precedence:230,associativity:"right",build:(e,n,t)=>["Or",n,e.parseExpression({...t,minPrec:230})??"Nothing"]},{surface:"iff",kind:"infix",precedence:219,associativity:"right",build:(e,n,t)=>["Equivalent",n,e.parseExpression({...t,minPrec:219})??"Nothing"]},{surface:"if and only if",kind:"infix",precedence:219,associativity:"right",build:(e,n,t)=>["Equivalent",n,e.parseExpression({...t,minPrec:219})??"Nothing"]}];function t0(){let e=[];for(let n of n0){let t=n.surface;for(let i of["\\text","\\keyword"])if(n.kind==="prefix"){let r=n.build;e.push({latexTrigger:[i],kind:"prefix",precedence:n.precedence,parse:(o,s)=>{let a=o.index;return Ls(o,t)?r(o,s):(o.index=a,null)}})}else{let r=n.build;e.push({latexTrigger:[i],kind:"infix",associativity:n.associativity??"right",precedence:n.precedence,parse:(o,s,a)=>{let u=o.index;return Ls(o,t)?r(o,s,a):(o.index=u,null)}})}if(n.operatorname)if(n.kind==="prefix"){let i=n.build;e.push({symbolTrigger:t,kind:"prefix",precedence:n.precedence,parse:(r,o)=>i(r,o)})}else{let i=n.build;e.push({symbolTrigger:t,kind:"infix",associativity:n.associativity??"right",precedence:n.precedence,parse:(r,o,s)=>i(r,o,s)})}}return e.push({latexTrigger:["\\keyword"],parse:n=>be(n)}),e}function Xe(e,n,t){let i=e.options.keywordStyle??"text";if(i==="keyword")return`\\keyword{${n}}`;if(i==="operatorname")return`\\operatorname{${n}}`;let r=t?.lead?" ":"",o=t?.trail?" ":"";return`\\text{${r}${n}${o}}`}var _n="topic_marker";function sf(e,n){if(w(e)===_n)return[n,!0];let t=E(e);if(!t)return[e,!1];let i=!1,r=I(e).map(o=>{let[s,a]=sf(o,n);return a&&(i=!0),s});return i?[[t,...r],!0]:[e,!1]}function af(e,n){let[t,i]=sf(e,n);return i?t:["Apply",e,n]}function Ii(e,n,t){let i=e.parseExpression({minPrec:21})??"Nothing";return af(i,n)}function Si(e,n){let t=e.parseExpression({minPrec:21})??"Nothing",i="_";return["Function",af(t,i),i]}var uf=[{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:["\\cdots"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\dotsb"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\dotsc"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\dotsm"],parse:"ContinuationPlaceholder"},{latexTrigger:["\u2026"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{latexTrigger:["\\vdots"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\ddots"],parse:"ContinuationPlaceholder"},{name:"Typed",serialize:(e,n)=>e.serialize(m(n,1))},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:We,parse:(e,n,t)=>{let i=e.operandDiagnosticCheckpoint,r=[];if(E(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),E(n)==="Sequence")for(let s of I(n)){if(!w(s))return null;r.push(w(s))}else{if(!w(n))return null;r=[w(n)]}let o=e.parseExpression({...t??{},minPrec:21})??"Nothing";return E(o)==="Delimiter"&&(o=m(o,1)??"Nothing"),E(o)==="Sequence"&&(o=["Block",...I(o)]),e.pruneUndeclared(r,i),["Function",o,...r]},serialize:(e,n)=>{let t=I(n),i=r=>E(r)==="Typed"?m(r,1)??r:r;return t.length<1?"()\\mapsto()":t.length===1?$(["()","\\mapsto",e.serialize(m(n,1))]):t.length===2?$([e.serialize(i(m(n,2))),"\\mapsto",e.serialize(m(n,1))]):$([e.wrapString(I(n)?.slice(1).map(r=>e.serialize(i(r))).join(", "),"normal"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=m(n,1),i=E(t);if(i==="Derivative"){let s=o0(e,n);if(s!==null)return s}if(i==="InverseFunction"||i==="Derivative"){let s=e.options.applyFunctionStyle(n,e.level),a=I(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),s)}let r=m(n,2);if(typeof t=="string"||!r){let s=I(n);return e.serialize(s)}if(U(n)===2)return $([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let o=e.options.applyFunctionStyle(n,e.level);return $(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...I(n)]),o)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{name:_n,serialize:"\\square"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:Ii},{latexTrigger:"\\triangleright",kind:"infix",precedence:20,parse:Ii},{latexTrigger:"\\vartriangleright",kind:"infix",precedence:20,parse:Ii},{latexTrigger:"|>",kind:"infix",precedence:20,parse:Ii},{latexTrigger:["\u22B3"],kind:"infix",precedence:20,parse:Ii},{latexTrigger:"|>",kind:"prefix",precedence:20,parse:Si},{latexTrigger:"\\rhd",kind:"prefix",precedence:20,parse:Si},{latexTrigger:"\\triangleright",kind:"prefix",precedence:20,parse:Si},{latexTrigger:"\\vartriangleright",kind:"prefix",precedence:20,parse:Si},{latexTrigger:["\u22B3"],kind:"prefix",precedence:20,parse:Si},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=I(n).slice(1);if(E(t)==="Function"){let r=I(t).slice(1),o=m(t,1);if(E(o)==="Block"&&U(o)===1&&(o=m(o,1)),r.length===1&&i.length===2)return`\\left.\\left(${e.serialize(o)}\\right)\\right|_{${e.serialize(i[0])}}^{${e.serialize(i[1])}}`;if(r.length>0)return`\\left.\\left(${e.serialize(o)}\\right)\\right|_{${r.map((s,a)=>`${e.serialize(s)}=${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:vi,serialize:(e,n)=>{let t=As(m(n,1));if(E(m(n,2))==="Function"){let i=m(n,2),r=As(m(i,1)),o=I(i).slice(1);return $([e.serialize(t),e.wrapString(o.map(s=>e.serialize(s)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return $([e.serialize(t),"\\coloneq",e.serialize(m(n,2))])},parse:Jr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:vi,parse:Jr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:vi,parse:Jr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:vi,parse:Jr},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:240,serialize:(e,n)=>$([e.serialize(m(n,1)),"\\colon",e.serialize(m(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:240,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=D(m(n,2))??NaN;if(isFinite(t)&&t>=2&&Number.isInteger(t)){let r=jg(m(n,1));if(r!==null&&r>=0n){let o=Ug(r,t);if(o!==null)return/^[0-9]+$/.test(o)?`${o}_{${t}}`:`\\mathrm{${o}}_{${t}}`}}let i=w(m(n,2));if(i!==null){let r=Gg(m(n,1),i);if(r!==null)return`${r}_{${i}}`}return"\\operatorname{BaseForm}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Sequence",serialize:Kg},{name:"InvisibleOperator",serialize:e0},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=m(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[E(i)],o=r?i:["Sequence",i];if(r??="(,)",U(n)>1){let c=z(m(n,2));typeof c=="string"&&c.length<=3&&(r=c)}let[s,a,u]=["","",""];r.length===3?[s,a,u]=r:r.length===2?[s,u]=r:r.length===1&&(a=r);let l=i?o?ct(a)(e,o):e.serialize(i):"";return e.wrapString(l,t,s+u)}},{name:"Tuple",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>E(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(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=m(n,1);if(z(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=r0(e,n)||"\\blacksquare",r=E(t)==="ErrorCode"?z(m(t,1)):z(t);return r==="incompatible-type"?w(m(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(m(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(m(t,3))}\\notin ${e.serialize(m(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=z(m(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{${Wc(z(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":$(Dr(n,t=>z(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":$(Dr(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:i0},{kind:"postfix",precedence:850,latexTrigger:["."],parse:Hg},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:zr("]"),serialize:(e,n)=>{let t=I(n),i=e.wrap(t[0]??"Nothing",at),r=t.slice(1).map(o=>e.serialize(o));return e.indexStyle(n,e.level)==="bracket"?$([i,"[",r.join(", "),"]"]):ot("_",i,r.join(","))}},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:zr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:zr("\\right","\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","["],parse:zr("\\right","]")},{name:"When",kind:"postfix",precedence:800,latexTrigger:["\\left","\\{"],parse:(e,n)=>Yc(e,n,["\\right","\\}"]),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(!t||!i)return"";let o=(E(i)==="And"?I(i)??[]:[i]).map(s=>`\\left\\{${e.serialize(s)}\\right\\}`).join("");return`${e.serialize(t)}${o}`}},{kind:"postfix",precedence:800,latexTrigger:["\\{"],parse:(e,n)=>Yc(e,n,["\\}"])},{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=w(n);if(i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||E(n)==="List"))return E(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),E(i)==="Sequence"?["At",n,...I(i)]:["At",n,i];if(i!==null){let o=zg(n,i);if(o!==null)return o}return i!==null&&w(i)==="Nothing"?n:["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:lf,serialize:f0},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:s0},{name:"AngleBracket",kind:"matchfix",openTrigger:["\\langle"],closeTrigger:["\\rangle"],parse:(e,n)=>{if(n===null||K(n))return["AngleBracket"];let t=n;return E(t)==="Delimiter"&&(t=m(t,1)??t),E(t)==="Sequence"||E(t)==="List"?["AngleBracket",...I(t)]:["AngleBracket",t]},serialize:(e,n)=>$(["\\langle ",I(n).map(t=>e.serialize(t)).join(", ")," \\rangle"])},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Fs(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Fs(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:(e,n)=>e.peek==="."?null:qr(e,n),serialize:(e,n)=>{let t=I(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(m(n,1));if(t.length===2)return e.wrap(m(n,1),800)+".."+e.wrap(m(n,2),800);if(t.length===3){let i=D(m(n,3)),r=D(m(n,1));return i!==null&&r!==null?e.wrap(m(n,1),800)+".."+e.wrap(r+i,800)+".."+e.wrap(m(n,2),800):e.wrap(m(n,1),800)+"..("+(e.wrap(m(n,1),ce)+"+"+e.wrap(m(n,3),ce))+").."+e.wrap(m(n,2),800)}return""}},{latexTrigger:[".",".","."],kind:"infix",precedence:st-10,parse:(e,n)=>qr(e,n,!0)},{latexTrigger:["\\ldots"],kind:"infix",precedence:st-10,parse:(e,n)=>qr(e,n,!0)},{latexTrigger:["\\dots"],kind:"infix",precedence:st-10,parse:(e,n)=>qr(e,n,!0)},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Fs(e,t,n,19,";");return i===null?null:i.some(r=>E(r)==="Assign")?y0(i):["Delimiter",["Sequence",...i],"';'"]}},...t0(),{name:"Block",serialize:(e,n)=>{let t=I(n);return!t||t.length===0?"":t.filter(r=>E(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=I(n);return!t||t.length<3?"":$([Xe(e,"if",{trail:!0}),e.serialize(t[0]),Xe(e,"then",{lead:!0,trail:!0}),e.serialize(t[1]),Xe(e,"else",{lead:!0,trail:!0}),e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=I(n);if(!t||t.length===0)return"";let i=t[0],r=t.slice(1);if(r.length===1&&E(r[0])==="Element"){let o=r[0],s=m(o,1),a=m(o,2);if(E(a)==="Range"){let u=m(a,1),l=m(a,2);return $([Xe(e,"for",{trail:!0}),e.serialize(s),Xe(e,"from",{lead:!0,trail:!0}),e.serialize(u),Xe(e,"to",{lead:!0,trail:!0}),e.serialize(l),Xe(e,"do",{lead:!0,trail:!0}),e.serialize(i)])}}return $(["\\operatorname{Loop}(",t.map(o=>e.serialize(o)).join(", "),")"])}},{name:"Comprehension",serialize:(e,n)=>{let t=I(n);if(!t||t.length<2)return"";let i=t[0],o=t.slice(1).map(s=>{let a=m(s,1),u=m(s,2);return $([e.serialize(a)," = ",e.serialize(u)])}).join(", ");return $([e.serialize(i)," \\operatorname{for} ",o])}},{name:"Break",serialize:e=>Xe(e,"break")},{name:"Continue",serialize:e=>Xe(e,"continue")},{name:"Return",serialize:(e,n)=>{let t=m(n,1);return!t||w(t)==="Nothing"?Xe(e,"return"):$([Xe(e,"return",{trail:!0}),e.serialize(t)])}},{name:"Text",serialize:(e,n)=>{let t=I(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)z(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return $(t.map(a=>e.serialize(a)));let o=[];for(let a=0;a<i;a++)o.push(e.serialize(t[a]));let s="";for(let a=i;a<=r;a++){let u=z(t[a]);u!==null?s+=Wc(u):E(t[a])==="Annotated"||E(t[a])==="Text"?s+=e.serialize(t[a]):s+="$"+e.serialize(t[a])+"$"}o.push("\\text{"+s+"}");for(let a=r+1;a<t.length;a++)o.push(e.serialize(t[a]));return $(o)}},{name:"String",latexTrigger:["\\text"],parse:e=>be(e),serialize:(e,n)=>{let t=I(n);return t.length===0?"\\text{}":$(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>U(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,1))+"}"},{name:"IndexedSequence",serialize:(e,n)=>{let t=Bs(m(n,1)),i=m(n,2),r=m(n,3),o=U(n)>=4?I(n)?.[3]??null:null,s=`\\left\\{${e.serialize(t)}\\right\\}_{${e.serialize(i)}=${e.serialize(r)}}`;return o===null?s:`${s}^{${e.serialize(o)}}`}},{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)=>Tn(e,n,1),serialize:(e,n)=>{let t=D(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Tn(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Tn(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Tn(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Tn(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=w(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return e.matchBoundary()?e.match("<}>")?["Derivative",n,r]:null:(e.removeBoundary(),null)}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(E(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=w(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new pe("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(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=I(n).slice(1);if(i.length>1)return t+"^{("+i.map(o=>e.serialize(o)).join(", ")+")}";let r=D(i[0])??1;return r===1?t+"^{\\prime}":r===2?t+"^{\\doubleprime}":r===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(i[0])+")}"}},{name:"D",serialize:(e,n)=>{if(E(n)!=="D")return"D";let t=m(n,1),i=m(n,2);if(!t||!i)return"D";let r=1,o=t;for(;E(o)==="D";){let l=m(o,2);if(w(l)===w(i))r++,o=m(o,1);else break}let s=o;E(o)==="Function"&&(s=m(o,1)??o);let a=e.serialize(s),u=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${u}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${u}^{${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 s=e.parseGroup()??e.parseToken();n=D(s)??1}else i=!0;if(!t||w(t)===null)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let o=r;for(let s=0;s<n;s++)o=["D",o,t];return o}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:Os,serialize:(e,n)=>{let t=[],i=I(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let o=[];o.push(e.serialize(i[r+1])),o.push(e.serialize(i[r])),t.push(o.join("&"))}return $(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:Os},{kind:"environment",symbolTrigger:"rcases",parse:Os},{kind:"environment",symbolTrigger:"aligned",parse:Ke},{kind:"environment",symbolTrigger:"aligned*",parse:Ke},{kind:"environment",symbolTrigger:"align",parse:Ke},{kind:"environment",symbolTrigger:"align*",parse:Ke},{kind:"environment",symbolTrigger:"gather",parse:Ke},{kind:"environment",symbolTrigger:"gather*",parse:Ke},{kind:"environment",symbolTrigger:"gathered",parse:Ke},{kind:"environment",symbolTrigger:"split",parse:Ke},{kind:"environment",symbolTrigger:"multline",parse:Ke},{kind:"environment",symbolTrigger:"multline*",parse:Ke},{kind:"environment",symbolTrigger:"eqnarray",parse:Ke}];function be(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,o=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,Pr(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")o(),t.push(be(e));else if(e.match("\\textbf"))o(),t.push(be(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))o(),t.push(be(e,{fontStyle:"normal"}));else if(e.match("\\textup"))o(),t.push(be(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))o(),t.push(be(e,{fontStyle:"italic"}));else if(e.match("\\textit"))o(),t.push(be(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))o(),t.push(be(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))o(),t.push(be(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,u=e.parseStringGroup();if(u!==null){o();let l=be(e);t.push(["Annotated",l,Pr({color:u})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(o(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(o(),t.push(u)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(o(),t.push(u)):(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}o();let s;return t.length===1?s=t[0]:t.every(a=>z(a)!==null)?s="'"+t.map(a=>z(a)).join("")+"'":s=["Text",...t],n?["Annotated",s,Pr(n)]:s}function i0(e,n){return n===null?"":$(Dr(n,t=>{let i=z(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Wc(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function r0(e,n){let t=m(n,2);return t?E(t)==="LatexString"?z(m(t,1))??"":E(t)==="Hold"?e.serialize(m(t,1)):e.serialize(t):""}function o0(e,n){let t=m(n,1);if(E(t)!=="Derivative")return null;let i=[];for(let c of I(t).slice(1)){let f=D(c);if(f===null||!Number.isInteger(f)||f<0)return null;i.push(f)}if(i.length<2)return null;let r=I(n).slice(1);if(r.length!==i.length)return null;let o=i.reduce((c,f)=>c+f,0);if(o===0)return null;let s=[];for(let c=0;c<i.length;c++){if(i[c]===0)continue;if(!w(r[c]))return null;let f=e.serialize(r[c]);s.push(i[c]===1?`\\partial ${f}`:`\\partial ${f}^{${i[c]}}`)}let a=o===1?"\\partial":`\\partial^{${o}}`,u=e.serialize(m(t,1)),l=r.map(c=>e.serialize(c)).join(", ");return`\\frac{${a}}{${s.join(" ")}} ${u}(${l})`}function Tn(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=E(n);if(i==="Derivative"||i==="Prime"){let a=D(m(n,2))??1;return[i,H(m(n,1)),a+t]}let r=w(n),o=r&&e.getSymbolType(r).matches("function")||E(n);e.skipSpace();let s=e.parseArguments("enclosure");return s&&s.length>0?["Apply",["Derivative",n,t],...s]:o?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",H(n)]:["Prime",H(n),t]}function s0(e,n){if(K(n))return["Delimiter"];let t=E(n);if(t==="Delimiter"&&m(n,2)!==null){let i=z(m(n,2));if(i?.length===1)return["Delimiter",m(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(z(m(n,2))??"..")===".."?["Matrix",m(n,1)]:["Delimiter",n]}function lf(e,n){if(K(n))return["List"];let t=E(n);if(t==="Range"||t==="Linspace"||t==="Comprehension")return n;if(t==="Sequence"){let i=I(n),r=Gr(i,e);return r||["List",...i]}if(t==="Delimiter"){let i=z(m(n,2))??"...";if(i===";"||i===".;.")return["List",...(I(m(n,1))??[]).map(r=>lf(e,r))];if(i===","||i===".,."){if(n=m(n,1),E(n)==="Sequence"){let r=I(n),o=Gr(r,e);return o||["List",...r]}return["List",n??"Nothing"]}}return["List",n]}function wi(e){let n=D(e);if(n!==null)return n;if(E(e)==="Negate"){let t=D(m(e,1));if(t!==null)return-t}return null}var qs=new WeakSet;function cf(e){let n=D(e);if(n!==null)return{num:n,den:1};let t=E(e);if(t==="Negate"){let i=m(e,1);if(i==null)return null;let r=cf(i);return r===null?null:{num:-r.num,den:r.den}}if(t==="Divide"||t==="Rational"){if(U(e)!==2)return null;let i=wi(m(e,1)),r=wi(m(e,2));return i===null||r===null||!Number.isInteger(i)||!Number.isInteger(r)||r===0?null:{num:i,den:r}}return null}function Xc(e,n){n<0&&([e,n]=[-e,-n]);let t=a0(Math.abs(e),n);return[e,n]=[e/t,n/t],n===1?e:["Divide",e,n]}function a0(e,n){for(;n!==0;)[e,n]=[n,e%n];return e===0?1:e}function u0(e){let n=E(e);if(n!=="Add"&&n!=="Subtract")return null;let t=I(e);if(t.length<2)return null;let i=t[t.length-1];if(E(i)!=="Range"||I(i).length!==2||!qs.has(i))return null;let r=t.slice(0,-1);return{sample:[n,...r,m(i,1)],end:m(i,2)}}function jr(e){let n=E(e);if(n==="InvisibleOperator"||n==="Multiply"){let t=I(e);if(t.length>=2&&w(t[0])==="ContinuationPlaceholder"){let i=t.slice(1);return i.length===1?i[0]:[n,...i]}return null}if(n==="Negate"){let t=jr(m(e,1));return t===null?null:["Negate",t]}if(n==="Subtract"){let t=jr(m(e,1));return t===null?null:["Subtract",t,m(e,2)]}if(n==="Add"){let t=I(e),i=jr(t[0]);return i===null?null:["Add",i,...t.slice(1)]}return null}function Gr(e,n){if(e.length>=2){let f=e[e.length-1],d=e[e.length-2];if(w(d)!=="ContinuationPlaceholder")if(E(f)==="Range"&&I(f).length===2&&qs.has(f))e=[...e.slice(0,-1),m(f,1),"ContinuationPlaceholder",m(f,2)];else{let p=u0(f);if(p!==null)e=[...e.slice(0,-1),p.sample,"ContinuationPlaceholder",p.end];else{let h=jr(f);h!==null&&(e=[...e.slice(0,-1),"ContinuationPlaceholder",h])}}}if(e.length<3)return null;let t=e[e.length-2];if(w(t)!=="ContinuationPlaceholder")return null;let i=e.slice(0,-2),r=e[e.length-1];if(i.length===1){let f=i[0];return w(f)==="ContinuationPlaceholder"?null:["Range",D(f)??f,r]}if(i.length<2)return null;let o=n.options.tolerance,s=i.map(cf);if(s.every(f=>f!==null)){let f=s,d=f.map(h=>h.num/h.den),p=d[d.length-1]-d[d.length-2];if(Math.abs(p)<o)return n.error("degenerate-range-step",n.index);for(let h=1;h<d.length;h++)if(Math.abs(d[h]-d[h-1]-p)>o)return n.error("inconsistent-range-samples",n.index);if(f.some(h=>h.den!==1)){let h=f[f.length-1],b=f[f.length-2];return["Range",Xc(f[0].num,f[0].den),r,Xc(h.num*b.den-b.num*h.den,h.den*b.den)]}return["Range",d[0],r,p]}let a=i.map(ff);if(a.some(f=>f===null))return c0(i,r,o);let u=a.map(f=>f.coeff),l=a[0].sym;if(a.some(f=>f.sym!==l))return null;let c=u[u.length-1]-u[u.length-2];if(Math.abs(c)<o)return n.error("degenerate-range-step",n.index);for(let f=1;f<u.length;f++)if(Math.abs(u[f]-u[f-1]-c)>o)return n.error("inconsistent-range-samples",n.index);return["Range",Kc(u[0],l),r,Kc(c,l)]}function ff(e){let n=w(e);if(n!==null)return n.includes("_")?null:{coeff:1,sym:n};let t=E(e);if(t==="Negate"){let i=m(e,1);if(!i)return null;let r=ff(i);return r===null?null:{coeff:-r.coeff,sym:r.sym}}if(t==="Multiply"||t==="InvisibleOperator"){let i=I(e);if(i.length!==2)return null;let r=wi(i[0]),o=w(i[1]);return r===null||o===null||o.includes("_")?null:{coeff:r,sym:o}}return null}function Kc(e,n){return e===1?n:e===-1?["Negate",n]:["Multiply",e,n]}function Qc(e){if(E(e)==="Add"){let n=[],t=0;for(let r of I(e)){let o=wi(r);o!==null?t+=o:n.push(r)}return n.length===0?null:{base:n.length===1?n[0]:["Add",...n],offset:t}}return wi(e)!==null?null:{base:e,offset:0}}function l0(e,n){return n===0?e:E(e)==="Add"?["Add",...I(e),n]:["Add",e,n]}function c0(e,n,t){let i=e.map(Qc);if(i.some(l=>l===null))return null;let r=i,o=JSON.stringify(r[0].base);if(r.some(l=>JSON.stringify(l.base)!==o))return null;let s=Qc(n);if(s===null||JSON.stringify(s.base)!==o)return null;let a=r.map(l=>l.offset),u=a[a.length-1]-a[a.length-2];if(Math.abs(u)<t)return null;for(let l=1;l<a.length;l++)if(Math.abs(a[l]-a[l-1]-u)>t)return null;return["Range",l0(r[0].base,a[0]),n,u]}function f0(e,n){return U(n)>1&&I(n).every(t=>{let i=E(t);return Vr(i)||Lr(i)})?$(["\\begin{cases}",ct("\\\\")(e,n),"\\end{cases}"]):$(["\\bigl\\lbrack",ct(", ")(e,n),"\\bigr\\rbrack"])}function qr(e,n,t=!1){if(n===null)return null;let i=e.parseExpression({minPrec:270});if(i===null)return t?["Sequence",n,"ContinuationPlaceholder"]:null;if(t&&E(n)==="InvisibleOperator"&&I(n).some(o=>z(o)!==null))return["InvisibleOperator",...I(n),"ContinuationPlaceholder",i];if(E(i)==="Range"){let o=m(i,1),s=m(i,2);return o&&s?["Range",n,s,["Subtract",o,n]]:null}let r=["Range",n,i];return qs.add(r),r}var Ur={"(":"(",")":")","[":"\\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 Bs(e){if(e===null)return"Nothing";let n=E(e);if(!n)return e;let t=I(e)??[];return n.length>1&&n.endsWith("_")&&t.length===1?["Subscript",n.slice(0,-1),Bs(t[0])]:[n,...t.map(i=>Bs(i))]}function ef(e,n,t){if(!n||n.length===0)return;let i=[];for(let r of n){let o=w(r);o&&i.push(o)}e.pruneUndeclared(i,t)}function Jr(e,n,t){let i=e.operandDiagnosticCheckpoint,r=(t?.minPrec??0)>=19,o=w(n);if(o&&o.includes("_")){let u=o.indexOf("_"),l=o.substring(0,u),c=o.substring(u+1),f=parseInt(c,10),d=!isNaN(f)&&String(f)===c?f:c,p=d!==""&&(typeof d=="number"||typeof d=="string"&&d.length===1);(e.getSymbolType(l).matches("indexed_collection")||!r&&p)&&(n=["Subscript",l,d])}if(E(n)==="InvisibleOperator"&&U(n)===2&&E(m(n,2))==="Delimiter"){let u=w(m(n,1));if(!u)return null;let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let c=m(m(n,2),1),f=[];return E(c)==="Sequence"?f=[...I(c)]:c&&(f=[c]),ef(e,f,i),e.pruneJuxtaposition(u,i),e.pruneUndeclared([u],i),["Assign",u,["Function",l,...f??[]]]}if(E(n)==="Subscript"&&w(m(n,1))){let u=w(m(n,1));if(!e.getSymbolType(u).matches("indexed_collection")){let f=m(n,2),d=(f!==null&&typeof f=="string"?f:void 0)??(f!==null&&typeof f=="number"?String(f):void 0);if(d&&r){let p=e.parseExpression({...t??{},minPrec:20});return p===null?null:["Assign",u+"_"+d,p]}}let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let c=m(n,2);return z(c)!==null?["Assign",n,l]:w(c)?["Assign",n,l]:["Assign",n,l]}let s=E(n);if(s){let u=I(n),l=e.parseExpression({...t??{},minPrec:20});return l===null?null:(ef(e,u,i),e.pruneJuxtaposition(s,i),e.pruneUndeclared([s],i),["Assign",s,["Function",l,...u]])}if(!w(n))return null;let a=e.parseExpression({...t??{},minPrec:20});return a===null?null:["Assign",n,a]}function Os(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=E(i[0]);return Lr(r)||Vr(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=z(i[1]);t.push(r?"True":ks(i[1])??"True"),t.push(i[0])}return["Which",...t]}var d0={"=":"Equal","\\ne":"NotEqual","\\neq":"NotEqual","<":"Less","\\lt":"Less",">":"Greater","\\gt":"Greater","\\le":"LessEqual","\\leq":"LessEqual","\\ge":"GreaterEqual","\\geq":"GreaterEqual"};function nf(e){return e.atBoundary||e.peek==="\\\\"||e.peek==="\\cr"}function p0(e){let n=i=>i.peek==="&"||i.peek==="\\\\"||i.peek==="\\cr"||i.peek===","||i.peek===";",t=null;for(;!nf(e)&&(e.skipSpace(),!nf(e));){if(e.match("&"))continue;if(e.peek===","||e.peek==="."||e.peek===";"){e.nextToken();continue}let i=d0[e.peek];if(i!==void 0&&t!==null){e.nextToken();let o=e.parseExpression({minPrec:0,condition:n});t=[i,t,H(o)];continue}let r=e.parseExpression({minPrec:0,condition:n});if(r===null){e.nextToken();continue}t=t===null?r:["InvisibleOperator",t,r]}return t}function Ke(e){let n=[];for(;!e.atBoundary;){let t=e.index,i=p0(e);if(i!==null&&n.push(i),e.skipSpace(),(e.match("\\\\")||e.match("\\cr"))&&e.parseOptionalGroup(),e.index===t){if(e.atBoundary)break;e.nextToken()}}return["List",...n]}function Ls(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 ft(e,n){let t=e.index;e.skipVisualSpace();let i=e.diagnosticsCheckpoint();if(e.match("\\text")||e.match("\\keyword")){if(Ls(e,n))return e.rollbackDiagnostics(i),!0;e.index=t}let r=e.index,o=e.parseSymbol();return e.rollbackDiagnostics(i),o!==null&&w(o)===n?!0:(e.index=r,!1)}function dt(e,n){let t=e.index,i=ft(e,n);return e.index=t,i}function m0(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:o=>dt(o,"then")});if(t===null||!ft(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:o=>dt(o,"else")});if(i===null||!ft(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function h0(e,n){let t=e.parseExpression({minPrec:0,condition:a=>dt(a,"from")}),i=t?w(t):null;if(!i||!ft(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>dt(a,"to")});if(r===null||!ft(e,"to"))return null;let o=e.parseExpression({minPrec:0,condition:a=>dt(a,"do")});return o===null||!ft(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,o]]]}function df(e,n,t){let i={minPrec:21,condition:o=>{if(t?.condition?.(o))return!0;let s=o.index;o.skipVisualSpace();let a=o.peek===",";return o.index=s,!!(a||dt(o,"where")||dt(o,"with"))}},r=[];do{e.skipVisualSpace();let o=e.parseExpression(i);if(o===null)break;let s=E(o);if(s!=="Equal"&&s!=="Assign")return null;let a=m(o,1),u=m(o,2);if(!a||!u)return null;r.push(["Element",a,u]),e.skipVisualSpace()}while(e.match(","));return r.length===0?null:["Comprehension",n,...r]}var g0=new Set(["Less","Greater","LessEqual","GreaterEqual","Equal","NotEqual","Element"]);function pf(e){if(e===null)return!1;let n=E(e);if(!n)return!1;if(g0.has(n))return!0;if(n==="And"||n==="Or"){let t=I(e);return t.length===0?!1:t.every(i=>pf(i))}return!1}function tf(e,n){e.skipVisualSpace();let t=e.parseExpression(n);return pf(t)?t:null}function rf(e){if(E(e)!=="Delimiter")return e;let n=m(e,1);return E(n)!=="Sequence"||U(e)!==2||z(m(e,2))!==","?e:["Tuple",...I(n)]}function b0(e,n,t){let i={minPrec:21,condition:a=>{if(t?.condition?.(a))return!0;let u=a.index;a.skipVisualSpace();let l=a.peek===",";return a.index=u,l}},r=[];do{e.skipVisualSpace();let a=e.parseExpression(i);if(!a)break;r.push(a),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let o=e.index;if(ft(e,"for")){let a=df(e,n,t);if(a){let u=[];for(let l of r){let c=Vs(l);E(c)==="Assign"&&u.push(["Declare",m(c,1)]),u.push(c)}return u.push(a),["Block",...u]}e.index=o}let s=[];for(let a of r){let u=Vs(a);E(u)==="Assign"&&s.push(["Declare",m(u,1)]),s.push(u)}return s.push(n),["Block",...s]}function y0(e){let n=[];for(let t of e){let i=Vs(t);E(i)==="Assign"&&n.push(["Declare",m(i,1)]),n.push(i)}return["Block",...n]}function Vs(e){if(E(e)!=="Assign")return e;let n=m(e,1);if(E(n)!=="Subscript")return e;let t=w(m(n,1));if(!t)return e;let i=m(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,m(e,2)??"Nothing"]:e}function x0(e){if(E(e)!=="Delimiter")return!1;if(U(e)<2)return!0;let n=z(m(e,2));return typeof n=="string"&&n.length>=2&&n[0]==="("}var E0=new Set(["Delimiter","List","Sequence","InvisibleOperator","Error","At"]);function v0(e){let n=E(e);return typeof n!="string"||n===""?!1:!E0.has(n)}function zr(...e){return(n,t)=>{if(!w(t)&&E(t)!=="List"&&!x0(t)&&!v0(t))return null;let i=null;if(e.length===0){if(i=n.parseGroup()??n.parseExpression({minPrec:0}),i===null)return null}else if(e.length>1){if(n.addBoundary(e),i=n.parseExpression({minPrec:0}),i===null||!n.matchBoundary())return n.removeBoundary(),null}else if(i=n.parseExpression({minPrec:0}),i===null||!n.matchAll(e))return null;return e.length===0&&z(i)!==null?null:(E(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),E(i)==="Sequence"?["At",t,...I(i)]:["At",t,i])}}var pt=[["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],["CapitalPi","\\Pi",928],["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",8467],["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]],mf=[...pt.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...pt.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var hf=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"},{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 an(e,n,t){if(K(e))return null;let i,r=E(e);if(r==="Delimiter"){let l=z(m(e,2));if(l!==","&&l!=="(,)"&&l!=="[,]")return null;let c=m(e,1);E(c)==="Sequence"?i=[...I(c)]:i=c?[c]:[]}else if(r==="Sequence")i=[...I(e)];else return null;if(i.length!==2)return null;let[o,s]=i;return["Interval",n?["Open",o]:o,t?["Open",s]:s]}function Mi(e){if(e===null)return null;if(E(e)==="List"&&U(e)===2)return["Interval",m(e,1),m(e,2)];if(E(e)==="Delimiter"){let n=z(m(e,2))??"(,)";if(n!==","&&n!=="(,)"&&n!=="()")return e;let t=m(e,1);if(E(t)==="Sequence"&&U(t)===2)return["Interval",["Open",m(t,1)],["Open",m(t,2)]]}return e}function xe(e,n,t){return(i,r,o)=>{if(r===null)return null;let s=H(i.parseExpression({...o,minPrec:n}));return[e,t==="both"?Mi(r):r,Mi(s)]}}var gf=new Set(["Less","LessEqual","Greater","GreaterEqual","Equal","NotEqual","And","Or","Not"]),yf=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"UpperHalfPlane",latexTrigger:"\\mathbb{C}^+"},{latexTrigger:"\\mathbb{C}^{+}",parse:"UpperHalfPlane"},{latexTrigger:"\\C^+",parse:"UpperHalfPlane"},{latexTrigger:"\\C^{+}",parse:"UpperHalfPlane"},{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^{\\leqslant0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leqslant}",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_{\\geqslant0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geqslant}",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_{\\leqslant0}",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^{\\geqslant}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geqslant0}",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:"\\mathbb{R}_{>0}",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\gt0}",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_+",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\geq0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\ge0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\geqslant0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\mathbb{R}_{<0}",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_-",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\le0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\leqslant0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\mathbb{Z}_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_+",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}^+",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\ge0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\geqslant0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{<0}",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_-",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\le0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\leqslant0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\mathbb{N}_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^+",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^*",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{\\ge0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{\\geqslant0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_1",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\geq1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\ge1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\geqslant1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{>1}",parse:()=>["Set",["Element","n","NonNegativeIntegers"],["Condition",["Greater","n",1]]]},{latexTrigger:"\\N_{>1}",parse:()=>["Set",["Element","n","NonNegativeIntegers"],["Condition",["Greater","n",1]]]},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix",serialize:(e,n)=>$([e.serialize(m(n,1)),"^\\complement"])},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350,parse:xe("Intersection",350,"both")},{latexTrigger:["\u2229"],kind:"infix",precedence:350,parse:xe("Intersection",350,"both")},{name:"Interval",serialize:bf},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>an(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>an(n,!0,!0)},{name:"Multiple",serialize:bf},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350,parse:xe("Union",350,"both")},{latexTrigger:["\u222A"],kind:"infix",precedence:350,parse:xe("Union",350,"both")},{name:"Divides",latexTrigger:["\\mid"],kind:"infix",precedence:160},{name:"NotDivides",latexTrigger:["\\nmid"],kind:"infix",precedence:160},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>{if(K(n))return"EmptySet";E(n)=="Delimiter"&&z(m(n,2))===","&&(n=m(n,1));let t=E(n);if(t==="Divides"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null)return["Set",i,["Condition",r]]}if(t==="Colon"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null){let o=E(i);return o!==null&&gf.has(o)?["Which",i,r]:["Set",i,["Condition",r]]}}if(t==="Sequence"){let i=I(n),r=i.filter(a=>E(a)==="Colon");if(r.length>0&&r.every(a=>{let u=m(a,1),l=u!==null?E(u):null;return l!==null&&gf.has(l)})){let a=[];for(let u=0;u<i.length;u++){let l=i[u];if(E(l)==="Colon"){let c=m(l,1),f=m(l,2);if(c===null||f===null)return["Set",...i];a.push(c,f)}else{if(u!==i.length-1)return["Set",...i];a.push("True",l)}}return["Which",...a]}let s=Gr(i,e);return s||["Set",...i]}return["Set",n]},serialize:(e,n)=>{if(U(n)===2&&E(m(n,2))==="Condition"){let t=m(n,2);return $(["\\lbrace",e.serialize(m(n,1)),"\\mid",e.serialize(m(t,1)),"\\rbrace"])}return $(["\\lbrace",I(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])}},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650,parse:xe("SetMinus",650,"both")},{latexTrigger:["\\backslash"],kind:"infix",precedence:650,parse:xe("SetMinus",650,"both")},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:B},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,Mi(n)]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:241,parse:xe("Element",241,"rhs")},{latexTrigger:["\u2208"],kind:"infix",precedence:241,parse:xe("Element",241,"rhs")},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240,parse:xe("NotElement",240,"rhs")},{latexTrigger:["\u2209"],kind:"infix",precedence:240,parse:xe("NotElement",240,"rhs")},{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},{latexTrigger:["\\not","\\in"],kind:"infix",precedence:240,parse:xe("NotElement",240,"rhs")},{latexTrigger:["\\not","\\subset"],kind:"infix",associativity:"none",precedence:240,parse:"NotSubset"},{latexTrigger:["\\not","\\supset"],kind:"infix",associativity:"none",precedence:240,parse:"NotSuperset"},{latexTrigger:["\\not","\\subseteq"],kind:"infix",associativity:"none",precedence:240,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:240});return i===null?null:["Not",["SubsetEqual",Mi(n),Mi(i)]]}},{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,parse:xe("Subset",240,"both")},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Subset",240,"both")},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Subset",240,"both")},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240,parse:xe("SubsetEqual",240,"both")},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240,parse:xe("Superset",240,"both")},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Superset",240,"both")},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Superset",240,"both")},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240,parse:xe("SupersetEqual",240,"both")}];function bf(e,n){if(n===null)return"";let t=E(n);if(!t)return"";if(t==="Range")return $(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=m(n,1),o=m(n,2),s=!1,a=!1;return E(r)==="Open"&&(r=m(r,1),s=!0),E(o)==="Open"&&(o=m(o,1),a=!0),$([s?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(o),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function In(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 $(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function Hr(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 N0(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,o=Math.floor(r),s=(r-o)*60,a=Math.round(s*1e3)/1e3,u=o,l=i;return a>=60&&(a=0,u++),u>=60&&(u=0,l++),{deg:n*l||0,min:n*u||0,sec:a===0?0:n*a}}function Zr(e){let{deg:n,min:t,sec:i}=N0(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let o=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(o))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function T0(e){if(E(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of I(e))if(E(i)==="Power"){let r=m(i,1),o=m(i,2);if(E(o)==="Negate"){let s=m(o,1);r&&s&&t.push(["Power",r,s])}else{let s=D(o)??NaN;s===-1?r&&t.push(r):s<0?r&&t.push(["Power",r,-s]):n.push(i)}}else if(E(i)==="Rational"&&U(i)===2||E(i)==="Divide"){let r=m(i,1),o=m(i,2);D(r)!==1&&n.push(r),D(o)!==1&&t.push(o)}else{let r=rt(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function xf(e){let n=e.parseOptionalGroup(),t=e.parseGroup(),i=t??e.parseToken();if(K(i)){if(n===null&&t===null)return"Sqrt";let r=e.error("missing",e.index);return n!==null?["Root",r,H(n)]:["Sqrt",r]}return n!==null?["Root",i,n]:["Sqrt",i]}function _0(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 Af(e){if(e==null)return!1;if(w(e)==="ContinuationPlaceholder")return!0;let n=E(e);return n==="Add"||n==="Subtract"||n==="Negate"?I(e).some(t=>Af(t)):!1}function Cf(e){if(E(e)==="Subtract"){let n=m(e,1),t=m(e,2);return[...Cf(n),["Negate",t]]}return[e]}function Ef(e){if(E(e)!=="Add")return e;let n=I(e);if(!n.some(i=>Af(i)))return e;let t=[];for(let i of n)t.push(...Cf(i));return["Add",...t]}function I0(e,n){if(!n)return"\\pm";let t=m(n,1),i=m(n,2);if(t===null)return"\\pm";if(i===null)return e.serialize(t);let r=D(t),o=D(i);if(r!==null&&o!==null&&Number.isFinite(r)&&Number.isFinite(o)&&o>0){let{value:s,error:a}=Rs(r,o,e.options.digits);return $([s,"\\pm",a])}return $([e.serialize(t),"\\pm",e.serialize(i)])}function Ci(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)+"}}":D(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}var S0=new Set(["Pi","ExponentialE","ImaginaryUnit","GoldenRatio","EulerGamma","CatalanConstant","MachineEpsilon"]);function js(e,n){let t=w(e);if(t!==null)return t===n;for(let i of I(e))if(js(i,n))return!0;return!1}function $f(e){let n=w(e);if(n!==null)return S0.has(n)?null:n;for(let t of I(e)){let i=$f(t);if(i!==null)return i}return null}function Sn(e,n){if(Ye(e))return 0;let t=w(e);if(t!==null)return t===n?1:0;let i=E(e);if(!i)return 0;if(i==="Negate")return Sn(m(e,1),n);if(i==="Multiply"){let r=0;for(let o of I(e)){let s=Sn(o,n);if(s===void 0)return;r+=s}return r}if(i==="Divide"){let r=Sn(m(e,1),n),o=Sn(m(e,2),n);return r===void 0||o===void 0?void 0:r-o}if(i==="Power"){let r=m(e,1),o=m(e,2),s=Sn(r,n);if(s===void 0)return;if(s===0)return js(o,n)?void 0:0;let a=D(o);return a===null||!Number.isInteger(a)?void 0:s*a}if(i==="Square"){let r=Sn(m(e,1),n);return r===void 0?void 0:r*2}if(i==="Add"||i==="Subtract"){let r;for(let o of I(e)){let s=Sn(o,n);s!==void 0&&(r===void 0||s>r)&&(r=s)}return r}return js(e,n)?void 0:0}function w0(e){let n=e;return E(n)==="Negate"&&(n=m(n,1)),E(n)==="BigO"?m(n,1):null}function M0(e){let n=e.map(w0);if(!n.some(u=>u!==null))return e;let t=null;for(let u of n)if(u!==null&&(t=$f(u),t!==null))break;if(t===null)return e;let i=n.find(u=>u!==null),r=(Sn(i,t)??0)>=0,o=[],s=[];for(let u=0;u<e.length;u++)n[u]!==null?s.push(e[u]):o.push(e[u]);let a=u=>Sn(u,t)??0;return o.sort((u,l)=>r?a(u)-a(l):a(l)-a(u)),[...o,...s]}function k0(e,n){e.level-=1;let t=E(n),i="",r=m(n,1);if(t==="Negate")i="-"+e.wrap(r,ce+1);else if(t==="Subtract"){i=e.wrap(r,ce);let o=m(n,2);if(o!==null){let s=e.wrap(o,ce);s[0]==="-"?i+="+"+s.slice(1):s[0]==="+"?i+="-"+s.slice(1):i=i+"-"+s}}else if(t==="Add"){let o=M0(I(n));if(e.options.prettify&&o.length===2&&e.options.invisiblePlus!=="+"){let[s,a]=o,[u,l]=[s,a],c=D(u),f=rt(l);if((c===null||f===null)&&([u,l]=[a,s],c=D(u),f=rt(l)),c!==null&&f!==null&&isFinite(c)&&Number.isInteger(c)&&c>=0&&c<=1e3&&isFinite(f[0])&&isFinite(f[1])&&f[0]>0&&f[0]<=100&&f[1]<=100)return i=In(e.options.invisiblePlus,e.serialize(u),e.serialize(l)),e.level+=1,i}if(e.options.prettify&&o.length===2){let[s,a]=Ri(o[0]),[u,l]=Ri(o[1]);if(a<0&&l>0)return i=e.wrap(u,ce)+"-"+e.wrap(s,ce),e.level+=1,i}i=E(o[0])==="Range"?e.wrap(o[0],ce):e.serialize(o[0]);for(let s=1;s<o.length;s++)if(r=o[s],e.options.prettify){let[a,u]=Ri(r),l=e.wrap(a,ce);u>0?l.startsWith("+")||l.startsWith("-")?i+=l:i+="+"+l:l.startsWith("+")?i+="-"+l.slice(1):l.startsWith("-")?i+="+"+l.slice(1):i+="-"+l}else{let a=e.wrap(r,ce);a[0]==="-"||a[0]==="+"?i+=a:i+="+"+a}}return e.level+=1,i}function Rf(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[c,f]=T0(n);f.length>0&&(f.length===1&&f[0]===1?c.length===0?t="1":c.length===1?t=e.serialize(c[0]):t=Rf(e,["Multiply",...c]):t=e.serialize(["Divide",c.length===1?c[0]:["Multiply",...c],f.length===1?f[0]:["Multiply",...f]]))}if(t)return e.level+=1,t;let i=!1,r=null,o=U(n)+1,s=I(n);e.options.prettify===!0&&s.length===2&&Ye(s[1])&&!Ye(s[0])&&(s=[s[1],s[0]]);let a=!1,u=!1,l=!1;for(let c=1;c<o;c++){if(r=s[c-1],r===null)continue;let f;if(Ye(r)){f=e.serialize(r),f==="-1"&&!t?(t="",i=!i):(f[0]==="-"&&(f=f.slice(1),i=!i),t?t=In(e.options.multiply,t,f):t=f),a=!0,u=!1,l=!1;continue}if(E(r)==="Power"){let p=rt(m(r,2));if(p!=null){let[h,b]=p;if(h===1&&b!==null){t+=Ci(e,e.rootStyle(r,e.level),m(r,1),b),a=!1,u=!1,l=!1;continue}}}if(E(r)==="Power"&&!isNaN(D(m(r,1))??NaN)){f=e.serialize(r),t?t=In(e.options.multiply,t,f):t=f,a=!0,u=!1,l=!1;continue}E(r)==="Negate"&&(r=m(r,1),i=!i),f=E(r)==="Mod"&&U(r)===2?e.wrap(r,Te+1):e.wrap(r,te);let d=w(r)==="ContinuationPlaceholder";if(!t)t=f;else{let p=E(r);a&&(p==="Divide"||p==="Rational")?t=In(e.options.multiply,t,f):/^\d/.test(f)?t=In(e.options.multiply,t,f):d||u?t=In(e.options.multiply,t,f):l&&A0(r)?t=In(e.options.multiply,t,f):e.options.invisibleMultiply?t=In(e.options.invisibleMultiply,t,f):t=$([t,f])}a=!1,u=d,l=w(r)!==null&&!d}return e.level+=1,i?"-"+t:t}function A0(e){if(e===null)return!1;let n=E(e);if(n==="Tuple"||n==="Pair"||n==="Triple")return U(e)>=2;if(n==="Delimiter"){let t=m(e,1);if(E(t)!=="Sequence"||U(t)<2)return!1;let i=z(m(e,2));return i==null||i.startsWith("(")}return!1}function Xr(e){let n=e.parseGroup();return n===null?H(e.parseToken()):K(n)?e.error("missing",e.index):n}function Yr(e){let n=Xr(e),t=Xr(e),i=E(t)==="PartialDerivative"?[t]:E(t)==="Multiply"||E(t)==="Sequence"||E(t)==="InvisibleOperator"?I(t).filter(a=>E(a)==="PartialDerivative"):[];if(i.length>0){let a=E(n)==="PartialDerivative"?m(n,1):null;(a==null||a==="Nothing")&&(a=vf(H(e.parseExpression())));let u=[];for(let c of i){let f=m(c,1),d=E(f)==="List"?I(f):[f];for(let p of d)p&&p!=="Nothing"&&u.push(p)}let l=D(m(n,2))??1;if(u.length===1&&l>1)for(let c=1;c<l;c++)u.push(u[0]);if(u.length>0)return["D",a,...u]}let r=a=>a==="d"||a==="d_upright"||a==="differentialD",o=null,s=null;{let a=E(n),u=a==="Multiply"||a==="InvisibleOperator"||a==="Sequence"?[...I(n)]:[n],l=u[0];if(r(w(l)))o=1;else if(E(l)==="Power"&&r(w(m(l,1)))){let c=D(m(l,2));c!==null&&c>0&&(o=c)}if(o!==null&&u.length>1){let c=u.slice(1);s=c.length===1?c[0]:["Multiply",...c]}}if(o!==null){let a=[],u=!1,l=c=>{if(!c)return;let f=w(c);if(f&&r(f)){u=!0;return}if(f){a.push(c);return}let d=E(c);if(d==="Sequence"||d==="Multiply"||d==="InvisibleOperator")for(let p of I(c))l(p);else if(d==="Power"){let p=m(c,1);p&&!r(w(p))&&a.push(p)}};if(l(t),u||(a.length=0),a.length===0){let c=w(t);c&&c.length>1&&c[0]==="d"&&a.push(c.slice(1))}if(a.length===1&&o>1)for(let c=1;c<o;c++)a.push(a[0]);if(a.length>0){let f=s??vf(H(e.parseExpression()));for(let d of a)f=["D",f,d];return f}}return["Divide",n,t]}function ki(e,n,t){if(e.match("_")){let r=e.parseGroup()??e.parseToken();if(r===null)return null;let o=e.parseArguments("implicit");return o===null||o.length===0?null:t==="first"?[n,r,...o]:[n,...o,r]}let i=e.parseArguments("enclosure");return i===null?n:[n,...i]}function vf(e){return E(e)==="List"&&U(e)===1?m(e,1):e}function C0(e,n,t){let i=e.parseExpression({...t,minPrec:Te+1});if(i===null)return["Divide",n,xi];let r=$0(n,i);return r||["Divide",n,i]}function $0(e,n){let t=w(e);if(t!=="d"&&t!=="d_upright"&&t!=="differentialD")return null;let i=E(n);if(i!=="InvisibleOperator"&&i!=="Multiply")return null;let r=I(n);if(r.length<3)return null;let o=w(r[0]);if(o!=="d"&&o!=="d_upright"&&o!=="differentialD")return null;let s=r[1];if(!w(s))return null;let a=r.length===3?r[2]:["InvisibleOperator",...r.slice(2)];return["D",$i(a),s]}function $i(e){if(E(e)==="Delimiter")return $i(m(e,1));if(E(e)==="InvisibleOperator"){let n=I(e);return n.length===2&&w(n[0])&&E(n[1])==="Delimiter"?[w(n[0]),$i(n[1])]:["InvisibleOperator",...n.map(t=>$i(t))]}if(Array.isArray(e)){let n=e[0];if(typeof n!="string")return e;let t=[n];for(let i=1;i<e.length;i++)t.push($i(e[i]));return t}return e}function Nf(e,n){if(n===null)return"";let t=H(m(n,1)),i=H(m(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(t),l=e.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return D(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return D(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=e.serialize(t),a=e.serialize(i);return`${o}{${s}}{${a}}`}function Js(e){let n=Xr(e),t=Xr(e);return["Binomial",n,H(t)]}function R0(e,n){if(n===null)return"";let t=e.serialize(H(m(n,1))),i=e.serialize(H(m(n,2)));return`\\binom{${t}}{${i}}`}function zs(e,n){if(!n)return"";let t=E(n),i=H(m(n,1));if(t==="Sqrt")return Ci(e,e.rootStyle(n,e.level-1),i,2);let r=H(m(n,2));if(t==="Root")return Ci(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let s=D(r)??1;if(s===-1)return e.serialize(["Divide","1",i]);if(s<0)return e.serialize(["Divide","1",["Power",i,-s]]);if(E(r)==="Divide"||E(r)==="Rational"){let a=D(m(r,1)),u=D(m(r,2));if(a===1){let l=e.rootStyle(n,e.level);return Ci(e,l,i,m(r,2))}if(a===-1)return u===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,m(r,2)??xi]]);if(u===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(m(r,1))}}`}else if(E(r)==="Power"&&D(m(r,2))===-1){let a=e.rootStyle(n,e.level);return Ci(e,a,i,m(r,1))}}return ot("^",(s=>s.startsWith("-")?e.wrapString(s,"normal"):s)(e.wrapShort(i)),e.serialize(r))}function Ai(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,o=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=D(i),e.skipSpace();let u=e.index,l=e.parseNumber();l!==null&&(e.match('"')||e.match("\\doubleprime"))?o=D(l):e.index=u}else return e.index=t,["Degrees",n];let s=D(n);if(s!==null&&r!==null){let u=3600*s+60*r+(o??0),l=Vc(u,3600);if(l===null)return["Degrees",u/3600];let[c,f]=l;return f===1?["Degrees",c]:["Degrees",["Rational",c,f]]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),o!==null&&a.push(["Quantity",o,"arcsec"]),["Add",...a]}var Pf=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ai(e,n),serialize:(e,n)=>{let t=e.options,i=m(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=D(i);if(r===null){let o=rt(i);o!==null&&o[1]!==0&&(r=o[0]/o[1])}if(r!==null){let o=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(o=Hr(o,t.angleNormalization)),t.dmsFormat?Zr(o):`${o}\xB0`}}return $([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ai(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>Ai(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>Ai(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>Ai(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=D(m(n,1)),i=D(m(n,2)),r=D(m(n,3));if(t!==null){let s=i??0,a=r??0,u=`${t}\xB0`;return(s!==0||a!==0)&&(u+=`${s}'`),a!==0&&(u+=`${a}"`),u}let o=[];for(let s of[1,2,3]){let a=m(n,s);a!==null&&o.push(e.serialize(a))}return`\\operatorname{DMS}(${o.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{latexTrigger:["\u221E"],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=>wf(e)},{latexTrigger:"\\exp",parse:e=>wf(e)},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>K(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>K(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{latexTrigger:["\\abs"],kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:ce,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:ce+1});if(i===null)return null;if(E(i)==="Negate"){let r=m(i,1);if(Ye(r))return Ef(Ft("Add",n,_0(r)))}return Ef(Ft("Add",n,i))},serialize:k0},{kind:"prefix",latexTrigger:["+"],precedence:ce,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>K(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>K(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:ce-1,serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=D(m(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":$([e.serialize(m(n,2)),"\\imaginaryI"]);return D(m(n,1))===0?r:i!==null&&i<0?$([t,r]):$([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Te,parse:Yr,serialize:Nf},{latexTrigger:"\\dfrac",precedence:Te,parse:Yr},{latexTrigger:"\\tfrac",precedence:Te,parse:Yr},{latexTrigger:"\\cfrac",precedence:Te,parse:Yr},{name:"Binomial",latexTrigger:"\\binom",parse:Js,serialize:R0},{latexTrigger:"\\dbinom",parse:Js},{latexTrigger:"\\tbinom",parse:Js},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Te,parse:"Divide"},{kind:"infix",latexTrigger:"\\choose",associativity:"none",precedence:Te,parse:"Binomial"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Te,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Te,parse:C0},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Te,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=m(n,1);return w(t)||D(t)!==null?$(["\\exponentialE^{",e.serialize(t),"}"]):$(["\\exp",e.wrap(H(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:at,parse:(e,n)=>e.peek==="="?null:["Factorial",n]},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:at},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>K(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>K(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\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",parse:e=>ki(e,"LambertW","last"),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{W}_{"+e.serialize(i)+"}"+e.wrapArguments(["LambertW",t]):"\\operatorname{W}"+e.wrapArguments(n)}},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",parse:e=>ki(e,"BesselJ","first"),serialize:(e,n)=>{let t=m(n,1),i=m(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",parse:e=>ki(e,"BesselY","first"),serialize:(e,n)=>{let t=m(n,1),i=m(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",parse:e=>ki(e,"BesselI","first"),serialize:(e,n)=>{let t=m(n,1),i=m(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",parse:e=>ki(e,"BesselK","first"),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"PolyLog",latexTrigger:["\\operatorname{Li}"],kind:"function",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup()??e.parseToken();if(n===null)return null;let t=e.parseArguments("implicit");return t===null?["PolyLog",n]:["PolyLog",n,...t]},serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{Li}_{"+e.serialize(t)+"}"+e.wrapArguments(["PolyLog",i]):"\\operatorname{Li}"+e.wrapArguments(n)}},{name:"LogIntegral",latexTrigger:["\\operatorname{li}"],kind:"function",serialize:(e,n)=>"\\operatorname{li}"+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:"AiryAiPrime",kind:"function",serialize:(e,n)=>"\\operatorname{Ai}'"+e.wrapArguments(n)},{name:"AiryBiPrime",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)=>w(n)!==null?"\\lg":"\\log_{10}"+e.wrapArguments(n),parse:e=>Mf(e)},{kind:"function",symbolTrigger:"lg",parse:e=>Mf(e)},{name:"Lb",latexTrigger:"\\lb",parse:e=>kf(e)},{kind:"function",symbolTrigger:"lb",parse:e=>kf(e)},{name:"Ln",latexTrigger:["\\ln"],parse:e=>Wr("Ln",e),serialize:(e,n)=>w(n)!==null?"\\ln":"\\ln"+e.wrapArguments(n)},{kind:"function",symbolTrigger:"ln",parse:e=>Wr("Ln",e)},{name:"Log",latexTrigger:["\\log"],parse:e=>Wr("Log",e),serialize:(e,n)=>{if(w(n)!==null)return"\\log";let[t,i]=I(n);return i?$(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{kind:"function",symbolTrigger:"log",parse:e=>Wr("Log",e)},{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=>{let n=e.diagnosticsCheckpoint();if(!e.match("_"))return null;let t=e.index,i=e.parseGroup(),r=e.index;if(E(i)!=="To")return null;let o=e.parseExpression({minPrec:te});if(!o)return null;let s=w(m(i,1));s&&e.pruneUndeclared([s],n,r,[[t,r]]);let a=m(i,2),u;E(a)==="PseudoInverse"&&U(a)===1?(u=1,a=m(a,1)):E(a)==="Superminus"&&U(a)===1&&(u=-1,a=m(a,1));let l=["Function",o,m(i,1)];return u===void 0?["Limit",l,a]:["Limit",l,a,u]},serialize:(e,n)=>{let t=m(n,1),i=m(t,2),r=m(n,2),o=D(m(n,3)),s=o===1?"^{+}":o===-1?"^{-}":"";return $(["\\lim_{",e.serialize(i),"\\to",e.serialize(r)+s,"}",e.serialize(m(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:We},{latexTrigger:["\u2213"],kind:"infix",associativity:"any",precedence:We,parse:"MinusPlus"},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:te,serialize:Rf},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:te,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:te+2});return i===null?null:Ft("Multiply",n,i)}},{latexTrigger:["\xD7"],kind:"infix",associativity:"any",precedence:te,parse:"Multiply"},{latexTrigger:["\xB7"],kind:"infix",associativity:"any",precedence:te,parse:"Multiply"},{name:"CirclePlus",latexTrigger:["\\oplus"],kind:"infix",associativity:"any",precedence:ce},{latexTrigger:["\u2295"],kind:"infix",associativity:"any",precedence:ce,parse:"CirclePlus"},{name:"CircleMinus",latexTrigger:["\\ominus"],kind:"infix",precedence:ce},{latexTrigger:["\u2296"],kind:"infix",precedence:ce,parse:"CircleMinus"},{name:"CircleTimes",latexTrigger:["\\otimes"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u2297"],kind:"infix",associativity:"any",precedence:te,parse:"CircleTimes"},{name:"CircleDot",latexTrigger:["\\odot"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u2299"],kind:"infix",associativity:"any",precedence:te,parse:"CircleDot"},{name:"CircledAst",latexTrigger:["\\circledast"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u229B"],kind:"infix",associativity:"any",precedence:te,parse:"CircledAst"},{name:"Star",latexTrigger:["\\star"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u22C6"],kind:"infix",associativity:"any",precedence:te,parse:"Star"},{latexTrigger:["\u22C5"],kind:"infix",associativity:"any",precedence:te,parse:"Multiply"},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:te,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:te+2});return i===null?["Multiply",n,xi]:Ft("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Te,serialize:(e,n)=>{if(U(n)!==2)return"";let t=m(n,1),i=E(t)==="Mod"?e.wrap(t,Te+1):e.wrap(t,te),r=e.wrap(m(n,2),te);return $([i,"\\bmod",r])}},{latexTrigger:"\\mod",kind:"infix",precedence:Te,parse:"Mod"},{latexTrigger:"\\operatorname{mod}",kind:"function",parse:"Mod"},{latexTrigger:["\\mod"],kind:"function",parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:B,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",e.error("missing",e.index),H(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));if(m(n,3)===null)return $([t,"\\equiv",i]);let r=e.serialize(m(n,3));return $([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:Ni+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:Ni+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>K(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>K(n)?null:["Norm",n],serialize:(e,n)=>{let t=m(n,1);if(E(t)==="Matrix"){let i=m(t,1),r=m(t,2),o=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(o)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"Measurement",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:We,serialize:I0},{latexTrigger:["\\pm"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["Measurement",0,H(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["Measurement",n,H(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["Measurement",0,H(t)]}},{latexTrigger:["\xB1"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["Measurement",n,H(i)]}},{latexTrigger:["\xB1"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["Measurement",0,H(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:zs},{latexTrigger:"\\prod",precedence:te,name:"Product",parse:_f("Product",te),serialize:Sf("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:Ni,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:Ni});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:Te,serialize:(e,n)=>n&&U(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):Nf(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=m(n,2);return w(i)==="Add"?`\\sum ${e.serialize(t)}`:w(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(m(n,2))}\\right)`}},{name:"Root",serialize:zs},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(m(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:ce,name:"Sum",parse:_f("Sum",te),serialize:Sf("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{symbolTrigger:"sign",kind:"function",parse:"Sign"},{latexTrigger:["\\sign"],kind:"function",parse:"Sign"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:xf,serialize:zs},{latexTrigger:["\u221A"],parse:xf},{latexTrigger:["\xBD"],parse:()=>["Rational",1,2]},{latexTrigger:["\u2153"],parse:()=>["Rational",1,3]},{latexTrigger:["\xBC"],parse:()=>["Rational",1,4]},{latexTrigger:["\xBE"],parse:()=>["Rational",3,4]},{latexTrigger:["\u2154"],parse:()=>["Rational",2,3]},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:ce+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:ce+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(m(n,1),ce+2),i=e.wrap(m(n,2),ce+3);return i.startsWith("-")&&(i=e.wrapString(i,"normal")),$([t,"-",i])}},{name:"Distance",latexTrigger:["\\operatorname{distance}"],kind:"function",serialize:(e,n)=>"\\operatorname{distance}"+e.wrapArguments(n)}];function P0(e,n){if(e!==null){if(w(e))return{index:w(e)??"Nothing",upper:n};if(Ye(e))return{index:"Nothing",lower:e,upper:n};if(E(e)==="GreaterEqual"){let t=w(m(e,1))??"Nothing",i=m(e,2)??1;return{index:t,lower:i,upper:n}}if(E(e)==="LessEqual"){let t=I(e)??[];if(t.length===3)return{index:w(t[1])??"Nothing",lower:t[0],upper:t[2]};if(t.length===2){if(w(t[0]))return{index:w(t[0]),upper:t[1]};if(w(t[1]))return{index:w(t[1]),lower:t[0],upper:n}}}if(E(e)==="Equal"){let t=w(m(e,1))??"Nothing",i=m(e,2);if(E(i)==="Range"){let o=m(i,1)??1,s=m(i,2)??void 0;return{index:t,lower:o,upper:s}}return{index:t,lower:i??1,upper:n}}if(E(e)==="Element")return{index:w(m(e,1))??"Nothing",element:e}}}function D0(e){let n=E(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function Tf(e){if(e===null)return[];let n=vn(e);if(n)return[...n];if(E(e)==="Tuple"){let t=I(e);return t?[...t]:[e]}return[e]}function F0(e,n){K(e)&&(e=null),K(n)&&(n=null);let t=Tf(e),i=Tf(n),r=[],o=0;for(;o<t.length;){let s=t[o],a=P0(s,i[o]);if(a){if(a.element&&o+1<t.length){let u=t[o+1];if(D0(u)&&E(u)!=="Element"&&E(u)!=="Equal"){let l=a.element;if(Array.isArray(l)&&l.length>=3){let c=[l[0],...l.slice(1),u];a.element=c}o++}}r.push(a)}o++}return r}function O0(e){let n=new Set;for(let t of e)if(t.index&&t.index!=="Nothing"&&n.add(t.index),t.element){let i=w(m(t.element,1));i&&n.add(i)}return n}function _f(e,n){return t=>{t.skipSpace();let i=t.diagnosticsCheckpoint();t.pushSymbolTable();let r=null,o=null,s=-1,a=-1;for(;!(o&&r)&&(t.peek==="_"||t.peek==="^");)t.match("_")?(s=t.index,o=t.parseGroup()??t.parseToken(),a=t.index):t.match("^")&&(r=t.parseGroup()??t.parseToken()),t.skipSpace();if(!r&&!o){let d=t.parseExpression({minPrec:n});return t.popSymbolTable(),d?[e,d]:null}let u=F0(o,r),l=t.index,c=t.parseExpression({minPrec:n});if(t.popSymbolTable(),t.pruneUndeclared(O0(u),i,l,s>=0?[[s,a]]:void 0),c===null)return[e];let f=[];for(let d of u){if(d.element){f.push(d.element);continue}let p=d.lower,h=d.upper,b=d.index??"Nothing";h!=null?f.push(["Tuple",b,p??1,h]):p!=null?f.push(["Tuple",b,p]):f.push(["Tuple",b])}return[e,c,...f]}}var B0=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function If(e){return e==null||w(e)==="Nothing"?null:e}function L0(e){let n=[],t=I(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=E(i);if(r&&B0.has(r)){n.push(i);continue}break}return n}function V0(e,n){if(E(n)==="Element"){let l=e.serialize(m(n,1)),c=e.serialize(m(n,2));return{sub:`${l}\\in ${c}`}}let t=m(n,1);t!==null&&E(t)==="Hold"&&(t=m(t,1));let i=If(m(n,2)),r=If(m(n,3)),o={},s=t?w(t):null,a=s!==null&&s!=="Nothing",u=a&&t?e.serialize(t):void 0;return a&&i!==null&&u?o.sub=`${u}=${e.serialize(i)}`:a&&u?o.sub=u:i!==null&&(o.sub=e.serialize(i)),r!==null&&(o.sup=e.serialize(r)),o}function Sf(e){return(n,t)=>{let i=m(t,1);if(!i)return e;let r=L0(t),o=e;if(r.length>0){let s=[],a=[];for(let u of r){let l=V0(n,u);l.sub&&s.push(l.sub),l.sup&&a.push(l.sup)}s.length>0&&(o=ot("_",o,s.join(", "))),a.length>0&&(o=ot("^",o,a.join(", ")))}return $([o,n.wrap(i,te)])}}function Gs(e){return e.skipSpace(),e.match("^")?e.parseGroup()??e.parseToken():null}function q0(e){return D(e)===-1?!0:E(e)==="Negate"&&D(m(e,1))===1}function Us(e,n,t){return n===null?e:q0(n)?t():["Power",e,n]}function wf(e){let n=Gs(e),t=e.parseArguments("implicit");return t===null?n===null?"Exp":["Power","Exp",n]:Us(["Exp",...t],n,()=>["Ln",t[0]])}function Wr(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=Gs(n),r=n.parseArguments("implicit");if(r===null&&t===null&&i===null)return e;r===null&&(r=[_n]);let o=()=>e==="Ln"?["Exp",r[0]]:["Power",t??10,r[0]],s;return t===null?s=[e,...r]:t===10?s=["Log",r[0]]:t===2?s=["Lb",...r]:s=["Log",r[0],t],Us(s,i,o)}function Mf(e){let n=Gs(e),t=e.parseArguments("implicit");return t===null&&n===null?"Lg":(t===null&&(t=[_n]),Us(["Log",...t,10],n,()=>["Power",10,t[0]]))}function kf(e){let n=e.parseArguments("implicit");return n===null?"Lb":["Log",n[0],2]}function Ri(e){let n=1,t=e;do{e=t;let i=E(e);if(i==="Negate")n*=-1,t=m(e,1);else if(i==="Multiply"){let[r,o]=Ri(m(e,1));o<0&&(n*=-1,r===1?t=["Multiply",...I(e).slice(1)]:t=["Multiply",r,...I(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,o]=Ri(m(e,1));o<0&&(n*=-1,t=[i,r,m(e,2)])}else{let r=D(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var Df=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{symbolTrigger:"arg",kind:"function",parse:"Argument",arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function P(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 o=r;do{let f=n.parsePostfixOperator(o,t);if(f===null)break;o=f}while(!0);n.skipSpace();let s=null;n.match("^")&&(s=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:te,condition:f=>i[f.peek]!==void 0||(t?.condition?.(f)??!1)});a===null&&s!==null&&(a=[_n]);let l=a?.length===2&&(o==="Arctan"||Array.isArray(o)&&o[0]==="InverseFunction"&&o[1]==="Tan")?"Arctan2":o,c=a===null?o:typeof l=="string"?[l,...a]:["Apply",l,...a];return s===null?c:["Power",c,s]}}var Ff=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:P("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:P("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:P("Arctan")},{name:"Arctan2",serialize:(e,n)=>`\\arctan(${e.serialize(m(n,1))}, ${e.serialize(m(n,2))})`},{latexTrigger:["\\arctg"],parse:P("Arctan")},{symbolTrigger:"arctg",parse:P("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:P("Arccot")},{latexTrigger:["\\arcctg"],parse:P("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:P("Arcoth")},{symbolTrigger:"arccoth",parse:P("Arcoth")},{latexTrigger:["\\arcoth"],parse:P("Arcoth")},{latexTrigger:["\\arccoth"],parse:P("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:P("Arcsec")},{latexTrigger:["\\arcsec"],parse:P("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:P("Arccsc")},{latexTrigger:["\\arccsc"],parse:P("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:P("Arsinh")},{symbolTrigger:"arcsinh",parse:P("Arsinh")},{latexTrigger:["\\arsinh"],parse:P("Arsinh")},{latexTrigger:["\\arcsinh"],parse:P("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:P("Arcosh")},{symbolTrigger:"arccosh",parse:P("Arcosh")},{latexTrigger:"\\arcosh",parse:P("Arcosh")},{latexTrigger:"\\arccosh",parse:P("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:P("Artanh")},{symbolTrigger:"arctanh",parse:P("Artanh")},{latexTrigger:"\\artanh",parse:P("Artanh")},{latexTrigger:["\\arctanh"],parse:P("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:P("Arsech")},{symbolTrigger:"arcsech",parse:P("Arsech")},{latexTrigger:["\\arsech"],parse:P("Arsech")},{latexTrigger:["\\arcsech"],parse:P("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:P("Arcsch")},{symbolTrigger:"arccsch",parse:P("Arcsch")},{latexTrigger:["\\arcsch"],parse:P("Arcsch")},{latexTrigger:["\\arccsch"],parse:P("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:P("Cosec")},{latexTrigger:["\\cosec"],parse:P("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:P("Cosh")},{latexTrigger:["\\ch"],parse:P("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:P("Cot")},{latexTrigger:["\\cotg"],parse:P("Cot")},{latexTrigger:["\\ctg"],parse:P("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:P("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:P("Csch")},{symbolTrigger:"csch",parse:P("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:P("Coth")},{latexTrigger:["\\cth"],parse:P("Coth")},{symbolTrigger:"cth",parse:P("Coth")},{latexTrigger:["\\coth"],parse:P("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:P("Sec")},{name:"Sech",symbolTrigger:"sech",parse:P("Sech")},{latexTrigger:["\\sech"],parse:P("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:P("Sinh")},{latexTrigger:["\\sh"],parse:P("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:P("Tan")},{latexTrigger:["\\tg"],parse:P("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:P("Tanh")},{latexTrigger:["\\th"],parse:P("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:P("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:P("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"},{symbolTrigger:"sin",parse:P("Sin")},{symbolTrigger:"cos",parse:P("Cos")},{symbolTrigger:"tan",parse:P("Tan")},{symbolTrigger:"sec",parse:P("Sec")},{symbolTrigger:"csc",parse:P("Csc")},{symbolTrigger:"cot",parse:P("Cot")},{symbolTrigger:"sinh",parse:P("Sinh")},{symbolTrigger:"cosh",parse:P("Cosh")},{symbolTrigger:"tanh",parse:P("Tanh")},{symbolTrigger:"coth",parse:P("Coth")},{symbolTrigger:"arcsin",parse:P("Arcsin")},{symbolTrigger:"asin",parse:P("Arcsin")},{symbolTrigger:"arccos",parse:P("Arccos")},{symbolTrigger:"acos",parse:P("Arccos")},{symbolTrigger:"arctan",parse:P("Arctan")},{symbolTrigger:"atan",parse:P("Arctan")},{symbolTrigger:"asinh",parse:P("Arsinh")},{symbolTrigger:"acosh",parse:P("Arcosh")},{symbolTrigger:"atanh",parse:P("Artanh")}];function Bt(e,n=1){return t=>{let i=t.diagnosticsCheckpoint();t.skipVisualSpace(),t.match("\\limits"),t.skipSpace();let r=null,o=null;for(;!(o!==null&&r!==null)&&(t.peek==="_"||t.peek==="^");)t.match("_")?o=t.parseGroup()??t.parseToken():t.match("^")&&(r=t.parseGroup()??t.parseToken()),t.skipSpace();K(o)&&(o=null),K(r)&&(r=null);let s=[o??"Nothing"],a=[r??"Nothing"];t.skipVisualSpace();let u=t.index,[l,c]=J0(t,n);if(l&&c.length===0){if(E(l)==="Add"||E(l)==="Subtract"){let f=[],d=[];for(let p of I(l))if(c)d.push(p);else{let h;[h,c]=wn(p),f.push(h??p)}if(c!==null&&d.length>0)return["Add",Of(e,["Add",...f],{indexes:c,subs:s,sups:a})??"Nothing",...d]}else if(E(l)==="Divide"){let f;[f,c]=wn(m(l,1)),f!==null&&c!==null&&(l=["Divide",f,m(l,2)])}}return c.length>0&&t.pruneUndeclared(c,i,u),Of(e,l,{indexes:c,subs:s,sups:a})}}function Of(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?E(n)==="Function"?I(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let s=0;s<r;s++)i.push("Nothing");else if(i.length!==r)for(let s=i.length;s<r;s++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let s=t.subs.length;s<r;s++)t.subs.push("Nothing");if(t.sups.length!==r)for(let s=t.sups.length;s<r;s++)t.sups.push("Nothing");let o=i.map((s,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?s:["Tuple",s,l,u]});return[e,n,...o]}function J0(e,n=1){let t=!1,i=e.parseExpression({minPrec:266,condition:()=>{let r=e.index;return t=Jf(e),e.index=r,t}});return i!==null&&!t?wn(i):[i,z0(e,n)]}function z0(e,n){let t=[];for(;t.length<n&&Jf(e);){e.skipVisualSpace();let i=w(e.parseSymbol());if(i===null)return t;t.push(i)}return t}function wn(e){let n=E(e),t=m(e,1);if(!t)return[e,[]];if(n==="Sequence"&&U(e)===1)return wn(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=I(e);if(i){let[r,o]=G0(i);return r.length>0?[[n,...r],o]:[null,o]}}else if(n==="Delimiter"){let[i,r]=wn(t);if(r)return i?[["Delimiter",["Sequence",i],...I(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=I(e);if(i.length>0){let[r,o]=wn(i[i.length-1]);if(o.length>0){if(r)return[["Add",...i.slice(0,-1),r],o];if(i.length>2)return[["Add",...i.slice(0,-1)],o];if(i.length>2)return[i[0],o]}}}else if(n==="Negate"){let[i,r]=wn(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=wn(t);if(r.length>0)return[["Divide",i??1,m(e,2)],r]}else{let i=I(e);if(i.length===1){let[r,o]=wn(i[0]);if(o.length>0)return[[E(e),r],o]}}return[e,[]]}function Bf(e){return(n,t)=>{if(!m(t,1))return e;let i=m(t,1),r=[];E(i)==="BuiltInFunction"?(r=["x"],i=[m(i,1),"x"]):E(i)==="Function"?(r=I(i).slice(1),i=m(i,1)):w(i)?r=[]:r=[];let o=I(t).slice(1),s=[],a=o.map((c,f)=>{if(w(c)==="Nothing")return s.push(w(r[f])??"Nothing"),"";if(w(c))return s.push(w(c)??"Nothing"),"";let d=E(c);if(d==="Tuple"||d==="Triple"||d==="Pair"||d==="Limits"||d==="Range"){if(U(c)===3){let p=m(c,1);s.push(w(p)??"Nothing");let h=m(c,2),b=m(c,3);return w(h)==="Nothing"&&(h=null),w(b)==="Nothing"&&(b=null),h!==null&&b!==null?`_{${n.serialize(h)}}^{${n.serialize(b)}}`:h!==null?`_{${n.serialize(h)}}`:b!==null?`^{${n.serialize(b)}}`:""}return`_{${n.serialize(c)}}`}if(U(c)===2){if(w(m(c,1))){s.push(w(m(c,1))??"Nothing");let b=m(c,2);return w(b)==="Nothing"?"":`_{${n.serialize(b)}}`}s.push(w(r[f])??"Nothing");let p=m(c,1),h=m(c,2);if(w(p)==="Nothing"&&(p=null),w(h)==="Nothing"&&(h=null),p!==null&&h!==null)return`_{${n.serialize(p)}}^{${n.serialize(h)}}`;if(p!==null)return`_{${n.serialize(p)}}`;if(h!==null)return`^{${n.serialize(h)}}`}else s.push(w(r[f])??"Nothing")}),u=s.filter(c=>w(c)!=="Nothing").map(c=>`\\mathrm{d}${n.serialize(w(c)??"x")}`);if(u.length>0&&(u=["\\,",...u]),a.length===0)return`${e}\\,${n.serialize(i)}\\!${u.join(" ")}`;let l=j0(e,a);return l!==null?l+"\\!"+n.serialize(i)+u.join(" "):a.reverse().map(c=>`${e}${c}`).join("")+"\\!"+n.serialize(i)+u.join(" ")}}function j0(e,n){let t=n.length;if(t!==2&&t!==3)return null;let r={"\\int":["\\iint","\\iiint"],"\\oint":["\\oiint","\\oiiint"]}[e];return!r||n.slice(1).some(o=>o)?null:r[t-2]+(n[0]??"")}var qf=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Bt("Integrate"),serialize:Bf("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Bt("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Bt("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Bt("CircularIntegrate"),serialize:Bf("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Bt("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Bt("CircularIntegrate",3)},{kind:"expression",name:"Series",serialize:(e,n)=>"\\operatorname{Series}"+e.wrapArguments(n)},{kind:"expression",name:"Normal",serialize:(e,n)=>"\\operatorname{Normal}"+e.wrapArguments(n)},{kind:"expression",name:"InterpolatingFunction",serialize:(e,n)=>{let t=m(n,1),i="";if(E(t)==="List"&&U(t)>0){let s=I(t),a=s[0],u=s[s.length-1],l=p=>typeof p=="number"?p:p!==null&&typeof p=="object"&&"num"in p?parseFloat(p.num):null,c=l(m(a,1)),f=l(m(u,1)),d=l(m(u,2));if(c!==null&&f!==null&&d!==null){let p=h=>e.serialize(Math.round(h*1e6)/1e6);i=`\\left[${p(c)}, ${p(f+d)}\\right]`}}let r=U(n)>1?m(n,2):null,o=r===null?"":`\\left(${e.serialize(r)}\\right)`;return`\\operatorname{InterpolatingFunction}_{${i}}${o}`}},{kind:"expression",name:"BigO",latexTrigger:["\\mathcal","<{>","O","<}>"],parse:Lf,serialize:(e,n)=>"O\\left("+e.serialize(m(n,1))+"\\right)"},{kind:"expression",latexTrigger:["\\operatorname","<{>","O","<}>"],parse:Lf},{kind:"expression",latexTrigger:["\\mathrm","<{>","D","<}>"],parse:e=>Vf(e,"D_upright")},{kind:"expression",latexTrigger:["\\operatorname","<{>","D","<}>"],parse:e=>Vf(e,"D")}];function Lf(e){let n=e.parseArguments();return n===null?"BigO":["BigO",...n]}function Vf(e,n){let t=e.parseArguments();return t===null||t.length===0?n:["D",...t]}function Jf(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 G0(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=U0(n),!i)break;t.push(i)}return[n,t]}function U0(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=w(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var H0=new Set(["Integers","RationalNumbers","RealNumbers","ComplexNumbers","NonNegativeIntegers","AlgebraicNumbers","TranscendentalNumbers","ImaginaryNumbers","ExtendedRealNumbers","ExtendedIntegers","ExtendedRationalNumbers","ExtendedComplexNumbers"]),zf={Integers:"PositiveIntegers",NonNegativeIntegers:"PositiveIntegers",RealNumbers:"PositiveNumbers",ComplexNumbers:"UpperHalfPlane"},jf=[{name:"Matrix",serialize:(e,n)=>{let t=I(m(n,1));return Hs(e,t,z(m(n,2)),z(m(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=I(n);return Hs(e,t.map(i=>["List",i]),z(m(n,2)),z(m(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=kn(e,!1),[t,i]=Mn(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=kn(e),[t,i]=Mn(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:["^","+"],parse:(e,n)=>{if(typeof n=="string"){if(n in zf)return zf[n];if(H0.has(n))return null}return["PseudoInverse",n]}},{name:"Inverse",serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=m(n,1);if(E(t)==="Matrix"){let i=I(m(t,1));return Hs(e,i,"||",z(m(t,2)))}return Lt(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return`${t} \\cdot ${i}`}},{name:"HadamardProduct",latexTrigger:["\\odot"],kind:"infix",associativity:"any",precedence:te}];function Mn(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function kn(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 Lt(e,n,t){if(I(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=m(n,1),o=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${o}`:`${t}\\left(${o}\\right)`}function Hs(e,n,t,i){t??="()";let[r,o]=["",""];typeof t=="string"&&t.length===2&&([r,o]=t);let s="";if(i)for(let c of i)c==="<"?s+="l":c===">"?s+="r":c==="="?s+="c":c==="|"?s+="|":c===":"&&(s+=":");let a=[];for(let c of n??[]){let f=[];for(let d of I(c))f.push(e.serialize(d));a.push(f.join(" & "))}let u=a.join(`\\\\
6
+ `));throw c.position=n.position,c.rawMessage=t,c}advance(){let n=this.current;return this._end=n.position+n.value.length,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}parseTypePrefix(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();return n||this.error("Expected a type"),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,o=0,s=10;for(;this.current.type!=="EOF"&&o<s;){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}o++}this.advance(),o++}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.parseBroadcastableType()||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 s=this.parseArgument();s||this.error("Expected argument"),n.push(s)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(s=>s.modifier==="optional"),r=n.some(s=>s.modifier==="variadic_zero"||s.modifier==="variadic_one"),o=n.filter(s=>s.modifier==="variadic_zero"||s.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),o>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 o=this.parseUnionType();return o?this.createNode("named_element",{name:n,type:o}):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.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}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.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}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=this.parseDimension();if(!n)return;let t=[n];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),t.push(this.parseDimension())}else break}return t}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})}}parseCaretDimensions(){let n=this.match("("),t=this.parseDimensions();return n&&this.expect(")"),t}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 o=this.parseNamedElement();o||this.error("Expected tuple element"),r&&!o.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&o.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(o)}}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})}}parseBroadcastableType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="broadcastable"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("broadcastable",{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();this.expect(">");let o=i?.value??-1/0,s=r?.value??1/0;return(Number.isNaN(o)||Number.isNaN(s))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),o>s&&this.error(`Invalid range: ${o}..${s}`,"The lower bound must be less than the upper bound"),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(nt.has(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 cc(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"broadcastable":return n.visitBroadcastableType(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 bs=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return cc(n,this)}visitFunctionSignature(n){let t=[],i=[],r,o;for(let u of n.arguments){let l=this.buildNamedElement(u.element);switch(u.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,o=0;break;case"variadic_one":r=l,o=1;break;default:t.push(l);break}}let s=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:s};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=o),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}}visitBroadcastableType(n){return{kind:"broadcastable",elements:this.buildType(n.elementType)}}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 fc(e,n){return new bs(n).buildType(e)}var Mr=new Map,Kh=2048;function dc(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;Object.freeze(e);for(let n of Object.values(e))dc(n);return e}function L(e,n){if(e===void 0)return;if(Ir(e))return e;if(typeof e!="string")return;let t=n===void 0;if(t){let i=Mr.get(e);if(i!==void 0)return i}try{let r=new wr(e,{typeResolver:n}).parseType(),o=fc(r,n);return t&&(Mr.size>=Kh&&Mr.clear(),Mr.set(e,dc(o))),o}catch(i){throw new Error(`Failed to parse type "${e}": ${i instanceof Error?i.message:String(i)}`)}}var pc={number:Nr,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","real","rational","integer","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:gs,unknown:[],nothing:[],never:[],error:[],value:ms,scalar:_r,collection:Tr,indexed_collection:ps,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:hs},fi=(()=>{let e={},n=t=>{if(e[t])return e[t];let i=new Set([t]);e[t]=i;for(let r of pc[t])if(r!==t)for(let o of n(r))i.add(o);return i};for(let t of Object.keys(pc))n(t);return e})();function Ct(e,n){return n==="any"||e==="never"?!0:n==="never"?!1:n==="error"?e==="error":n==="nothing"?e==="nothing":e==="nothing"?!1:n==="unknown"?!0:e==="unknown"?!1:e===n?!0:fi[n].has(e)}function pi(e,n){if(e===n)return[e];let t=fi[e],i=fi[n];if(t.has(n))return[n];if(i.has(e))return[e];let r=e<n?`${e}|${n}`:`${n}|${e}`,o=mc.get(r);if(o)return o;let s=[];for(let u of t)i.has(u)&&s.push(u);let a=s.filter(u=>!s.some(l=>l!==u&&fi[l].has(u)));return mc.set(r,a),a}var mc=new Map;function Qh(e){return e.lower!==void 0&&e.upper!==void 0&&Number.isFinite(e.lower)&&Number.isFinite(e.upper)}function eg(e){switch(e){case"number":return"finite_number";case"complex":return"finite_complex";case"real":return"finite_real";case"rational":return"finite_rational";case"integer":return"finite_integer";default:return e}}var xs={finite_number:"number",finite_complex:"complex",finite_real:"real",finite_rational:"rational",finite_integer:"integer"};function ng(e){if(!e.some(t=>t==="non_finite_number"))return e;let n;for(let t of e){if(typeof t!="string")continue;let i=xs[t];i&&(n??=[]).push(i)}return n?[...e,...n]:e}function tg(e,n){if(e==="never"||n==="never")return!0;if(e==="any"||n==="any"||e==="unknown"||n==="unknown")return!1;if(e==="nothing"||n==="nothing")return e!==n;if(C(e,n)||C(n,e))return!1;if(typeof e=="object"&&e.kind==="value"||typeof n=="object"&&n.kind==="value")return!0;if(typeof e=="string"&&typeof n=="string")return pi(e,n).length===0;if(typeof e=="object"&&e.kind==="numeric"&&typeof n=="object"&&n.kind==="numeric"){if(pi(e.type,n.type).length===0)return!0;let r=e.lower??-1/0,o=e.upper??1/0,s=n.lower??-1/0,a=n.upper??1/0;return o<s||a<r}let t=di(e),i=di(n);if(t!==i){let r=t?n:e;if(!Es(r)&&!vs(r)&&!di(r))return!0}return!1}function C(e,n){if(typeof e=="string"&&!nt.has(e)&&(e=L(e)),typeof n=="string"&&!nt.has(n)&&(n=L(n)),n==="any"||e==="never")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"){if(typeof e=="string")return Ct(e,n);if(e.kind==="broadcastable")return C(e.elements,n)&&C({kind:"indexed_collection",elements:e.elements},n);if(e.kind==="value")return typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?Ct("integer",n):Ct("real",n):typeof e.value=="boolean"?Ct("boolean",n):typeof e.value=="string"?Ct("string",n):!1;if(e.kind==="union")return e.types.every(t=>C(t,n));if(e.kind==="intersection")return e.types.some(t=>C(t,n));if(e.kind==="negation")return!1;if(e.kind==="numeric"){let t=Qh(e)?eg(e.type):e.type;return!!C(t,n)}return n==="number"?di(e):n==="symbol"?ys(e):n==="expression"?rg(e):n==="function"?xc(e):n==="scalar"?Es(e):n==="value"?vs(e):n==="indexed_collection"?yc(e):n==="collection"?bc(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"){let t=ng(n.types),i=r=>C(r.elements,n)&&C({kind:"indexed_collection",elements:r.elements},n);return typeof e!="string"&&e.kind==="broadcastable"?i(e):typeof e!="string"&&e.kind==="union"?e.types.every(r=>typeof r!="string"&&r.kind==="broadcastable"?i(r):t.some(o=>C(r,o))):t.some(r=>C(e,r))}if(n.kind==="negation")return typeof e!="string"&&e.kind==="negation"?C(n.type,e.type):tg(e,n.type);if(n.kind==="expression"){if(e==="symbol")return n.operator==="Symbol";if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?ys(e):e.operator===n.operator;if(e.kind==="symbol")return n.operator==="Symbol"}if(n.kind==="broadcastable"){if(typeof e!="string"&&e.kind==="broadcastable")return C(e.elements,n.elements);if(typeof e!="string"&&e.kind==="union")return e.types.every(i=>C(i,n));if(C(e,n.elements))return!0;let t=ig(e);return t!==void 0?C(t,n.elements):!1}if(typeof e!="string"&&e.kind==="broadcastable")return C(e.elements,n)&&C({kind:"indexed_collection",elements:e.elements},n);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 C(e,n.def)}if(e.kind==="union")return e.types.some(t=>C(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>C(i,t)));if(e.kind==="intersection")return e.types.every(t=>C(t,n));if(n.kind==="intersection")return n.types.every(t=>C(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!C(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(!C(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(!C(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||!C(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(!C(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(!C(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(!C(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)||!C(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return C(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?C(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>C(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return C(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>C(t.type,n.elements));if(e.kind==="set")return C(e.elements,n.elements);if(e.kind==="dictionary")return C({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return C({kind:"tuple",elements:[{type:"string"},{type:ve(...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(!C(i.type,r.type)||r.name!==void 0&&i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!C(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(n.kind==="numeric"&&e.kind==="value"){if(typeof e.value!="number")return!1;let t=Number.isInteger(e.value)?"finite_integer":"finite_real";return!(!Ct(t,n.type)||e.value<(n.lower??-1/0)||e.value>(n.upper??1/0))}if(e.kind==="numeric"&&n.kind==="numeric")return!(!C(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!!C(e.elements,n.elements);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return C("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?C("integer",n):C("real",n);if(typeof e.value=="string")return C("string",n)}return!1}function di(e){return typeof e=="string"?At.has(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function Es(e){return di(e)?!0:typeof e=="string"?uc.has(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function bc(e){return yc(e)?!0:typeof e=="string"?ac.has(e):["collection","set","record","dictionary"].includes(e.kind)}function yc(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function ig(e){if(typeof e=="string")return e==="indexed_collection"||e==="list"?"any":void 0;if(e.kind==="indexed_collection")return e.elements;if(e.kind==="list"){let n=e.dimensions;return n&&n.length>1?{kind:"list",elements:e.elements,dimensions:n.slice(1)}:e.elements}}function vs(e){return Es(e)||bc(e)}function xc(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function rg(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||vs(e)||xc(e)||ys(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function ys(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function og(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"||C(e,n)?e:C(n,e)?n:"never"}function sg(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(C(e,n))return n;if(C(n,e))return e;let t=lg(e,n);return ag.has(t)?ug(e,n):t}var ag=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function ug(e,n){let t=[],i=new Set,r=o=>{if(typeof o=="object"&&o.kind==="union"){for(let a of o.types)r(a);return}let s=typeof o=="string"?o:JSON.stringify(o);i.has(s)||(i.add(s),t.push(o))};return r(e),r(n),t.length===1?t[0]:{kind:"union",types:t}}function Ns(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>og(n,t))}function ve(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>sg(n,t))}var hc=["non_finite_number","finite_integer","integer","finite_rational","rational","finite_real","real","imaginary","finite_complex","complex","finite_number","number","list","record","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],gc=new Map;function lg(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(typeof e=="string"&&typeof n=="string"){let t=e<n?`${e}|${n}`:`${n}|${e}`,i=gc.get(t);if(i===void 0){i="any";for(let r of hc){let o=fi[r];if(o.has(e)&&o.has(n)){i=r;break}}gc.set(t,i)}return i}for(let t of hc)if(C(e,t)&&C(n,t))return t;return"any"}var vc=3,Nc=1,Tc=2,cg=4,fg=5,dg=6,pg=7,mg=8,hg=9,gg=10,bg=11;function q(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=`!${q(e.type,vc)}`;break;case"union":{let u=[],l=c=>{typeof c=="object"&&c.kind==="union"?c.types.forEach(l):u.push(q(c,Nc))};e.types.forEach(l),t=u.sort().join(" | ");break}case"intersection":t=e.types.map(u=>q(u,Tc)).join(" & ");break;case"expression":t=`expression<${Ec(e.operator)}>`;break;case"symbol":t=`symbol<${Ec(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"&&At.has(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<${q(e.elements)}>`:t=`vector<${q(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${q(e.elements)}>`:t=`matrix<${q(e.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${q(e.elements)}${u}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([u,l])=>`${u}: ${q(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${q(e.values)}>`;break;case"set":t=`set<${q(e.elements)}>`;break;case"broadcastable":t=`broadcastable<${q(e.elements)}>`;break;case"collection":t=`collection<${q(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${q(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[u]=e.elements;t=`tuple<${$t(u)}>`}else t="tuple<"+e.elements.map(u=>$t(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>$t(u)).join(", "):"",o=e.optArgs?e.optArgs.map(u=>$t(u)+"?").join(", "):"",s=e.variadicArg?e.variadicMin===0?`${$t(e.variadicArg)}*`:`${$t(e.variadicArg)}+`:"";t=`(${[r,o,s].filter(u=>u).join(", ")}) -> ${q(e.result)}`;break;default:t="error"}return n>0&&n>yg(e.kind)?`(${t})`:t}function $t(e){return e.name?`${e.name}: ${q(e.type)}`:q(e.type)}function Ec(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function yg(e){switch(e){case"negation":return vc;case"union":return Nc;case"intersection":return Tc;case"list":return cg;case"record":return fg;case"dictionary":return dg;case"set":return pg;case"collection":case"indexed_collection":case"broadcastable":return mg;case"tuple":return hg;case"signature":return gg;case"value":return bg;default:return 0}}function _c(e){if(e==="function")return L("(any*) -> unknown");if(typeof e!="string"&&e.kind==="signature")return e}function Pn(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function le(e){if(e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="dictionary"||e==="record")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="indexed_collection")return e.elements;if(e.kind==="list"){let n=e.dimensions;return n&&n.length>1?{kind:"list",elements:e.elements,dimensions:n.slice(1)}:e.elements}if(e.kind==="set"||e.kind==="broadcastable")return e.elements;if(e.kind==="tuple")return ve(...e.elements.map(n=>n.type));if(e.kind==="dictionary")return L(`tuple<string, ${q(e.values)}>`);if(e.kind==="record")return L(`tuple<string, ${q(ve(...Object.values(e.elements)))}>`)}}function kr(e){return C(e,"complex")&&!C(e,"real")}var pe=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(ve(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(Ns(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=L(n,t):this.type=n}matches(n){return n instanceof e?C(this.type,n.type):C(this.type,n)}is(n){return C(this.type,n)&&C(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return q(this.type)}toJSON(){return q(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return q(this.type)}};function F(e){return e?._kind==="number"}function S(e,n){return e?._kind==="symbol"&&(n===void 0||e.symbol===n)}function g(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function ne(e){return e?._kind==="string"}function tt(e){return e?._kind==="tensor"}function Dn(e){return e?._kind==="dictionary"}function Q(e){return e?._kind==="symbol"?e.symbol:void 0}var Cv=Object.freeze({bySubject:new Map,membership:new Map,geEdges:new Map,inequalitySubjects:new Set});var Ov=[0,-1,1,Math.PI,Math.E,-Math.PI,-Math.E,.5,-.5];function vg(e){if(!e)return;let n=ne(e)?e.string:Q(e);if(n!==void 0)try{return L(n)}catch{return}}function he(e){return g(e,"Typed")?Q(e.op1)??"":Q(e)??""}function mi(e){if(g(e,"Typed"))return vg(e.op2)}var Ar;function me(e){if(!e||ne(e))return;if(e.operator==="Function"&&e.isCanonical||S(e))return e;if(g(e,"BuiltinFunction"))return e.op1;if(g(e,"Delimiter")){let o=e.op1;if(g(o,"Sequence"))if(o.nops===1)e=o;else return me(e.engine._fn("Block",o.ops,{canonical:!1}));return me(g(e)?e.op1:void 0)}if(g(e,"Function"))return hi(e.engine,e.ops);e.operator;let n=e.engine,t=e.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=n.function("Block",[t]):t=t.canonical;let o=t.unknowns;o.length>0&&(r=o.map(s=>n.symbol(s,{canonical:!1})))}return hi(n,[t,...r])}function hi(e,n){if(n.length===0)return;let t=n.slice(1).map(u=>S(u)?u:g(u,"Typed")&&S(u.op1)?Tg(e,u):e.error("expected-a-symbol",u.toString())),i=[],r=new Map;for(let u of t){let l=he(u);if(!l)continue;i.push(l);let c=mi(u);c!==void 0&&r.set(l,c)}let o=n[0],s;g(o,"Typed")&&(s=kc(e,o.op2),o=o.op1),e._pushShadowedParameters(i,r.size>0?r:void 0);let a;try{if(s===void 0)a=o.operator==="Block"?o.canonical:e.function("Block",[o]);else{let u=g(o,"Block")?[...o.ops]:[o];u.length===0&&u.push(e.Nothing);let l=u.length-1;u[l]=e._fn("Typed",[u[l],s],{canonical:!1}),a=e.function("Block",u)}}finally{e._popShadowedParameters()}a.isScoped;for(let u of t){let l=he(u);if(!l||a.localScope.bindings.has(l))continue;let c=mi(u);c!==void 0?e.declare(l,{inferred:!1,type:c},a.localScope):e.declare(l,{inferred:!0,type:"unknown"},a.localScope)}return e._fn("Function",[a,...t])}function kc(e,n){if(!n)return e.string("unknown");let t=ne(n)?n.string:Q(n);return t!==void 0?e.string(t):n}function Tg(e,n){return g(n)?e._fn("Typed",[n.op1,kc(e,n.op2)],{canonical:!1}):n}function Ic(e,n,t){if(!e.strict)return;let i=mi(n);if(i!==void 0)return t.type.matches(i)?i:void 0}function Ts(e,n){let t=e.Nothing;for(let i of n){t=i.evaluate();let r=t.operator;if(r==="Return"||r==="Break"||r==="Continue")break}return t}function _s(e,n){return n.operator==="Return"&&g(n)?n.ops.length>0?n.op1:e.Nothing:n}function Sc(e,n){let t=[],i=new Set(n.filter(r=>r));for(let[r,o]of[...e.bindings])(i.has(r)||"value"in o&&o.value.inferredType&&o.value.value===void 0)&&(t.push([r,o]),e.bindings.delete(r));return t}function wc(e,n){for(let[t,i]of n)e.bindings.set(t,i)}function Mc(e,n){if(!S(n))return n;let t=e.lookupDefinition(n.symbol);if(t&&"operator"in t){let i=t.operator._lambdaLiteral;if(i!==void 0)return i}return n}function Ss(e,n,t){if(n.operator==="Function"&&g(n)){let i=n.op1;if(i&&g(i)&&i.localScope){let r=new Set(n.ops.slice(1).map(u=>he(u)).filter(u=>u)),o=new Map;for(let[u,l]of i.localScope.bindings)r.has(u)&&o.set(u,l);let s={parent:t,bindings:o},a=e._fn("Block",i.ops,{scope:s});return e._fn("Function",[a,...n.ops.slice(1)])}return n}if(g(n)&&n.ops.length>0){let i=!1,r=n.ops.map(o=>{let s=Ss(e,o,t);return s!==o&&(i=!0),s});if(i)return e._fn(n.operator,r)}return n}function Ac(e,n){let t=e.engine,i=n;if(g(e,"Function")){let a=e.ops.slice(1).map(u=>he(u)).filter(u=>!!u);if(a.some(u=>u in n)){i={...n};for(let u of a)delete i[u]}}if(Object.keys(i).length===0)return e;let r=Q(e);if(r!==void 0)return i[r]??e;if(!g(e)||tt(e))return e.subs(i);let o=e.ops.map(a=>Ac(a,i)),s=e.isCanonical||e.isStructural?"canonical":"raw";return o.every(a=>a.isValid)?t.function(e.operator,o,{form:s}):t.function(e.operator,o,{form:"raw"})}var _g=new Set(["If","Which","When","Match"]);function Cc(e,n){return g(e)?_g.has(e.operator)&&e.has(n)?!0:e.ops.some(t=>Cc(t,n)):!1}function Is(e,n){return(t,i)=>{e._enterRecursion();try{return n(t,i)}finally{e._exitRecursion()}}}function Ig(e){let n=e.engine;if(S(e)){let f=e.symbol;return(d,p)=>n.function(f,d).evaluate(p)}let t=me(e);if(!t)throw new Error("Invalid function literal");e=t,e.operator,e.isCanonical;let i=e;if(i.ops.length===1){i.ops[0];let f=i.ops[0];if(!f.isScoped||!f.localScope)return Is(n,(p,h)=>f.evaluate(h));let d=f;return Is(n,(p,h)=>{let b=d.localScope,v={parent:b.parent??n.context.lexicalScope,bindings:new Map},T=b.parent;b.parent=v,n.pushScope(v);let _;try{_=_s(n,Ts(n,d.ops)),_=Mc(n,_),_=Ss(n,_,v),h?.numericApproximation&&(_=_.evaluate({numericApproximation:!0}))}finally{n.popScope(),b.parent=T}return _.isValid?_:void 0})}let[r,...o]=i.ops;if(r.isScoped,!r.localScope)throw new Error("Function body must be a scoped Block expression");let s=r,a=o.some(f=>mi(f)!==void 0),u=s.ops[s.ops.length-1],l=g(u,"Typed")?u.op2:void 0;return Is(n,(f,d)=>{if(f.length>o.length)throw new Error(`Too many arguments for function "${e.toString()}": expected ${o.length}, got ${f.length}`);if(n.strict&&!f.every(k=>k.isValid))return;if(f.length<o.length){let k=o.slice(f.length),O=new Set([...r.symbols,...o.map(de=>he(de))]),j=k.map((de,Be)=>{let Je=`_${Be+1}`,ts=0;for(;O.has(Je);)Je=`_${Be+1}_${ts++}`;return O.add(Je),n.symbol(Je,{canonical:!1})}),G=k.map((de,Be)=>g(de,"Typed")?n._fn("Typed",[j[Be],de.op2],{canonical:!1}):j[Be]),re=Object.fromEntries(k.map((de,Be)=>[he(de),j[Be]])),oe=f.map(de=>de.evaluate());if(n.strict&&a&&Ar){let de=i.type.type;if(typeof de!="string"&&de.kind==="signature"){let Be={kind:"signature",args:(de.args??[]).slice(0,f.length),result:de.result},Je=Ar(n,oe,Be);if(Je!==null){if(Je.some(ts=>!ts.isValid))return n._fn("Apply",[i,...Je]);oe=[...Je]}}}let ie={parent:s.localScope.parent??n.context.lexicalScope,bindings:new Map};for(let de=0;de<f.length;de++){let Be=he(o[de]);if(Be){let Je=Ic(n,o[de],oe[de]);Je!==void 0?n.declare(Be,{value:oe[de],type:Je,inferred:!1},ie):n.declare(Be,{value:oe[de],inferred:!0},ie)}}let ae=s.localScope,ke=ae.parent;ae.parent=ie;let Xn=o.slice(0,f.length).map(de=>he(de)),ns=Sc(ae,Xn);n.pushScope(ie);let Ll;try{Ll=_s(n,Ts(n,s.ops))}finally{n.popScope(),ae.parent=ke,wc(ae,ns)}let Vl=Ll.subs(re),Nh=l!==void 0?n._fn("Typed",[Vl,l],{canonical:!1}):Vl;return n.function("Function",[Nh,...G])}let p=f.map(k=>k.evaluate());if(n.strict&&a&&Ar){let k=Ar(n,p,i.type.type);if(k!==null){if(k.some(O=>!O.isValid))return n._fn("Apply",[i,...k]);p=[...k]}}let b={parent:s.localScope.parent??n.context.lexicalScope,bindings:new Map},y=o.map(k=>he(k));for(let k=0;k<o.length;k++)if(y[k]){let O=Ic(n,o[k],p[k]);O!==void 0?n.declare(y[k],{value:p[k],type:O,inferred:!1},b):n.declare(y[k],{value:p[k],inferred:!0},b)}let v=s.localScope,T=v.parent;v.parent=b;let _=Sc(v,y);n.pushScope(b);let A;try{if(A=_s(n,Ts(n,s.ops)),A=Mc(n,A),A=Ss(n,A,b),A.has(y)){let k;for(let O=0;O<o.length;O++){let j=y[O];if(!j||!A.has(j))continue;let G=p[O];G.has(j)&&(A.isSame(G)||!Cc(A,j))||((k??={})[j]=G)}k!==void 0&&(A=Ac(A,k))}d?.numericApproximation&&(A=A.evaluate({numericApproximation:!0}))}finally{n.popScope(),v.parent=T,wc(v,_)}return A.isValid?A:void 0})}function X(e){return Ig(e)??((n,t)=>e.engine.function("Apply",[e,...n]).evaluate(t))}var on=100;function sn(e){return(e.isFiniteCollection??!1)&&e.isIndexedCollection}var Sg=new Set(["Tuple","Pair","Triple","Single"]);function it(e){let n=e.type.type;return typeof n=="string"||n.kind!=="tuple"?!1:n.elements.every(t=>C(t.type,"number"))}function gi(e){let n=e.type.type;return n==="unknown"||n==="any"||n==="value"?g(e):typeof n!="string"&&n.kind==="broadcastable"}function ws(e){return it(e)||!C(e.type.type,"number")?!1:F(e)?!0:S(e)?!e.valueDefinition?.inferredType:g(e)?!(!e.operatorDefinition||e.operatorDefinition.inferredSignature):!1}function Rt(e){let n=e.type.type;if(typeof n!="string"&&n.kind==="tuple")return!0;if(S(e)){let t=e.value;if(t!==void 0&&!S(t)){let i=t.type.type;return typeof i!="string"&&i.kind==="tuple"}}return!1}function bi(e){return g(e)&&Sg.has(e.operator)&&(e.ops?.length??0)>0}function Cr(e,n,t,i,r=!1){let o=d=>sn(d)&&!Rt(d),s=t.filter(o);if(s.length===0)return;let a=1/0;for(let d of s){let p=d.count;if(p===void 0||p<0)return;p<a&&(a=p)}if(!Number.isFinite(a))return;if(r&&a>on)return yi(e,n,t,o,i);let u={numericApproximation:i},l=t.map(d=>o(d)),c=t.map((d,p)=>l[p]?d.each():void 0),f=[];for(let d=1;d<=a;d++){let p=[];for(let h=0;h<t.length;h++){let b=c[h];if(b===void 0){p.push(t[h]);continue}let{value:y,done:v}=b.next();p.push(v||y===void 0?e.Nothing:y)}f.push(e._fn(n,p).evaluate(u))}return e._fn("List",f)}function yi(e,n,t,i,r=!1){let o=new Set;for(let d of t)if(!i(d))for(let p of d.symbols)o.add(p);let s=[],a=[],u=[],l=0;for(let d of t)if(i(d)){let p;do l+=1,p=`_${l}`;while(o.has(p));let h=e.symbol(p,{canonical:!1});a.push(h),u.push(h),s.push(d)}else u.push(d);let c=e._fn(n,u,{canonical:!1});r&&(c=e._fn("N",[c],{canonical:!1}));let f=e.function("Function",[c,...a]);return e.function("Map",[...s,f])}function $c(e){let n=(t,i)=>Number.isFinite(i)?t.keepPartial?Math.ceil(i/t.size):i>=t.size?Math.floor((i-t.size)/t.step)+1:0:1/0;return{isLazy:()=>!0,count:t=>{let i=e(t);if(i===void 0)return;let r=i.src.count;if(r!==void 0)return n(i,r)},isFinite:t=>{let i=e(t);if(i!==void 0)return i.src.isFiniteCollection},isEmpty:t=>{let i=e(t);if(i===void 0)return;let r=i.src.count;if(r!==void 0)return n(i,r)===0},at:(t,i)=>{if(typeof i!="number"||i<1)return;let r=e(t);if(r===void 0)return;let{src:o,size:s,step:a,keepPartial:u}=r,l=o.count;if(l===void 0)return;let c=(i-1)*a+1,f=c+s-1,d=f;if(Number.isFinite(l)){if(u){if(c>l)return;d>l&&(d=l)}else if(f>l)return}let p=[];for(let h=c;h<=d;h++){let b=o.at(h);if(b===void 0)return;p.push(b)}return t.engine.function("List",p)},iterator:t=>{let i=e(t);if(i===void 0)return;let{src:r,size:o,step:s,keepPartial:a}=i,u=t.engine,l=r.each(),c=[],f=0,d=!1;return{next:()=>{if(d)return{value:void 0,done:!0};for(;f>0;){if(l.next().done)return d=!0,{value:void 0,done:!0};f-=1}for(;c.length<o;){let h=l.next();if(h.done){if(d=!0,a&&c.length>0){let b=c.splice(0,c.length);return{value:u.function("List",b),done:!1}}return{value:void 0,done:!0}}c.push(h.value)}let p=c.slice(0,o);return s<o?c.splice(0,s):(c.length=0,f=s-o),{value:u.function("List",p),done:!1}}}}}}function wg(e,n,t){if(!(e.isFiniteCollection!==!0||n.isFiniteCollection!==!0)){for(let i of e.each())if(n.contains(i)!==!0)return!1;if(t){let i=e.count;if(i===void 0)return!1;let r=n.count;if(r===void 0||i===r)return!1}return!0}}function Mg(e,n){if(g(e)){for(let t=0;t!==e.nops;t+=1)if(n(e.ops[t]))return t+1}}function $r(){return{isLazy:e=>!1,count:e=>g(e)?e.nops:0,isEmpty:e=>!g(e)||e.nops===0,isFinite:e=>!0,contains:(e,n)=>g(e)?e.ops.some(t=>t.isSame(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.nops;return{next:()=>n===t+1?{value:void 0,done:!0}:(n+=1,{value:e.ops[n-1-1],done:!1})}},subsetOf:wg,at:(e,n)=>{if(!(typeof n!="number"||!g(e))&&(n<0&&(n=e.nops+n+1),!(n<1||n>e.nops)))return e.ops[n-1]},indexWhere:Mg,eltsgn:e=>{},elttype:e=>!g(e)||e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:ve(...e.ops.map(n=>n.type.type))}}var xi=["Error","'missing'"];function Ye(e){return!!(typeof e=="number"||Pt(e)||typeof e=="string"&&Fr(e))}function Pt(e){return e!==null&&typeof e=="object"&&"num"in e}function Rr(e){return e!==null&&typeof e=="object"&&"sym"in e}function Dc(e){return e!==null&&typeof e=="object"&&"str"in e}function Fc(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function Dt(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function z(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):Fr(e)||Cs(e)?null:e}function ks(e){if(e==null||z(e)!==null)return null;let n=E(e);return n?[n,...I(e).map(t=>ks(t)).filter(t=>t!==null)]:e}function E(e){return Array.isArray(e)?e[0]:e==null?"":Dt(e)?e.fn[0]:""}function I(e){return Array.isArray(e)?e.slice(1):e!==void 0&&Dt(e)?e.fn.slice(1):[]}function m(e,n){return Array.isArray(e)?e[n]??null:e===null||!Dt(e)?null:e.fn[n]??null}function U(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Dt(e)?Math.max(0,e.fn.length-1):0}function As(e){return e==null?null:E(e)==="Hold"?m(e,1):e}function w(e){return typeof e=="string"&&Cs(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:Rr(e)?e.sym:null}function Rc(e){let n=E(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=I(e),r=z(t);return r?[r,i??"Nothing"]:null}return null}function Oc(e){if(e===null)return null;if(Fc(e))return e;let n=Rc(e);if(n)return{dict:{[n[0]]:Pc(n[1])??"Nothing"}};if(E(e)==="Dictionary"){let t={};for(let i of I(e)){let r=Rc(i);r&&(t[r[0]]=Pc(r[1])??"Nothing")}return{dict:t}}return null}function Pr(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Ms(i)??"Nothing"]))}}function Cg(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 D(e){return typeof e=="number"?e:typeof e=="string"&&Fr(e)?Cg(e):e!==void 0&&Pt(e)?D(e.num):null}function rt(e){if(e==null)return null;if(w(e)==="Half")return[1,2];let n=E(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=rt(I(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,o]=I(e);t=D(r)??NaN,i=D(o)??NaN}if(n==="Power"){let[r,o]=I(e),s=D(o);s===1?(t=D(r),i=1):s===-1&&(t=1,i=D(r))}if(n==="Multiply"){let[r,o]=I(e);if(E(o)==="Power"){let[s,a]=I(o);D(a)===-1&&(t=D(r),i=D(s))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function Dr(e,n){let t=null;if(Array.isArray(e)&&(t=e),Dt(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 Ft(e,n,t){let i=E(n),r=E(t);return i===e&&r===e?[e,...I(n),...I(t)]:i===e?[e,...I(n),t]:r===e?[e,n,...I(t)]:[e,n,t]}function vn(e){if(e==null)return null;let n=E(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(n=E(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:I(e)}function K(e){return e==null||e==="Nothing"?!0:E(e)==="Sequence"&&U(e)===0}function H(e){return K(e)?xi:e}function Fr(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.([0-9]+(\([0-9]+\))?|\([0-9]+\)))?([eE][+-]?[0-9]+)?$/.test(e)}function Cs(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function Ms(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=>Ms(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Ms(e[t])??"Nothing";return{dict:n}}return Dt(e)||Rr(e)||Pt(e)||Dc(e)||Fc(e)?e:null}function Pc(e){return e==null?null:Dc(e)?e.str:Pt(e)?parseFloat(e.num):Rr(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}function Bc(e,n){for(;n!==BigInt(0);)[e,n]=[n,e%n];return e<0?-e:e}function Lc(e){return e!==null&&Array.isArray(e)&&typeof e[0]=="number"}function $s(e){if(Lc(e)){if(e[1]<0&&(e=[-e[0],-e[1]]),e[0]===1||e[1]===1)return e;if(!Number.isFinite(e[1]))return[0,1];let r=kt(e[0],e[1]);return r<=1?e:[e[0]/r,e[1]/r]}e[1]<0&&(e=[-e[0],-e[1]]);let n=Bc(e[0],e[1]),[t,i]=n<=1?e:[e[0]/n,e[1]/n];return t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?[Number(t),Number(i)]:[t,i]}function Vc(e,n){if(!Number.isFinite(e))return null;for(let t=1;t<=1e6;t*=10){let i=e*t;if(Number.isInteger(i))return!Number.isSafeInteger(i)||!Number.isSafeInteger(n*t)?null:$s([i,n*t])}return null}function qc(e,n){return typeof e=="number"?Number.isFinite(e)?parseFloat(e.toPrecision(n)):e:e.toPrecision(n)}function Ei(e,n){return e.toFixed(n)}function Rs(e,n,t="auto"){if(t==="max")return{value:String(e),error:String(n)};if(typeof t=="object"&&"fractional"in t){let u=t.fractional;return{value:Ei(e,u),error:Ei(n,u)}}let i=t==="auto"?2:t.significant,r=qc(n,i),o=parseInt(r.toExponential().split("e")[1],10),s=i-1-o;if(s>0)return{value:Ei(e,s),error:Ei(r,s)};let a=Math.pow(10,-s);return{value:String(Math.round(e/a)*a),error:String(Math.round(r/a)*a)}}var Rg=new Map;function Nn(e){for(let[n,t]of Object.entries(e))Rg.set(n,t)}Nn({"simplify-terms":"Simplify the terms",fu:"Apply trigonometric simplification (Fu algorithm)","exp-to-trig":"Rewrite exponentials as trigonometric functions (Euler\u2019s formula)","simplify-relational-operator":"Simplify both sides of the relation",addition:"Add the terms",multiplication:"Multiply the factors",division:"Divide the terms",negation:"Negate",power:"Evaluate the power",root:"Evaluate the root",sqrt:"Evaluate the square root",rational:"Simplify the fraction",expand:"Expand the expression","cancel common polynomial factors":"Cancel the common factors","partial fraction decomposition":"Decompose into partial fractions","a/a -> 1":"Cancel the common factor: a\u2044a = 1","combined powers":"Combine the powers","combined powers with same base":"Combine powers with the same base","x^n * x^m -> x^{n+m}":"Combine powers with the same base: x\u207F\xB7x\u1D50 = x\u207F\u207A\u1D50","x * x^n -> x^{n+1}":"Combine powers with the same base: x\xB7x\u207F = x\u207F\u207A\xB9","a^m / a^n -> a^{m-n}":"Subtract the exponents: a\u1D50\u2044a\u207F = a\u1D50\u207B\u207F","a^m / a -> a^{m-1}":"Subtract the exponents: a\u1D50\u2044a = a\u1D50\u207B\xB9","a / a^n -> a^{1-n}":"Subtract the exponents: a\u2044a\u207F = a\xB9\u207B\u207F","(-x)^n -> -x^n when n is odd":"Factor out the sign: (\u2212x)\u207F = \u2212x\u207F for odd n","(-x)^n -> x^n when n is even":"Drop the sign: (\u2212x)\u207F = x\u207F for even n","(-x)^{n/m} -> x^{n/m} when n is even and m is odd":"Drop the sign: (\u2212x)\u207F\u141F\u1D50 = x\u207F\u141F\u1D50 for even n and odd m","(-x)^{n/m} -> -x^{n/m} when n and m are odd":"Factor out the sign: (\u2212x)\u207F\u141F\u1D50 = \u2212x\u207F\u141F\u1D50 for odd n and m","root(-a, n) -> -root(a, n) when n odd":"Factor the sign out of the odd root: \u207F\u221A(\u2212a) = \u2212\u207F\u221Aa","a / (b/c)^d -> a * (c/b)^d":"Dividing by (b\u2044c)\u1D48 is multiplying by (c\u2044b)\u1D48","denest \u221A(a+b\u221Ac) -> \u221Ax+\u221Ay":"Denest the radical","sqrt(x^2) -> |x|":"Apply \u221A(x\xB2) = |x|","sqrt(x^{2n}) -> |x|^n":"Apply \u221A(x\xB2\u207F) = |x|\u207F","root(x^n, n) -> x when n odd":"Apply \u207F\u221A(x\u207F) = x for odd n","root(x^n, n) -> |x| when n even":"Apply \u207F\u221A(x\u207F) = |x| for even n","root(x^m, n) -> |x|^{m/n}":"Rewrite the root as a power: \u207F\u221A(x\u1D50) = |x|\u1D50\u141F\u207F","root(1, n) -> 1":"A root of 1 is 1","root(0, n) -> 0 when n > 0":"A root of 0 is 0","root(root(x, m), n) -> x^{1/(m*n)}":"Combine the nested roots: \u207F\u221A(\u1D50\u221Ax) = x^(1\u2044(m\xB7n))","sqrt(sqrt(x)) -> x^{1/4}":"Combine the nested roots: \u221A(\u221Ax) = x^(1\u20444)","root(sqrt(x), n) -> x^{1/(2n)}":"Combine the nested roots: \u207F\u221A(\u221Ax) = x^(1\u2044(2n))","sqrt(root(x, n)) -> x^{1/(2n)}":"Combine the nested roots: \u221A(\u207F\u221Ax) = x^(1\u2044(2n))","root(product, n) -> factored":"Distribute the root over the product",ln:"Simplify the natural logarithm",log:"Simplify the logarithm","combine ln terms":"Combine the logarithms","combine log terms":"Combine the logarithms","e^ln(x) -> x":"Apply e^(ln x) = x: exp and ln are inverses","c^log_c(x) -> x":"Apply c^(log\uA700 x) = x: the exponential and the logarithm are inverses","e^(ln(x) + y) -> x * e^y":"Split the exponent: e^(ln x + y) = x\xB7e\u02B8","e^(ln(x) * y) -> x^y":"Apply e^(y\xB7ln x) = x\u02B8","c^(log_c(x) + y) -> x * c^y":"Split the exponent: c^(log\uA700 x + y) = x\xB7c\u02B8","c^(log_c(x) * y) -> x^y":"Apply c^(y\xB7log\uA700 x) = x\u02B8","ln(e^x * y) -> x + ln(y)":"Expand the logarithm: ln(e\u02E3\xB7y) = x + ln y","log_c(c) -> 1":"The logarithm of the base is 1","log_c(c^x) -> x":"Apply log\uA700(c\u02E3) = x: the logarithm and the exponential are inverses","log_c(c^x * y) -> x + log_c(y)":"Expand the logarithm: log\uA700(c\u02E3\xB7y) = x + log\uA700 y","log_c(c^x / y) -> x - log_c(y)":"Expand the logarithm: log\uA700(c\u02E3\u2044y) = x \u2212 log\uA700 y","log_c(y / c^x) -> log_c(y) - x":"Expand the logarithm: log\uA700(y\u2044c\u02E3) = log\uA700 y \u2212 x","log_c(x^n) -> n*log_c(x)":"Bring the exponent out: log(x\u207F) = n\xB7log x","log_c(x^n) -> n*log_c(|x|) when n even":"Bring the exponent out: log(x\u207F) = n\xB7log|x| for even n","log_c(x^{p/q}) -> (p/q)*log_c(x)":"Bring the exponent out: log(x\u1D56\u141F\u{107A5}) = (p\u2044q)\xB7log x","log_c(x^{p/q}) -> (p/q)*log_c(|x|) when p even":"Bring the exponent out: log(x\u1D56\u141F\u{107A5}) = (p\u2044q)\xB7log|x| for even p","ln(a)/ln(b) -> k when a = b^k":"Recognize the logarithm ratio: ln(b\u1D4F)\u2044ln(b) = k","log_{1/c}(a) -> -log_c(a)":"Invert the base: log\u2081\u2044\uA700(a) = \u2212log\uA700(a)","log_c(a) / log_c(b) -> ln(a) / ln(b)":"Change of base: log\uA700(a)\u2044log\uA700(b) = ln(a)\u2044ln(b)","log_c(a) / ln(a) -> 1/ln(c)":"Change of base: log\uA700(a)\u2044ln(a) = 1\u2044ln(c)","ln(a) / log_c(a) -> ln(c)":"Change of base: ln(a)\u2044log\uA700(a) = ln(c)","log base 0 or 1 -> NaN":"A logarithm base of 0 or 1 is undefined","log_c(0) -> NaN":"The logarithm of 0 is undefined","abs-negate":"Apply |\u2212x| = |x|","|-x| -> |x|":"Apply |\u2212x| = |x|","|x| -> x":"Drop the absolute value: the argument is non-negative","|x| -> -x":"Resolve the absolute value: the argument is non-positive","|xy| -> x|y| when x >= 0":"Move the non-negative factor out of the absolute value","|x/y| -> |x|/y when y >= 0":"Move the non-negative denominator out of the absolute value","|x/y| -> x/|y| when x >= 0":"Move the non-negative numerator out of the absolute value","|x|^n -> x^n when n is even":"Drop the absolute value: |x|\u207F = x\u207F for even n","|x^n| -> x^n when n is even":"Drop the absolute value: x\u207F \u2265 0 for even n","|x^n| -> |x|^n when n is odd":"Move the absolute value onto the base: |x\u207F| = |x|\u207F for odd n","|x|^(p/q) -> x^(p/q) when p is even":"Drop the absolute value: |x|\u1D56\u141F\u{107A5} = x\u1D56\u141F\u{107A5} for even p","|x^(p/q)| -> x^(p/q) when p is even":"Drop the absolute value: x\u1D56\u141F\u{107A5} \u2265 0 for even p","|x^(p/q)| -> |x|^(p/q) when p is odd":"Move the absolute value onto the base: |x\u1D56\u141F\u{107A5}| = |x|\u1D56\u141F\u{107A5} for odd p","sign positive":"The sign of a positive quantity is 1","sign negative":"The sign of a negative quantity is \u22121","sign zero":"The sign of zero is 0","sin\xB2(x) + cos\xB2(x) -> 1":"Apply the Pythagorean identity: sin\xB2x + cos\xB2x = 1","a*sin\xB2(x) + a*cos\xB2(x) -> a":"Apply the Pythagorean identity: sin\xB2x + cos\xB2x = 1","tan\xB2(x) + 1 -> sec\xB2(x)":"Apply the Pythagorean identity: tan\xB2x + 1 = sec\xB2x","1 + cot\xB2(x) -> csc\xB2(x)":"Apply the Pythagorean identity: 1 + cot\xB2x = csc\xB2x","sin(x)cos(y)+cos(x)sin(y) -> sin(x+y)":"Apply the angle-addition identity: sin x cos y + cos x sin y = sin(x + y)","sin(x)cos(y)-cos(x)sin(y) -> sin(x-y)":"Apply the angle-subtraction identity: sin x cos y \u2212 cos x sin y = sin(x \u2212 y)"});Nn({"solve.move-terms":"Move all terms to one side","solve.simplify":"Simplify the equation","solve.apply-inverse":"Apply the inverse function to both sides","solve.equate-exponents":"The bases are equal, so equate the exponents","solve.apply-tangent":"Take the tangent of both sides to clear the inverse trigonometric functions","solve.clear-denominators":"Multiply through to clear the denominators","solve.square-both-sides":"Square both sides to eliminate the radical","solve.substitute":"Substitute a new variable","solve.substituted-equation":"Rewrite the equation in the substituted variable","solve.back-substitute":"Substitute back to the original variable","solve.factor-zero-product":"A product is zero exactly when one of its factors is zero","solve.harmonize":"Rewrite the equation in an equivalent form","solve.expand":"Expand the equation","solve.quadratic-formula":"Apply the quadratic formula","solve.rational-roots":"Find the rational roots (rational-root theorem)","solve.polynomial-roots":"Find the remaining roots of the polynomial","solve.candidates":"Candidate solutions","solve.validate-roots":"Check each candidate in the original equation; reject the extraneous ones","solve.filter-domain":"Discard solutions outside the domain of the variable","solve.roots":"The solutions","solve.template":"Solve the matched equation pattern","solve.system.eliminate":"Eliminate a variable from the remaining equations","solve.system.back-substitute":"Substitute the known value back to solve for the next variable","solve.system.parametric":"Express the solutions in terms of a free parameter","solve.system.solve-for":"Solve one equation for one variable","solve.system.substitute":"Substitute into the remaining equations","solve.system.product-sum":"Rewrite the sum and product conditions as a quadratic","solve.case":"Consider the next case","solve.system.normalize-inequality":"Rewrite the inequality with zero on the right-hand side","solve.system.intersect-boundaries":"Find the intersection points of the boundary lines","solve.system.vertices":"Keep the corner points that satisfy every inequality","solve.system.check-constraints":"Substitute the candidate solution into each constraint","solve.system.reject":"Reject the candidate: it violates a constraint"});Nn({"solve.linear-monomial":"A multiple of the unknown is zero when the unknown is zero","solve.reciprocal":"Solve the reciprocal equation","solve.linear":"Isolate the unknown: subtract the constant, then divide by the coefficient","solve.linear-negated":"Isolate the unknown: subtract the constant, then divide by the coefficient","solve.power":"Take the n-th root of both sides","solve.power-negative-root":"Take the n-th root of both sides (negative root)","solve.quadratic-no-constant-zero":"Factor out the unknown: one solution is 0","solve.quadratic-no-constant":"Factor out the unknown and solve the remaining linear factor","solve.quadratic-formula-positive":"Apply the quadratic formula (positive branch)","solve.quadratic-formula-negative":"Apply the quadratic formula (negative branch)","solve.exponential":"Take the logarithm of both sides","solve.exponential-natural":"Take the natural logarithm of both sides","solve.exponential-natural-unit-exponent":"Take the natural logarithm of both sides","solve.exponential-natural-simple":"Take the natural logarithm of both sides","solve.exponential-natural-unit-coefficient":"Take the natural logarithm of both sides","solve.logarithm-base":"Exponentiate both sides to clear the logarithm","solve.logarithm-base-no-constant":"Exponentiate both sides to clear the logarithm","solve.absolute-value-positive":"Resolve the absolute value (positive case)","solve.absolute-value-negative":"Resolve the absolute value (negative case)","solve.quadratic-in-sqrt-positive":"Solve as a quadratic in the square root of the unknown","solve.quadratic-in-sqrt-negative":"Solve as a quadratic in the square root of the unknown","solve.quadratic-in-sqrt-negated-positive":"Solve as a quadratic in the square root of the unknown","solve.quadratic-in-sqrt-negated-negative":"Solve as a quadratic in the square root of the unknown","solve.radical":"Isolate the radical, then square both sides","solve.logarithm-natural-scaled":"Exponentiate both sides to clear the logarithm","solve.logarithm-natural":"Exponentiate both sides to clear the logarithm","solve.sine":"Apply the inverse sine","solve.sine-second-branch":"Apply the inverse sine (second branch: \u03C0 \u2212 arcsin)","solve.sine-unit":"Apply the inverse sine","solve.sine-unit-second-branch":"Apply the inverse sine (second branch: \u03C0 \u2212 arcsin)","solve.cosine":"Apply the inverse cosine","solve.cosine-negative-branch":"Apply the inverse cosine (negative branch)","solve.cosine-unit":"Apply the inverse cosine","solve.cosine-unit-negative-branch":"Apply the inverse cosine (negative branch)","solve.tangent":"Apply the inverse tangent","solve.tangent-unit":"Apply the inverse tangent","solve.cotangent":"Apply the inverse cotangent","solve.cotangent-unit":"Apply the inverse cotangent","solve.sine-cosine-linear-combination":"Rewrite a\xB7sin x + b\xB7cos x as a single sinusoid"});Nn({"integrate.constant":"The integral of a constant: \u222Bc dx = c\xB7x","integrate.variable":"The integral of the variable: \u222Bx dx = x\xB2/2","integrate.sum":"Integrate term by term: \u222B(u+v) dx = \u222Bu dx + \u222Bv dx","integrate.constant-factor":"Move the constant factor out of the integral","integrate.collected-power":"Integrate the power of the linear expression","integrate.hyperbolic-to-exp":"Rewrite the hyperbolic functions as exponentials","integrate.trig-to-exp":"Rewrite the trigonometric functions as exponentials","integrate.by-parts":"Integrate by parts","integrate.si-ci":"Express the integral with the sine and cosine integral functions Si and Ci","integrate.trig-to-single-exp":"Substitute a single exponential for the trigonometric functions","integrate.exponential-substitution":"Substitute for the exponential and integrate the rational function","integrate.partial-fractions":"Integrate using partial-fraction decomposition","integrate.previous-result":"Use the integral computed earlier","integrate.simplify":"Simplify the result","integrate.antiderivative":"Find the antiderivative of the integrand","integrate.fundamental-theorem":"Apply the Fundamental Theorem of Calculus: \u222B\u1D43\u1D47 f dx = F(b) \u2212 F(a)","integrate.evaluate-bounds":"Evaluate the antiderivative at the bounds"});Nn({"derivative.sum-rule":"Apply the sum rule: (u + v)\u2032 = u\u2032 + v\u2032","derivative.product-rule":"Apply the product rule: (u\xB7v)\u2032 = u\u2032\xB7v + u\xB7v\u2032","derivative.quotient-rule":"Apply the quotient rule: (u\u2044v)\u2032 = (u\u2032\xB7v \u2212 u\xB7v\u2032)\u2044v\xB2","derivative.power-rule":"Apply the power rule: (u\u207F)\u2032 = n\xB7u\u207F\u207B\xB9\xB7u\u2032","derivative.exponential-rule":"Differentiate the exponential: (a\u1D58)\u2032 = a\u1D58\xB7ln(a)\xB7u\u2032","derivative.general-power-rule":"Differentiate by logarithmic differentiation: (f^g)\u2032 = f^g\xB7(g\u2032\xB7ln f + g\xB7f\u2032\u2044f)","derivative.chain-rule":"Apply the chain rule: f(u)\u2032 = f\u2032(u)\xB7u\u2032","derivative.known-derivative":"Differentiate using a known derivative","derivative.constant-multiple":"Apply the constant-multiple rule: (c\xB7u)\u2032 = c\xB7u\u2032","derivative.rewrite":"Rewrite in an equivalent differentiable form","derivative.expand-definition":"Expand the definition of the function","derivative.zero":"The expression is locally constant: its derivative is 0","derivative.simplify":"Simplify the result"});{let e=["Sin","Tan","Cot","Csc","Sinh","Tanh","Coth","Csch","Arcsin","Arctan","Arccsc","Arsinh","Artanh","Arcsch"],n=["Cos","Sec","Cosh","Sech"],t={};for(let i of e){let r=i.toLowerCase();t[`${i}(-x) -> -${i}(x)`]=`Use the odd symmetry: ${r}(\u2212x) = \u2212${r}(x)`}for(let i of n){let r=i.toLowerCase();t[`${i}(-x) -> ${i}(x)`]=`Use the even symmetry: ${r}(\u2212x) = ${r}(x)`}Nn(t)}{let e=["Sin","Tan","Cot","Csc","Sinh","Tanh","Coth","Csch","Arcsin","Arctan","Arccot","Arccsc","Arsinh","Artanh","Arcoth","Arcsch"],n=["Cos","Sec","Cosh","Sech"],t={};for(let i of e){let r=i.toLowerCase();t[`|${i}(x)| -> ${i}(|x|) (odd function)`]=`Move the absolute value onto the argument: |${r}(x)| = ${r}(|x|) because ${r} is odd`}for(let i of n){let r=i.toLowerCase();t[`${i}(|x|) -> ${i}(x) (even function)`]=`Drop the absolute value: ${r}(|x|) = ${r}(x) because ${r} is even`}Nn(t)}Nn({"Sin(\u03C0 + x) -> -Sin(x)":"Shift the angle by \u03C0: sin(\u03C0 + x) = \u2212sin(x)","Cos(\u03C0 + x) -> -Cos(x)":"Shift the angle by \u03C0: cos(\u03C0 + x) = \u2212cos(x)","Tan(\u03C0 + x) -> Tan(x)":"Use the period \u03C0 of tangent: tan(\u03C0 + x) = tan(x)","Cot(\u03C0 + x) -> Cot(x)":"Use the period \u03C0 of cotangent: cot(\u03C0 + x) = cot(x)","Sec(\u03C0 + x) -> -Sec(x)":"Shift the angle by \u03C0: sec(\u03C0 + x) = \u2212sec(x)","Csc(\u03C0 + x) -> -Csc(x)":"Shift the angle by \u03C0: csc(\u03C0 + x) = \u2212csc(x)","Sin(\u03C0/2 - x) -> Cos(x)":"Apply the cofunction identity: sin(\u03C0\u20442 \u2212 x) = cos(x)","Cos(\u03C0/2 - x) -> Sin(x)":"Apply the cofunction identity: cos(\u03C0\u20442 \u2212 x) = sin(x)","Tan(\u03C0/2 - x) -> Cot(x)":"Apply the cofunction identity: tan(\u03C0\u20442 \u2212 x) = cot(x)","Cot(\u03C0/2 - x) -> Tan(x)":"Apply the cofunction identity: cot(\u03C0\u20442 \u2212 x) = tan(x)","Sec(\u03C0/2 - x) -> Csc(x)":"Apply the cofunction identity: sec(\u03C0\u20442 \u2212 x) = csc(x)","Csc(\u03C0/2 - x) -> Sec(x)":"Apply the cofunction identity: csc(\u03C0\u20442 \u2212 x) = sec(x)"});{let e=["Sin","Cos","Tan","Cot","Sec","Csc","Arcsin","Arccos"],n={};for(let t of e)n[`${t}(infinity) -> NaN`]=`${t.toLowerCase()} has no limit at infinity`;for(let t of["arctan(+inf) -> \u03C0/2","arctan(-inf) -> -\u03C0/2","arccot(+inf) -> 0","arccot(-inf) -> \u03C0","arcsec(\xB1inf) -> \u03C0/2","arccsc(\xB1inf) -> 0","sinh(+inf) -> +inf","sinh(-inf) -> -inf","cosh(+inf) -> +inf","cosh(-inf) -> +inf","tanh(+inf) -> 1","tanh(-inf) -> -1","coth(+inf) -> 1","coth(-inf) -> -1","sech(+inf) -> 0","sech(-inf) -> 0","csch(+inf) -> 0","csch(-inf) -> 0","arsinh(+inf) -> +inf","arsinh(-inf) -> -inf","arcosh(+inf) -> +inf","arcoth(\xB1inf) -> 0","arcsch(\xB1inf) -> 0","ln(+inf) -> +inf","log_c(+inf) -> +inf when c > 1","log_c(+inf) -> -inf when 0 < c < 1","log_c(0) -> -inf when c > 1","log_c(0) -> +inf when 0 < c < 1","log_inf(x) -> 0","root(+inf, n) -> +inf when n > 0"])n[t]="Evaluate the limit at infinity";for(let t of["artanh(\xB1inf) -> NaN","arsech(\xB1inf) -> NaN","arcosh(-inf) -> NaN","log_inf(inf) -> NaN"])n[t]="The value is undefined at infinity";for(let t of["root(x, 0) -> NaN","root(0, n) -> NaN when n <= 0"])n[t]="The root is undefined";Nn(n)}function Pg(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 o=i-55296,s=r-56320;i=2**16+o*2**10+s,t++}}n.push(i)}return n}var Or=8205,Jc=[127462,127487];function zc(e){return e===Or||e===65038||e===65039||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function Dg(e){return e>=Jc[0]&&e<=Jc[1]}function jc(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;let n=[],t=Pg(e),i=0;for(;i<t.length;){let r=t[i++],o=t[i];if(o===Or){let s=i-1;for(i+=2;t[i]===Or;)i+=2;n.push(String.fromCodePoint(...t.slice(s,i)))}else if(zc(o)){let s=i-1;for(;zc(t[i]);)i+=t[i]===Or?2:1;n.push(String.fromCodePoint(...t.slice(s,i)))}else Dg(r)?(i+=1,n.push(String.fromCodePoint(...t.slice(i-2,i)))):n.push(String.fromCodePoint(r))}return n}var Fg={"\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"},Og={"\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u208B":"-"},Gc=new Map;function Bg(e){let n=Gc.get(e.source);if(!n){let t=e.source.startsWith("^")?e.source.slice(1):e.source;n=new RegExp(t,"y"),Gc.set(e.source,n)}return n}var Ps=class{s;pos;joined;offsets=null;obeyspaces=!1;constructor(n){if(n=n.normalize("NFC"),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=>Fg[r]).join("")}}`),n=n.replace(/[₀₁₂₃₄₅₆₇₈₉₋]+/g,t=>`_{${Array.from(t).map(r=>Og[r]).join("")}}`),this.s=jc(n),this.pos=0,typeof this.s=="string")this.joined=this.s;else{this.joined=this.s.join("");let t=new Array(this.s.length+1),i=0;for(let r=0;r<this.s.length;r++)t[r]=i,i+=this.s[r].length;t[this.s.length]=i,this.offsets=t}}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=Bg(n);typeof this.s=="string"?t.lastIndex=this.pos:t.lastIndex=this.offsets[this.pos<this.s.length?this.pos:this.s.length];let i=t.exec(this.joined);return i?.[0]?(this.pos+=i[0].length,i[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 Lg(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"){let r="",o=!1,s=[];do s.length===0&&(t=e.next(),s=t?[t]:[]),o=s.length===0,!o&&t==="\\endcsname"&&(o=!0,s.shift()),o||(o=t==="<$>"||t==="<$$>"||t==="<{>"||t==="<}>"||!!t&&t.length>1&&t[0]==="\\"),o||(r+=s.shift());while(!o);r&&i.push("\\"+r),i=i.concat(s)}else if(t!=="\\endcsname")if(t.length>1&&t[0]==="#"){let r=t.slice(1),o=n;i=i.concat(Ce(o?.[r]??o?.["?"]??"\\placeholder{}",n))}else i.push(t)}return i}function Ce(e,n=[],t){let r=e.toString().split(/(\r?\n)/),o="",s="",a=0;for(let c=0;c<r.length;c+=2){let f=r[c],d=r[c+1]??"";o+=s,s=" ";let p=f.match(/((?:\\%)|[^%])*/);if(p!==null&&(o+=p[0],t!==void 0&&p[0].length<f.length)){let h=a+p[0].length,b=a+f.length;t.push({start:h,end:b,discardedLength:f.length-p[0].length})}a+=f.length+d.length}let u=new Ps(o),l=[];do l.push(...Lg(u,n));while(!u.end());return l}function $(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 ot(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}function Ot(e){let n=[];if(Array.isArray(e))for(let i of e)if(Array.isArray(i))for(let r of i)n.push(r);else n.push(i);else n=[e];return $(n.map(i=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"})[i]??i))}var B=245,vi=260,We=270,ce=275,te=390,Te=600,st=650,Ni=700,at=810;function Br(e,n){return(t,i,r)=>{let o=t.parseExpression({...r,minPrec:n});return o===null?null:["Not",[e,i,o]]}}var ut=[{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:B+5,parse:"LessEqual"},{latexTrigger:["\u2264"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\u2265"],kind:"infix",associativity:"any",precedence:242,parse:"GreaterEqual"},{latexTrigger:["\u2260"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:B},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:B},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:B+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:B+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:B,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:B},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:B},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:B},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:B,parse:"Equal"},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:B+5},{name:"Tilde",latexTrigger:["\\sim"],kind:"infix",associativity:"right",precedence:B},{name:"NotTilde",latexTrigger:["\\nsim"],kind:"infix",associativity:"right",precedence:B},{name:"TildeEqual",latexTrigger:["\\simeq"],kind:"infix",associativity:"right",precedence:B},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:B},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:B},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{latexTrigger:["\u2248"],kind:"infix",associativity:"right",precedence:247,parse:"Approx"},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:B},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{latexTrigger:["\\neq"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{latexTrigger:["\\not","="],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{latexTrigger:["\\not","\\le"],kind:"infix",associativity:"right",precedence:241,parse:Br("LessEqual",241)},{latexTrigger:["\\not","\\leq"],kind:"infix",associativity:"right",precedence:241,parse:Br("LessEqual",241)},{latexTrigger:["\\not","\\ge"],kind:"infix",associativity:"right",precedence:242,parse:Br("GreaterEqual",242)},{latexTrigger:["\\not","\\geq"],kind:"infix",associativity:"right",precedence:242,parse:Br("GreaterEqual",242)},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:B,parse:"NotEqual"},{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:B+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:B},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:B},{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:B},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:B},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:B+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:B+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:B},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:B},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:B},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:B},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:B},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:B},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:B},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:B+5}];function lt(e){return typeof e!="string"?!1:ut.some(n=>n.name===e)}function Lr(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function Vr(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}function Vg(e){let n=e.index;e.skipVisualSpace();let t=!1;return e.match("(")&&(e.skipVisualSpace(),t=e.peek==="\\bmod"||e.peek==="\\pmod"||e.peek==="\\mod"||e.matchAll(["m","o","d"])),e.index=n,t}function qg(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("(")){if(e.skipVisualSpace(),e.match("\\bmod")||e.match("\\pmod")||e.match("\\mod")||e.matchAll(["m","o","d"])){e.skipVisualSpace();let o=e.parseExpression({...n,minPrec:0})??e.parseGroup();if(e.skipVisualSpace(),o!==null&&e.match(")"))return o}return e.index=t,null}let i=e.parseExpression({...n,minPrec:at});if(i!==null&&E(i)==="Mod"){let r=U(i)>=2?m(i,2):m(i,1);if(r!==null)return r}return e.index=t,null}function Ti(e,n,t){let i=e.parseExpression({...t,minPrec:B,condition:o=>Vg(o)||(t.condition?.(o)??!1)}),r=qg(e,t);return r!==null?E(n)==="Congruent"?["And",n,["Congruent",H(m(n,2)),H(i),r]]:["Congruent",n,H(i),r]:["Equivalent",n,H(i)]}var Hc=[{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:"\\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:["\\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:B,parse:Ti},{latexTrigger:["\u2261"],kind:"infix",associativity:"right",precedence:B,parse:Ti},{latexTrigger:["\\equiv"],kind:"prefix",precedence:B,parse:(e,n)=>Ti(e,e.error("missing",e.index),n??{minPrec:0})},{latexTrigger:["\\not","\\equiv"],kind:"infix",associativity:"right",precedence:B,parse:(e,n,t)=>["Not",Ti(e,n,t)]},{latexTrigger:["\u2262"],kind:"infix",associativity:"right",precedence:B,parse:(e,n,t)=>["Not",Ti(e,n,t)]},{latexTrigger:["\\pmod"],kind:"infix",precedence:B-1,parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return["Mod",n,H(t)]}},{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:_i("\\forall"),parse:Fn("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:_i("\\exists"),parse:Fn("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:_i("\\exists!"),parse:Fn("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:_i("\\lnot\\forall"),parse:Fn("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:_i("\\lnot\\exists"),parse:Fn("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=I(n);return t.length===0?"\\delta":t.every(i=>w(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=vn(n);return t&&t.length<=2?["KroneckerDelta",...t]:E(n)==="InvisibleOperator"?["KroneckerDelta",...I(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=E(n);return!t||!ut.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=E(n);return!t||!ut.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=I(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 o=t.slice(1).map(s=>e.serialize(s));return`${r}(${o.join(", ")})`}}];function _i(e){return(n,t)=>{let i=I(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),o=n.serialize(i[1]);return`${e} ${r}, ${o}`}}function Uc(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 Fn(e){return(n,t)=>{let i=n.index,r=n.diagnosticsCheckpoint(),o=n.options.quantifierScope!=="loose",s=n.parseSymbol(t),a=typeof s=="string"?s:null;if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let f=o?{...t,condition:p=>Uc(p,t)}:t;n.enterQuantifierScope();let d=n.parseExpression(f);return n.exitQuantifierScope(),a&&n.pruneUndeclared([a],r),[e,s,H(d)]}n.enterQuantifierScope();let c=n.parseEnclosure();if(n.exitQuantifierScope(),c)return a&&n.pruneUndeclared([a],r),[e,s,H(c)]}n.index=i;let u={...t,condition:c=>c.peek===":"||c.peek==="\\colon"||(t?.condition?.(c)??!1)},l=n.parseExpression(u);if(l===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let c=o?{...t,condition:d=>Uc(d,t)}:t;n.enterQuantifierScope();let f=n.parseExpression(c);return n.exitQuantifierScope(),[e,l,H(f)]}if(n.match("(")){n.enterQuantifierScope();let c=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,l,H(c)]:null}return E(l)!==""?[e,l,"True"]:null}}var Jg={x:"PointX",y:"PointY",z:"PointZ",real:"Real",re:"Real",imag:"Imaginary",im:"Imaginary",count:"Length",length:"Length",total:"Sum",max:"Max",min:"Min"};function Ds(e){return Jg[e]??null}function Zc(e){let n=null;if(typeof e=="number")Number.isSafeInteger(e)&&e>=0&&(n=e.toString());else if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.num=="string"){let t=e.num;/^[0-9]+$/.test(t)&&(n=t)}return n===null||!/^[0-9]+$/.test(n)?null:n}function zg(e,n){if(!(typeof n=="number"&&Number.isInteger(n)&&n>=2)){let a=w(n);if(a===null||a==="Nothing")return null;let u=Zc(e);if(u===null)return null;let l=[],c=u.length;for(let d=0;d<c;d++){let p=u.charCodeAt(d)-48;if(p===0)continue;let h=c-1-d;if(h===0)l.push(p);else if(h===1)l.push(p===1?a:["Multiply",p,a]);else{let b=["Power",a,h];l.push(p===1?b:["Multiply",p,b])}}return["BaseForm",l.length===0?0:l.length===1?l[0]:["Add",...l],a]}let t=n,i=Zc(e);if(i===null)return null;let r=BigInt(t),o=0n;for(let a=0;a<i.length;a++){let u=i.charCodeAt(a)-48;if(u>=t)return null;o=o*r+BigInt(u)}return["BaseForm",o<=BigInt(Number.MAX_SAFE_INTEGER)?Number(o):{num:o.toString()},t]}function jg(e){if(typeof e=="number")return Number.isSafeInteger(e)?BigInt(e):null;if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.num=="string"){let n=e.num;if(/^[+-]?[0-9]+$/.test(n))return BigInt(n)}return null}function Gg(e,n){if(e==null)return null;let t=E(e)==="Add"?[...I(e)]:[e],i=new Map;for(let s of t){let a,u,l=f=>{if(w(f)===n)return 1;if(E(f)==="Square"&&w(m(f,1))===n)return 2;if(E(f)==="Power"&&w(m(f,1))===n){let d=D(m(f,2));return d===null?null:d}return null},c=w(s);if(c!==null){if(c!==n)return null;a=1,u=1}else if(E(s)==="Power"||E(s)==="Square"){let f=l(s);if(f===null)return null;a=1,u=f}else if(E(s)==="Multiply"){let f=[...I(s)];if(f.length!==2)return null;let d=D(f[0]);if(d===null)return null;a=d;let p=l(f[1]);if(p===null)return null;u=p}else{let f=D(s);if(f===null)return null;a=f,u=0}if(!Number.isInteger(a)||a<0||a>9||!Number.isInteger(u)||u<0||u>40||i.has(u))return null;i.set(u,a)}let r=Math.max(0,...i.keys()),o="";for(let s=r;s>=0;s--)o+=String(i.get(s)??0);return o}function Ug(e,n){if(e===0n)return"0";let t=BigInt(n),i=[],r=e;for(;r>0n;){let o=Number(r%t);if(o<10)i.push(String.fromCharCode(48+o));else if(o<36)i.push(String.fromCharCode(97+o-10));else return null;r=r/t}return i.reverse().join("")}function Hg(e,n){if(e.skipVisualSpace(),!Ye(n)&&typeof e.peek=="string"&&/^\d$/.test(e.peek)){let i="";for(;typeof e.peek=="string"&&/^\d$/.test(e.peek);)i+=e.nextToken();return["InvisibleOperator",n,{num:"0."+i}]}if(e.match("\\operatorname")){let i=e.parseStringGroup();if(i===null)return null;let r=Ds(i.trim());return r===null?null:[r,n]}let t=e.peek;if(typeof t=="string"&&t.startsWith("\\")){let i=t.slice(1),r=Ds(i);return r!==null?(e.nextToken(),[r,n]):null}if(typeof t=="string"&&/^[a-zA-Z]$/.test(t)){let i=w(n);if(i!==null&&e.getSymbolType(i).matches("dictionary")){let o="";for(;typeof e.peek=="string"&&/^[a-zA-Z]$/.test(e.peek);)o+=e.nextToken();return["At",n,{str:o}]}let r=Ds(t);return r===null?null:(e.nextToken(),[r,n])}return null}function Zg(e){let n=e;return E(n)==="Delimiter"&&(n=m(n,1)??n),E(n)==="Sequence"?I(n):[e]}function of(e){let n=E(e);return Lr(n)||Vr(n)||["And","Or","Not","Element","NotElement"].includes(n)}function Yg(e){let n=[];for(let t=0;t<e.length;t++){let i=e[t];if(E(i)==="Colon"&&U(i)===2)n.push(m(i,1),m(i,2));else if(of(i))n.push(i,1);else if(t===e.length-1)n.push("True",i);else return null}return n}function Yc(e,n,t){e.addBoundary(t),e.skipVisualSpace();let i=e.parseExpression({minPrec:0});if(i===null||(e.skipVisualSpace(),!e.matchBoundary()))return e.removeBoundary(),null;let r=Zg(i);if(r.length>1||E(r[0])==="Colon"){if(r.some(o=>E(o)==="Colon")){let o=Yg(r);if(o!==null)return["Multiply",n,["Which",...o]]}else if(r.every(of))return["When",n,["Or",...r]]}return["When",n,i]}var Wg={"+":"Add","-":"Subtract","*":"Multiply","\\cdot":"Multiply","\\times":"Multiply","\\circ":"Ring","\\cup":"Union","\\cap":"Intersection","\\oplus":"CirclePlus","\\otimes":"CircleTimes","\\star":"Star"};function Xg(e,n,t){let i=Wg[e.peek];if(i===void 0)return null;let r=e.index;return e.nextToken(),e.skipSpace(),e.peek===t||e.atTerminator(n)?i:(e.index=r,null)}function Fs(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let o=u=>{E(u)==="Sequence"?s.push(...I(u)):s.push(u)},s=[];t?o(t):s.push("Nothing");let a=!1;for(;!a;){for(a=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let u=Xg(e,n,r);if(u!==null)s.push(u),a=!1;else{let l=e.parseExpression({...n,minPrec:i});l!==null?o(l):s.push("Nothing"),a=l===null}}a||(e.skipSpace(),a=!e.match(r),a||e.skipVisualSpace())}return s}function Kg(e,n){if(!n)return"";let t=I(n);if(t.length===0)return"";if(t.length===1)return e.serialize(t[0]);let i=t.map(o=>e.serialize(o)),r=[i[0]];for(let o=1;o<i.length;o++){let s=i[o-1],a=i[o],u=/[0-9]$/.test(s)&&/^[-+0-9]/.test(a);r.push(u?", ":" ",a)}return $(r)}function Qg(e,n){let t=E(n);if(t!=="Divide"&&t!=="Rational"||U(n)!==2||!e.options.prettify)return!1;let i=e.options.fractionStyle(n,e.level+1);return i==="inline-solidus"||i==="nice-solidus"}function e0(e,n){if(!n)return"";let t=I(n);return t.length===0?"":t.length===1?e.serialize(t[0]):$(t.map((i,r)=>{let o=e.serialize(i);return r<t.length-1&&Qg(e,i)?e.wrapString(o,e.groupStyle(n,e.level+1)):o}))}function ct(e=""){return(n,t)=>{if(!t)return"";let i=I(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((o,s)=>(o.push(n.serialize(s),e),o),[]);return r.pop(),$(r)}}var n0=[{surface:"if",kind:"prefix",precedence:245,operatorname:!0,build:m0},{surface:"for",kind:"prefix",precedence:245,operatorname:!0,build:h0},{surface:"for",kind:"infix",precedence:19,associativity:"none",operatorname:!0,build:(e,n,t)=>{let i=e.index,r=df(e,n,t);if(r!==null)return r;e.index=i;let o=tf(e,t);return o===null?(e.index=i,null):["ForAll",o,rf(n)]}},{surface:"break",kind:"prefix",precedence:245,operatorname:!0,build:()=>["Break"]},{surface:"continue",kind:"prefix",precedence:245,operatorname:!0,build:()=>["Continue"]},{surface:"return",kind:"prefix",precedence:245,operatorname:!0,build:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{surface:"for all",kind:"prefix",precedence:200,build:(e,n)=>Fn("ForAll")(e,n)},{surface:"for all",kind:"infix",precedence:19,associativity:"none",build:(e,n,t)=>{let i=e.index,r=tf(e,t);return r===null?(e.index=i,null):["ForAll",r,rf(n)]}},{surface:"there exists",kind:"prefix",precedence:200,build:(e,n)=>Fn("Exists")(e,n)},{surface:"where",kind:"infix",precedence:21,associativity:"none",operatorname:!0,build:(e,n,t)=>b0(e,n,t)},{surface:"such that",kind:"infix",precedence:21,associativity:"right",build:(e,n,t)=>["Colon",n,e.parseExpression({...t,minPrec:21})??"Nothing"]},{surface:"and",kind:"prefix",precedence:235,build:(e,n)=>(e.skipVisualSpace(),e.parseExpression(n)??"Nothing")},{surface:"and",kind:"infix",precedence:235,associativity:"right",build:(e,n,t)=>["And",n,e.parseExpression({...t,minPrec:235})??"Nothing"]},{surface:"or",kind:"infix",precedence:230,associativity:"right",build:(e,n,t)=>["Or",n,e.parseExpression({...t,minPrec:230})??"Nothing"]},{surface:"iff",kind:"infix",precedence:219,associativity:"right",build:(e,n,t)=>["Equivalent",n,e.parseExpression({...t,minPrec:219})??"Nothing"]},{surface:"if and only if",kind:"infix",precedence:219,associativity:"right",build:(e,n,t)=>["Equivalent",n,e.parseExpression({...t,minPrec:219})??"Nothing"]}];function t0(){let e=[];for(let n of n0){let t=n.surface;for(let i of["\\text","\\keyword"])if(n.kind==="prefix"){let r=n.build;e.push({latexTrigger:[i],kind:"prefix",precedence:n.precedence,parse:(o,s)=>{let a=o.index;return Ls(o,t)?r(o,s):(o.index=a,null)}})}else{let r=n.build;e.push({latexTrigger:[i],kind:"infix",associativity:n.associativity??"right",precedence:n.precedence,parse:(o,s,a)=>{let u=o.index;return Ls(o,t)?r(o,s,a):(o.index=u,null)}})}if(n.operatorname)if(n.kind==="prefix"){let i=n.build;e.push({symbolTrigger:t,kind:"prefix",precedence:n.precedence,parse:(r,o)=>i(r,o)})}else{let i=n.build;e.push({symbolTrigger:t,kind:"infix",associativity:n.associativity??"right",precedence:n.precedence,parse:(r,o,s)=>i(r,o,s)})}}return e.push({latexTrigger:["\\keyword"],parse:n=>be(n)}),e}function Xe(e,n,t){let i=e.options.keywordStyle??"text";if(i==="keyword")return`\\keyword{${n}}`;if(i==="operatorname")return`\\operatorname{${n}}`;let r=t?.lead?" ":"",o=t?.trail?" ":"";return`\\text{${r}${n}${o}}`}var _n="topic_marker";function sf(e,n){if(w(e)===_n)return[n,!0];let t=E(e);if(!t)return[e,!1];let i=!1,r=I(e).map(o=>{let[s,a]=sf(o,n);return a&&(i=!0),s});return i?[[t,...r],!0]:[e,!1]}function af(e,n){let[t,i]=sf(e,n);return i?t:["Apply",e,n]}function Ii(e,n,t){let i=e.parseExpression({minPrec:21})??"Nothing";return af(i,n)}function Si(e,n){let t=e.parseExpression({minPrec:21})??"Nothing",i="_";return["Function",af(t,i),i]}var uf=[{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:["\\cdots"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\dotsb"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\dotsc"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\dotsm"],parse:"ContinuationPlaceholder"},{latexTrigger:["\u2026"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{latexTrigger:["\\vdots"],parse:"ContinuationPlaceholder"},{latexTrigger:["\\ddots"],parse:"ContinuationPlaceholder"},{name:"Typed",serialize:(e,n)=>e.serialize(m(n,1))},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:We,parse:(e,n,t)=>{let i=e.operandDiagnosticCheckpoint,r=[];if(E(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),E(n)==="Sequence")for(let s of I(n)){if(!w(s))return null;r.push(w(s))}else{if(!w(n))return null;r=[w(n)]}let o=e.parseExpression({...t??{},minPrec:21})??"Nothing";return E(o)==="Delimiter"&&(o=m(o,1)??"Nothing"),E(o)==="Sequence"&&(o=["Block",...I(o)]),e.pruneUndeclared(r,i),["Function",o,...r]},serialize:(e,n)=>{let t=I(n),i=r=>E(r)==="Typed"?m(r,1)??r:r;return t.length<1?"()\\mapsto()":t.length===1?$(["()","\\mapsto",e.serialize(m(n,1))]):t.length===2?$([e.serialize(i(m(n,2))),"\\mapsto",e.serialize(m(n,1))]):$([e.wrapString(I(n)?.slice(1).map(r=>e.serialize(i(r))).join(", "),"normal"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=m(n,1),i=E(t);if(i==="Derivative"){let s=o0(e,n);if(s!==null)return s}if(i==="InverseFunction"||i==="Derivative"){let s=e.options.applyFunctionStyle(n,e.level),a=I(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),s)}let r=m(n,2);if(typeof t=="string"||!r){let s=I(n);return e.serialize(s)}if(U(n)===2)return $([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let o=e.options.applyFunctionStyle(n,e.level);return $(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...I(n)]),o)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{name:_n,serialize:"\\square"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:Ii},{latexTrigger:"\\triangleright",kind:"infix",precedence:20,parse:Ii},{latexTrigger:"\\vartriangleright",kind:"infix",precedence:20,parse:Ii},{latexTrigger:"|>",kind:"infix",precedence:20,parse:Ii},{latexTrigger:["\u22B3"],kind:"infix",precedence:20,parse:Ii},{latexTrigger:"|>",kind:"prefix",precedence:20,parse:Si},{latexTrigger:"\\rhd",kind:"prefix",precedence:20,parse:Si},{latexTrigger:"\\triangleright",kind:"prefix",precedence:20,parse:Si},{latexTrigger:"\\vartriangleright",kind:"prefix",precedence:20,parse:Si},{latexTrigger:["\u22B3"],kind:"prefix",precedence:20,parse:Si},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=I(n).slice(1);if(E(t)==="Function"){let r=I(t).slice(1),o=m(t,1);if(E(o)==="Block"&&U(o)===1&&(o=m(o,1)),r.length===1&&i.length===2)return`\\left.\\left(${e.serialize(o)}\\right)\\right|_{${e.serialize(i[0])}}^{${e.serialize(i[1])}}`;if(r.length>0)return`\\left.\\left(${e.serialize(o)}\\right)\\right|_{${r.map((s,a)=>`${e.serialize(s)}=${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:vi,serialize:(e,n)=>{let t=As(m(n,1));if(E(m(n,2))==="Function"){let i=m(n,2),r=As(m(i,1)),o=I(i).slice(1);return $([e.serialize(t),e.wrapString(o.map(s=>e.serialize(s)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return $([e.serialize(t),"\\coloneq",e.serialize(m(n,2))])},parse:Jr},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:vi,parse:Jr},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:vi,parse:Jr},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:vi,parse:Jr},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:240,serialize:(e,n)=>$([e.serialize(m(n,1)),"\\colon",e.serialize(m(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:240,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=D(m(n,2))??NaN;if(isFinite(t)&&t>=2&&Number.isInteger(t)){let r=jg(m(n,1));if(r!==null&&r>=0n){let o=Ug(r,t);if(o!==null)return/^[0-9]+$/.test(o)?`${o}_{${t}}`:`\\mathrm{${o}}_{${t}}`}}let i=w(m(n,2));if(i!==null){let r=Gg(m(n,1),i);if(r!==null)return`${r}_{${i}}`}return"\\operatorname{BaseForm}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Sequence",serialize:Kg},{name:"InvisibleOperator",serialize:e0},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=m(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[E(i)],o=r?i:["Sequence",i];if(r??="(,)",U(n)>1){let c=z(m(n,2));typeof c=="string"&&c.length<=3&&(r=c)}let[s,a,u]=["","",""];r.length===3?[s,a,u]=r:r.length===2?[s,u]=r:r.length===1&&(a=r);let l=i?o?ct(a)(e,o):e.serialize(i):"";return e.wrapString(l,t,s+u)}},{name:"Tuple",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>$(["(",ct(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>E(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(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=m(n,1);if(z(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=r0(e,n)||"\\blacksquare",r=E(t)==="ErrorCode"?z(m(t,1)):z(t);return r==="incompatible-type"?w(m(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(m(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(m(t,3))}\\notin ${e.serialize(m(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=z(m(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{${Wc(z(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":$(Dr(n,t=>z(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":$(Dr(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:i0},{kind:"postfix",precedence:850,latexTrigger:["."],parse:Hg},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:zr("]"),serialize:(e,n)=>{let t=I(n),i=e.wrap(t[0]??"Nothing",at),r=t.slice(1).map(o=>e.serialize(o));return e.indexStyle(n,e.level)==="bracket"?$([i,"[",r.join(", "),"]"]):ot("_",i,r.join(","))}},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:zr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:zr("\\right","\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","["],parse:zr("\\right","]")},{name:"When",kind:"postfix",precedence:800,latexTrigger:["\\left","\\{"],parse:(e,n)=>Yc(e,n,["\\right","\\}"]),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(!t||!i)return"";let o=(E(i)==="And"?I(i)??[]:[i]).map(s=>`\\left\\{${e.serialize(s)}\\right\\}`).join("");return`${e.serialize(t)}${o}`}},{kind:"postfix",precedence:800,latexTrigger:["\\{"],parse:(e,n)=>Yc(e,n,["\\}"])},{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=w(n);if(i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||E(n)==="List"))return E(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),E(i)==="Sequence"?["At",n,...I(i)]:["At",n,i];if(i!==null){let o=zg(n,i);if(o!==null)return o}return i!==null&&w(i)==="Nothing"?n:["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:lf,serialize:f0},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:s0},{name:"AngleBracket",kind:"matchfix",openTrigger:["\\langle"],closeTrigger:["\\rangle"],parse:(e,n)=>{if(n===null||K(n))return["AngleBracket"];let t=n;return E(t)==="Delimiter"&&(t=m(t,1)??t),E(t)==="Sequence"||E(t)==="List"?["AngleBracket",...I(t)]:["AngleBracket",t]},serialize:(e,n)=>$(["\\langle ",I(n).map(t=>e.serialize(t)).join(", ")," \\rangle"])},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Fs(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Fs(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:(e,n)=>e.peek==="."?null:qr(e,n),serialize:(e,n)=>{let t=I(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(m(n,1));if(t.length===2)return e.wrap(m(n,1),800)+".."+e.wrap(m(n,2),800);if(t.length===3){let i=D(m(n,3)),r=D(m(n,1));return i!==null&&r!==null?e.wrap(m(n,1),800)+".."+e.wrap(r+i,800)+".."+e.wrap(m(n,2),800):e.wrap(m(n,1),800)+"..("+(e.wrap(m(n,1),ce)+"+"+e.wrap(m(n,3),ce))+").."+e.wrap(m(n,2),800)}return""}},{latexTrigger:[".",".","."],kind:"infix",precedence:st-10,parse:(e,n)=>qr(e,n,!0)},{latexTrigger:["\\ldots"],kind:"infix",precedence:st-10,parse:(e,n)=>qr(e,n,!0)},{latexTrigger:["\\dots"],kind:"infix",precedence:st-10,parse:(e,n)=>qr(e,n,!0)},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Fs(e,t,n,19,";");return i===null?null:i.some(r=>E(r)==="Assign")?y0(i):["Delimiter",["Sequence",...i],"';'"]}},...t0(),{name:"Block",serialize:(e,n)=>{let t=I(n);return!t||t.length===0?"":t.filter(r=>E(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=I(n);return!t||t.length<3?"":$([Xe(e,"if",{trail:!0}),e.serialize(t[0]),Xe(e,"then",{lead:!0,trail:!0}),e.serialize(t[1]),Xe(e,"else",{lead:!0,trail:!0}),e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=I(n);if(!t||t.length===0)return"";let i=t[0],r=t.slice(1);if(r.length===1&&E(r[0])==="Element"){let o=r[0],s=m(o,1),a=m(o,2);if(E(a)==="Range"){let u=m(a,1),l=m(a,2);return $([Xe(e,"for",{trail:!0}),e.serialize(s),Xe(e,"from",{lead:!0,trail:!0}),e.serialize(u),Xe(e,"to",{lead:!0,trail:!0}),e.serialize(l),Xe(e,"do",{lead:!0,trail:!0}),e.serialize(i)])}}return $(["\\operatorname{Loop}(",t.map(o=>e.serialize(o)).join(", "),")"])}},{name:"Comprehension",serialize:(e,n)=>{let t=I(n);if(!t||t.length<2)return"";let i=t[0],o=t.slice(1).map(s=>{let a=m(s,1),u=m(s,2);return $([e.serialize(a)," = ",e.serialize(u)])}).join(", ");return $([e.serialize(i)," \\operatorname{for} ",o])}},{name:"Break",serialize:e=>Xe(e,"break")},{name:"Continue",serialize:e=>Xe(e,"continue")},{name:"Return",serialize:(e,n)=>{let t=m(n,1);return!t||w(t)==="Nothing"?Xe(e,"return"):$([Xe(e,"return",{trail:!0}),e.serialize(t)])}},{name:"Text",serialize:(e,n)=>{let t=I(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)z(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return $(t.map(a=>e.serialize(a)));let o=[];for(let a=0;a<i;a++)o.push(e.serialize(t[a]));let s="";for(let a=i;a<=r;a++){let u=z(t[a]);u!==null?s+=Wc(u):E(t[a])==="Annotated"||E(t[a])==="Text"?s+=e.serialize(t[a]):s+="$"+e.serialize(t[a])+"$"}o.push("\\text{"+s+"}");for(let a=r+1;a<t.length;a++)o.push(e.serialize(t[a]));return $(o)}},{name:"String",latexTrigger:["\\text"],parse:e=>be(e),serialize:(e,n)=>{let t=I(n);return t.length===0?"\\text{}":$(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>U(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,1))+"}"},{name:"IndexedSequence",serialize:(e,n)=>{let t=Bs(m(n,1)),i=m(n,2),r=m(n,3),o=U(n)>=4?I(n)?.[3]??null:null,s=`\\left\\{${e.serialize(t)}\\right\\}_{${e.serialize(i)}=${e.serialize(r)}}`;return o===null?s:`${s}^{${e.serialize(o)}}`}},{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)=>Tn(e,n,1),serialize:(e,n)=>{let t=D(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Tn(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Tn(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Tn(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Tn(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Tn(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=w(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return e.matchBoundary()?e.match("<}>")?["Derivative",n,r]:null:(e.removeBoundary(),null)}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(E(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=w(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new pe("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(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=I(n).slice(1);if(i.length>1)return t+"^{("+i.map(o=>e.serialize(o)).join(", ")+")}";let r=D(i[0])??1;return r===1?t+"^{\\prime}":r===2?t+"^{\\doubleprime}":r===3?t+"^{\\tripleprime}":t+"^{("+e.serialize(i[0])+")}"}},{name:"D",serialize:(e,n)=>{if(E(n)!=="D")return"D";let t=m(n,1),i=m(n,2);if(!t||!i)return"D";let r=1,o=t;for(;E(o)==="D";){let l=m(o,2);if(w(l)===w(i))r++,o=m(o,1);else break}let s=o;E(o)==="Function"&&(s=m(o,1)??o);let a=e.serialize(s),u=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${u}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${u}^{${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 s=e.parseGroup()??e.parseToken();n=D(s)??1}else i=!0;if(!t||w(t)===null)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let o=r;for(let s=0;s<n;s++)o=["D",o,t];return o}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:Os,serialize:(e,n)=>{let t=[],i=I(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let o=[];o.push(e.serialize(i[r+1])),o.push(e.serialize(i[r])),t.push(o.join("&"))}return $(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:Os},{kind:"environment",symbolTrigger:"rcases",parse:Os},{kind:"environment",symbolTrigger:"aligned",parse:Ke},{kind:"environment",symbolTrigger:"aligned*",parse:Ke},{kind:"environment",symbolTrigger:"align",parse:Ke},{kind:"environment",symbolTrigger:"align*",parse:Ke},{kind:"environment",symbolTrigger:"gather",parse:Ke},{kind:"environment",symbolTrigger:"gather*",parse:Ke},{kind:"environment",symbolTrigger:"gathered",parse:Ke},{kind:"environment",symbolTrigger:"split",parse:Ke},{kind:"environment",symbolTrigger:"multline",parse:Ke},{kind:"environment",symbolTrigger:"multline*",parse:Ke},{kind:"environment",symbolTrigger:"eqnarray",parse:Ke}];function be(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,o=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,Pr(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")o(),t.push(be(e));else if(e.match("\\textbf"))o(),t.push(be(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))o(),t.push(be(e,{fontStyle:"normal"}));else if(e.match("\\textup"))o(),t.push(be(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))o(),t.push(be(e,{fontStyle:"italic"}));else if(e.match("\\textit"))o(),t.push(be(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))o(),t.push(be(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))o(),t.push(be(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,u=e.parseStringGroup();if(u!==null){o();let l=be(e);t.push(["Annotated",l,Pr({color:u})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(o(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(o(),t.push(u)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(o(),t.push(u)):(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}o();let s;return t.length===1?s=t[0]:t.every(a=>z(a)!==null)?s="'"+t.map(a=>z(a)).join("")+"'":s=["Text",...t],n?["Annotated",s,Pr(n)]:s}function i0(e,n){return n===null?"":$(Dr(n,t=>{let i=z(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Wc(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function r0(e,n){let t=m(n,2);return t?E(t)==="LatexString"?z(m(t,1))??"":E(t)==="Hold"?e.serialize(m(t,1)):e.serialize(t):""}function o0(e,n){let t=m(n,1);if(E(t)!=="Derivative")return null;let i=[];for(let c of I(t).slice(1)){let f=D(c);if(f===null||!Number.isInteger(f)||f<0)return null;i.push(f)}if(i.length<2)return null;let r=I(n).slice(1);if(r.length!==i.length)return null;let o=i.reduce((c,f)=>c+f,0);if(o===0)return null;let s=[];for(let c=0;c<i.length;c++){if(i[c]===0)continue;if(!w(r[c]))return null;let f=e.serialize(r[c]);s.push(i[c]===1?`\\partial ${f}`:`\\partial ${f}^{${i[c]}}`)}let a=o===1?"\\partial":`\\partial^{${o}}`,u=e.serialize(m(t,1)),l=r.map(c=>e.serialize(c)).join(", ");return`\\frac{${a}}{${s.join(" ")}} ${u}(${l})`}function Tn(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=E(n);if(i==="Derivative"||i==="Prime"){let a=D(m(n,2))??1;return[i,H(m(n,1)),a+t]}let r=w(n),o=r&&e.getSymbolType(r).matches("function")||E(n);e.skipSpace();let s=e.parseArguments("enclosure");return s&&s.length>0?["Apply",["Derivative",n,t],...s]:o?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",H(n)]:["Prime",H(n),t]}function s0(e,n){if(K(n))return["Delimiter"];let t=E(n);if(t==="Delimiter"&&m(n,2)!==null){let i=z(m(n,2));if(i?.length===1)return["Delimiter",m(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(z(m(n,2))??"..")===".."?["Matrix",m(n,1)]:["Delimiter",n]}function lf(e,n){if(K(n))return["List"];let t=E(n);if(t==="Range"||t==="Linspace"||t==="Comprehension")return n;if(t==="Sequence"){let i=I(n),r=Gr(i,e);return r||["List",...i]}if(t==="Delimiter"){let i=z(m(n,2))??"...";if(i===";"||i===".;.")return["List",...(I(m(n,1))??[]).map(r=>lf(e,r))];if(i===","||i===".,."){if(n=m(n,1),E(n)==="Sequence"){let r=I(n),o=Gr(r,e);return o||["List",...r]}return["List",n??"Nothing"]}}return["List",n]}function wi(e){let n=D(e);if(n!==null)return n;if(E(e)==="Negate"){let t=D(m(e,1));if(t!==null)return-t}return null}var qs=new WeakSet;function cf(e){let n=D(e);if(n!==null)return{num:n,den:1};let t=E(e);if(t==="Negate"){let i=m(e,1);if(i==null)return null;let r=cf(i);return r===null?null:{num:-r.num,den:r.den}}if(t==="Divide"||t==="Rational"){if(U(e)!==2)return null;let i=wi(m(e,1)),r=wi(m(e,2));return i===null||r===null||!Number.isInteger(i)||!Number.isInteger(r)||r===0?null:{num:i,den:r}}return null}function Xc(e,n){n<0&&([e,n]=[-e,-n]);let t=a0(Math.abs(e),n);return[e,n]=[e/t,n/t],n===1?e:["Divide",e,n]}function a0(e,n){for(;n!==0;)[e,n]=[n,e%n];return e===0?1:e}function u0(e){let n=E(e);if(n!=="Add"&&n!=="Subtract")return null;let t=I(e);if(t.length<2)return null;let i=t[t.length-1];if(E(i)!=="Range"||I(i).length!==2||!qs.has(i))return null;let r=t.slice(0,-1);return{sample:[n,...r,m(i,1)],end:m(i,2)}}function jr(e){let n=E(e);if(n==="InvisibleOperator"||n==="Multiply"){let t=I(e);if(t.length>=2&&w(t[0])==="ContinuationPlaceholder"){let i=t.slice(1);return i.length===1?i[0]:[n,...i]}return null}if(n==="Negate"){let t=jr(m(e,1));return t===null?null:["Negate",t]}if(n==="Subtract"){let t=jr(m(e,1));return t===null?null:["Subtract",t,m(e,2)]}if(n==="Add"){let t=I(e),i=jr(t[0]);return i===null?null:["Add",i,...t.slice(1)]}return null}function Gr(e,n){if(e.length>=2){let f=e[e.length-1],d=e[e.length-2];if(w(d)!=="ContinuationPlaceholder")if(E(f)==="Range"&&I(f).length===2&&qs.has(f))e=[...e.slice(0,-1),m(f,1),"ContinuationPlaceholder",m(f,2)];else{let p=u0(f);if(p!==null)e=[...e.slice(0,-1),p.sample,"ContinuationPlaceholder",p.end];else{let h=jr(f);h!==null&&(e=[...e.slice(0,-1),"ContinuationPlaceholder",h])}}}if(e.length<3)return null;let t=e[e.length-2];if(w(t)!=="ContinuationPlaceholder")return null;let i=e.slice(0,-2),r=e[e.length-1];if(i.length===1){let f=i[0];return w(f)==="ContinuationPlaceholder"?null:["Range",D(f)??f,r]}if(i.length<2)return null;let o=n.options.tolerance,s=i.map(cf);if(s.every(f=>f!==null)){let f=s,d=f.map(h=>h.num/h.den),p=d[d.length-1]-d[d.length-2];if(Math.abs(p)<o)return n.error("degenerate-range-step",n.index);for(let h=1;h<d.length;h++)if(Math.abs(d[h]-d[h-1]-p)>o)return n.error("inconsistent-range-samples",n.index);if(f.some(h=>h.den!==1)){let h=f[f.length-1],b=f[f.length-2];return["Range",Xc(f[0].num,f[0].den),r,Xc(h.num*b.den-b.num*h.den,h.den*b.den)]}return["Range",d[0],r,p]}let a=i.map(ff);if(a.some(f=>f===null))return c0(i,r,o);let u=a.map(f=>f.coeff),l=a[0].sym;if(a.some(f=>f.sym!==l))return null;let c=u[u.length-1]-u[u.length-2];if(Math.abs(c)<o)return n.error("degenerate-range-step",n.index);for(let f=1;f<u.length;f++)if(Math.abs(u[f]-u[f-1]-c)>o)return n.error("inconsistent-range-samples",n.index);return["Range",Kc(u[0],l),r,Kc(c,l)]}function ff(e){let n=w(e);if(n!==null)return n.includes("_")?null:{coeff:1,sym:n};let t=E(e);if(t==="Negate"){let i=m(e,1);if(!i)return null;let r=ff(i);return r===null?null:{coeff:-r.coeff,sym:r.sym}}if(t==="Multiply"||t==="InvisibleOperator"){let i=I(e);if(i.length!==2)return null;let r=wi(i[0]),o=w(i[1]);return r===null||o===null||o.includes("_")?null:{coeff:r,sym:o}}return null}function Kc(e,n){return e===1?n:e===-1?["Negate",n]:["Multiply",e,n]}function Qc(e){if(E(e)==="Add"){let n=[],t=0;for(let r of I(e)){let o=wi(r);o!==null?t+=o:n.push(r)}return n.length===0?null:{base:n.length===1?n[0]:["Add",...n],offset:t}}return wi(e)!==null?null:{base:e,offset:0}}function l0(e,n){return n===0?e:E(e)==="Add"?["Add",...I(e),n]:["Add",e,n]}function c0(e,n,t){let i=e.map(Qc);if(i.some(l=>l===null))return null;let r=i,o=JSON.stringify(r[0].base);if(r.some(l=>JSON.stringify(l.base)!==o))return null;let s=Qc(n);if(s===null||JSON.stringify(s.base)!==o)return null;let a=r.map(l=>l.offset),u=a[a.length-1]-a[a.length-2];if(Math.abs(u)<t)return null;for(let l=1;l<a.length;l++)if(Math.abs(a[l]-a[l-1]-u)>t)return null;return["Range",l0(r[0].base,a[0]),n,u]}function f0(e,n){return U(n)>1&&I(n).every(t=>{let i=E(t);return Vr(i)||Lr(i)})?$(["\\begin{cases}",ct("\\\\")(e,n),"\\end{cases}"]):$(["\\bigl\\lbrack",ct(", ")(e,n),"\\bigr\\rbrack"])}function qr(e,n,t=!1){if(n===null)return null;let i=e.parseExpression({minPrec:270});if(i===null)return t?["Sequence",n,"ContinuationPlaceholder"]:null;if(t&&E(n)==="InvisibleOperator"&&I(n).some(o=>z(o)!==null))return["InvisibleOperator",...I(n),"ContinuationPlaceholder",i];if(E(i)==="Range"){let o=m(i,1),s=m(i,2);return o&&s?["Range",n,s,["Subtract",o,n]]:null}let r=["Range",n,i];return qs.add(r),r}var Ur={"(":"(",")":")","[":"\\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 Bs(e){if(e===null)return"Nothing";let n=E(e);if(!n)return e;let t=I(e)??[];return n.length>1&&n.endsWith("_")&&t.length===1?["Subscript",n.slice(0,-1),Bs(t[0])]:[n,...t.map(i=>Bs(i))]}function ef(e,n,t){if(!n||n.length===0)return;let i=[];for(let r of n){let o=w(r);o&&i.push(o)}e.pruneUndeclared(i,t)}function Jr(e,n,t){let i=e.operandDiagnosticCheckpoint,r=(t?.minPrec??0)>=19,o=w(n);if(o&&o.includes("_")){let u=o.indexOf("_"),l=o.substring(0,u),c=o.substring(u+1),f=parseInt(c,10),d=!isNaN(f)&&String(f)===c?f:c,p=d!==""&&(typeof d=="number"||typeof d=="string"&&d.length===1);(e.getSymbolType(l).matches("indexed_collection")||!r&&p)&&(n=["Subscript",l,d])}if(E(n)==="InvisibleOperator"&&U(n)===2&&E(m(n,2))==="Delimiter"){let u=w(m(n,1));if(!u)return null;let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let c=m(m(n,2),1),f=[];return E(c)==="Sequence"?f=[...I(c)]:c&&(f=[c]),ef(e,f,i),e.pruneJuxtaposition(u,i),e.pruneUndeclared([u],i),["Assign",u,["Function",l,...f??[]]]}if(E(n)==="Subscript"&&w(m(n,1))){let u=w(m(n,1));if(!e.getSymbolType(u).matches("indexed_collection")){let f=m(n,2),d=(f!==null&&typeof f=="string"?f:void 0)??(f!==null&&typeof f=="number"?String(f):void 0);if(d&&r){let p=e.parseExpression({...t??{},minPrec:20});return p===null?null:["Assign",u+"_"+d,p]}}let l=e.parseExpression({...t??{},minPrec:20});if(l===null)return null;let c=m(n,2);return z(c)!==null?["Assign",n,l]:w(c)?["Assign",n,l]:["Assign",n,l]}let s=E(n);if(s){let u=I(n),l=e.parseExpression({...t??{},minPrec:20});return l===null?null:(ef(e,u,i),e.pruneJuxtaposition(s,i),e.pruneUndeclared([s],i),["Assign",s,["Function",l,...u]])}if(!w(n))return null;let a=e.parseExpression({...t??{},minPrec:20});return a===null?null:["Assign",n,a]}function Os(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=E(i[0]);return Lr(r)||Vr(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=z(i[1]);t.push(r?"True":ks(i[1])??"True"),t.push(i[0])}return["Which",...t]}var d0={"=":"Equal","\\ne":"NotEqual","\\neq":"NotEqual","<":"Less","\\lt":"Less",">":"Greater","\\gt":"Greater","\\le":"LessEqual","\\leq":"LessEqual","\\ge":"GreaterEqual","\\geq":"GreaterEqual"};function nf(e){return e.atBoundary||e.peek==="\\\\"||e.peek==="\\cr"}function p0(e){let n=i=>i.peek==="&"||i.peek==="\\\\"||i.peek==="\\cr"||i.peek===","||i.peek===";",t=null;for(;!nf(e)&&(e.skipSpace(),!nf(e));){if(e.match("&"))continue;if(e.peek===","||e.peek==="."||e.peek===";"){e.nextToken();continue}let i=d0[e.peek];if(i!==void 0&&t!==null){e.nextToken();let o=e.parseExpression({minPrec:0,condition:n});t=[i,t,H(o)];continue}let r=e.parseExpression({minPrec:0,condition:n});if(r===null){e.nextToken();continue}t=t===null?r:["InvisibleOperator",t,r]}return t}function Ke(e){let n=[];for(;!e.atBoundary;){let t=e.index,i=p0(e);if(i!==null&&n.push(i),e.skipSpace(),(e.match("\\\\")||e.match("\\cr"))&&e.parseOptionalGroup(),e.index===t){if(e.atBoundary)break;e.nextToken()}}return["List",...n]}function Ls(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 ft(e,n){let t=e.index;e.skipVisualSpace();let i=e.diagnosticsCheckpoint();if(e.match("\\text")||e.match("\\keyword")){if(Ls(e,n))return e.rollbackDiagnostics(i),!0;e.index=t}let r=e.index,o=e.parseSymbol();return e.rollbackDiagnostics(i),o!==null&&w(o)===n?!0:(e.index=r,!1)}function dt(e,n){let t=e.index,i=ft(e,n);return e.index=t,i}function m0(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:o=>dt(o,"then")});if(t===null||!ft(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:o=>dt(o,"else")});if(i===null||!ft(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function h0(e,n){let t=e.parseExpression({minPrec:0,condition:a=>dt(a,"from")}),i=t?w(t):null;if(!i||!ft(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>dt(a,"to")});if(r===null||!ft(e,"to"))return null;let o=e.parseExpression({minPrec:0,condition:a=>dt(a,"do")});return o===null||!ft(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,o]]]}function df(e,n,t){let i={minPrec:21,condition:o=>{if(t?.condition?.(o))return!0;let s=o.index;o.skipVisualSpace();let a=o.peek===",";return o.index=s,!!(a||dt(o,"where")||dt(o,"with"))}},r=[];do{e.skipVisualSpace();let o=e.parseExpression(i);if(o===null)break;let s=E(o);if(s!=="Equal"&&s!=="Assign")return null;let a=m(o,1),u=m(o,2);if(!a||!u)return null;r.push(["Element",a,u]),e.skipVisualSpace()}while(e.match(","));return r.length===0?null:["Comprehension",n,...r]}var g0=new Set(["Less","Greater","LessEqual","GreaterEqual","Equal","NotEqual","Element"]);function pf(e){if(e===null)return!1;let n=E(e);if(!n)return!1;if(g0.has(n))return!0;if(n==="And"||n==="Or"){let t=I(e);return t.length===0?!1:t.every(i=>pf(i))}return!1}function tf(e,n){e.skipVisualSpace();let t=e.parseExpression(n);return pf(t)?t:null}function rf(e){if(E(e)!=="Delimiter")return e;let n=m(e,1);return E(n)!=="Sequence"||U(e)!==2||z(m(e,2))!==","?e:["Tuple",...I(n)]}function b0(e,n,t){let i={minPrec:21,condition:a=>{if(t?.condition?.(a))return!0;let u=a.index;a.skipVisualSpace();let l=a.peek===",";return a.index=u,l}},r=[];do{e.skipVisualSpace();let a=e.parseExpression(i);if(!a)break;r.push(a),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let o=e.index;if(ft(e,"for")){let a=df(e,n,t);if(a){let u=[];for(let l of r){let c=Vs(l);E(c)==="Assign"&&u.push(["Declare",m(c,1)]),u.push(c)}return u.push(a),["Block",...u]}e.index=o}let s=[];for(let a of r){let u=Vs(a);E(u)==="Assign"&&s.push(["Declare",m(u,1)]),s.push(u)}return s.push(n),["Block",...s]}function y0(e){let n=[];for(let t of e){let i=Vs(t);E(i)==="Assign"&&n.push(["Declare",m(i,1)]),n.push(i)}return["Block",...n]}function Vs(e){if(E(e)!=="Assign")return e;let n=m(e,1);if(E(n)!=="Subscript")return e;let t=w(m(n,1));if(!t)return e;let i=m(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,m(e,2)??"Nothing"]:e}function x0(e){if(E(e)!=="Delimiter")return!1;if(U(e)<2)return!0;let n=z(m(e,2));return typeof n=="string"&&n.length>=2&&n[0]==="("}var E0=new Set(["Delimiter","List","Sequence","InvisibleOperator","Error","At"]);function v0(e){let n=E(e);return typeof n!="string"||n===""?!1:!E0.has(n)}function zr(...e){return(n,t)=>{if(!w(t)&&E(t)!=="List"&&!x0(t)&&!v0(t))return null;let i=null;if(e.length===0){if(i=n.parseGroup()??n.parseExpression({minPrec:0}),i===null)return null}else if(e.length>1){if(n.addBoundary(e),i=n.parseExpression({minPrec:0}),i===null||!n.matchBoundary())return n.removeBoundary(),null}else if(i=n.parseExpression({minPrec:0}),i===null||!n.matchAll(e))return null;return e.length===0&&z(i)!==null?null:(E(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),E(i)==="Sequence"?["At",t,...I(i)]:["At",t,i])}}var pt=[["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],["CapitalPi","\\Pi",928],["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",8467],["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]],mf=[...pt.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...pt.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var hf=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:270,parse:"To"},{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 an(e,n,t){if(K(e))return null;let i,r=E(e);if(r==="Delimiter"){let l=z(m(e,2));if(l!==","&&l!=="(,)"&&l!=="[,]")return null;let c=m(e,1);E(c)==="Sequence"?i=[...I(c)]:i=c?[c]:[]}else if(r==="Sequence")i=[...I(e)];else return null;if(i.length!==2)return null;let[o,s]=i;return["Interval",n?["Open",o]:o,t?["Open",s]:s]}function Mi(e){if(e===null)return null;if(E(e)==="List"&&U(e)===2)return["Interval",m(e,1),m(e,2)];if(E(e)==="Delimiter"){let n=z(m(e,2))??"(,)";if(n!==","&&n!=="(,)"&&n!=="()")return e;let t=m(e,1);if(E(t)==="Sequence"&&U(t)===2)return["Interval",["Open",m(t,1)],["Open",m(t,2)]]}return e}function xe(e,n,t){return(i,r,o)=>{if(r===null)return null;let s=H(i.parseExpression({...o,minPrec:n}));return[e,t==="both"?Mi(r):r,Mi(s)]}}var gf=new Set(["Less","LessEqual","Greater","GreaterEqual","Equal","NotEqual","And","Or","Not"]),yf=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"UpperHalfPlane",latexTrigger:"\\mathbb{C}^+"},{latexTrigger:"\\mathbb{C}^{+}",parse:"UpperHalfPlane"},{latexTrigger:"\\C^+",parse:"UpperHalfPlane"},{latexTrigger:"\\C^{+}",parse:"UpperHalfPlane"},{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^{\\leqslant0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leqslant}",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_{\\geqslant0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geqslant}",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_{\\leqslant0}",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^{\\geqslant}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geqslant0}",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:"\\mathbb{R}_{>0}",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\gt0}",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_+",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\geq0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\ge0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\geqslant0}",parse:"NonNegativeNumbers"},{latexTrigger:"\\mathbb{R}_{<0}",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_-",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\mathbb{R}_{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\le0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\mathbb{R}_{\\leqslant0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\mathbb{Z}_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_+",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}^+",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\ge0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\geqslant0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{<0}",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_-",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\mathbb{Z}_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\le0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\mathbb{Z}_{\\leqslant0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\mathbb{N}_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^+",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^*",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{\\ge0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_{\\geqslant0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}_1",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\geq1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\ge1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{\\geqslant1}",parse:"PositiveIntegers"},{latexTrigger:"\\mathbb{N}_{>1}",parse:()=>["Set",["Element","n","NonNegativeIntegers"],["Condition",["Greater","n",1]]]},{latexTrigger:"\\N_{>1}",parse:()=>["Set",["Element","n","NonNegativeIntegers"],["Condition",["Greater","n",1]]]},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix",serialize:(e,n)=>$([e.serialize(m(n,1)),"^\\complement"])},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350,parse:xe("Intersection",350,"both")},{latexTrigger:["\u2229"],kind:"infix",precedence:350,parse:xe("Intersection",350,"both")},{name:"Interval",serialize:bf},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>an(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>an(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>an(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>an(n,!0,!0)},{name:"Multiple",serialize:bf},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350,parse:xe("Union",350,"both")},{latexTrigger:["\u222A"],kind:"infix",precedence:350,parse:xe("Union",350,"both")},{name:"Divides",latexTrigger:["\\mid"],kind:"infix",precedence:160},{name:"NotDivides",latexTrigger:["\\nmid"],kind:"infix",precedence:160},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>{if(K(n))return"EmptySet";E(n)=="Delimiter"&&z(m(n,2))===","&&(n=m(n,1));let t=E(n);if(t==="Divides"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null)return["Set",i,["Condition",r]]}if(t==="Colon"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null){let o=E(i);return o!==null&&gf.has(o)?["Which",i,r]:["Set",i,["Condition",r]]}}if(t==="Sequence"){let i=I(n),r=i.filter(a=>E(a)==="Colon");if(r.length>0&&r.every(a=>{let u=m(a,1),l=u!==null?E(u):null;return l!==null&&gf.has(l)})){let a=[];for(let u=0;u<i.length;u++){let l=i[u];if(E(l)==="Colon"){let c=m(l,1),f=m(l,2);if(c===null||f===null)return["Set",...i];a.push(c,f)}else{if(u!==i.length-1)return["Set",...i];a.push("True",l)}}return["Which",...a]}let s=Gr(i,e);return s||["Set",...i]}return["Set",n]},serialize:(e,n)=>{if(U(n)===2&&E(m(n,2))==="Condition"){let t=m(n,2);return $(["\\lbrace",e.serialize(m(n,1)),"\\mid",e.serialize(m(t,1)),"\\rbrace"])}return $(["\\lbrace",I(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])}},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650,parse:xe("SetMinus",650,"both")},{latexTrigger:["\\backslash"],kind:"infix",precedence:650,parse:xe("SetMinus",650,"both")},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:B},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,Mi(n)]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:241,parse:xe("Element",241,"rhs")},{latexTrigger:["\u2208"],kind:"infix",precedence:241,parse:xe("Element",241,"rhs")},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240,parse:xe("NotElement",240,"rhs")},{latexTrigger:["\u2209"],kind:"infix",precedence:240,parse:xe("NotElement",240,"rhs")},{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},{latexTrigger:["\\not","\\in"],kind:"infix",precedence:240,parse:xe("NotElement",240,"rhs")},{latexTrigger:["\\not","\\subset"],kind:"infix",associativity:"none",precedence:240,parse:"NotSubset"},{latexTrigger:["\\not","\\supset"],kind:"infix",associativity:"none",precedence:240,parse:"NotSuperset"},{latexTrigger:["\\not","\\subseteq"],kind:"infix",associativity:"none",precedence:240,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:240});return i===null?null:["Not",["SubsetEqual",Mi(n),Mi(i)]]}},{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,parse:xe("Subset",240,"both")},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Subset",240,"both")},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Subset",240,"both")},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240,parse:xe("SubsetEqual",240,"both")},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240,parse:xe("Superset",240,"both")},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Superset",240,"both")},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:xe("Superset",240,"both")},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240,parse:xe("SupersetEqual",240,"both")}];function bf(e,n){if(n===null)return"";let t=E(n);if(!t)return"";if(t==="Range")return $(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=m(n,1),o=m(n,2),s=!1,a=!1;return E(r)==="Open"&&(r=m(r,1),s=!0),E(o)==="Open"&&(o=m(o,1),a=!0),$([s?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(o),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function In(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 $(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function Hr(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 N0(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,o=Math.floor(r),s=(r-o)*60,a=Math.round(s*1e3)/1e3,u=o,l=i;return a>=60&&(a=0,u++),u>=60&&(u=0,l++),{deg:n*l||0,min:n*u||0,sec:a===0?0:n*a}}function Zr(e){let{deg:n,min:t,sec:i}=N0(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let o=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(o))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function T0(e){if(E(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of I(e))if(E(i)==="Power"){let r=m(i,1),o=m(i,2);if(E(o)==="Negate"){let s=m(o,1);r&&s&&t.push(["Power",r,s])}else{let s=D(o)??NaN;s===-1?r&&t.push(r):s<0?r&&t.push(["Power",r,-s]):n.push(i)}}else if(E(i)==="Rational"&&U(i)===2||E(i)==="Divide"){let r=m(i,1),o=m(i,2);D(r)!==1&&n.push(r),D(o)!==1&&t.push(o)}else{let r=rt(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function xf(e){let n=e.parseOptionalGroup(),t=e.parseGroup(),i=t??e.parseToken();if(K(i)){if(n===null&&t===null)return"Sqrt";let r=e.error("missing",e.index);return n!==null?["Root",r,H(n)]:["Sqrt",r]}return n!==null?["Root",i,n]:["Sqrt",i]}function _0(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 Af(e){if(e==null)return!1;if(w(e)==="ContinuationPlaceholder")return!0;let n=E(e);return n==="Add"||n==="Subtract"||n==="Negate"?I(e).some(t=>Af(t)):!1}function Cf(e){if(E(e)==="Subtract"){let n=m(e,1),t=m(e,2);return[...Cf(n),["Negate",t]]}return[e]}function Ef(e){if(E(e)!=="Add")return e;let n=I(e);if(!n.some(i=>Af(i)))return e;let t=[];for(let i of n)t.push(...Cf(i));return["Add",...t]}function I0(e,n){if(!n)return"\\pm";let t=m(n,1),i=m(n,2);if(t===null)return"\\pm";if(i===null)return e.serialize(t);let r=D(t),o=D(i);if(r!==null&&o!==null&&Number.isFinite(r)&&Number.isFinite(o)&&o>0){let{value:s,error:a}=Rs(r,o,e.options.digits);return $([s,"\\pm",a])}return $([e.serialize(t),"\\pm",e.serialize(i)])}function Ci(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)+"}}":D(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}var S0=new Set(["Pi","ExponentialE","ImaginaryUnit","GoldenRatio","EulerGamma","CatalanConstant","MachineEpsilon"]);function js(e,n){let t=w(e);if(t!==null)return t===n;for(let i of I(e))if(js(i,n))return!0;return!1}function $f(e){let n=w(e);if(n!==null)return S0.has(n)?null:n;for(let t of I(e)){let i=$f(t);if(i!==null)return i}return null}function Sn(e,n){if(Ye(e))return 0;let t=w(e);if(t!==null)return t===n?1:0;let i=E(e);if(!i)return 0;if(i==="Negate")return Sn(m(e,1),n);if(i==="Multiply"){let r=0;for(let o of I(e)){let s=Sn(o,n);if(s===void 0)return;r+=s}return r}if(i==="Divide"){let r=Sn(m(e,1),n),o=Sn(m(e,2),n);return r===void 0||o===void 0?void 0:r-o}if(i==="Power"){let r=m(e,1),o=m(e,2),s=Sn(r,n);if(s===void 0)return;if(s===0)return js(o,n)?void 0:0;let a=D(o);return a===null||!Number.isInteger(a)?void 0:s*a}if(i==="Square"){let r=Sn(m(e,1),n);return r===void 0?void 0:r*2}if(i==="Add"||i==="Subtract"){let r;for(let o of I(e)){let s=Sn(o,n);s!==void 0&&(r===void 0||s>r)&&(r=s)}return r}return js(e,n)?void 0:0}function w0(e){let n=e;return E(n)==="Negate"&&(n=m(n,1)),E(n)==="BigO"?m(n,1):null}function M0(e){let n=e.map(w0);if(!n.some(u=>u!==null))return e;let t=null;for(let u of n)if(u!==null&&(t=$f(u),t!==null))break;if(t===null)return e;let i=n.find(u=>u!==null),r=(Sn(i,t)??0)>=0,o=[],s=[];for(let u=0;u<e.length;u++)n[u]!==null?s.push(e[u]):o.push(e[u]);let a=u=>Sn(u,t)??0;return o.sort((u,l)=>r?a(u)-a(l):a(l)-a(u)),[...o,...s]}function k0(e,n){e.level-=1;let t=E(n),i="",r=m(n,1);if(t==="Negate")i="-"+e.wrap(r,ce+1);else if(t==="Subtract"){i=e.wrap(r,ce);let o=m(n,2);if(o!==null){let s=e.wrap(o,ce);s[0]==="-"?i+="+"+s.slice(1):s[0]==="+"?i+="-"+s.slice(1):i=i+"-"+s}}else if(t==="Add"){let o=M0(I(n));if(e.options.prettify&&o.length===2&&e.options.invisiblePlus!=="+"){let[s,a]=o,[u,l]=[s,a],c=D(u),f=rt(l);if((c===null||f===null)&&([u,l]=[a,s],c=D(u),f=rt(l)),c!==null&&f!==null&&isFinite(c)&&Number.isInteger(c)&&c>=0&&c<=1e3&&isFinite(f[0])&&isFinite(f[1])&&f[0]>0&&f[0]<=100&&f[1]<=100)return i=In(e.options.invisiblePlus,e.serialize(u),e.serialize(l)),e.level+=1,i}if(e.options.prettify&&o.length===2){let[s,a]=Ri(o[0]),[u,l]=Ri(o[1]);if(a<0&&l>0)return i=e.wrap(u,ce)+"-"+e.wrap(s,ce),e.level+=1,i}i=E(o[0])==="Range"?e.wrap(o[0],ce):e.serialize(o[0]);for(let s=1;s<o.length;s++)if(r=o[s],e.options.prettify){let[a,u]=Ri(r),l=e.wrap(a,ce);u>0?l.startsWith("+")||l.startsWith("-")?i+=l:i+="+"+l:l.startsWith("+")?i+="-"+l.slice(1):l.startsWith("-")?i+="+"+l.slice(1):i+="-"+l}else{let a=e.wrap(r,ce);a[0]==="-"||a[0]==="+"?i+=a:i+="+"+a}}return e.level+=1,i}function Rf(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[c,f]=T0(n);f.length>0&&(f.length===1&&f[0]===1?c.length===0?t="1":c.length===1?t=e.serialize(c[0]):t=Rf(e,["Multiply",...c]):t=e.serialize(["Divide",c.length===1?c[0]:["Multiply",...c],f.length===1?f[0]:["Multiply",...f]]))}if(t)return e.level+=1,t;let i=!1,r=null,o=U(n)+1,s=I(n);e.options.prettify===!0&&s.length===2&&Ye(s[1])&&!Ye(s[0])&&(s=[s[1],s[0]]);let a=!1,u=!1,l=!1;for(let c=1;c<o;c++){if(r=s[c-1],r===null)continue;let f;if(Ye(r)){f=e.serialize(r),f==="-1"&&!t?(t="",i=!i):(f[0]==="-"&&(f=f.slice(1),i=!i),t?t=In(e.options.multiply,t,f):t=f),a=!0,u=!1,l=!1;continue}if(E(r)==="Power"){let p=rt(m(r,2));if(p!=null){let[h,b]=p;if(h===1&&b!==null){t+=Ci(e,e.rootStyle(r,e.level),m(r,1),b),a=!1,u=!1,l=!1;continue}}}if(E(r)==="Power"&&!isNaN(D(m(r,1))??NaN)){f=e.serialize(r),t?t=In(e.options.multiply,t,f):t=f,a=!0,u=!1,l=!1;continue}E(r)==="Negate"&&(r=m(r,1),i=!i),f=E(r)==="Mod"&&U(r)===2?e.wrap(r,Te+1):e.wrap(r,te);let d=w(r)==="ContinuationPlaceholder";if(!t)t=f;else{let p=E(r);a&&(p==="Divide"||p==="Rational")?t=In(e.options.multiply,t,f):/^\d/.test(f)?t=In(e.options.multiply,t,f):d||u?t=In(e.options.multiply,t,f):l&&A0(r)?t=In(e.options.multiply,t,f):e.options.invisibleMultiply?t=In(e.options.invisibleMultiply,t,f):t=$([t,f])}a=!1,u=d,l=w(r)!==null&&!d}return e.level+=1,i?"-"+t:t}function A0(e){if(e===null)return!1;let n=E(e);if(n==="Tuple"||n==="Pair"||n==="Triple")return U(e)>=2;if(n==="Delimiter"){let t=m(e,1);if(E(t)!=="Sequence"||U(t)<2)return!1;let i=z(m(e,2));return i==null||i.startsWith("(")}return!1}function Xr(e){let n=e.parseGroup();return n===null?H(e.parseToken()):K(n)?e.error("missing",e.index):n}function Yr(e){let n=Xr(e),t=Xr(e),i=E(t)==="PartialDerivative"?[t]:E(t)==="Multiply"||E(t)==="Sequence"||E(t)==="InvisibleOperator"?I(t).filter(a=>E(a)==="PartialDerivative"):[];if(i.length>0){let a=E(n)==="PartialDerivative"?m(n,1):null;(a==null||a==="Nothing")&&(a=vf(H(e.parseExpression())));let u=[];for(let c of i){let f=m(c,1),d=E(f)==="List"?I(f):[f];for(let p of d)p&&p!=="Nothing"&&u.push(p)}let l=D(m(n,2))??1;if(u.length===1&&l>1)for(let c=1;c<l;c++)u.push(u[0]);if(u.length>0)return["D",a,...u]}let r=a=>a==="d"||a==="d_upright"||a==="differentialD",o=null,s=null;{let a=E(n),u=a==="Multiply"||a==="InvisibleOperator"||a==="Sequence"?[...I(n)]:[n],l=u[0];if(r(w(l)))o=1;else if(E(l)==="Power"&&r(w(m(l,1)))){let c=D(m(l,2));c!==null&&c>0&&(o=c)}if(o!==null&&u.length>1){let c=u.slice(1);s=c.length===1?c[0]:["Multiply",...c]}}if(o!==null){let a=[],u=!1,l=c=>{if(!c)return;let f=w(c);if(f&&r(f)){u=!0;return}if(f){a.push(c);return}let d=E(c);if(d==="Sequence"||d==="Multiply"||d==="InvisibleOperator")for(let p of I(c))l(p);else if(d==="Power"){let p=m(c,1);p&&!r(w(p))&&a.push(p)}};if(l(t),u||(a.length=0),a.length===0){let c=w(t);c&&c.length>1&&c[0]==="d"&&a.push(c.slice(1))}if(a.length===1&&o>1)for(let c=1;c<o;c++)a.push(a[0]);if(a.length>0){let f=s??vf(H(e.parseExpression()));for(let d of a)f=["D",f,d];return f}}return["Divide",n,t]}function ki(e,n,t){if(e.match("_")){let r=e.parseGroup()??e.parseToken();if(r===null)return null;let o=e.parseArguments("implicit");return o===null||o.length===0?null:t==="first"?[n,r,...o]:[n,...o,r]}let i=e.parseArguments("enclosure");return i===null?n:[n,...i]}function vf(e){return E(e)==="List"&&U(e)===1?m(e,1):e}function C0(e,n,t){let i=e.parseExpression({...t,minPrec:Te+1});if(i===null)return["Divide",n,xi];let r=$0(n,i);return r||["Divide",n,i]}function $0(e,n){let t=w(e);if(t!=="d"&&t!=="d_upright"&&t!=="differentialD")return null;let i=E(n);if(i!=="InvisibleOperator"&&i!=="Multiply")return null;let r=I(n);if(r.length<3)return null;let o=w(r[0]);if(o!=="d"&&o!=="d_upright"&&o!=="differentialD")return null;let s=r[1];if(!w(s))return null;let a=r.length===3?r[2]:["InvisibleOperator",...r.slice(2)];return["D",$i(a),s]}function $i(e){if(E(e)==="Delimiter")return $i(m(e,1));if(E(e)==="InvisibleOperator"){let n=I(e);return n.length===2&&w(n[0])&&E(n[1])==="Delimiter"?[w(n[0]),$i(n[1])]:["InvisibleOperator",...n.map(t=>$i(t))]}if(Array.isArray(e)){let n=e[0];if(typeof n!="string")return e;let t=[n];for(let i=1;i<e.length;i++)t.push($i(e[i]));return t}return e}function Nf(e,n){if(n===null)return"";let t=H(m(n,1)),i=H(m(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(t),l=e.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return D(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return D(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let o="\\frac";r==="block-quotient"?o="\\dfrac":r==="inline-quotient"&&(o="\\tfrac");let s=e.serialize(t),a=e.serialize(i);return`${o}{${s}}{${a}}`}function Js(e){let n=Xr(e),t=Xr(e);return["Binomial",n,H(t)]}function R0(e,n){if(n===null)return"";let t=e.serialize(H(m(n,1))),i=e.serialize(H(m(n,2)));return`\\binom{${t}}{${i}}`}function zs(e,n){if(!n)return"";let t=E(n),i=H(m(n,1));if(t==="Sqrt")return Ci(e,e.rootStyle(n,e.level-1),i,2);let r=H(m(n,2));if(t==="Root")return Ci(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let s=D(r)??1;if(s===-1)return e.serialize(["Divide","1",i]);if(s<0)return e.serialize(["Divide","1",["Power",i,-s]]);if(E(r)==="Divide"||E(r)==="Rational"){let a=D(m(r,1)),u=D(m(r,2));if(a===1){let l=e.rootStyle(n,e.level);return Ci(e,l,i,m(r,2))}if(a===-1)return u===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,m(r,2)??xi]]);if(u===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(m(r,1))}}`}else if(E(r)==="Power"&&D(m(r,2))===-1){let a=e.rootStyle(n,e.level);return Ci(e,a,i,m(r,1))}}return ot("^",(s=>s.startsWith("-")?e.wrapString(s,"normal"):s)(e.wrapShort(i)),e.serialize(r))}function Ai(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,o=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=D(i),e.skipSpace();let u=e.index,l=e.parseNumber();l!==null&&(e.match('"')||e.match("\\doubleprime"))?o=D(l):e.index=u}else return e.index=t,["Degrees",n];let s=D(n);if(s!==null&&r!==null){let u=3600*s+60*r+(o??0),l=Vc(u,3600);if(l===null)return["Degrees",u/3600];let[c,f]=l;return f===1?["Degrees",c]:["Degrees",["Rational",c,f]]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),o!==null&&a.push(["Quantity",o,"arcsec"]),["Add",...a]}var Pf=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ai(e,n),serialize:(e,n)=>{let t=e.options,i=m(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=D(i);if(r===null){let o=rt(i);o!==null&&o[1]!==0&&(r=o[0]/o[1])}if(r!==null){let o=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(o=Hr(o,t.angleNormalization)),t.dmsFormat?Zr(o):`${o}\xB0`}}return $([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>Ai(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>Ai(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>Ai(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>Ai(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=D(m(n,1)),i=D(m(n,2)),r=D(m(n,3));if(t!==null){let s=i??0,a=r??0,u=`${t}\xB0`;return(s!==0||a!==0)&&(u+=`${s}'`),a!==0&&(u+=`${a}"`),u}let o=[];for(let s of[1,2,3]){let a=m(n,s);a!==null&&o.push(e.serialize(a))}return`\\operatorname{DMS}(${o.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{latexTrigger:["\u221E"],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=>wf(e)},{latexTrigger:"\\exp",parse:e=>wf(e)},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>K(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>K(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{latexTrigger:["\\abs"],kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:ce,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:ce+1});if(i===null)return null;if(E(i)==="Negate"){let r=m(i,1);if(Ye(r))return Ef(Ft("Add",n,_0(r)))}return Ef(Ft("Add",n,i))},serialize:k0},{kind:"prefix",latexTrigger:["+"],precedence:ce,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>K(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>K(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:ce-1,serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=D(m(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":$([e.serialize(m(n,2)),"\\imaginaryI"]);return D(m(n,1))===0?r:i!==null&&i<0?$([t,r]):$([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Te,parse:Yr,serialize:Nf},{latexTrigger:"\\dfrac",precedence:Te,parse:Yr},{latexTrigger:"\\tfrac",precedence:Te,parse:Yr},{latexTrigger:"\\cfrac",precedence:Te,parse:Yr},{name:"Binomial",latexTrigger:"\\binom",parse:Js,serialize:R0},{latexTrigger:"\\dbinom",parse:Js},{latexTrigger:"\\tbinom",parse:Js},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Te,parse:"Divide"},{kind:"infix",latexTrigger:"\\choose",associativity:"none",precedence:Te,parse:"Binomial"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Te,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Te,parse:C0},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Te,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=m(n,1);return w(t)||D(t)!==null?$(["\\exponentialE^{",e.serialize(t),"}"]):$(["\\exp",e.wrap(H(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:at,parse:(e,n)=>e.peek==="="?null:["Factorial",n]},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:at},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>K(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>K(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\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",parse:e=>ki(e,"LambertW","last"),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{W}_{"+e.serialize(i)+"}"+e.wrapArguments(["LambertW",t]):"\\operatorname{W}"+e.wrapArguments(n)}},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",parse:e=>ki(e,"BesselJ","first"),serialize:(e,n)=>{let t=m(n,1),i=m(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",parse:e=>ki(e,"BesselY","first"),serialize:(e,n)=>{let t=m(n,1),i=m(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",parse:e=>ki(e,"BesselI","first"),serialize:(e,n)=>{let t=m(n,1),i=m(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",parse:e=>ki(e,"BesselK","first"),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"PolyLog",latexTrigger:["\\operatorname{Li}"],kind:"function",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup()??e.parseToken();if(n===null)return null;let t=e.parseArguments("implicit");return t===null?["PolyLog",n]:["PolyLog",n,...t]},serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{Li}_{"+e.serialize(t)+"}"+e.wrapArguments(["PolyLog",i]):"\\operatorname{Li}"+e.wrapArguments(n)}},{name:"LogIntegral",latexTrigger:["\\operatorname{li}"],kind:"function",serialize:(e,n)=>"\\operatorname{li}"+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:"AiryAiPrime",kind:"function",serialize:(e,n)=>"\\operatorname{Ai}'"+e.wrapArguments(n)},{name:"AiryBiPrime",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)=>w(n)!==null?"\\lg":"\\log_{10}"+e.wrapArguments(n),parse:e=>Mf(e)},{kind:"function",symbolTrigger:"lg",parse:e=>Mf(e)},{name:"Lb",latexTrigger:"\\lb",parse:e=>kf(e)},{kind:"function",symbolTrigger:"lb",parse:e=>kf(e)},{name:"Ln",latexTrigger:["\\ln"],parse:e=>Wr("Ln",e),serialize:(e,n)=>w(n)!==null?"\\ln":"\\ln"+e.wrapArguments(n)},{kind:"function",symbolTrigger:"ln",parse:e=>Wr("Ln",e)},{name:"Log",latexTrigger:["\\log"],parse:e=>Wr("Log",e),serialize:(e,n)=>{if(w(n)!==null)return"\\log";let[t,i]=I(n);return i?$(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{kind:"function",symbolTrigger:"log",parse:e=>Wr("Log",e)},{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=>{let n=e.diagnosticsCheckpoint();if(!e.match("_"))return null;let t=e.index,i=e.parseGroup(),r=e.index;if(E(i)!=="To")return null;let o=e.parseExpression({minPrec:te});if(!o)return null;let s=w(m(i,1));s&&e.pruneUndeclared([s],n,r,[[t,r]]);let a=m(i,2),u;E(a)==="PseudoInverse"&&U(a)===1?(u=1,a=m(a,1)):E(a)==="Superminus"&&U(a)===1&&(u=-1,a=m(a,1));let l=["Function",o,m(i,1)];return u===void 0?["Limit",l,a]:["Limit",l,a,u]},serialize:(e,n)=>{let t=m(n,1),i=m(t,2),r=m(n,2),o=D(m(n,3)),s=o===1?"^{+}":o===-1?"^{-}":"";return $(["\\lim_{",e.serialize(i),"\\to",e.serialize(r)+s,"}",e.serialize(m(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:We},{latexTrigger:["\u2213"],kind:"infix",associativity:"any",precedence:We,parse:"MinusPlus"},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:te,serialize:Rf},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:te,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:te+2});return i===null?null:Ft("Multiply",n,i)}},{latexTrigger:["\xD7"],kind:"infix",associativity:"any",precedence:te,parse:"Multiply"},{latexTrigger:["\xB7"],kind:"infix",associativity:"any",precedence:te,parse:"Multiply"},{name:"CirclePlus",latexTrigger:["\\oplus"],kind:"infix",associativity:"any",precedence:ce},{latexTrigger:["\u2295"],kind:"infix",associativity:"any",precedence:ce,parse:"CirclePlus"},{name:"CircleMinus",latexTrigger:["\\ominus"],kind:"infix",precedence:ce},{latexTrigger:["\u2296"],kind:"infix",precedence:ce,parse:"CircleMinus"},{name:"CircleTimes",latexTrigger:["\\otimes"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u2297"],kind:"infix",associativity:"any",precedence:te,parse:"CircleTimes"},{name:"CircleDot",latexTrigger:["\\odot"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u2299"],kind:"infix",associativity:"any",precedence:te,parse:"CircleDot"},{name:"CircledAst",latexTrigger:["\\circledast"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u229B"],kind:"infix",associativity:"any",precedence:te,parse:"CircledAst"},{name:"Star",latexTrigger:["\\star"],kind:"infix",associativity:"any",precedence:te},{latexTrigger:["\u22C6"],kind:"infix",associativity:"any",precedence:te,parse:"Star"},{latexTrigger:["\u22C5"],kind:"infix",associativity:"any",precedence:te,parse:"Multiply"},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:te,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:te+2});return i===null?["Multiply",n,xi]:Ft("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Te,serialize:(e,n)=>{if(U(n)!==2)return"";let t=m(n,1),i=E(t)==="Mod"?e.wrap(t,Te+1):e.wrap(t,te),r=e.wrap(m(n,2),te);return $([i,"\\bmod",r])}},{latexTrigger:"\\mod",kind:"infix",precedence:Te,parse:"Mod"},{latexTrigger:"\\operatorname{mod}",kind:"function",parse:"Mod"},{latexTrigger:["\\mod"],kind:"function",parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:B,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",e.error("missing",e.index),H(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));if(m(n,3)===null)return $([t,"\\equiv",i]);let r=e.serialize(m(n,3));return $([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:Ni+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:Ni+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>K(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>K(n)?null:["Norm",n],serialize:(e,n)=>{let t=m(n,1);if(E(t)==="Matrix"){let i=m(t,1),r=m(t,2),o=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(o)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"Measurement",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:We,serialize:I0},{latexTrigger:["\\pm"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["Measurement",0,H(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["Measurement",n,H(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["Measurement",0,H(t)]}},{latexTrigger:["\xB1"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["Measurement",n,H(i)]}},{latexTrigger:["\xB1"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["Measurement",0,H(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:zs},{latexTrigger:"\\prod",precedence:te,name:"Product",parse:_f("Product",te),serialize:Sf("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:Ni,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:Ni});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:Te,serialize:(e,n)=>n&&U(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):Nf(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=m(n,2);return w(i)==="Add"?`\\sum ${e.serialize(t)}`:w(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(m(n,2))}\\right)`}},{name:"Root",serialize:zs},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(m(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:ce,name:"Sum",parse:_f("Sum",te),serialize:Sf("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{symbolTrigger:"sign",kind:"function",parse:"Sign"},{latexTrigger:["\\sign"],kind:"function",parse:"Sign"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:xf,serialize:zs},{latexTrigger:["\u221A"],parse:xf},{latexTrigger:["\xBD"],parse:()=>["Rational",1,2]},{latexTrigger:["\u2153"],parse:()=>["Rational",1,3]},{latexTrigger:["\xBC"],parse:()=>["Rational",1,4]},{latexTrigger:["\xBE"],parse:()=>["Rational",3,4]},{latexTrigger:["\u2154"],parse:()=>["Rational",2,3]},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:ce+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:ce+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(m(n,1),ce+2),i=e.wrap(m(n,2),ce+3);return i.startsWith("-")&&(i=e.wrapString(i,"normal")),$([t,"-",i])}},{name:"Distance",latexTrigger:["\\operatorname{distance}"],kind:"function",serialize:(e,n)=>"\\operatorname{distance}"+e.wrapArguments(n)}];function P0(e,n){if(e!==null){if(w(e))return{index:w(e)??"Nothing",upper:n};if(Ye(e))return{index:"Nothing",lower:e,upper:n};if(E(e)==="GreaterEqual"){let t=w(m(e,1))??"Nothing",i=m(e,2)??1;return{index:t,lower:i,upper:n}}if(E(e)==="LessEqual"){let t=I(e)??[];if(t.length===3)return{index:w(t[1])??"Nothing",lower:t[0],upper:t[2]};if(t.length===2){if(w(t[0]))return{index:w(t[0]),upper:t[1]};if(w(t[1]))return{index:w(t[1]),lower:t[0],upper:n}}}if(E(e)==="Equal"){let t=w(m(e,1))??"Nothing",i=m(e,2);if(E(i)==="Range"){let o=m(i,1)??1,s=m(i,2)??void 0;return{index:t,lower:o,upper:s}}return{index:t,lower:i??1,upper:n}}if(E(e)==="Element")return{index:w(m(e,1))??"Nothing",element:e}}}function D0(e){let n=E(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function Tf(e){if(e===null)return[];let n=vn(e);if(n)return[...n];if(E(e)==="Tuple"){let t=I(e);return t?[...t]:[e]}return[e]}function F0(e,n){K(e)&&(e=null),K(n)&&(n=null);let t=Tf(e),i=Tf(n),r=[],o=0;for(;o<t.length;){let s=t[o],a=P0(s,i[o]);if(a){if(a.element&&o+1<t.length){let u=t[o+1];if(D0(u)&&E(u)!=="Element"&&E(u)!=="Equal"){let l=a.element;if(Array.isArray(l)&&l.length>=3){let c=[l[0],...l.slice(1),u];a.element=c}o++}}r.push(a)}o++}return r}function O0(e){let n=new Set;for(let t of e)if(t.index&&t.index!=="Nothing"&&n.add(t.index),t.element){let i=w(m(t.element,1));i&&n.add(i)}return n}function _f(e,n){return t=>{t.skipSpace();let i=t.diagnosticsCheckpoint();t.pushSymbolTable();let r=null,o=null,s=-1,a=-1;for(;!(o&&r)&&(t.peek==="_"||t.peek==="^");)t.match("_")?(s=t.index,o=t.parseGroup()??t.parseToken(),a=t.index):t.match("^")&&(r=t.parseGroup()??t.parseToken()),t.skipSpace();if(!r&&!o){let d=t.parseExpression({minPrec:n});return t.popSymbolTable(),d?[e,d]:null}let u=F0(o,r),l=t.index,c=t.parseExpression({minPrec:n});if(t.popSymbolTable(),t.pruneUndeclared(O0(u),i,l,s>=0?[[s,a]]:void 0),c===null)return[e];let f=[];for(let d of u){if(d.element){f.push(d.element);continue}let p=d.lower,h=d.upper,b=d.index??"Nothing";h!=null?f.push(["Tuple",b,p??1,h]):p!=null?f.push(["Tuple",b,p]):f.push(["Tuple",b])}return[e,c,...f]}}var B0=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function If(e){return e==null||w(e)==="Nothing"?null:e}function L0(e){let n=[],t=I(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=E(i);if(r&&B0.has(r)){n.push(i);continue}break}return n}function V0(e,n){if(E(n)==="Element"){let l=e.serialize(m(n,1)),c=e.serialize(m(n,2));return{sub:`${l}\\in ${c}`}}let t=m(n,1);t!==null&&E(t)==="Hold"&&(t=m(t,1));let i=If(m(n,2)),r=If(m(n,3)),o={},s=t?w(t):null,a=s!==null&&s!=="Nothing",u=a&&t?e.serialize(t):void 0;return a&&i!==null&&u?o.sub=`${u}=${e.serialize(i)}`:a&&u?o.sub=u:i!==null&&(o.sub=e.serialize(i)),r!==null&&(o.sup=e.serialize(r)),o}function Sf(e){return(n,t)=>{let i=m(t,1);if(!i)return e;let r=L0(t),o=e;if(r.length>0){let s=[],a=[];for(let u of r){let l=V0(n,u);l.sub&&s.push(l.sub),l.sup&&a.push(l.sup)}s.length>0&&(o=ot("_",o,s.join(", "))),a.length>0&&(o=ot("^",o,a.join(", ")))}return $([o,n.wrap(i,te)])}}function Gs(e){return e.skipSpace(),e.match("^")?e.parseGroup()??e.parseToken():null}function q0(e){return D(e)===-1?!0:E(e)==="Negate"&&D(m(e,1))===1}function Us(e,n,t){return n===null?e:q0(n)?t():["Power",e,n]}function wf(e){let n=Gs(e),t=e.parseArguments("implicit");return t===null?n===null?"Exp":["Power","Exp",n]:Us(["Exp",...t],n,()=>["Ln",t[0]])}function Wr(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=Gs(n),r=n.parseArguments("implicit");if(r===null&&t===null&&i===null)return e;r===null&&(r=[_n]);let o=()=>e==="Ln"?["Exp",r[0]]:["Power",t??10,r[0]],s;return t===null?s=[e,...r]:t===10?s=["Log",r[0]]:t===2?s=["Lb",...r]:s=["Log",r[0],t],Us(s,i,o)}function Mf(e){let n=Gs(e),t=e.parseArguments("implicit");return t===null&&n===null?"Lg":(t===null&&(t=[_n]),Us(["Log",...t,10],n,()=>["Power",10,t[0]]))}function kf(e){let n=e.parseArguments("implicit");return n===null?"Lb":["Log",n[0],2]}function Ri(e){let n=1,t=e;do{e=t;let i=E(e);if(i==="Negate")n*=-1,t=m(e,1);else if(i==="Multiply"){let[r,o]=Ri(m(e,1));o<0&&(n*=-1,r===1?t=["Multiply",...I(e).slice(1)]:t=["Multiply",r,...I(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,o]=Ri(m(e,1));o<0&&(n*=-1,t=[i,r,m(e,2)])}else{let r=D(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var Df=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{symbolTrigger:"arg",kind:"function",parse:"Argument",arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function P(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 o=r;do{let f=n.parsePostfixOperator(o,t);if(f===null)break;o=f}while(!0);n.skipSpace();let s=null;n.match("^")&&(s=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:te,condition:f=>i[f.peek]!==void 0||(t?.condition?.(f)??!1)});a===null&&s!==null&&(a=[_n]);let l=a?.length===2&&(o==="Arctan"||Array.isArray(o)&&o[0]==="InverseFunction"&&o[1]==="Tan")?"Arctan2":o,c=a===null?o:typeof l=="string"?[l,...a]:["Apply",l,...a];return s===null?c:["Power",c,s]}}var Ff=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:P("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:P("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:P("Arctan")},{name:"Arctan2",serialize:(e,n)=>`\\arctan(${e.serialize(m(n,1))}, ${e.serialize(m(n,2))})`},{latexTrigger:["\\arctg"],parse:P("Arctan")},{symbolTrigger:"arctg",parse:P("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:P("Arccot")},{latexTrigger:["\\arcctg"],parse:P("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:P("Arcoth")},{symbolTrigger:"arccoth",parse:P("Arcoth")},{latexTrigger:["\\arcoth"],parse:P("Arcoth")},{latexTrigger:["\\arccoth"],parse:P("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:P("Arcsec")},{latexTrigger:["\\arcsec"],parse:P("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:P("Arccsc")},{latexTrigger:["\\arccsc"],parse:P("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:P("Arsinh")},{symbolTrigger:"arcsinh",parse:P("Arsinh")},{latexTrigger:["\\arsinh"],parse:P("Arsinh")},{latexTrigger:["\\arcsinh"],parse:P("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:P("Arcosh")},{symbolTrigger:"arccosh",parse:P("Arcosh")},{latexTrigger:"\\arcosh",parse:P("Arcosh")},{latexTrigger:"\\arccosh",parse:P("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:P("Artanh")},{symbolTrigger:"arctanh",parse:P("Artanh")},{latexTrigger:"\\artanh",parse:P("Artanh")},{latexTrigger:["\\arctanh"],parse:P("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:P("Arsech")},{symbolTrigger:"arcsech",parse:P("Arsech")},{latexTrigger:["\\arsech"],parse:P("Arsech")},{latexTrigger:["\\arcsech"],parse:P("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:P("Arcsch")},{symbolTrigger:"arccsch",parse:P("Arcsch")},{latexTrigger:["\\arcsch"],parse:P("Arcsch")},{latexTrigger:["\\arccsch"],parse:P("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:P("Cosec")},{latexTrigger:["\\cosec"],parse:P("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:P("Cosh")},{latexTrigger:["\\ch"],parse:P("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:P("Cot")},{latexTrigger:["\\cotg"],parse:P("Cot")},{latexTrigger:["\\ctg"],parse:P("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:P("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:P("Csch")},{symbolTrigger:"csch",parse:P("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:P("Coth")},{latexTrigger:["\\cth"],parse:P("Coth")},{symbolTrigger:"cth",parse:P("Coth")},{latexTrigger:["\\coth"],parse:P("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:P("Sec")},{name:"Sech",symbolTrigger:"sech",parse:P("Sech")},{latexTrigger:["\\sech"],parse:P("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:P("Sinh")},{latexTrigger:["\\sh"],parse:P("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:P("Tan")},{latexTrigger:["\\tg"],parse:P("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:P("Tanh")},{latexTrigger:["\\th"],parse:P("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:P("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:P("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"},{symbolTrigger:"sin",parse:P("Sin")},{symbolTrigger:"cos",parse:P("Cos")},{symbolTrigger:"tan",parse:P("Tan")},{symbolTrigger:"sec",parse:P("Sec")},{symbolTrigger:"csc",parse:P("Csc")},{symbolTrigger:"cot",parse:P("Cot")},{symbolTrigger:"sinh",parse:P("Sinh")},{symbolTrigger:"cosh",parse:P("Cosh")},{symbolTrigger:"tanh",parse:P("Tanh")},{symbolTrigger:"coth",parse:P("Coth")},{symbolTrigger:"arcsin",parse:P("Arcsin")},{symbolTrigger:"asin",parse:P("Arcsin")},{symbolTrigger:"arccos",parse:P("Arccos")},{symbolTrigger:"acos",parse:P("Arccos")},{symbolTrigger:"arctan",parse:P("Arctan")},{symbolTrigger:"atan",parse:P("Arctan")},{symbolTrigger:"asinh",parse:P("Arsinh")},{symbolTrigger:"acosh",parse:P("Arcosh")},{symbolTrigger:"atanh",parse:P("Artanh")}];function Bt(e,n=1){return t=>{let i=t.diagnosticsCheckpoint();t.skipVisualSpace(),t.match("\\limits"),t.skipSpace();let r=null,o=null;for(;!(o!==null&&r!==null)&&(t.peek==="_"||t.peek==="^");)t.match("_")?o=t.parseGroup()??t.parseToken():t.match("^")&&(r=t.parseGroup()??t.parseToken()),t.skipSpace();K(o)&&(o=null),K(r)&&(r=null);let s=[o??"Nothing"],a=[r??"Nothing"];t.skipVisualSpace();let u=t.index,[l,c]=J0(t,n);if(l&&c.length===0){if(E(l)==="Add"||E(l)==="Subtract"){let f=[],d=[];for(let p of I(l))if(c)d.push(p);else{let h;[h,c]=wn(p),f.push(h??p)}if(c!==null&&d.length>0)return["Add",Of(e,["Add",...f],{indexes:c,subs:s,sups:a})??"Nothing",...d]}else if(E(l)==="Divide"){let f;[f,c]=wn(m(l,1)),f!==null&&c!==null&&(l=["Divide",f,m(l,2)])}}return c.length>0&&t.pruneUndeclared(c,i,u),Of(e,l,{indexes:c,subs:s,sups:a})}}function Of(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?E(n)==="Function"?I(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let s=0;s<r;s++)i.push("Nothing");else if(i.length!==r)for(let s=i.length;s<r;s++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let s=t.subs.length;s<r;s++)t.subs.push("Nothing");if(t.sups.length!==r)for(let s=t.sups.length;s<r;s++)t.sups.push("Nothing");let o=i.map((s,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?s:["Tuple",s,l,u]});return[e,n,...o]}function J0(e,n=1){let t=!1,i=e.parseExpression({minPrec:266,condition:()=>{let r=e.index;return t=Jf(e),e.index=r,t}});return i!==null&&!t?wn(i):[i,z0(e,n)]}function z0(e,n){let t=[];for(;t.length<n&&Jf(e);){e.skipVisualSpace();let i=w(e.parseSymbol());if(i===null)return t;t.push(i)}return t}function wn(e){let n=E(e),t=m(e,1);if(!t)return[e,[]];if(n==="Sequence"&&U(e)===1)return wn(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=I(e);if(i){let[r,o]=G0(i);return r.length>0?[[n,...r],o]:[null,o]}}else if(n==="Delimiter"){let[i,r]=wn(t);if(r)return i?[["Delimiter",["Sequence",i],...I(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=I(e);if(i.length>0){let[r,o]=wn(i[i.length-1]);if(o.length>0){if(r)return[["Add",...i.slice(0,-1),r],o];if(i.length>2)return[["Add",...i.slice(0,-1)],o];if(i.length>2)return[i[0],o]}}}else if(n==="Negate"){let[i,r]=wn(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=wn(t);if(r.length>0)return[["Divide",i??1,m(e,2)],r]}else{let i=I(e);if(i.length===1){let[r,o]=wn(i[0]);if(o.length>0)return[[E(e),r],o]}}return[e,[]]}function Bf(e){return(n,t)=>{if(!m(t,1))return e;let i=m(t,1),r=[];E(i)==="BuiltInFunction"?(r=["x"],i=[m(i,1),"x"]):E(i)==="Function"?(r=I(i).slice(1),i=m(i,1)):w(i)?r=[]:r=[];let o=I(t).slice(1),s=[],a=o.map((c,f)=>{if(w(c)==="Nothing")return s.push(w(r[f])??"Nothing"),"";if(w(c))return s.push(w(c)??"Nothing"),"";let d=E(c);if(d==="Tuple"||d==="Triple"||d==="Pair"||d==="Limits"||d==="Range"){if(U(c)===3){let p=m(c,1);s.push(w(p)??"Nothing");let h=m(c,2),b=m(c,3);return w(h)==="Nothing"&&(h=null),w(b)==="Nothing"&&(b=null),h!==null&&b!==null?`_{${n.serialize(h)}}^{${n.serialize(b)}}`:h!==null?`_{${n.serialize(h)}}`:b!==null?`^{${n.serialize(b)}}`:""}return`_{${n.serialize(c)}}`}if(U(c)===2){if(w(m(c,1))){s.push(w(m(c,1))??"Nothing");let b=m(c,2);return w(b)==="Nothing"?"":`_{${n.serialize(b)}}`}s.push(w(r[f])??"Nothing");let p=m(c,1),h=m(c,2);if(w(p)==="Nothing"&&(p=null),w(h)==="Nothing"&&(h=null),p!==null&&h!==null)return`_{${n.serialize(p)}}^{${n.serialize(h)}}`;if(p!==null)return`_{${n.serialize(p)}}`;if(h!==null)return`^{${n.serialize(h)}}`}else s.push(w(r[f])??"Nothing")}),u=s.filter(c=>w(c)!=="Nothing").map(c=>`\\mathrm{d}${n.serialize(w(c)??"x")}`);if(u.length>0&&(u=["\\,",...u]),a.length===0)return`${e}\\,${n.serialize(i)}\\!${u.join(" ")}`;let l=j0(e,a);return l!==null?l+"\\!"+n.serialize(i)+u.join(" "):a.reverse().map(c=>`${e}${c}`).join("")+"\\!"+n.serialize(i)+u.join(" ")}}function j0(e,n){let t=n.length;if(t!==2&&t!==3)return null;let r={"\\int":["\\iint","\\iiint"],"\\oint":["\\oiint","\\oiiint"]}[e];return!r||n.slice(1).some(o=>o)?null:r[t-2]+(n[0]??"")}var qf=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Bt("Integrate"),serialize:Bf("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Bt("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Bt("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Bt("CircularIntegrate"),serialize:Bf("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Bt("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Bt("CircularIntegrate",3)},{kind:"expression",name:"Series",serialize:(e,n)=>"\\operatorname{Series}"+e.wrapArguments(n)},{kind:"expression",name:"Normal",serialize:(e,n)=>"\\operatorname{Normal}"+e.wrapArguments(n)},{kind:"expression",name:"InterpolatingFunction",serialize:(e,n)=>{let t=m(n,1),i="";if(E(t)==="List"&&U(t)>0){let s=I(t),a=s[0],u=s[s.length-1],l=p=>typeof p=="number"?p:p!==null&&typeof p=="object"&&"num"in p?parseFloat(p.num):null,c=l(m(a,1)),f=l(m(u,1)),d=l(m(u,2));if(c!==null&&f!==null&&d!==null){let p=h=>e.serialize(Math.round(h*1e6)/1e6);i=`\\left[${p(c)}, ${p(f+d)}\\right]`}}let r=U(n)>1?m(n,2):null,o=r===null?"":`\\left(${e.serialize(r)}\\right)`;return`\\operatorname{InterpolatingFunction}_{${i}}${o}`}},{kind:"expression",name:"BigO",latexTrigger:["\\mathcal","<{>","O","<}>"],parse:Lf,serialize:(e,n)=>"O\\left("+e.serialize(m(n,1))+"\\right)"},{kind:"expression",latexTrigger:["\\operatorname","<{>","O","<}>"],parse:Lf},{kind:"expression",latexTrigger:["\\mathrm","<{>","D","<}>"],parse:e=>Vf(e,"D_upright")},{kind:"expression",latexTrigger:["\\operatorname","<{>","D","<}>"],parse:e=>Vf(e,"D")}];function Lf(e){let n=e.parseArguments();return n===null?"BigO":["BigO",...n]}function Vf(e,n){let t=e.parseArguments();return t===null||t.length===0?n:["D",...t]}function Jf(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 G0(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=U0(n),!i)break;t.push(i)}return[n,t]}function U0(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=w(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var H0=new Set(["Integers","RationalNumbers","RealNumbers","ComplexNumbers","NonNegativeIntegers","AlgebraicNumbers","TranscendentalNumbers","ImaginaryNumbers","ExtendedRealNumbers","ExtendedIntegers","ExtendedRationalNumbers","ExtendedComplexNumbers"]),zf={Integers:"PositiveIntegers",NonNegativeIntegers:"PositiveIntegers",RealNumbers:"PositiveNumbers",ComplexNumbers:"UpperHalfPlane"},jf=[{name:"Matrix",serialize:(e,n)=>{let t=I(m(n,1));return Hs(e,t,z(m(n,2)),z(m(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=I(n);return Hs(e,t.map(i=>["List",i]),z(m(n,2)),z(m(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=kn(e,!1),[t,i]=Mn(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=kn(e),[t,i]=Mn(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=kn(e),[t,i]=Mn(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:["^","+"],parse:(e,n)=>{if(typeof n=="string"){if(n in zf)return zf[n];if(H0.has(n))return null}return["PseudoInverse",n]}},{name:"Inverse",serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>Lt(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=m(n,1);if(E(t)==="Matrix"){let i=I(m(t,1));return Hs(e,i,"||",z(m(t,2)))}return Lt(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return`${t} \\cdot ${i}`}},{name:"HadamardProduct",latexTrigger:["\\odot"],kind:"infix",associativity:"any",precedence:te}];function Mn(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function kn(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 Lt(e,n,t){if(I(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=m(n,1),o=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${o}`:`${t}\\left(${o}\\right)`}function Hs(e,n,t,i){t??="()";let[r,o]=["",""];typeof t=="string"&&t.length===2&&([r,o]=t);let s="";if(i)for(let c of i)c==="<"?s+="l":c===">"?s+="r":c==="="?s+="c":c==="|"?s+="|":c===":"&&(s+=":");let a=[];for(let c of n??[]){let f=[];for(let d of I(c))f.push(e.serialize(d));a.push(f.join(" & "))}let u=a.join(`\\\\
7
7
  `),l=s.length>0?`[${s}]`:"";return r==="("&&o===")"?$(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&o==="]"?$(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&o==="}"?$(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&o==="|"?$(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&o==="\u2016"?$(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&o==="."?$(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&o==="}"?$(["\\begin{rcases}",l,u,"\\end{rcases}"]):s||r!=="."||o!=="."?$(["\\left",Ur[r]??r,"\\begin{array}",`{${s}}`,u,"\\end{array}","\\right",Ur[o]??o]):$(["\\begin{matrix}",u,"\\end{matrix}"])}var Z0=["NormalDistribution","BinomialDistribution","PoissonDistribution","UniformDistribution","ExponentialDistribution","PDF","CDF","Quantile","GammaRegularized","BetaRegularized","Covariance","PopulationCovariance","Correlation","LinearRegression","PolynomialFit"],Gf=[...Z0.map(e=>({kind:"expression",name:e,serialize:(n,t)=>`\\operatorname{${e}}`+n.wrapArguments(t)})),{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||!w(t)?null:["Mean",t]}},{latexTrigger:"\\operatorname{var}",kind:"function",parse:"Variance"},{latexTrigger:"\\operatorname{cov}",kind:"function",parse:"Covariance"},{latexTrigger:"\\operatorname{corr}",kind:"function",parse:"Correlation"}];var Kr={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},Uf=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"]),Qr={m:{dimension:[1,0,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1,0],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1,0],scale:1},lx:{dimension:[-2,0,0,0,0,0,1,0],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0,0],scale:86400},wk:{dimension:[0,0,1,0,0,0,0,0],scale:604800},ha:{dimension:[2,0,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0,0],scale:.3048},yd:{dimension:[1,0,0,0,0,0,0,0],scale:.9144},mi:{dimension:[1,0,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0,0],scale:.003785411784},qt:{dimension:[3,0,0,0,0,0,0,0],scale:.000946352946},pt:{dimension:[3,0,0,0,0,0,0,0],scale:.000473176473},cup:{dimension:[3,0,0,0,0,0,0,0],scale:.0002365882365},atm:{dimension:[-1,1,-2,0,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0,0],scale:1e-10},USD:{dimension:[0,0,0,0,0,0,0,1],scale:1},cent:{dimension:[0,0,0,0,0,0,0,1],scale:.01}};function Y0(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(Kr[n]!==void 0&&Uf.has(t)){let i=Qr[t];if(i)return{prefixScale:Kr[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(Kr[n]!==void 0&&Uf.has(t)){let i=Qr[t];if(i)return{prefixScale:Kr[n],baseEntry:i}}}return null}function W0(e){let n=Qr[e];if(n)return n;let t=Y0(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function Zs(e){let n=W0(e);return n?n.dimension:null}var vT=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[Qr[e].dimension.join(","),e]));function X0(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 Pi(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,o=!0;for(let s=0;s<e.length-1;s++)if(e[s]==="("?r++:e[s]===")"&&r--,r===0&&s<e.length-1){o=!1;break}if(o)return Pi(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(),o=e.slice(n+1).trim(),s=Pi(r),a=Pi(o);return!s||!a?null:["Divide",s,a]}if(t.length>0){let r=[],o=0;for(let a of t)r.push(e.slice(o,a).trim()),o=a+1;r.push(e.slice(o).trim());let s=r.filter(a=>a.length>0).map(a=>Pi(a));return s.some(a=>a===null)?null:s.length===1?s[0]:["Multiply",...s]}return e[0]==="("?null:X0(e)}function Hf(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?Pi(e):e}function Xf(e){for(;e.peek==="<space>";)e.nextToken();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>"){n.length>0&&!n.endsWith(" ")&&(n+=" "),e.nextToken();continue}if(i==="<$>"){n+="$",e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var Kf=new Set(["d"]),K0={inch:"in",inches:"in","in.":"in",foot:"ft",feet:"ft","ft.":"ft",mile:"mi",miles:"mi",yard:"yd",yards:"yd",meter:"m",meters:"m",metre:"m",metres:"m",centimeter:"cm",centimeters:"cm",centimetre:"cm",centimetres:"cm",kilometer:"km",kilometers:"km",kilometre:"km",kilometres:"km",gallon:"gal",gallons:"gal",quart:"qt",quarts:"qt",pint:"pt",pints:"pt",cup:"cup",cups:"cup",liter:"L",liters:"L",litre:"L",litres:"L",ounce:"oz",ounces:"oz",pound:"lb",pounds:"lb",gram:"g",grams:"g",kilogram:"kg",kilograms:"kg",second:"s",seconds:"s",minute:"min",minutes:"min",hour:"h",hours:"h",day:"d",days:"d",week:"wk",weeks:"wk",dollar:"USD",dollars:"USD",$:"USD",cent:"cent",cents:"cent",degree:"deg",degrees:"deg",mph:"mi/h",per:"/"};function Q0(e){return e.replace(/\$|[A-Za-z.]+/g,n=>K0[n]??n)}function Ys(e){if(!e)return null;let n=e.trim();if(n.length===0||Kf.has(n))return null;let t=Q0(n).replace(/\s+/g,"");if(Zs(t)!==null)return t;if(/[/*^]/.test(t))try{let i=Hf(t);if(i!==null&&Ws(i))return i}catch{return null}return null}function Ws(e){if(typeof e=="string")return Zs(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>Ws(t)):n==="Power"?Ws(e[1]):!1}function eb(e){let n=e.index;if(!e.match("^"))return null;if(e.match("<{>")){let i="";for(;!e.atEnd&&e.peek!=="<}>";)i+=e.peek,e.nextToken();return e.match("<}>")?i:(e.index=n,null)}if(e.atEnd)return e.index=n,null;let t=e.peek;return e.nextToken(),t}var Zf=e=>{let n=e.index,t=Xf(e);if(t===null)return e.index=n,null;let i=e.index;if(!Kf.has(t.trim())){let o=eb(e);if(o!==null){let s=Ys(`${t}^${o}`);if(s!==null)return["__unit__",s];e.index=i}}let r=Ys(t);return r===null?(e.index=n,null):["__unit__",r]};function mt(e){let n=w(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=E(e);if(!t)return"";if(t==="Divide"){let i=m(e,1),r=m(e,2);return`${mt(i)}/${mt(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(mt(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=m(e,1),r=m(e,2),o=typeof r=="number"?String(r):w(r)??String(r);return`${mt(i)}^{${o}}`}if(t==="Square"){let i=m(e,1);return`${mt(i)}^{2}`}return""}function Yf(e){let n=e.parseGroup();if(n===null)return null;let t=Qf(e);return t===null?null:["Quantity",n,t]}function Wf(e){return Qf(e)}function Qf(e){let n=e.index,t=Xf(e);if(t===null)return e.index=n,null;let i=Ys(t);return i===null?(e.index=n,null):i}var ed=[{latexTrigger:"\\mathrm",kind:"expression",parse:Zf},{latexTrigger:"\\text",kind:"expression",parse:Zf},{latexTrigger:"\\qty",parse:Yf},{latexTrigger:"\\SI",parse:Yf},{latexTrigger:"\\unit",parse:Wf},{latexTrigger:"\\si",parse:Wf},{name:"Quantity",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(t===null||i===null)return"";let r=w(i),o=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",s=e.options;if(o&&(s.dmsFormat||s.angleNormalization&&s.angleNormalization!=="none")){let l=D(t);if(l===null){let f=e.serialize(t),d=mt(i);return $([f,"\\,",`\\mathrm{${d}}`])}let c=l;return r==="rad"?c=c*180/Math.PI:r==="arcmin"?c=c/60:r==="arcsec"&&(c=c/3600),s.angleNormalization&&s.angleNormalization!=="none"&&(c=Hr(c,s.angleNormalization)),s.dmsFormat?Zr(c):`${c}\xB0`}let a=e.serialize(t);E(t)==="Measurement"&&(a=`\\left(${a}\\right)`);let u=mt(i);return $([a,"\\,",`\\mathrm{${u}}`])}}];var nb=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"];function nd(e){for(e.skipSpace(),(e.peek==="-"||e.peek==="+")&&e.nextToken();/^[\d.]$/.test(e.peek);)e.nextToken();for(let n of nb)if(e.matchAll([...n]))return}function tb(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}function $e(e,n){return{name:e,latexTrigger:[n],parse:tb(e),serialize:(t,i)=>{let r=m(i,1);return r===null?n:`${n}{${t.serialize(r)}}`}}}function On(e,n){return(t,i)=>{let r=t.parseExpression({...i??{},minPrec:te});if(r===null||K(r))return n??[e];let o=E(r);return o==="InvisibleOperator"||o==="Multiply"?[e,...I(r)]:[e,r]}}function td(e){return(n,t)=>{let i=I(t);return i.length===0?e:e+" "+i.map(r=>n.serialize(r)).join("")}}function id(e){return n=>{let t=n.parseGroup()??n.parseToken();if(t===null||K(t))return[e];let i=E(t);return i==="InvisibleOperator"||i==="Multiply"?[e,...I(t)]:[e,t]}}function rd(e){return(n,t)=>{let i=I(t);return e+"{"+i.map(r=>n.serialize(r)).join("")+"}"}}function eo(e){return n=>{let t=n.parseExpression();return t!==null&&!K(t)?["Annotated",t,{dict:{mathStyle:e}}]:"Nothing"}}function un(e){return n=>{let t=n.parseExpression();return t!==null&&!K(t)?["Annotated",t,{dict:{size:e}}]:"Nothing"}}var od=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{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;if(i===null||t===null)return null;if(i!=="Nothing"){let a=vn(i)??[i];e.skipSpace();let u=e.parseGroup()??e.parseSymbol()??"Nothing";if(!K(u)){let f=e.parseArguments();f&&(u=[u,...f])}let l=D(t)??1,c=a.length===1&&l>1?Array.from({length:l},()=>a[0]):[...a];return["D",u,...c]}let r=[],o=()=>{e.skipSpace();let s=e.parseGroup()??e.parseSymbol()??"Nothing",a=1;if(E(s)==="Power")a=D(m(s,2))??1,s=m(s,1)??s;else if(e.match("^")){let u=e.parseGroup()??e.parseToken();a=D(u)??1}for(let u=0;u<a;u++)r.push(s)};for(o();e.skipSpace(),!!e.match("\\partial");)o();return r.length===1?["PartialDerivative",r[0],t]:["PartialDerivative",["List",...r],t]},precedence:740},$e("OverBar","\\overline"),$e("UnderBar","\\underline"),$e("OverVector","\\vec"),$e("OverTilde","\\tilde"),$e("OverHat","\\hat"),$e("OverRightArrow","\\overrightarrow"),$e("OverLeftArrow","\\overleftarrow"),$e("OverRightDoubleArrow","\\Overrightarrow"),$e("OverLeftHarpoon","\\overleftharpoon"),$e("OverRightHarpoon","\\overrightharpoon"),$e("OverLeftRightArrow","\\overleftrightarrow"),$e("OverBrace","\\overbrace"),$e("UnderBrace","\\underbrace"),$e("OverLineSegment","\\overlinesegment"),$e("OverGroup","\\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"}},...["\\cancel","\\bcancel","\\xcancel"].map(e=>({latexTrigger:[e],parse:n=>n.parseGroup()??"Nothing"})),{latexTrigger:["\\cancelto"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n??"Nothing"}},{latexTrigger:["\\textbf"],parse:e=>be(e,{fontWeight:"bold"})},{latexTrigger:["\\textit"],parse:e=>be(e,{fontStyle:"italic"})},{latexTrigger:["\\emph"],parse:e=>be(e,{fontStyle:"italic"})},{latexTrigger:["\\textup"],parse:e=>be(e,{fontStyle:"normal"})},{latexTrigger:["\\texttt"],parse:e=>be(e,{fontFamily:"monospace"})},{latexTrigger:["\\textsf"],parse:e=>be(e,{fontFamily:"sans-serif"})},{latexTrigger:["\\textrm"],parse:e=>be(e)},{latexTrigger:["\\mbox"],parse:e=>be(e)},{latexTrigger:["\\displaystyle"],parse:eo("normal")},{latexTrigger:["\\textstyle"],parse:eo("compact")},{latexTrigger:["\\scriptstyle"],parse:eo("script")},{latexTrigger:["\\scriptscriptstyle"],parse:eo("scriptscript")},{latexTrigger:["\\color"],parse:e=>{let n=e.parseStringGroup();if(n!==null){let t=e.parseExpression();if(t!==null&&!K(t))return["Annotated",t,{dict:{color:n}}]}return"Nothing"}},{latexTrigger:["\\tiny"],parse:un(1)},{latexTrigger:["\\scriptsize"],parse:un(2)},{latexTrigger:["\\footnotesize"],parse:un(3)},{latexTrigger:["\\small"],parse:un(4)},{latexTrigger:["\\normalsize"],parse:un(5)},{latexTrigger:["\\large"],parse:un(6)},{latexTrigger:["\\Large"],parse:un(7)},{latexTrigger:["\\LARGE"],parse:un(8)},{latexTrigger:["\\huge"],parse:un(9)},{latexTrigger:["\\Huge"],parse:un(10)},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=Oc(m(n,2));if(i==null)return t;let r=z(m(n,1));r!==null&&(i.dict.fontFamily==="monospace"||i.dict.fontFamily==="sans-serif"||i.dict.fontWeight==="bold"||i.dict.fontStyle==="italic"||i.dict.fontStyle==="normal")&&(t=r),i.dict.mathStyle==="normal"?t=$(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"?t=$(["{\\textstyle",t,"}"]):i.dict.mathStyle==="script"?t=$(["{\\scriptstyle",t,"}"]):i.dict.mathStyle==="scriptscript"&&(t=$(["{\\scriptscriptstyle",t,"}"]));let o=i.dict.size;return o!==null&&o>=1&&o<=10&&(t=$(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[o],t,"}"])),i.dict.fontFamily==="monospace"?t=$(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=$(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=$(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=$(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=$(["\\textup{",t,"}"])),i.dict.color&&(t=$(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=$(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=$(["\\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:["\\hspace"],parse:e=>(e.peek==="*"&&e.nextToken(),e.parseStringGroup(),["HorizontalSpacing",0])},{latexTrigger:["\\hskip"],parse:e=>(nd(e),["HorizontalSpacing",0])},{latexTrigger:["\\kern"],parse:e=>(nd(e),["HorizontalSpacing",0])},{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(m(n,2)!==null){let i=z(m(n,2)),r=e.serialize(m(n,1));return i==="bin"?`\\mathbin{${r}}`:i==="op"?`\\mathop{${r}}`:i==="rel"?`\\mathrel{${r}}`:i==="ord"?`\\mathord{${r}}`:i==="open"?`\\mathopen{${r}}`:i==="close"?`\\mathclose{${r}}`:i==="punct"?`\\mathpunct{${r}}`:i==="inner"?`\\mathinner{${r}}`:r}let t=D(m(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}},{latexTrigger:"\\operatorname{count}",kind:"function",parse:"Length"},{latexTrigger:"\\operatorname{length}",kind:"function",parse:"Length"},{latexTrigger:"\\operatorname{nCr}",kind:"function",parse:"Choose"},{latexTrigger:"\\operatorname{nPr}",parse:e=>{let n=e.parseArguments("enclosure");return!n||n.length!==2?null:["Multiply",["Choose",n[0],n[1]],["Factorial",n[1]]]}},{latexTrigger:"\\operatorname{random}",kind:"function",parse:"Random"},{latexTrigger:"\\operatorname{shuffle}",kind:"function",parse:"Shuffle"},{latexTrigger:"\\operatorname{repeat}",kind:"function",parse:"Repeat"},{latexTrigger:"\\operatorname{join}",kind:"function",parse:"Join"},{latexTrigger:"\\operatorname{range}",kind:"function",parse:"Range"},{latexTrigger:"\\operatorname{histogram}",kind:"function",parse:"Histogram"},{latexTrigger:"\\operatorname{pdf}",kind:"function",parse:"PDF"},{latexTrigger:"\\operatorname{cdf}",kind:"function",parse:"CDF"},{name:"Triangle",latexTrigger:["\\operatorname{triangle}"],kind:"function",serialize:(e,n)=>"\\operatorname{triangle}"+e.wrapArguments(n)},{name:"GeometricVector",latexTrigger:["\\operatorname{vector}"],kind:"function",serialize:(e,n)=>"\\operatorname{vector}"+e.wrapArguments(n)},{name:"Sphere",latexTrigger:["\\operatorname{sphere}"],kind:"function",serialize:(e,n)=>"\\operatorname{sphere}"+e.wrapArguments(n)},{name:"Segment",latexTrigger:["\\operatorname{segment}"],kind:"function",serialize:(e,n)=>"\\operatorname{segment}"+e.wrapArguments(n)},{name:"Polygon",latexTrigger:["\\operatorname{polygon}"],kind:"function",serialize:(e,n)=>"\\operatorname{polygon}"+e.wrapArguments(n)},{name:"PointList",latexTrigger:["\\operatorname{PointList}"],kind:"function",serialize:(e,n)=>"\\operatorname{PointList}"+e.wrapArguments(n)},{name:"Angle",latexTrigger:["\\angle"],kind:"prefix",precedence:B,parse:On("Angle"),serialize:td("\\angle")},{latexTrigger:["\\varangle"],kind:"prefix",precedence:B,parse:On("Angle")},{latexTrigger:["\\measuredangle"],kind:"prefix",precedence:B,parse:On("Angle")},{latexTrigger:["\\Varangle"],kind:"prefix",precedence:B,parse:On("Angle")},{latexTrigger:["\u2220"],kind:"prefix",precedence:B,parse:On("Angle")},{latexTrigger:["\u2221"],kind:"prefix",precedence:B,parse:On("Angle")},{latexTrigger:["\\triangle"],kind:"prefix",precedence:B,parse:On("Triangle")},{name:"Quadrilateral",latexTrigger:["\\square"],kind:"prefix",precedence:B,parse:On("Quadrilateral",_n),serialize:td("\\square")},{name:"Perpendicular",latexTrigger:["\\perp"],kind:"infix",precedence:B},{name:"Parallel",latexTrigger:["\\parallel"],kind:"infix",precedence:B},{name:"Arc",latexTrigger:["\\widehat"],parse:id("Arc"),serialize:rd("\\widehat")},{name:"OverParen",latexTrigger:["\\overparen"],parse:id("OverParen"),serialize:rd("\\overparen")}];var sd=[{name:"Rgb",latexTrigger:["\\operatorname{rgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{rgb}"+e.wrapArguments(n)},{name:"Hsv",latexTrigger:["\\operatorname{hsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsv}"+e.wrapArguments(n)},{name:"Hsl",latexTrigger:["\\operatorname{hsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsl}"+e.wrapArguments(n)},{name:"Oklab",latexTrigger:["\\operatorname{oklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklab}"+e.wrapArguments(n)},{name:"Oklch",latexTrigger:["\\operatorname{oklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklch}"+e.wrapArguments(n)},{name:"AsRgb",latexTrigger:["\\operatorname{asRgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{asRgb}"+e.wrapArguments(n)},{name:"AsHsv",latexTrigger:["\\operatorname{asHsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsv}"+e.wrapArguments(n)},{name:"AsHsl",latexTrigger:["\\operatorname{asHsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsl}"+e.wrapArguments(n)},{name:"AsOklab",latexTrigger:["\\operatorname{asOklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklab}"+e.wrapArguments(n)},{name:"AsOklch",latexTrigger:["\\operatorname{asOklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklch}"+e.wrapArguments(n)},{name:"ColorDelta",latexTrigger:["\\operatorname{colorDelta}"],kind:"function",serialize:(e,n)=>"\\operatorname{colorDelta}"+e.wrapArguments(n)}];var ib=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var rb=[...uf,...mf,...hf,...Hc,...yf,...ut,...Pf,...Df,...Ff,...qf,...jf,...Gf,...ed,...od,...ib,...sd];var Xs;function ld(e){if(!Xs){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("")}]*$`;Xs=new RegExp(t,"u")}return Xs.test(e)}function ht(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||Vt.test(e)?!0:ld(e)?/^[\p{XIDS}_]\p{XIDC}*$/u.test(e):!1}var ob="\\u{FE0F}",sb="\\u{20E3}",ab="\\u{200D}",ub="\\p{RI}\\p{RI}",lb="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",ad=`(?:\\p{EMod}|${ob}${sb}?|${lb})`,cb="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",ud=`(?:${cb}${ad}*|\\p{Emoji}${ad}+|${ub})`,cd=`(?:${ud})(${ab}${ud})*`,fb=new RegExp(`(?:${cd})+`,"u"),Vt=new RegExp(`^(?:${cd})+$`,"u");function Ks(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":Vt.test(e)?"valid":/\p{XIDC}/u.test(e)&&fb.test(e)?"unexpected-mixed-emoji":ld(e)?ht(e)?"valid":ht(e[0])?"invalid-char":"invalid-first-char":"unexpected-script"}var Di=null;function pb(){if(!Di){Di=new Map;for(let[e,n]of pt)Di.has(n)||Di.set(n,e)}return Di}var fd={"\\mathord":"","\\mathop":"","\\mathbin":"","\\mathrel":"","\\mathopen":"","\\mathclose":"","\\mathpunct":"","\\mathinner":"","\\operatorname":"","\\text":"","\\mathrm":"_upright","\\mathit":"_italic","\\mathbf":"_bold","\\bold":"_bold","\\boldsymbol":"_bold","\\bm":"_bold","\\mathscr":"_script","\\mathcal":"_calligraphic","\\mathfrak":"_fraktur","\\mathsf":"_sansserif","\\mathtt":"_monospace","\\mathbb":"_doublestruck"},mb={"\\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 dd(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=pb().get(t);if(r!==void 0)return e.nextToken(),r;let o=e.parseChar();if(o!==null)return/^\p{XIDC}+$/u.test(o)?o:[...o].length===1?"____"+o.codePointAt(0).toString(16).toUpperCase().padStart(6,"0"):o;let s=e.peek;return s&&/^[\p{XIDC}\p{M}]/u.test(s)?e.nextToken():null}function Fi(e){let n=Qs(e),t=mb[e.peek]??null;if(t){if(e.nextToken(),!e.match("<{>"))return null;let o=Fi(e);if(o===null||!e.match("<}>"))return null;n=`${o}${t}`}if(n===null){for(n="";!e.atEnd;){let o=e.peek;if(o==="<}>"||o==="_"||o==="^")break;if(o==="<space>"){e.nextToken();continue}if(Vt.test(n+o)){n+=e.nextToken();continue}let s=dd(e,{toplevel:!1});if(s===null)return null;n+=s}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 o=e.match("<{>"),s=Fi(e);if(o&&!e.match("<}>")||s===null)return null;r.push(s)}else if(e.match("^")){let o=e.match("<{>"),s=Fi(e);if(o&&!e.match("<}>")||s===null)return null;i.push(s)}else break;return i.length>0&&(n+="__"+i.join("")),r.length>0&&(n+="_"+r.join("")),n}function Qs(e){let n=fd[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]??"";r&&(i=r,e.nextToken());let o=Fi(e);return o===null||!e.match("<}>")?(e.index=t,null):(i+=o,n==="_upright"&&i.length>1?i:i+n)}return e.index=t,null}function ea(e){let n=e.index,t=Qs(e);if(t!==null)return ht(t)?null:e.error(["invalid-symbol",{str:Ks(t)}],n);if(e.index=n,(fd[e.peek]??null)===null)return null;if(e.nextToken(),!e.match("<{>"))return e.index=n,null;let r=e.index,o=0;for(;!e.atEnd&&!(o===0&&e.peek==="<}>");)e.peek==="<{>"&&(o+=1),e.peek==="<}>"&&(o-=1),e.nextToken();let s=e.latex(r,e.index);return ht(s)?(e.index=n,null):(e.match("<}>"),e.error(["invalid-symbol",{str:Ks(s)}],n))}function Oi(e){if(/^[a-zA-Z]$/.test(e.peek)||/^\p{XIDS}$/u.test(e.peek)){let i=e.nextToken(),o=e.getSymbolType(i).matches("indexed_collection"),s=e.hasSubscriptEvaluate(i);for(;!e.atEnd&&!o&&!s&&e.peek==="_";){let u=e.index;if(e.nextToken(),e.match("<{>")){let c=e.peek;if(c==="("||c==="\\lparen"||c==="\\left"){e.index=u;break}let f=Fi(e);if(f===""&&e.peek==="<}>"){e.match("<}>");continue}let d=f!==null&&/plus|minus|times|ast/.test(f);if(f===null||f.includes(",")||d||e.peek!=="<}>"){e.index=u;break}e.match("<}>"),i+="_"+f}else{let c=e.peek;if(e.options.strict===!1&&/^[0-9]$/.test(c)){let f="";for(;!e.atEnd&&/^[0-9]$/.test(e.peek);)f+=e.peek,e.nextToken();i+="_"+f}else if(/^[a-zA-Z0-9]$/.test(c)||/^\p{XIDS}$/u.test(c))e.nextToken(),i+="_"+c;else{e.index=u;break}}}return i}let n=Qs(e);if(!n){for(n="";!e.atEnd&&Vt.test(n+e.peek);)n+=e.nextToken();n||(n=null)}let t=e.index;return n??=dd(e,{toplevel:!0}),n&&(n=n.normalize(),ht(n))?n:(e.index=t,null)}function hb(e){let n=!!e.matchAny(["-","\u2212"]);for(;e.matchAny(["+","\uFE62"])||e.skipSpace();)e.matchAny(["-","\u2212"])&&(n=!n);return n?"-":"+"}function Bn(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 o=t==="whole"?n.wholeDigitGroupSeparatorTokens:n.fractionalDigitGroupSeparatorTokens;if(t!=="none"){let s=e.index;e.skipVisualSpace();let a=n.decimalSeparatorTokens.length===3&&n.decimalSeparatorTokens[0]==="<{>"&&n.decimalSeparatorTokens[1]===","&&n.decimalSeparatorTokens[2]==="<}>";o.length>0&&e.matchAll(o)||!a&&e.matchAll(["<{>",",","<}>"])?(e.skipVisualSpace(),/^[0-9]$/.test(e.peek)?r=!1:e.index=s):e.index=s}}return i.join("")}function na(e,n,t){let i=e.index,r=hb(e),o=Bn(e,n,t);return o?r==="-"?"-"+o:o:(e.index=i,"")}function gb(e,n){let t=e.index;if(e.skipVisualSpace(),e.matchAny(["e","E"])){let i=na(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=na(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=na(e,n,"none");if(e.skipVisualSpace(),i&&e.matchAll(n.endExponentMarkerTokens))return i}return e.index=t,""}function pd(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 bb(e){let n=e.length;for(let t=1;t<=n>>1;t++){let i=e.slice(n-t),r=1;for(;(r+1)*t<=n&&e.startsWith(i,n-(r+1)*t);)r+=1;if(r>=(t===1?3:2))return[e.slice(0,n-r*t),i]}return null}function yb(e){let n=e.peek;return n==="\\overline"||n==="\\overset"||n==="\\wideparen"||n==="\\overarc"||n==="("||n==="\\left"}function ia(e,n){let t=e.index,i=e.options.repeatingDecimal,r="";if((i==="auto"||i==="parentheses")&&e.match("("))return r=Bn(e,n,"fraction"),r&&e.match(")")?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="parentheses")&&e.matchAll(["\\left","("]))return r=Bn(e,n,"fraction"),r&&e.matchAll(["\\right",")"])?`(${r})`:(e.index=t,"");if(e.index=t,(i==="auto"||i==="vinculum")&&e.matchAll(["\\overline","<{>"]))return r=Bn(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=Bn(e,n,"fraction"),r&&e.match("<}>")?`(${r})`:(e.index=t,"");if(e.index=t,i==="auto"||i==="dots"){let o=pd(e);if(o!==null){if(r=Bn(e,n,"fraction"),!r)return`(${o})`;let s=pd(e);if(s!==null)return`(${o}${r}${s})`}}return e.index=t,""}function ta(e){return e===0?{num:"0"}:Number.isInteger(e)&&Math.abs(e)<Ve?e:{num:e.toString()}}function md(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 o="",s="",a=!1;if(e.match(".")||e.matchAll(n.decimalSeparatorTokens)){let d=e.peek;(/^[\d]$/.test(d)||yb(e))&&(a=!0,o="0")}else o=Bn(e,n,"whole");if(!o)return e.index=i,null;let u=e.index,l=!1;(a||e.match(".")||e.matchAll(n.decimalSeparatorTokens))&&(s=Bn(e,n,"fraction"),l=!0);let c=!1;if(l){let d=ia(e,n);if(d&&(s+=d,c=!0),(e.match("\\ldots")||e.matchAll(n.truncationMarkerTokens))&&!c){let p=bb(s);p&&(s=`${p[0]}(${p[1]})`,c=!0)}}if(l&&!s){let d=e.peek,p=typeof d=="string"&&(/^[a-zA-Z]$/.test(d)||d==="\\operatorname"||d==="\\max"||d==="\\min"||d===".");return(a||p)&&(e.index=u),o.length<10?ta(r*parseInt(o,10)):{num:r<0?"-"+o:o}}let f=gb(e,n);if(!l&&!f&&o.length<10)return ta(r*parseInt(o,10));if(!c&&e.options.parseNumbers==="rational"){let d=o.length>16||o.length===16&&o>"9007199254740991";if(!s){if(d){let A=r<0?"-"+o:o;return f?["Multiply",{num:A},["Power",10,f]]:{num:A}}let _=parseInt(o,10);return f?["Multiply",r*_,["Power",10,f]]:ta(r*_)}let p=s.length;if(o.length+p>15){let _=BigInt(o),A=BigInt(s),k=BigInt(10)**BigInt(p),O=_*k+A,j=r<0?-O:O;return f?["Multiply",["Rational",{num:j.toString()},Number(k)],["Power",10,f]]:["Rational",{num:j.toString()},Number(k)]}let b=parseInt(o,10),y=parseInt(s,10),v=b*10**p+y,T=10**p;return f?["Multiply",["Rational",r*v,T],["Power",10,f]]:["Rational",r*v,T]}return{num:(r<0?"-":"")+o+(l?"."+s:"")+(f?"e"+f:"")}}function xd(e,n){return e===null?!1:typeof e=="string"?e===n||e.split("_").includes(n):Array.isArray(e)?e.some(t=>xd(t,n)):!1}function ra(e,n){if(typeof e=="string"){let t=e.indexOf("_");return t>0&&e.substring(t+1)===n?[e.substring(0,t)+"_",n]:e}return Array.isArray(e)?E(e)==="Subscript"&&typeof m(e,1)=="string"&&xd(m(e,2),n)?[m(e,1)+"_",ra(m(e,2),n)]:[e[0],...e.slice(1).map(t=>ra(t,n))]:e}function xb(e){if(e==="NonNegativeIntegers")return 0;if(e==="PositiveIntegers")return 1}function Eb(e){let n,t=e;if(E(e)==="Power"&&(n=m(e,2)??void 0,t=m(e,1)),t===null||E(t)!=="Subscript")return e;let i=m(t,1);if(i===null||E(i)!=="Set"||(I(i)?.length??0)!==1)return e;let r=m(t,2);if(r===null)return e;let o,s;if(E(r)==="Equal"){let u=m(r,1);if(typeof u!="string")return e;o=u,s=m(r,2)??void 0}else if(E(r)==="Element"){let u=m(r,1);if(typeof u!="string")return e;let l=xb(m(r,2));if(l===void 0)return e;o=u,s=l}else return e;if(o===void 0||s===void 0)return e;let a=ra(m(i,1),o);return n===void 0?["IndexedSequence",a,o,s]:["IndexedSequence",a,o,s,n]}var vb=new Set([...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"]),Nb=new Set(["\\!","\\,","\\:","\\;","\\enskip","\\enspace","\\space","\\quad","\\qquad"]),Tb=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"].map(e=>[...e]),no={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",acot:"Arccot",asec:"Arcsec",acsc:"Arccsc",atan2:"Arctan2",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",nPr:"Permutations"},hd={"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"},to=null;function _b(){if(!to){to=new Map;for(let[,e,n]of pt)to.set(e,String.fromCodePoint(n))}return to}var gd={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack","\\[","["],"]":["\\rbrack","\\]","]"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert","\\|"]},qt={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg","\\mathopen":"\\mathclose","\\mleft":"\\mright"},bd=new Set(Object.values(qt)),oa={"(":")","[":"]","|":"|","\\{":"\\}","\\[":"\\]","\\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 Ib(e){if(e===null)return"null";if(e===void 0)return"undefined";if(e instanceof pe)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 yd=class e{options;_index=0;symbolTable={parent:null,ids:{}};pushSymbolTable(){this._symbolTableGen+=1,this.symbolTable={parent:this.symbolTable,ids:{}}}popSymbolTable(){this._symbolTableGen+=1,this.symbolTable=this.symbolTable.parent??this.symbolTable}addSymbol(n,t){if(this._symbolTableGen+=1,typeof t=="string"&&(t=new pe(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}_reversedIntervalDepth=0;_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){if(this.diagnostics!==null&&this.diagnostics.length>0&&n<this._index){let i=this.tokenPrefixOffsets()[Math.max(0,Math.min(n,this._tokens.length))],r=this.diagnostics,o=0;for(let s=0;s<r.length;s++)r[s].start>=i||(r[o++]=r[s]);r.length=o}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;_lookAheadCache=null;_lookAheadIndex=-1;_tokenPrefixOffsets=null;_symbolTableGen=0;_symCandidateIndex=-1;_symCandidateGen=-1;_symCandidate=null;_symCandidateCount=0;diagnostics;_diagnosticSeq=0;emitDiagnostic(n,t,i,r){if(this.diagnostics===null)return;let[o,s]=this.sourceOffsets(t,i),a=this._diagnosticSeq++;this.diagnostics.push(r!==void 0?{code:n,start:o,end:s,detail:r,_seq:a}:{code:n,start:o,end:s,_seq:a})}diagnosticsCheckpoint(){return this._diagnosticSeq}rollbackDiagnostics(n){if(this.diagnostics===null)return;let t=this.diagnostics,i=0;for(let r=0;r<t.length;r++)t[r]._seq<n&&(t[i++]=t[r]);t.length=i}pruneUndeclared(n,t,i,r){if(this.diagnostics===null)return;let o=n instanceof Set?n:new Set(n);if(o.size===0)return;if(this.options.onBoundVariable)for(let p of o)this.options.onBoundVariable(p);let s=this.tokenPrefixOffsets(),a=this._tokens.length,u=p=>s[Math.max(0,Math.min(p,a))],l=i===void 0?-1/0:u(i),c=(r??[]).map(([p,h])=>[u(p),u(h)]),f=this.diagnostics,d=0;for(let p=0;p<f.length;p++){let h=f[p],b=h.detail?.name;if(h.code==="undeclared-symbol"&&h._seq>=t&&typeof b=="string"&&o.has(b)){let v=h.start>=l,T=c.some(([_,A])=>h.start>=_&&h.start<A);if(v||T)continue}f[d++]=h}f.length=d}pruneJuxtaposition(n,t){if(this.diagnostics===null)return;let i=this.diagnostics,r=0;for(let o=0;o<i.length;o++){let s=i[o];s.code==="juxtaposition-as-multiply"&&s._seq>=t&&s.detail?.name===n||(i[r++]=s)}i.length=r}get operandDiagnosticCheckpoint(){return this._operandDiagnosticCheckpoint}_operandDiagnosticCheckpoint=0;isSymbolDeclared(n){let t=this.symbolTable;for(;t;){if(n in t.ids)return!0;t=t.parent}return this.options.isSymbolDeclared?.(n)?!0:!this.getSymbolType(n).isUnknown}emitSymbolReference(n,t,i){this.diagnostics!==null&&(this.isSymbolDeclared(n)||this.emitDiagnostic("undeclared-symbol",t,i,{name:n,type:this.getSymbolType(n).toString()}))}constructor(n,t,i){this._tokens=n,this.options=i,this._dictionary=t,this.diagnostics=i.diagnostics?[]:null,this._positiveInfinityTokens=Ce(this.options.positiveInfinity),this._negativeInfinityTokens=Ce(this.options.negativeInfinity),this._notANumberTokens=Ce(this.options.notANumber),this._decimalSeparatorTokens=Ce(this.options.decimalSeparator),this._wholeDigitGroupSeparatorTokens=[],this._fractionalDigitGroupSeparatorTokens=[],this.options.digitGroupSeparator&&(typeof this.options.digitGroupSeparator=="string"?(this._wholeDigitGroupSeparatorTokens=Ce(this.options.digitGroupSeparator),this._fractionalDigitGroupSeparatorTokens=this._wholeDigitGroupSeparatorTokens):Array.isArray(this.options.digitGroupSeparator)&&(this._wholeDigitGroupSeparatorTokens=Ce(this.options.digitGroupSeparator[0]),this._fractionalDigitGroupSeparatorTokens=Ce(this.options.digitGroupSeparator[1]))),this._exponentProductTokens=Ce(this.options.exponentProduct),this._beginExponentMarkerTokens=Ce(this.options.beginExponentMarker),this._endExponentMarkerTokens=Ce(this.options.endExponentMarker),this._truncationMarkerTokens=Ce(this.options.truncationMarker),this._imaginaryUnitTokens=Ce(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 pe)return i;if(typeof i=="string")try{return new pe(i)}catch(r){let o=r instanceof Error?r.message:String(r);throw new Error(`ce.parse(): getSymbolType("${n}") returned invalid type string "${i}". ${o}`)}throw new Error(`ce.parse(): getSymbolType("${n}") must return a BoxedType or a type string, received ${Ib(i)}`)}return pe.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.matchBoundaryTokens(t.tokens))return this.index=n,!0;return!1}matchBoundaryTokens(n){return this.matchAll(n)?!0:n.length===2&&bd.has(n[0])&&this._tokens[this.index]===n[0]&&this._tokens[this.index+1]==="."?(this.index+=2,!0):!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.matchBoundaryTokens(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?!1:(n==="("||n==="\\lparen")&&(t[0]==="]"||t[0]==="\\rbrack")||(n==="]"||n==="\\rbrack")&&(t[0]==="["||t[0]==="\\lbrack")}latex(n,t){return Ot(this._tokens.slice(n,t))}sourceOffsets(n,t=this.index){let i=this.tokenPrefixOffsets(),r=this._tokens.length,o=i[Math.max(0,Math.min(n,r))],s=i[Math.max(0,Math.min(t,r))];return o<=s?[o,s]:[s,o]}tokenPrefixOffsets(){if(this._tokenPrefixOffsets!==null)return this._tokenPrefixOffsets;let n=this._tokens,t=new Array(n.length+1);t[0]=0;let i=0,r="";for(let o=0;o<n.length;o++){let s=hd[n[o]]??n[o];/[a-zA-Z]/.test(s[0])&&(i+=r.length),r=/\\[a-zA-Z]+\*?$/.test(s)?" ":"",i+=s.length,t[o+1]=i}return this._tokenPrefixOffsets=t,t}lookAhead(){if(this._lookAheadIndex===this.index&&this._lookAheadCache!==null)return this._lookAheadCache;let n=this._dictionary.triggerStartMax.get(this._tokens[this.index])??0,t=Math.min(n,this._tokens.length-this.index),i=[],r="",o="";for(let s=0;s<t;s++){let a=this._tokens[this.index+s],u=hd[a]??a;/[a-zA-Z]/.test(u[0])&&(r+=o),o=/\\[a-zA-Z]+\*?$/.test(u)?" ":"",r+=u,i[t-1-s]=[s+1,r]}return this._lookAheadCache=i,this._lookAheadIndex=this.index,i}peekDefinitions(n){if(this.atEnd)return[];let t=[],i=this._dictionary,r;switch(n){case"infix":r=i.infixByTrigger;break;case"prefix":r=i.prefixByTrigger;break;case"postfix":r=i.postfixByTrigger;break;case"function":r=i.functionByTrigger;break;case"symbol":r=i.symbolByTrigger;break;case"expression":r=i.expressionByTrigger;break;case"operator":r=i.operatorByTrigger;break}let o=i.universalDefs.get(n);if(o)for(let a of o)t.push([a,0]);for(let[a,u]of this.lookAhead()){let l=r.get(u);if(l)for(let c of l)t.push([c,a])}let s=i.symbolTriggerDefs.get(n);if(s){let a,u;if(this._symCandidateIndex===this.index&&this._symCandidateGen===this._symbolTableGen)a=this._symCandidate,u=this._symCandidateCount;else{let l=this.index;a=Oi(this)?.trim()??null,u=this.index-l,this.index=l,this._symCandidateIndex=l,this._symCandidateGen=this._symbolTableGen,this._symCandidate=a,this._symCandidateCount=u}if(a&&u>0){let l=s.get(a);if(l)for(let c of l)t.push([c,u])}}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(){if(this.options.skipSpace){if(this.skipSpace(),Nb.has(this.peek)&&(this.nextToken(),this.skipVisualSpace()),this.match("\\hspace")&&(this.match("*"),this.parseStringGroup(),this.skipVisualSpace()),this.match("\\hskip")||this.match("\\kern")){for(this.skipSpace(),this.match("-")||this.match("+");/^[\d.]$/.test(this.peek);)this.nextToken();for(let n of Tb)if(this.matchAll(n))break;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,o=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))r=8,o=["0","1","2","3","4","5","6","7"],n=!0;else if(this.match('"')||this.match("x"))r=16,o=["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 s="";for(;o.includes(this.peek);)s+=this.nextToken();if(!n&&this.match("."))for(s+=".";o.includes(this.peek);)s+=this.nextToken();let a=n?Number.parseInt(s,r):Number.parseFloat(s);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 o=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!o)break;i+=o,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=qt[this.peek];r&&this.nextToken();let o=r&&this.peek==="<{>";if(o&&this.nextToken(),Array.isArray(n)){if(Array.isArray(t),n.length===1){if(!(gd[n[0]]??[n[0]]).includes(this.peek))return this.index=i,!1;if(this.nextToken(),o&&!this.match("<}>"))return this.index=i,!1;let c=t[0],f=r?o?[r,"<{>",c,"<}>"]:[r,c]:[c];return this.addBoundary(f),!0}if(!this.matchAll(n))return this.index=i,!1;let u=r?[r,...t]:t;return this.addBoundary(u),!0}if(Array.isArray(t),n==="||"&&this.matchAll(["|","|"]))return this.addBoundary(["|","|"]),!0;if(!(gd[n]??[n]).includes(this.peek))return this.index=i,!1;if(n=this.nextToken(),o&&!this.match("<}>"))return this.index=i,!1;let s=oa[n]??t,a=r?o?[r,"<{>",s,"<}>"]:[r,s]:[s];return this.addBoundary(a),!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(E(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(),vb.has(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=[],o=this.peek;for(;o!=="&"&&o!=="\\\\"&&o!=="\\cr"&&!this.atBoundary;)i=this.parseExpression({minPrec:0,condition:s=>{let a=s.peek;return a==="&"||a==="\\\\"||a==="\\cr"}}),i!==null?r.push(i):(r.push(["Error","'unexpected-token'",{str:Ot(o)}]),this.nextToken()),this.skipSpace(),o=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.atEnd&&(!this.atBoundary||i>0);){let r=this.nextToken();if(r==="<$>"||r==="<$$>")return this.index=n,"";if(r==="<{>")i+=1,t+="\\{";else if(r==="<}>")i-=1,t+="\\}";else if(r==="<space>")t+=" ";else if(r[0]==="\\"){let o=_b().get(r);t+=o??r}else t+=r}return t}parseStringGroup(n,t){n===void 0&&(n=!1);let i=this.index;for(;this.match("<space>"););if(this.match(n?"[":"<{>")){let r=this.index;this.addBoundary([n?"]":"<}>"]);let o=this.parseStringGroupContent();if(this.matchBoundary())return t&&t.push(...this._tokens.slice(r,this.index-1)),o;this.removeBoundary()}return this.index=i,null}parseDoubleQuoteString(){if(this.peek!=='"')return null;let n=this.index;this.nextToken(),this.addBoundary(['"']);let t=this.parseStringGroupContent();return this.matchBoundary()?{str:t}:(this.removeBoundary(),this.error("expected-closing-delimiter",n))}parseEnvironment(n){let t=this.index;if(!this.match("\\begin"))return null;let i=[],r=this.parseStringGroup(!1,i)?.trim();if(!r)return this.error("expected-environment-name",t);for(;i[0]==="<space>";)i.shift();for(;i[i.length-1]==="<space>";)i.pop();this.addBoundary(["\\end","<{>",...i,"<}>"]);for(let o of this.getDefs("environment"))if(o.symbolTrigger===r){let s=o.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:r}],t):this.boundaryError("unbalanced-environment")}parseRepeatingDecimal(){return ia(this,this._numberFormatTokens)}parseNumber(){return md(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 o=i.parse(this,{...n,minPrec:i.precedence+1});if(o!==null)return o}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,o]of this.peekDefinitions("infix"))if(r.precedence>=t.minPrec){this.index=i+o;let s=r.parse(this,n,t);if(s!==null)return s}if(this.index=i,this.peek==="\\textcolor"){let r=this.parseStyledInfixOperator(n,t);if(r!==null)return r;this.index=i}return null}parseStyledInfixOperator(n,t){let i=this.index;if(!this.match("\\textcolor"))return null;if(this.parseStringGroup()===null)return this.index=i,null;if(this.skipSpace(),!this.match("<{>"))return this.index=i,null;this.skipSpace();let r=this.index;for(let[o,s]of this.peekDefinitions("infix")){if(o.precedence<t.minPrec)continue;if(this.index=r+s,this.skipSpace(),!this.match("<}>")){this.index=r;continue}let a=o.parse(this,n,t);if(a!==null)return a;this.index=r}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:vn(r)??[r];if(n==="implicit"){if(E(r)==="Delimiter"){let s=m(r,1);return E(s)==="Sequence"?I(s):s===null?[]:[s]}if(r!==null)return[r];let o=this.parseExpression({...t,minPrec:te});return o===null?null:[o]}return this.index=i,null}parseBraceArguments(){let n=this.index,t=[];for(;this.peek==="<{>";){let i=this.index,r=this.parseGroup();if(r===null||r==="Nothing"){this.index=i;break}t.push(...vn(r)??[r])}return t.length===0?(this.index=n,null):t}parseEnclosure(){let n=this.index,t=this.peek,i=qt[t],r=i?this._tokens[this.index+1]:t;i&&r==="<{>"&&(r=this._tokens[this.index+2]);let o=this._dictionary.matchfixByOpen.get(r)??[];o.length===0&&!r&&(o=[...this.getDefs("matchfix")]);for(let s of o){this.index=n;let a=Array.isArray(s.openTrigger)&&s.openTrigger.length===1&&(s.openTrigger[0]==="]"||s.openTrigger[0]==="\\rbrack")&&Array.isArray(s.closeTrigger)&&s.closeTrigger.length===1&&(s.closeTrigger[0]==="["||s.closeTrigger[0]==="\\lbrack");if(a&&this._reversedIntervalDepth>0)continue;if(s.closeTokens.size>0){let b=!1,y=this._tokens;for(let v=n;v<y.length;v++){if(s.closeTokens.has(y[v])){b=!0;break}if(i&&bd.has(y[v])&&y[v+1]==="."){b=!0;break}}if(!b)continue}if(typeof s.openTrigger=="string"&&s.openTrigger==="."&&!qt[t]||!this.matchDelimiter(s.openTrigger,s.closeTrigger))continue;let l=this.index;this.skipSpace(),a&&(this._reversedIntervalDepth+=1);let c=this.parseExpression();a&&(this._reversedIntervalDepth-=1),this.skipSpace();let f=this._boundaries[this._boundaries.length-1]?.tokens,d=this.matchBoundary(),p=typeof s.openTrigger=="string"&&typeof s.closeTrigger=="string"&&s.openTrigger===s.closeTrigger||Array.isArray(s.openTrigger)&&Array.isArray(s.closeTrigger)&&s.openTrigger.length===s.closeTrigger.length&&s.openTrigger.every((b,y)=>b===s.closeTrigger[y]);if(d&&K(c)&&p&&f){if(this.index=l,this.skipSpace(),a&&(this._reversedIntervalDepth+=1),c=this.parseExpression(),a&&(this._reversedIntervalDepth-=1),this.skipSpace(),!this.matchAll(f)){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,p)){this.removeBoundary(),this.index=n;continue}else if(this.removeBoundary(),this.index=l,this.skipSpace(),a&&(this._reversedIntervalDepth+=1),c=this.parseExpression(),a&&(this._reversedIntervalDepth-=1),this.skipSpace(),!this.matchAll(b)){if(this.index=n,!this.atEnd)continue;return null}}let h=s.parse(this,c??"Nothing");if(h!==null)return h}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[o,s]of r)if(this.index=t+s,typeof o.parse=="function"){if(i=o.parse(this,n),i!==null)return i}else return o.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,u]of this.peekDefinitions("function"))if(this.index=t+u,typeof a.parse=="function"){if(i=a.parse(this,n),i!==null)return i}else{i=a.name,r=a.arguments??"enclosure";break}let o=!1;if(i===null&&(this.index=t,i=Oi(this),typeof i=="string"&&this.emitSymbolReference(i,t,this.index),!this.isFunctionOperator(i))){if(!this.looksLikePredicate(i))return this.index=t,null;o=!0}do{let a=this.parsePostfixOperator(i,n);if(a===null)break;i=a}while(!0);let s=this.parseArguments(r,n);return s===null?i:o&&typeof i=="string"&&this.inQuantifierScope?["Predicate",i,...s]:typeof i=="string"?[i,...s]:["Apply",i,...s]}parseSymbol(n){if(this.atTerminator(n))return null;let t=this.index;for(let[r,o]of this.peekDefinitions("symbol"))if(this.index=t+o,typeof r.parse=="function"){let s=r.parse(this,n);if(s!==null)return s}else return r.name;this.index=t;let i=Oi(this);return i!==null&&!this.getSymbolType(i).matches("error")?(this.emitSymbolReference(i,t,this.index),i):(this.index=t,null)}peekBareWord(){let n=this.index;for(;this._tokens[n]==="<space>";)n++;let t="";for(;n<this._tokens.length&&/^[a-zA-Z]$/.test(this._tokens[n]);)t+=this._tokens[n],n++;return t}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;if(!this.atEnd&&/^[0-9]$/.test(this.peek)){let l="",c=this.index;for(;c<this._tokens.length&&/^[0-9]$/.test(this._tokens[c]);)l+=this._tokens[c],c++;for(let f=l.length;f>=1;f--)if(no[i+l.slice(0,f)]!==void 0){i+=l.slice(0,f),this.index+=f;break}}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 l="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)l+=this.peek,this.index++;l&&(r=parseInt(l))}if(r===null)return this.index=t,null}this.skipSpace()}if(r===null&&i==="log"&&!this.atEnd&&/^[0-9]$/.test(this.peek)){let l="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)l+=this.peek,this.index++;r=parseInt(l),this.skipSpace()}let o=null;if(this.peek==="^"){if(this.index++,o=this.parseGroup(),o===null){let l=!1;this.peek==="-"&&(l=!0,this.index++);let c="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)c+=this.peek,this.index++;if(c){let f=parseInt(c);o=l?-f:f}else return this.index=t,null}this.skipSpace()}let s=no[i];if(!s)return this.index=t,null;let a;if(this.peek==="("?a=this.parseArguments("enclosure",n):a=this.parseArguments("implicit",{...n,minPrec:te,condition:l=>{let c=this.peekBareWord();return c.length>0&&no[c]!==void 0||(n?.condition?.(l)??!1)}}),a===null)return this.index=t,null;if(i==="cbrt"){let l=["Root",a[0]??"Nothing",3];return o!==null?["Power",l,o]:l}if(i==="nPr"){let l=["Multiply",["Binomial",a[0]??"Nothing",a[1]??"Nothing"],["Factorial",a[1]??"Nothing"]];return o!==null?["Power",l,o]:l}let u;if(i==="log"&&r!==null?r===2?u=["Lb",...a]:r===10?u=["Log",...a]:u=["Log",a[0],r]:u=[s,...a],o===-1&&Array.isArray(u)){let[l,...c]=u;return["Apply",["InverseFunction",l],...c]}return o!==null?["Power",u,o]: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.emitSymbolReference(i,n,this.index),i):(this.index=n,null)}static SEGMENTABLE_SYMBOLS=Object.fromEntries(Object.entries(e.BARE_SYMBOL_MAP).filter(([n])=>!["oo","inf","ii"].includes(n)));static MAX_SEGMENTABLE_LENGTH=Math.max(...Object.keys(e.SEGMENTABLE_SYMBOLS).map(n=>n.length));static SEGMENTABLE_SYMBOL_VALUES=new Set(Object.values(e.SEGMENTABLE_SYMBOLS));tryParseBareRun(){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.length<2)return this.index=n,null;if(no[t]!==void 0)return this.emitSymbolReference(t,n,this.index),t;let i=e.SEGMENTABLE_SYMBOLS,r=[],o=!1,s=0;for(;s<t.length;){let a=!1,u=Math.min(t.length-s,e.MAX_SEGMENTABLE_LENGTH);for(let l=u;l>=2;l--){let c=t.slice(s,s+l);if(i[c]!==void 0){r.push(i[c]),s+=l,a=!0,o=!0;break}}a||(this.emitSymbolReference(t[s],n+s,n+s+1),r.push(t[s]),s+=1)}return o?r.length===1?r[0]:["Multiply",...r]:(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)||e.SEGMENTABLE_SYMBOL_VALUES.has(n))&&/^[0-9]$/.test(this.peek)){let u="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)u+=this.peek,this.index++;return this.parseSupsub(["Subscript",n,parseInt(u)])}this.skipSpace();let i=[],r=[],o=t;for(;this.peek==="_"||this.peek==="^";){if(this.match("_"))if(o=this.index,this.match("_")||this.match("^"))r.push(this.error("syntax-error",o));else{let u=this.parseGroup();if(u===null&&this.options.strict===!1){let l="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)l+=this.peek,this.index++;l&&(u=parseInt(l))}if(u??=this.parseToken(),u===null&&this.options.strict===!1&&this.peek==="("&&(u=this.parseEnclosure()),u??=this.parseStringGroup(),u===null)return this.error("missing",t);r.push(u)}else if(this.match("^"))if(o=this.index,this.match("_")||this.match("^"))i.push(this.error("syntax-error",o));else{let u=this.parseGroup();if(u===null&&this.options.strict===!1){let l=this.index,c=!1;this.peek==="-"&&(c=!0,this.index++);let f="";for(;!this.atEnd&&/^[0-9]$/.test(this.peek);)f+=this.peek,this.index++;if(f){let d=parseInt(f);u=c?-d:d}else this.index=l}if(u??=this.parseToken(),u===null&&this.options.strict===!1&&this.peek==="("&&(u=this.parseEnclosure()),u===null)return this.error("missing",t);i.push(u)}o=this.index,this.skipSpace()}if(i.length===0&&r.length===0)return this.index=t,n;let s=n,a=r.filter(u=>!K(u));if(a.length>0){let u=this._dictionary.infixByTrigger.get("_")??[];if(u){let l=["Subscript",s,a.length===1?a[0]:["List",...a]];for(let c of u)if(typeof c.parse=="function"?s=c.parse(this,l,{minPrec:0}):s=l,s!==null)break}}if(i.length>0){let u=this._dictionary.infixByTrigger.get("^")??[];if(u){let l=i.filter(c=>{if(K(c))return!1;let f=z(c);return!(f!==null&&/^(?:st|nd|rd|th)$/i.test(f))});if(l.length>1)return this.error("unexpected-superscript",t);if(l.length!==0){let c=l[0],f=["Superscript",s,c];for(let d of u)if(typeof d.parse=="function"?s=d.parse(this,f,{minPrec:0}):s=f,s!==null)break}}}return s===null&&(this.index=t),s}parsePostfixOperator(n,t){if(n===null||this.atEnd)return null;let i=this.index;if(this.skipVisualSpace(),this.index!==i){let o=this._tokens[this.index];o==="\\{"||o==="\\left"&&this._tokens[this.index+1]==="\\{"||(this.index=i)}let r=this.index;for(let[o,s]of this.peekDefinitions("postfix")){this.index=r+s;let a=o.parse(this,n,t);if(a!==null)return a}return this.index=i,null}parseSyntaxError(){let n=this.index;if(this.peek==="^")return this.index+=1,["Superscript",this.error("missing",n),H(this.parseGroup())];let t=this.peekDefinitions("operator");if(t.length>0){if(t=this.peekDefinitions("postfix"),t.length>0){let[a,u]=t[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,this.error("missing",n));if(l!==null)return l}return this.error("unexpected-operator",n)}if(t=this.peekDefinitions("prefix"),t.length>0){let[a,u]=t[0];if(this.index+=u,typeof a.parse=="function"){let l=a.parse(this,{minPrec:0});if(l!==null)return l}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,u]=t[0];this.index+=u;let l=a.parse(this,this.error("missing",n),{minPrec:0});return l!==null?l:this.error("unexpected-operator",n)}}let i=this.index,r=ea(this);if(r!==null)return r;if(r=Oi(this),r!==null)return this.error(["unexpected-symbol",{str:r}],i);let o=this.peek;if(!o)return this.error("syntax-error",n);if(Sb(this))return this.error("unexpected-delimiter",n);if(o[0]!=="\\")return this.nextToken(),this.error(["unexpected-token",{str:Ot(o)}],n);let s=this.nextToken();if(this.skipSpaceTokens(),s==="\\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:Ot(s)}],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.parseDoubleQuoteString(),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.tryParseBareRun(),t??=this.parseGenericExpression(n)??this.parseFunction(n)??this.parseSymbol(n)??ea(this),t!==null&&K(t))return this.parsePrimary(n);if(t!==null){t=this.decorate(t,i);let r=null,o=this.index;do{if(r=this.parsePostfixOperator(t,n),t=r??t,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}if(t!==null&&(t=this.parseSupsub(t)),t!==null&&(t=Eb(t)),t!==null){let r=null,o=this.index;do{if(r=this.parsePostfixOperator(t,n),t=r??t,this.index===o&&r!==null){this.index;break}o=this.index}while(r!==null)}if(t===null&&(t=this.options.parseUnexpectedToken?.(null,this)??null,t===null&&this.peek.startsWith("\\"))){if(this.peek==="\\"){let r=this.index;if(this.nextToken(),this.skipVisualSpace(),this.atEnd)return this.emitDiagnostic("recovered",r,this.index,{skipped:this.latex(r,this.index)}),this.decorate(null,i);this.index=r}this.nextToken(),t=this.error("unexpected-command",i)}return this.decorate(t,i)}parseExpression(n){this.skipSpace();let t=this.index;if(this.atBoundary)return this.index=t,null;let i=this.diagnosticsCheckpoint();n??={minPrec:0},n.minPrec,n.minPrec===void 0&&(n={...n,minPrec:0});let r=this.parsePrefixOperator({...n,minPrec:0});if(r??=this.parsePrimary(n),r!==null){let o=!1;for(;!o&&!this.atTerminator(n);){this.skipSpace(),this._operandDiagnosticCheckpoint=i;let s=this.parseInfixOperator(r,n);if(s===null&&n.minPrec<=st){let a=this.peekDefinitions("operator");if((a.length===0||a.every(([u])=>u.latexTrigger==="\\text"||u.latexTrigger==="\\keyword"))&&!(a.length>0&&this.wouldMatchTextInfix(a))){let u=this.index,l=this.parseExpression({...n,minPrec:st+1});l!==null?(this.emitJuxtapositionDiagnostic(r,l,t,u),E(r)==="InvisibleOperator"?E(l)==="InvisibleOperator"?s=["InvisibleOperator",...I(r),...I(l)]:s=["InvisibleOperator",...I(r),l]:E(l)==="InvisibleOperator"?s=["InvisibleOperator",r,...I(l)]:s=["InvisibleOperator",r,l]):s===null&&(s=this.options.parseUnexpectedToken?.(r,this)??null)}}s!==null?r=s:o=!0}}return this.decorate(r,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),o=r?["Error",i,["LatexString",{str:r}]]:["Error",i],a=typeof n=="string"&&n==="missing"?this.sourceOffsets(t,t):this.sourceOffsets(t,this.index);return{fn:o,sourceOffsets:a}}emitJuxtapositionDiagnostic(n,t,i,r){if(this.diagnostics===null)return;let o=E(t);if(o!=="Delimiter"&&o!=="Matrix")return;let s=null,a=i,u,l=w(n);if(l!==null)s=l;else if(E(n)==="__unit__")s=w(m(n,1)),s!==null&&(u="unit");else if(E(n)==="InvisibleOperator"){let f=this.trailingLetterRun(r);if(f===null)return;s=f.name,a=f.startToken}if(s===null)return;let c=this.isSymbolDeclared(s)?this.getSymbolType(s).matches("function")?"function":"value":"unknown";this.emitDiagnostic("juxtaposition-as-multiply",a,this.index,u!==void 0?{name:s,declaredAs:c,lexedAs:u}:{name:s,declaredAs:c})}trailingLetterRun(n){let t=n;for(;t>0&&this._tokens[t-1]==="<space>";)t--;let i="";for(;t>0&&/^[a-zA-Z]$/.test(this._tokens[t-1]);)i=this._tokens[t-1]+i,t--;return i.length===0?null:{name:i,startToken:t}}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 Sb(e){let n=e.peek;return Object.values(oa).includes(n)||oa[n]?(e.nextToken(),!0):qt[n]||Object.values(qt).includes(n)?(e.nextToken(),e.nextToken(),!0):!1}function gt(e){return e!==void 0&&"value"in e}function je(e){return e!==void 0&&"operator"in e}function Ge(e,n,t=!0){let i=!t||e.every(o=>o.isCanonical)?e:e.map(o=>o.canonical);if(n){let o=a=>S(a,"Nothing")||a.operator===n||a.operator==="Sequence";if(i.every(a=>!o(a)))return i;let s=[];for(let a of i)S(a,"Nothing")||(g(a)&&(a.operator===n||a.operator==="Sequence")?s.push(...Ge(a.ops,n,t)):s.push(a));return s}if(i.every(o=>!(S(o,"Nothing")||o.operator==="Sequence")))return i;let r=[];for(let o of i)S(o,"Nothing")||(g(o,"Sequence")?r.push(...Ge(o.ops,n,t)):r.push(o));return r}function wb(e,n,t){let i=e.length,r=n.length;if(Math.abs(i-r)>t)return t+1;if(i===0)return r;if(r===0)return i;let o=new Array(r+1),s=new Array(r+1),a=new Array(r+1);for(let u=0;u<=r;u++)s[u]=u;for(let u=1;u<=i;u++){a[0]=u;let l=a[0];for(let c=1;c<=r;c++){let f=e[u-1]===n[c-1]?0:1,d=Math.min(s[c]+1,a[c-1]+1,s[c-1]+f);u>1&&c>1&&e[u-1]===n[c-2]&&e[u-2]===n[c-1]&&(d=Math.min(d,o[c-2]+1)),a[c]=d,d<l&&(l=d)}if(l>t)return t+1;[o,s,a]=[s,a,o]}return s[r]}function aa(e,n){let i=null,r=1/0;for(let o of n){let s=wb(e,o,7);if(s===0)return o;s<=7&&s<r&&(r=s,i=o)}return i}function Ln(e){return S(e)&&e.symbol.startsWith("_")||e.operator==="Wildcard"||e.operator==="WildcardSequence"||e.operator==="WildcardOptionalSequence"}function Bi(e){if(S(e)&&e.symbol.startsWith("_"))return e.symbol;if(g(e)&&e.nops===1){let n=e.op1;if(e.operator==="Wildcard")return`_${n}`;if(e.operator==="WildcardSequence")return`__${n}`;if(e.operator==="WildcardOptionalSequence")return`___${n}`}return e.operator==="Wildcard"?"_":e.operator==="WildcardSequence"?"__":e.operator==="WildcardOptionalSequence"?"___":null}function ua(e){if(typeof e=="string")return e.startsWith("_")?e.startsWith("__")?e.startsWith("___")?"OptionalSequence":"Sequence":"Wildcard":null;if(S(e)){let n=e.symbol;return n.startsWith("_")?n.startsWith("__")?n.startsWith("___")?"OptionalSequence":"Sequence":"Wildcard":null}if(g(e)){if(e.operator==="Wildcard")return"Wildcard";if(e.operator==="WildcardSequence")return"Sequence";if(e.operator==="WildcardOptionalSequence")return"OptionalSequence"}return null}var gI=L("indexed_collection<number>");function Td(e){return typeof e=="string"?e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="any":e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list"||e.kind==="set"||e.kind==="tuple"||e.kind==="broadcastable"?!0:e.kind==="union"?e.types.some(n=>Td(n)):!1}function Jt(e){return sn(e)||Td(e.type.type)}function Vi(e,n){return typeof e=="string"?!1:e.kind==="broadcastable"?C(e.elements,n):e.kind==="union"?e.types.some(t=>Vi(t,n)):!1}function io(e,n,t){if(n=Ge(n),!e.strict){if(n.length>=t)return n;let o=[...n];for(;o.length<t;)o.push(e.error("missing"));return o}if(n.length===t)return n;let i=[...n.slice(0,t)],r=Math.min(t,n.length);for(;r<t;)i.push(e.error("missing")),r+=1;for(;r<n.length;)i.push(e.error("unexpected-argument",n[r].toString())),r+=1;return i}function Cb(e,n){if(!S(n))return null;let t=n.symbol;if(!/^[A-Z]$/.test(t))return null;let i=e.context.lexicalScope;for(;i&&!i.bindings.has(t);)i=i.parent;if(!i)return null;let r=i.bindings.get(t);return i.parent?gt(r)?e.box(t):null:je(r)?(e.declare(t,"unknown"),e.box(t)):null}function bt(e,n,t){return n==null?e.error("missing"):t===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||n.type.matches(t)||Vi(n.type.type,t)?n:e.typeError(t,n.type,n))}function la(e,n,t){if(n.length===t.length&&n.every((r,o)=>r.type.matches(t[o])))return n;let i=[];for(let r=0;r<=t.length-1;r++)i.push(bt(e,n[r],t[r]));for(let r=t.length;r<=n.length-1;r++)i.push(e.error("unexpected-argument",n[r].toString()));return i}function yt(e,n,t,i,r,o){if(!e.strict){if(typeof t!="string"&&t.kind==="signature"){let b=t.args?.length??0;if(n.length<b){let y=[...n];for(;y.length<b;)y.push(e.error("missing"));return y}}return null}if(typeof t=="string"||t.kind!=="signature")return null;let s=[],a=!0,u=!1,l=t.args?.map(b=>b.type)??[],c=t.optArgs?.map(b=>b.type)??[],f=t.variadicArg?.type,d=t.variadicMin??0,p=0;for(let b of l){let y=n[p++];if(!y){s.push(e.error("missing")),a=!1;continue}if(i){s.push(y);continue}if(!y.isValid){s.push(y),a=!1;continue}if(y.type.isUnknown||y.type.type==="any"){s.push(y);continue}if(r&&Jt(y)){s.push(y);continue}if(y.valueDefinition?.inferredType&&y.type.matches(b)){s.push(y);continue}if(y.valueDefinition?.inferredType&&C(b,y.type.type)){y.infer(b,"narrow"),s.push(y);continue}if(y.operatorDefinition?.inferredSignature&&y.type.matches(b)){s.push(y);continue}if(Vi(y.type.type,b)){s.push(y);continue}if(!y.type.matches(b)){let v=$b(e,y,b,o);if(v){s.push(v),u=!0;continue}let T=Cb(e,y);if(T!==null){s.push(T),u=!0;continue}s.push(e.typeError(b,y.type,y)),a=!1;continue}s.push(y)}for(let b of c){let y=n[p];if(!y)break;if(i){s.push(y),p+=1;continue}if(!y.isValid){s.push(y),a=!1,p+=1;continue}if(y.type.isUnknown||y.type.type==="any"){s.push(y),p+=1;continue}if(r&&Jt(y)){s.push(y),p+=1;continue}if(y.valueDefinition?.inferredType&&y.type.matches(b)){s.push(y),p+=1;continue}if(y.valueDefinition?.inferredType&&C(b,y.type.type)){y.infer(b,"narrow"),s.push(y),p+=1;continue}if(Vi(y.type.type,b)){s.push(y),p+=1;continue}if(!y.type.matches(b)){s.push(e.typeError(b,y.type,y)),a=!1,p+=1;continue}s.push(y),p+=1}if(f){let b=0;for(let y of n.slice(p)){if(p+=1,b+=1,i){s.push(y);continue}if(!y.isValid){s.push(y),a=!1;continue}if(y.type.isUnknown||y.type.type==="any"){s.push(y);continue}if(r&&Jt(y)){s.push(y);continue}if(y.valueDefinition?.inferredType&&y.type.matches(f)){s.push(y);continue}if(y.valueDefinition?.inferredType&&C(f,y.type.type)){y.infer(f,"narrow"),s.push(y);continue}if(Vi(y.type.type,f)){s.push(y);continue}if(!y.type.matches(f)){s.push(e.typeError(f,y.type,y)),a=!1;continue}s.push(y)}b<d&&(s.push(e.error("missing")),a=!1)}if(p<n.length)for(let b of n.slice(p))s.push(e.error("unexpected-argument",b.toString())),a=!1;if(!a)return s;let h=u?s:n;p=0;for(let b of l)i||(!r||!Jt(h[p]))&&h[p].infer(b),p+=1;for(let b of c){if(!h[p])break;i||(!r||!Jt(h[p]))&&h[p].infer(b),p+=1}if(f)for(let b of h.slice(p))i||(!r||!Jt(b))&&b.infer(f),p+=1;return u?s:null}function $b(e,n,t,i){if(!i||!e.type(t).matches("matrix"))return null;let r=new Set;for(let u of n.freeVariables){let l=e.lookupDefinition(u);!l||!gt(l)||!l.value.inferredType||(i.has(l.value)||l.value.type.isUnknown)&&r.add(u)}if(r.size===0)return null;let o=Li(n,r);if(!o||o.size===0)return null;let s=new Map;for(let u of o){let l=e.lookupDefinition(u);if(!l||!gt(l)||!l.value.inferredType)return null;s.set(u,l.value.type.type),l.value.type=e.type("matrix"),l.value.inferredType=!1}e._generation+=1,e._mutationGeneration+=1;let a=e.box(n.json);if(a.type.matches(t)){for(let u of o){let l=e.lookupDefinition(u);l&&gt(l)&&(l.value.inferredType=!0)}return a}for(let[u,l]of s){let c=e.lookupDefinition(u);c&&gt(c)&&(c.value.type=e.type(l),c.value.inferredType=!0)}return e._generation+=1,e._mutationGeneration+=1,null}function Li(e,n){if(S(e))return n.has(e.symbol)?new Set([e.symbol]):null;if(!g(e))return null;if(e.operator==="Negate")return Li(e.op1,n);if(e.operator==="Add"||e.operator==="Subtract"){let t=new Set;for(let i of e.ops){let r=Li(i,n);if(!r)return null;for(let o of r)t.add(o)}return t}if(e.operator==="Multiply"){let t=e.ops.map(i=>Li(i,n)).filter(i=>i!==null);return t.length!==1?null:t[0]}return e.operator==="Power"&&e.op2?.isInteger===!0?Li(e.op1,n):null}function Rb(e){let{symbols:n,operators:t}=Pb(e.engine),i={},r=o=>{if(S(o)&&!o.symbol.startsWith("_")){if(!(o.symbol in i)&&!n.includes(o.symbol)){let s=aa(o.symbol,n);s&&(i[o.symbol]=s)}}else if(g(o)&&!o.operator.startsWith("_")){let s=o.operator;if(!(s in i)&&!t.includes(s)){let a=aa(s,t);a&&(i[s]=a)}for(let a of o.ops)r(a)}};return r(e),i}function Pb(e){let n=[],t=[],i=e.context.lexicalScope;for(;i;){for(let[r,o]of i.bindings)gt(o)&&n.push(r),je(o)&&t.push(r);i=i.parent}return{symbols:n,operators:t}}function Qe(e){let n=Rb(e);if(Object.keys(n).length===0)return"";if(Object.keys(n).length===1){let[i,r]=Object.entries(n)[0];return`Unknown symbol "${i}". Did you mean "${r}"?`}let t=[];for(let[i,r]of Object.entries(n))t.push(`- "${i}" -> "${r}"?`);return`Unknown symbols found:
8
8
  ${t.join(`
9
9
  `)}`}var _e=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Ue=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},Db=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var t=e*e;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},Fb=function(e,n){var t=Math.abs(e),i=Math.abs(n);return t<3e3&&i<3e3?Math.sqrt(t*t+i*i):(t<i?(t=i,i=e/n):i=n/e,t*Math.sqrt(1+i*i))},zt=function(){throw SyntaxError("Invalid Param")};function ca(e,n){var t=Math.abs(e),i=Math.abs(n);return e===0?Math.log(i):n===0?Math.log(t):t<3e3&&i<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var Ob=function(e,n){var t={re:0,im:0};if(e==null)t.re=t.im=0;else if(n!==void 0)t.re=e,t.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)t.re=e.re,t.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return V.INFINITY;t.re=e.abs*Math.cos(e.arg),t.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return V.INFINITY;t.re=e.r*Math.cos(e.phi),t.im=e.r*Math.sin(e.phi)}else e.length===2?(t.re=e[0],t.im=e[1]):zt();break;case"string":t.im=t.re=0;var i=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,o=0;i===null&&zt();for(var s=0;s<i.length;s++){var a=i[s];a===" "||a===" "||a===`
10
10
  `||(a==="+"?r++:a==="-"?o++:a==="i"||a==="I"?(r+o===0&&zt(),i[s+1]!==" "&&!isNaN(Number(i[s+1]))?(t.im+=parseFloat((o%2?"-":"")+i[s+1]),s++):t.im+=parseFloat((o%2?"-":"")+"1"),r=o=0):((r+o===0||isNaN(Number(a)))&&zt(),i[s+1]==="i"||i[s+1]==="I"?(t.im+=parseFloat((o%2?"-":"")+a),s++):t.re+=parseFloat((o%2?"-":"")+a),r=o=0))}r+o>0&&zt();break;case"number":t.im=0,t.re=e;break;default:zt()}return isNaN(t.re)||isNaN(t.im),t},V=class e{constructor(n,t){this.re=0,this.im=0;var i=Ob(n,t);this.re=i.re,this.im=i.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re+i.re,this.im+i.im)}sub(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re-i.re,this.im-i.im)}mul(n,t){var i=new e(n,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:i.im===0&&this.im===0?new e(this.re*i.re,0):new e(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(n,t){var i=new e(n,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return e.NAN;if(this.isInfinite()||i.isZero())return e.INFINITY;if(this.isZero()||i.isInfinite())return e.ZERO;n=this.re,t=this.im;var r=i.re,o=i.im,s,a;return o===0?new e(n/r,t/r):Math.abs(r)<Math.abs(o)?(a=r/o,s=r*a+o,new e((n*a+t)/s,(t*a-n)/s)):(a=o/r,s=o*a+r,new e((n+t*a)/s,(t-n*a)/s))}pow(n,t){var i=new e(n,t);if(n=this.re,t=this.im,i.isZero())return e.ONE;if(i.im===0){if(t===0&&n>0)return new e(Math.pow(n,i.re),0);if(n===0)switch((i.re%4+4)%4){case 0:return new e(Math.pow(t,i.re),0);case 1:return new e(0,Math.pow(t,i.re));case 2:return new e(-Math.pow(t,i.re),0);case 3:return new e(0,-Math.pow(t,i.re))}}if(n===0&&t===0&&i.re>0&&i.im>=0)return e.ZERO;var r=Math.atan2(t,n),o=ca(n,t);return n=Math.exp(i.re*o-i.im*r),t=i.im*o+i.re*r,new e(n*Math.cos(t),n*Math.sin(t))}sqrt(){var n=this.re,t=this.im,i=this.abs(),r,o;if(n>=0){if(t===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(i+n))}else r=Math.abs(t)/Math.sqrt(2*(i-n));return n<=0?o=.5*Math.sqrt(2*(i-n)):o=Math.abs(t)/Math.sqrt(2*(i+n)),new e(r,t<0?-o:o)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,t=this.im;return new e(Math.expm1(n)*Math.cos(t)+Db(t),Math.exp(n)*Math.sin(t))}log(){var n=this.re,t=this.im;return t===0&&n>0,new e(ca(n,t),Math.atan2(t,n))}abs(){return Fb(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,t=this.im;return new e(Math.sin(n)*_e(t),Math.cos(n)*Ue(t))}cos(){var n=this.re,t=this.im;return new e(Math.cos(n)*_e(t),-Math.sin(n)*Ue(t))}tan(){var n=2*this.re,t=2*this.im,i=Math.cos(n)+_e(t);return new e(Math.sin(n)/i,Ue(t)/i)}cot(){var n=2*this.re,t=2*this.im,i=Math.cos(n)-_e(t);return new e(-Math.sin(n)/i,Ue(t)/i)}sec(){var n=this.re,t=this.im,i=.5*_e(2*t)+.5*Math.cos(2*n);return new e(Math.cos(n)*_e(t)/i,Math.sin(n)*Ue(t)/i)}csc(){var n=this.re,t=this.im,i=.5*_e(2*t)-.5*Math.cos(2*n);return new e(Math.sin(n)*_e(t)/i,-Math.cos(n)*Ue(t)/i)}asin(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,t=this.im;if(n===0){if(t===1)return new e(0,1/0);if(t===-1)return new e(0,-1/0)}var i=n*n+(1-t)*(1-t),r=new e((1-t*t-n*n)/i,-2*n/i).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,t=this.im;if(t===0)return new e(Math.atan2(1,n),0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atan():new e(n!==0?n/0:0,t!==0?-t/0:0).atan()}asec(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acos():new e(n!==0?n/0:0,t!==0?-t/0:0).acos()}acsc(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(Math.PI/2,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asin():new e(n!==0?n/0:0,t!==0?-t/0:0).asin()}sinh(){var n=this.re,t=this.im;return new e(Ue(n)*Math.cos(t),_e(n)*Math.sin(t))}cosh(){var n=this.re,t=this.im;return new e(_e(n)*Math.cos(t),Ue(n)*Math.sin(t))}tanh(){var n=2*this.re,t=2*this.im,i=_e(n)+Math.cos(t);return new e(Ue(n)/i,Math.sin(t)/i)}coth(){var n=2*this.re,t=2*this.im,i=_e(n)-Math.cos(t);return new e(Ue(n)/i,-Math.sin(t)/i)}csch(){var n=this.re,t=this.im,i=Math.cos(2*t)-_e(2*n);return new e(-2*Ue(n)*Math.cos(t)/i,2*_e(n)*Math.sin(t)/i)}sech(){var n=this.re,t=this.im,i=Math.cos(2*t)+_e(2*n);return new e(2*_e(n)*Math.cos(t)/i,-2*Ue(n)*Math.sin(t)/i)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var t=this.asin();return this.re=-this.im,this.im=n,n=t.re,t.re=-t.im,t.im=n,t}acosh(){var n=this.acos();if(n.im<=0){var t=n.re;n.re=-n.im,n.im=t}else{var t=n.im;n.im=-n.re,n.re=t}return n}atanh(){var n=this.re,t=this.im,i=n>1&&t===0,r=1-n,o=1+n,s=r*r+t*t,a=s!==0?new e((o*r-t*t)/s,(t*r+o*t)/s):new e(n!==-1?n/0:0,t!==0?t/0:0),u=a.re;return a.re=ca(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,Math.PI/2);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atanh():new e(n!==0?n/0:0,t!==0?-t/0:0).atanh()}acsch(){var n=this.re,t=this.im;if(t===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asinh():new e(n!==0?n/0:0,t!==0?-t/0:0).asinh()}asech(){var n=this.re,t=this.im;if(this.isZero())return e.INFINITY;var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acosh():new e(n!==0?n/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,t=this.im,i=n*n+t*t;return new e(n/i,-t/i)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,t){var i=new e(n,t);return Math.abs(i.re-this.re)<=e.EPSILON&&Math.abs(i.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(t)<e.EPSILON&&(t=0),t===0?i+n:(n!==0?(i+=n,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};V.ZERO=new V(0,0);V.ONE=new V(1,0);V.I=new V(0,1);V.PI=new V(Math.PI,0);V.E=new V(Math.E,0);V.INFINITY=new V(1/0,1/0);V.NAN=new V(NaN,NaN);V.EPSILON=1e-15;var FI=Object.freeze([0,1]);function en(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-Ve&&e<=Ve?e:null;if(!F(e))return null;let n=e.numericValue;if(typeof n=="number")return Number.isInteger(n)&&n>=-Ve&&n<=Ve?n:null;if(n.im!==0)return null;let t=n.re;return Number.isInteger(t)&&t>=-Ve&&t<=Ve?Number(t):null}function ee(e){if(!F(e))return null;let n=e.numericValue,t=typeof n=="number"?n:n.re;if(!Number.isFinite(t))return null;let i=Math.round(t);return Number.isSafeInteger(i)?i:null}function Ub(e,n,t,i){return e.filter(r=>{let s=t.subs({[n]:r}).evaluate();return Q(s)==="True"})}function da(e,n){if(e.operator!=="Element")return{status:"error",reason:"expected-element-expression"};if(!g(e))return{status:"error",reason:"expected-element-expression"};let t=S(e.op1)?e.op1.symbol:void 0;if(!t)return{status:"error",reason:"expected-index-variable"};let i=e.op2;if(!i)return{status:"error",reason:"expected-domain"};let r=e.op3,o=e.nops>=3&&r&&Q(r)!=="Nothing"?r:null,s=u=>{if(o){let l=Ub(u,t,o,n);return{status:"success",variable:t,values:l}}return{status:"success",variable:t,values:u}};if(i.operator==="Set"||i.operator==="List"){let u=g(i)?i.ops:void 0;if(u&&u.length<=1e3){if(i.operator==="List"&&u.length===2){let l=en(u[0]),c=en(u[1]);if(l!==null&&c!==null){let f=c-l+1;if(f>0&&f<=1e3){let d=[];for(let p=l;p<=c;p++)d.push(n.number(p));return s(d)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}}return s([...u])}return u&&u.length>1e3?{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}:{status:"error",reason:"empty-domain"}}if(g(i,"Range")){let u=en(i.op1),l=en(i.op2),c=i.ops.length>=3?en(i.op3):1;if(u!==null&&l!==null&&c!==null&&c!==0){let f=Math.floor((l-u)/c)+1;if(f>0&&f<=1e3){let d=[];for(let p=u;c>0?p<=l:p>=l;p+=c)d.push(n.number(p));return s(d)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}if(g(i,"Interval")){let u=i.op1,l=i.op2,c=!1,f=!1;g(u,"Open")?(c=!0,u=u.op1):g(u,"Closed")&&(u=u.op1),g(l,"Open")?(f=!0,l=l.op1):g(l,"Closed")&&(l=l.op1);let d=en(u),p=en(l);if(d!==null&&p!==null){c&&(d+=1),f&&(p-=1);let h=p-d+1;if(h>0&&h<=1e3){let b=[];for(let y=d;y<=p;y++)b.push(n.number(y));return s(b)}if(h>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}let a=Q(i);if(a){if(["Integers","NonNegativeIntegers","PositiveIntegers","NegativeIntegers","Rationals","Reals","PositiveReals","NonNegativeReals","NegativeReals","NonPositiveReals","ExtendedReals","Complexes","ImaginaryNumbers","Numbers","ExtendedComplexes","AlgebraicNumbers","TranscendentalNumbers"].includes(a))return{status:"non-enumerable",variable:t,domain:i,reason:"infinite-domain"};let l=i.value;if(l&&l.operator==="Set"&&g(l)){let c=l.ops;if(c&&c.length<=1e3)return s([...c]);if(c&&c.length>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unknown-domain"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unrecognized-domain-type"}}function Id(e){return e?._kind==="number"}function Hb(e){return e?._kind==="symbol"}function Ji(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function Vn(e){if(Ji(e,"Interval")){let n=e.op1,t=e.op2,i=!1,r=!1;Ji(n,"Open")?(i=!0,n=n.op1):Ji(n,"Closed")&&(n=n.op1),Ji(t,"Open")?(r=!0,t=t.op1):Ji(t,"Closed")&&(t=t.op1);let o=n.N(),s=t.N();return!Id(o)||!Id(s)?void 0:{start:o.re,openStart:i,end:s.re,openEnd:r}}if(Hb(e)){if(e.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(e.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(e.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(e.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(e.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(e.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function Sd(e,n){return!((e.openStart?n<=e.start:n<e.start)||(e.openEnd?n>=e.end:n>e.end))}function wd(e){let n=Math.sin(e*12.9898)*43758.5453;return n-Math.floor(n)}function Md(e){return e+.6180339887498949}function pa(e){let n=e>>>0;return function(){n=n+1831565813|0;let t=Math.imul(n^n>>>15,1|n);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function kd(e,n,t){return n.every(i=>i.isCanonical)?n:n.map(i=>e.expr(i,{scope:t}))}function Ie(e){if(typeof e=="string")return lc(e)?e:"error";switch(e.kind){case"union":return ma(e);case"intersection":return e1(e);case"negation":return Yb(e);case"collection":case"indexed_collection":return n1(e.kind,e);case"list":return t1(e);case"set":return i1(e);case"broadcastable":return r1(e);case"tuple":return o1(e);case"record":return s1(e);case"dictionary":return a1(e);case"signature":return u1(e);case"value":return e;case"reference":return e;case"numeric":return e.lower!==void 0&&e.upper!==void 0&&e.lower>e.upper?"never":e;case"symbol":return e;case"expression":return e;default:throw new Error(`Unknown type kind: ${e}`)}}function Se(e){return typeof e!="object"||Object.isFrozen(e)||Object.prototype.hasOwnProperty.call(e,"toString")||Object.defineProperty(e,"toString",{value:()=>q(e)}),e}function Zb(e){let n=[],t=new Set;for(let i of e){let r=Ie(i),o=typeof r=="string"?r:q(r);t.has(o)||(t.add(o),n.push(r))}return n}function Yb(e){let n=Ie(e.type);return n==="never"?"any":n==="any"?"never":Se({kind:"negation",type:n})}function Wb(e){let n=[],t=new Set,i=r=>{if(typeof r=="object"&&r.kind==="union"){for(let s of r.types)i(s);return}let o=typeof r=="string"?r:q(r);t.has(o)||(t.add(o),n.push(r))};for(let r of e)i(Ie(r));return n}function Xb(e){return e.map(n=>[typeof n=="string"?n:q(n),n]).sort((n,t)=>n[0]<t[0]?-1:n[0]>t[0]?1:0).map(([,n])=>n)}function ma(e){let n=Wb(e.types);if(n.length===0)return"never";if(n.some(i=>i==="error"))return"error";if(n.length===1)return Se(n[0]);let t=[];for(let i of n)if(!t.some(r=>C(i,r))){for(let r=t.length-1;r>=0;r--)C(t[r],i)&&t.splice(r,1);t.push(i)}if(t.indexOf("non_finite_number")!==-1)for(let i=0;i<t.length;i++){let r=t[i];if(typeof r!="string")continue;let o=xs[r];if(o){t[i]=o,t.splice(t.indexOf("non_finite_number"),1);break}}return t.length===1?Se(t[0]):Se({kind:"union",types:Xb(t)})}function $d(e,n){if(C(e,n))return e;if(C(n,e))return n;if(typeof e=="object"&&e.kind==="union")return Cd(e.types,n);if(typeof n=="object"&&n.kind==="union")return Cd(n.types,e);if(typeof e=="string"&&typeof n=="string"){let t=pi(e,n);return t.length===0?"nothing":t.length===1?t[0]:{kind:"union",types:t}}if(typeof e=="object"&&e.kind==="numeric"||typeof n=="object"&&n.kind==="numeric"){let t=Ad(e),i=Ad(n);if(t&&i)return Kb(t,i)}return"nothing"}function Ad(e){return typeof e=="object"?e.kind==="numeric"?e:null:At.has(e)?{kind:"numeric",type:e}:null}function Kb(e,n){let t=pi(e.type,n.type);if(t.length===0)return"nothing";let i=Math.max(e.lower??-1/0,n.lower??-1/0),r=Math.min(e.upper??1/0,n.upper??1/0);if(i>r)return"nothing";let o=i!==-1/0||r!==1/0,s=[];for(let a of t)a==="non_finite_number"&&o||s.push(Qb(a,i,r));return s.length===0?"nothing":s.length===1?s[0]:ma({kind:"union",types:s})}function Qb(e,n,t){return n===-1/0&&t===1/0?e:{kind:"numeric",type:e,lower:n,upper:t}}function Cd(e,n){let t=e.map(i=>$d(i,n)).filter(i=>i!=="nothing");return t.length===0?"nothing":t.length===1?t[0]:ma({kind:"union",types:t})}function e1(e){let n=Zb(e.types);if(n.length===0)return"nothing";if(n.some(i=>i==="error"))return"error";let t=n[0];for(let i=1;i<n.length;i++)if(t=$d(t,n[i]),t==="nothing")return"nothing";return Se(t)}function n1(e,n){let t=Ie(n.elements);return t==="error"?"error":t==="nothing"?Se({kind:e,elements:"nothing"}):t==="any"?e:Se({...n,elements:t})}function t1(e){let n=Ie(e.elements);if(n==="error")return"error";if(n==="nothing")return Se({kind:"list",elements:"nothing"});if(n==="any")return"list";let t=e.dimensions;return t&&(t=t.filter(i=>i>=1||i===-1),t.length===0)?"nothing":Se({...e,dimensions:t,elements:n})}function i1(e){let n=Ie(e.elements);return n==="error"?"error":n==="nothing"?Se({kind:"set",elements:"nothing"}):n==="any"?"set":Se({...e,elements:n})}function r1(e){let n=Ie(e.elements);return n==="error"?"error":Se({...e,elements:n})}function o1(e){let n=e.elements.map(t=>({...t,type:Ie(t.type)}));return n.length===0?"nothing":n.some(t=>t.type==="error")?"error":(n=n.filter(t=>t.type!=="nothing"),Se({...e,elements:n}))}function s1(e){let n={};for(let[t,i]of Object.entries(e.elements))n[t]=Ie(i);return Object.values(n).some(t=>t==="error")?"error":(n=Object.fromEntries(Object.entries(n).filter(([t,i])=>i!=="nothing")),Object.keys(n).length===0?"record":Se({...e,elements:n}))}function a1(e){let n=Ie(e.values);return n==="error"||n==="nothing"?"error":n==="any"||n==="unknown"?"any":Se({kind:"dictionary",values:n})}function u1(e){let n=e.args?.map(o=>({...o,type:Ie(o.type)})),t=e.optArgs?.map(o=>({...o,type:Ie(o.type)})),i=e.variadicArg?{...e.variadicArg,type:Ie(e.variadicArg.type)}:void 0,r=Ie(e.result);return n?.some(o=>o.type==="error")||t?.some(o=>o.type==="error")||i?.type==="error"||r==="error"?"error":(t=t?.filter(o=>o.type!=="nothing"),n?.length===0&&(t=void 0),t?.length===0&&(t=void 0),i?.type==="nothing"&&(i=void 0),Se({...e,args:n,optArgs:t,variadicArg:i,variadicMin:i?e.variadicMin:void 0,result:r}))}function l1(e,n){return Ie({kind:"intersection",types:[e,n]})}function oo(e,n){let t=e.type;if(t.matches(n))return!0;if(l1(t.type,n)==="nothing"||F(e))return!1}var zi=50,c1=L("(value: indexed_collection | dictionary, index: (number|string|boolean|indexed_collection)+) -> unknown");function f1(e){let n=e.type.type;return typeof n=="string"||n.kind!=="union"?!1:n.types.some(t=>C(t,"indexed_collection")||C(t,"dictionary"))}var d1=["Sort","Shuffle","Reverse"],p1=["Sort","Shuffle","Reverse","Unique"];function Ld(e,n){let t=e;for(;g(t)&&n.includes(t.operator)&&t.nops>=1&&t.isValid;)t=t.op1;return t}var ha=e=>Ld(e,d1),m1=e=>Ld(e,p1),h1=L("(any) -> integer"),g1=L("(collection) -> integer"),b1=L("(collection) -> boolean"),y1=L("(collection, element: any) -> boolean");function Ne(e,n,t="collection"){if(n==null)return e.error("missing");let i=n.canonical;if(!i.isValid)return i;let r=i.type.type;return r==="unknown"||r==="any"||r==="value"?i.value!==void 0&&!i.isCollection?bt(e,i,t):i:typeof r!="string"&&r.kind==="broadcastable"?i:bt(e,i,t)}function so(e,n){return e===void 0?n:[e,...n.slice(1)]}var ji=$r();function jt(e,n){let t=e.operatorDefinition?.collection?.elttype?.(e);if(t)return t;let i=e.type.type;if(typeof i!="string"&&i.kind==="tuple"&&n>=1){let r=i.elements[n-1]?.type;if(r)return r}return le(i)??"any"}function co(e,n){if(typeof e=="string")return e==="indexed_collection"||e==="list"||e==="set"||e==="collection"?L(`${e}<${q(n)}>`):L(`collection<${q(n)}>`);if(e.kind==="list"){let t={kind:"list",elements:n};return e.dimensions&&(t.dimensions=e.dimensions),t}return e.kind==="indexed_collection"?{kind:"indexed_collection",elements:n}:e.kind==="set"?{kind:"set",elements:n}:e.kind==="collection"?{kind:"collection",elements:n}:L(`collection<${q(n)}>`)}function Jn(e,n,t){if(e.isCollection)return e.at(n)??t.Nothing;if(!e.type.matches("indexed_collection"))return t.error(["incompatible-type","'collection'",e.type.toString()])}function x1(e){let n=e.type.type;return typeof n!="string"&&n.kind==="tuple"||e.operator==="Tuple"}function E1(e){let n=le(e.type.type);return n!==void 0&&typeof n!="string"&&n.kind==="tuple"}function ga(e,n){let t=e.type.type;if(typeof t!="string"&&t.kind==="tuple"){let i=jt(e,n);if(i==="unknown"){if(g(e)&&bi(e)){let r=e.ops?.[n-1];if(r!==void 0&&gi(r))return i}return"number"}return i}return e.type.matches("indexed_collection")?co(t,"number"):jt(e,n)}function v1(e,n,t){if(!g(e)||e.operator!=="Map"||e.nops<2)return;let i=e.ops[e.nops-1];if(!g(i)||i.operator!=="Function")return;let r=i.ops[0];if(g(r)&&r.operator==="Block"&&r.nops===1&&(r=r.ops[0]),g(r)&&r.operator==="N"&&(r=r.ops[0]),!g(r)||r.operator!=="Tuple")return;let o=r.ops[n-1];if(o===void 0||!S(o))return;let s=i.ops.slice(1),a=e.ops.slice(0,-1);if(s.length!==a.length)return;let u=new Set;for(let f of s){if(!S(f)||u.has(f.symbol))return;u.add(f.symbol)}let l=s.findIndex(f=>S(f)&&f.symbol===o.symbol);if(l<0||l>=a.length||a.some(f=>f.isIndexedCollection!==!0))return;let c=a.map(f=>f.count);if(!c.some(f=>f===void 0||f!==c[0]))return t?a[l].N():a[l]}function ba(e,n,t,i=!1){let r=e.type.type;if(typeof r!="string"&&r.kind==="tuple")return Jn(e,n,t);if(e.isFiniteCollection){let o=v1(e,n,i);if(o!==void 0)return o;let s;for(let a of e.each()){s=a;break}if(s!==void 0){if(x1(s)){let a=e.count;if(e.isIndexedCollection===!0&&(a===void 0||a>on))return yi(t,"At",[e,t.number(n)],l=>l===e,i);let u=[];for(let l of e.each())u.push(l.at(n)??t.Nothing);return t.function("List",u)}return Jn(e,n,t)}return E1(e)?t.function("List",[]):Jn(e,n,t)}return Jn(e,n,t)}var ew={List:{description:"An ordered collection of elements (a list).",complexity:8200,signature:"(any*) -> list",type:(e,{engine:n})=>L(`list<${pe.widen(...e.map(t=>t.type))}>`),canonical:N1,lazy:!0,evaluate:(e,{engine:n,numericApproximation:t,materialization:i})=>{if(i)return n._fn("List",Ea(e).map(r=>r.evaluate({numericApproximation:t,materialization:i})));if(!e.every(r=>S1(r,t??!1)))return n.function("List",e.map(r=>r.evaluate({numericApproximation:t,materialization:i})))},eq:Fd,collection:$r()},Set:{description:"An unordered collection of distinct elements (a set).",complexity:8200,signature:"(any*) -> set",type:(e,{engine:n})=>cn(e)!==null?L("set"):L(`set<${pe.widen(...e.map(t=>t.type))}>`),canonical:T1,lazy:!0,evaluate:(e,{engine:n,numericApproximation:t,materialization:i})=>{let r=cn(e);if(r!==null){let o=xt(r);return o===void 0||o.length>on?void 0:n.function("Set",o)}return n.function("Set",e.map(o=>o.evaluate({numericApproximation:t,materialization:i})))},eq:(e,n)=>{if(e.operator!==n.operator)return n.type.matches("set")?void 0:!1;if(!g(e)||!g(n)||e.nops!==n.nops)return!1;let t=i=>n.ops.some(r=>i.isSame(r));return e.ops.every(t)},collection:{...ji,at:void 0,indexWhere:void 0,isLazy:e=>g(e)&&cn(e.ops)!==null,count:e=>{if(!g(e))return 0;let n=cn(e.ops);return n===null?e.nops:xt(n)?.length},isEmpty:e=>{if(!g(e))return!0;let n=cn(e.ops);if(n===null)return e.nops===0;let t=xt(n);return t===void 0?void 0:t.length===0},isFinite:e=>{if(!g(e))return!0;let n=cn(e.ops);if(n===null||xt(n)!==void 0||n.domain?.isFiniteCollection===!0)return!0},iterator:e=>{if(!g(e))return ji.iterator(e);let n=cn(e.ops);if(n===null)return ji.iterator(e);let t=xt(n);if(t===void 0)return;let i=0;return{next:()=>i>=t.length?{value:void 0,done:!0}:{value:t[i++],done:!1}}},contains:(e,n)=>{if(!g(e))return;let t=cn(e.ops);return t!==null?_1(t,n):Vd(e.ops,n)},elttype:e=>{if(!g(e))return ji.elttype(e);let n=cn(e.ops);if(n===null)return ji.elttype(e);let t=xt(n);return t===void 0||t.length===0?"unknown":ve(...t.map(i=>i.type.type))}}},Length:{description:"Number of elements in a collection. Returns undefined for non-collections and for infinite collections.",keywords:["size"],complexity:4e3,signature:"(any) -> integer",type:()=>"integer",canonical:(e,{engine:n})=>{e=Ge(e);let t=so(ha(e[0]),e),i=yt(n,t,h1,!1,!1);return n._fn("Length",i??t)},evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(e.isEmptyCollection)return n.Zero;let t=e.count;if(!(t===void 0||!isFinite(t)))return n.number(t)}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(any*) -> tuple",type:e=>L(`tuple<${e.map(n=>n.type).join(", ")}>`),canonical:(e,{engine:n})=>n.tuple(...e),eq:Fd,collection:{...$r(),keys:e=>["first","second","last"]}},PointList:{description:"A list of points: zips collection components into a List of point-tuples (Desmos point-list idiom); a plain point when no component is a collection.",complexity:8200,signature:"(any+) -> any",type:e=>{let n=t=>{let i=t.type.type;return!(typeof i!="string"&&i.kind==="tuple")&&t.type.matches("indexed_collection")};return e.some(n)?L("list<tuple>"):L(`tuple<${e.map(t=>t.type).join(", ")}>`)},evaluate:(e,{engine:n,numericApproximation:t})=>{let i=r=>sn(r)&&!Rt(r);if(!e.some(r=>!Rt(r)&&r.isCollection&&!i(r)))return e.some(i)?Cr(n,"Tuple",e,t??!1,!0):n.tuple(...e)},compile:(e,n,{language:t})=>{let i=o=>typeof o!="string"&&o.kind==="union"?o.types.some(i):C(o,"collection");if(e.some(o=>i(o.type.type)))return;let r=e.map(o=>n(o));if(t==="javascript")return`[${r.join(", ")}]`;if(t==="python")return`(${r.join(", ")})`;if(t==="glsl"||t==="wgsl"){let o=t==="wgsl"?"f":"";return r.length>=2&&r.length<=4?`vec${r.length}${o}(${r.join(", ")})`:`${t==="wgsl"?`array<f32, ${r.length}>`:`float[${r.length}]`}(${r.join(", ")})`}}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([e,n])=>L(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[t,i]=la(n,e,["string","any"]);return!t.isValid||!i.isValid?n._fn("KeyValuePair",[t,i]):n.tuple(t,i)}},Keys:{description:"Return a list of the keys of a dictionary.",complexity:8200,signature:"(dictionary) -> list<string>",type:()=>L("list<string>"),evaluate:([e],{engine:n})=>{if(Dn(e))return n.function("List",e.keys.map(t=>n.string(t)))}},Values:{description:"Return a list of the values of a dictionary.",complexity:8200,signature:"(dictionary) -> list",type:([e])=>{let n=e.type.type;return typeof n=="object"&&n.kind==="dictionary"?L(`list<${q(n.values)}>`):typeof n=="object"&&n.kind==="record"?L(`list<${q(ve(...Object.values(n.elements)))}>`):L("list<any>")},evaluate:([e],{engine:n})=>{if(Dn(e))return n.function("List",e.values)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([e])=>L(`tuple<${e.type}>`),canonical:(e,{engine:n})=>n.tuple(...io(n,e,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([e,n])=>L(`tuple<${e.type}, ${n.type}>`),canonical:(e,{engine:n})=>n.tuple(...io(n,e,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([e,n,t])=>L(`tuple<${e.type}, ${n.type}, ${t.type}>`),canonical:(e,{engine:n})=>n.tuple(...io(n,e,3))},Range:{description:"A sequence of numbers from a start to an end value with an optional step.",complexity:8200,signature:"(number, number?, step: number?) -> indexed_collection<number>",type:e=>e.every(t=>t.isInteger)?L("indexed_collection<integer>"):L("indexed_collection<number>"),canonical:(e,{engine:n})=>e.length===0?null:e.length===1?n._fn("Range",[n.One,e[0].canonical]):e.length===2?n._fn("Range",[e[0].canonical,e[1].canonical]):n._fn("Range",[e[0].canonical,e[1].canonical,e[2].canonical.evaluate()]),eq:(e,n)=>{if(e.operator!==n.operator)return n.type.matches("indexed_collection")?void 0:!1;if(qn(e)||qn(n))return!g(e)||!g(n)||e.nops!==n.nops?void 0:e.ops.every((u,l)=>u.isSame(n.ops[l]))?!0:void 0;let[t,i,r]=An(e),[o,s,a]=An(n);return t===o&&i===s&&r===a},collection:{isLazy:e=>!0,count:e=>{if(qn(e))return;let[n,t,i]=An(e);return i===0?0:!isFinite(n)||!isFinite(t)?1/0:Math.max(0,Math.floor((t-n)/i)+1)},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return oo(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(g(e)&&e.ops.some(l=>Number.isNaN(l.re)))return;let[i,r,o]=An(e);if(o===0)return!1;if(o>0){if(t<i||t>r)return!1}else if(t>i||t<r)return!1;let s=(t-i)/o,a=e.engine.tolerance,u=Math.round(s);return u>=0&&Math.abs(s-u)<a},iterator:e=>{if(qn(e))return;let[n,t,i]=An(e),r=i===0?0:Math.max(0,Math.floor((t-n)/i)+1),o=1;return{next:()=>o===r+1?{value:void 0,done:!0}:(o+=1,{value:e.engine.number(n+i*(o-1-1)),done:!1})}},at:(e,n)=>{if(typeof n!="number"||qn(e))return;let[t,i,r]=An(e);if(r===0)return;let o=Math.max(0,Math.floor((i-t)/r)+1);if(!(n<1||n>o))return e.engine.number(t+r*(n-1))},indexWhere:void 0,subsetOf:(e,n)=>{if(n.operator==="Range"){if(qn(e)||qn(n))return;let[i,r,o]=An(e),[s,a,u]=An(n);return i>=s&&r<=a&&o%u===0}if(!n.isCollection)return!1;let t=1;for(let i of n.each()){if(!e.contains(i)||!e.at(t)?.isSame(i))return!1;t++}return!0},eltsgn:e=>{if(qn(e))return;let[n,t,i]=An(e);return i===0?"zero":i>0?n<=t?"positive":"negative":n>=t?"positive":"negative"},elttype:e=>{if(!g(e))return"finite_integer";for(let n=1;n<=e.nops;n++)if(!e[`op${n}`].isInteger)return"finite_real";return"finite_integer"}}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(number, number) -> set<real>",canonical:([e,n],{engine:t})=>{if(!e||!n)return null;let i=c=>g(c,"Open")?[c.op1,!0]:g(c,"Closed")?[c.op1,!1]:[c,!1],[r,o]=i(e),[s,a]=i(n),[u,l]=la(t,[r.canonical,s.canonical],["number","number"]);return!u.isValid||!l.isValid?null:t._fn("Interval",[o?t._fn("Open",[u]):u,a?t._fn("Open",[l]):l])},eq:(e,n)=>{let t=Vn(e),i=Vn(n);if(!(!i&&n.type.matches("set")))return!t||!i?!1:t.start===i.start&&t.end===i.end&&t.openStart===i.openStart&&t.openEnd===i.openEnd},collection:{count:e=>1/0,iterator:e=>{let n=Vn(e);if(!n)return{next:()=>({value:void 0,done:!0})};if(n.start>=n.end)return{next:()=>({value:void 0,done:!0})};let t=e.engine,i=0,r=0;return{next:()=>{let o=Math.pow(2,i);r>=o&&(i++,r=0);let s=(2*r+1)/Math.pow(2,i+1),a=n.start+s*(n.end-n.start);return r++,{value:t.number(a),done:!1}}}},isEmpty:e=>{let n=Vn(e);if(n)return n.openStart&&n.start===n.end||n.openEnd&&n.start===n.end?!0:n.openStart&&n.openEnd?!1:n.start>=n.end},isFinite:e=>!1,contains:(e,n)=>{let t=Vn(e);if(!t)return;if(oo(n,"number")===!1)return!1;let i=n.re;if(!Number.isNaN(i))return n.im!==0?!1:Sd(t,i);let r=t.openStart?n.isGreater(t.start):n.isGreaterEqual(t.start);if(r===!1)return!1;let o=t.openEnd?n.isLess(t.end):n.isLessEqual(t.end);if(o===!1)return!1;if(r===!0&&o===!0)return!0},eltsgn:e=>{let n=Vn(e);if(!n||n.start===n.end)return"unsigned";if(n.start>=0&&!n.openStart)return"non-negative";if(n.end<=0&&!n.openEnd)return"non-positive";if(n.start>0&&n.end>0)return"positive";if(n.start<0&&n.end<0)return"negative"},elttype:e=>{let n=Vn(e);return n?isFinite(n.start)&&isFinite(n.end)?"finite_real":"real":"never"}}},Linspace:{description:"A sequence of evenly spaced numbers between a start and end value, both endpoints included.",complexity:8200,signature:"(start: number, end: number?, count: number?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e)||ao(e.op3))return;let n=e.op3.re;return isFinite(n)||(n=zi),Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number"||!g(e)||ao(e.op3))return;let t=e.op1.re,i=e.op2.re,r=e.op3.re;if(isFinite(r)||(r=zi),r=Math.floor(r),!(!isFinite(t)||!isFinite(i))&&!(n<1||n>r))return r===1?e.engine.number(t):e.engine.number(t+(i-t)*(n-1)/(r-1))},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.ops.some(s=>ao(s)))return;let n=e.op1.re,t=e.op2.re,i;isFinite(t)?i=Math.max(0,isFinite(e.op3.re)?e.op3.re:zi):(t=n,n=1,i=zi),i=Math.floor(i);let r=i>1?i-1:1,o=1;return{next:()=>o===i+1?{value:void 0,done:!0}:(o+=1,{value:e.engine.number(n+(t-n)*(o-1-1)/r),done:!1})}},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return oo(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(!g(e))return;let i=e.op1.re,r=e.op2.re;if(Number.isNaN(i)||Number.isNaN(r))return;if(t<i||t>r)return!1;if(ao(e.op3))return;let o=e.op3.re;if(isFinite(o)||(o=zi),o=Math.floor(o),o===0)return!1;if(o===1)return t===i;let s=(r-i)/(o-1),a=(t-i)/s,u=e.engine.tolerance,l=Math.round(a);return l>=0&&l<=o-1&&Math.abs(a-l)<u}}},Contains:{description:"Return True if the collection contains the given element, False otherwise.",complexity:8200,signature:"(collection, element: any) -> boolean",canonical:(e,{engine:n})=>{e=Ge(e);let t=so(m1(e[0]),e),i=yt(n,t,y1,!1,!1);return n._fn("Contains",i??t)},evaluate:([e,n],{engine:t})=>{let i=e.contains(n);if(i!==void 0)return i?t.True:t.False}},Count:{description:["Return the number of elements in the collection."],keywords:["cardinality"],complexity:8200,signature:"(collection) -> integer",canonical:(e,{engine:n})=>{e=Ge(e);let t=so(ha(e[0]),e),i=yt(n,t,g1,!1,!1);return n._fn("Count",i??t)},evaluate:([e],{engine:n})=>{if(e.isEmptyCollection)return n.Zero;let t=e.count;if(t!==void 0)return n.number(t)},sgn:([e])=>{let n=e.isEmptyCollection;if(n===!0)return"zero";if(n===!1)return"positive"}},IsEmpty:{description:["Return True if the collection is empty, False otherwise."],complexity:8200,signature:"(collection) -> boolean",canonical:(e,{engine:n})=>{e=Ge(e);let t=so(ha(e[0]),e),i=yt(n,t,b1,!1,!1);return n._fn("IsEmpty",i??t)},evaluate:([e],{engine:n})=>{let t=e.isEmptyCollection;if(t!==void 0)return t?n.True:n.False}},Any:{description:"Return True if the predicate holds for at least one element of the collection (or if any element is True when no predicate is given).",complexity:8200,lazy:!0,signature:"(collection, function?) -> boolean",canonical:(e,{engine:n})=>{let t=Ne(n,e[0]);if(!t.isValid)return null;if(e[1]===void 0)return n._fn("Any",[t]);let i=me(e[1]);return i?n._fn("Any",[t,i]):null},type:()=>"boolean",evaluate:([e,n],{engine:t})=>Rd("Any",e,n,t)},All:{description:"Return True if the predicate holds for every element of the collection (or if every element is True when no predicate is given).",complexity:8200,lazy:!0,signature:"(collection, function?) -> boolean",canonical:(e,{engine:n})=>{let t=Ne(n,e[0]);if(!t.isValid)return null;if(e[1]===void 0)return n._fn("All",[t]);let i=me(e[1]);return i?n._fn("All",[t,i]):null},type:()=>"boolean",evaluate:([e,n],{engine:t})=>Rd("All",e,n,t)},Map:{description:["Return the collection where each element has been transformed by the mapping function.","With a single collection, equivalent to `[f(x) for x in xs]`. With","multiple collections, combines them element-wise (like `zipWith`): ","`Map(xs, ys, f) = [f(x1, y1), f(x2, y2), \u2026]`, with the length of the","shortest input. The mapping function is always the LAST argument."],complexity:8200,lazy:!0,signature:"(collection+, function) -> indexed_collection",type:e=>{let n=i=>{let r=i.type.type;return(r==="unknown"||r==="any"||r==="value")&&i.isIndexedCollection?"indexed_collection":r};if(e.length<=2){let i=Pn(e[1].type.type);if(!i||i==="unknown"||i==="any"){let r=n(e[0]);return r==="indexed_collection"&&e[0].type.type!==r?r:e[0].type}return co(n(e[0]),i)}let t=Pn(e[e.length-1].type.type);return co("indexed_collection",!t||t==="unknown"||t==="any"?"unknown":t)},canonical:(e,{engine:n})=>{if(e.length<=2){let r=Ne(n,e[0]),o=me(e[1]);return!r.isValid||!o?null:n._fn("Map",[r,o])}let t=me(e[e.length-1]),i=e.slice(0,-1).map(r=>Ne(n,r));return!t||i.some(r=>!r.isValid)?null:n._fn("Map",[...i,t])},collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.nops>2?Gd(e.ops.slice(0,-1).map(n=>n.count)):e.op1.count},isEmpty:e=>{if(g(e)){if(e.nops>2){let n=!1;for(let t of e.ops.slice(0,-1)){let i=t.isEmptyCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1}return e.op1.isEmptyCollection}},isFinite:e=>{if(g(e)){if(e.nops>2){let n=!1;for(let t of e.ops.slice(0,-1)){let i=t.isFiniteCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1}return e.op1.isFiniteCollection}},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.nops>2){let i=X(e.ops[e.nops-1]);if(!i)return{next:()=>({value:void 0,done:!0})};let r=e.ops.slice(0,-1).map(o=>o.each());return{next:()=>{let o=[];for(let a of r){let{value:u,done:l}=a.next();if(l||u===void 0)return{value:void 0,done:!0};o.push(u)}return{value:i(o)??e.engine.Nothing,done:!1}}}}let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each();return{next:()=>{for(;;){let{value:i,done:r}=t.next();return r?{value:void 0,done:!0}:{value:n([i])??e.engine.Nothing,done:!1}}}}},at:(e,n)=>{if(!g(e)||typeof n!="number")return;if(e.nops>2){let i=e.ops.slice(0,-1);if(n<1)return;let r=i.map(o=>o.at(n));return r.some(o=>o===void 0)?void 0:X(e.ops[e.nops-1])?.(r)}if(e.op1.isIndexedCollection===!1||!Number.isFinite(n)||n===0)return;let t=e.op1.at(n);if(t)return X(e.op2)?.([t])}}},Filter:{description:["Return the elements of the collection for which the predicate function returns True.","Equivalent to `[x for x in xs if p(x)]`."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:n._fn("Filter",[t,i])},collection:{isLazy:e=>!0,isFinite:e=>{if(g(e))return e.op1.isFiniteCollection===!0?!0:void 0},isEmpty:e=>{if(g(e)){if(e.op1.isEmptyCollection===!0)return!0;try{for(let n of e.each())return!1;return!0}catch(n){if(n instanceof Le&&n.cause==="iteration-limit-exceeded")return;throw n}}},count:e=>{if(g(e)&&e.op1.isFiniteCollection===!0)try{let n=0;for(let t of e.each())n++;return n}catch(n){if(n instanceof Le&&n.cause==="iteration-limit-exceeded")return;throw n}},contains:(e,n)=>{if(!g(e)||!(e.op1.contains(n)??!1))return!1;let t=X(e.op2);return Q(t([n]))==="True"},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=0,r=e.engine.iterationLimit;return{next:()=>{for(;;){let{value:o,done:s}=t.next();if(i+=1,i>r)throw new Le({cause:"iteration-limit-exceeded",message:`Iteration limit of ${r} exceeded while evaluating Filter()`});if(s)return{value:void 0,done:!0};let a=n([o]);if(!a)throw new Error(`Invalid filter predicate. ${Qe(e.op2)}`);if(Q(a)==="True")return{value:o,done:!1};if(Q(a)!=="False")throw new Error(`Filter predicate must return "True" or "False". ${Qe(e.op2)}`)}}}},at:(e,n)=>{if(typeof n!="number"||!Number.isFinite(n)||n===0||!g(e))return;let t=X(e.op2);if(!t)return;if(n<0){if(!e.op1.isFiniteCollection)return;let r=Array.from(e.each()),o=r.length+n+1;return o<1||o>r.length?void 0:r[o-1]}let i=0;for(let r of e.op1.each()){let o=Q(t([r]));if(o==="True"){if(i+=1,i===n)return r}else if(o!=="False")throw new Error(`Filter predicate must return "True" or "False". ${Qe(e.op2)}`)}}}},Reduce:{description:"Reduce (fold) a collection to a single value by repeatedly applying a binary function, with an optional initial value.",complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> value",canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);if(!t.isValid||!i)return null;let r=e[2]?.canonical;return r?.isValid?n._fn("Reduce",[t,i,r]):n._fn("Reduce",[t,i])},type:e=>L(Pn(e[1].type.type)??"unknown"),evaluate:([e,n,t],{engine:i,numericApproximation:r})=>{if(!e.isFiniteCollection||qd(e))return;let o=t!==void 0;if(t??=i.Nothing,(r||F(t)&&!t.isExact)&&t.type.matches("real")&&e.type.matches(i.type("collection<real>"))){let u=i._compile(n);if(u.calling==="lambda"&&u.run)return Rn((function*(){let l=o?t.re:NaN,c=!0;for(let f of e.each())c&&!o?l=f.re:l=u.run(l,f.re),c=!1,yield;return i.expr(l)})(),i._timeRemaining)}let a=X(n);return Rn(Jd(e,(u,l)=>a([u,l])??i.Nothing,t),i._timeRemaining)}},Fold:{description:"Fold a collection to a single value, applying a binary function f(accumulator, element) left to right from an initial value.",complexity:8200,lazy:!0,signature:"(function, value, collection) -> value",canonical:(e,{engine:n})=>{let t=me(e[0]),i=e[1]?.canonical,r=Ne(n,e[2]);return!t||!i?.isValid||!r.isValid?null:n._fn("Reduce",[r,t,i])}},Scan:{description:"Return the cumulative fold of a collection: a same-length collection whose k-th element is the running result of applying a binary function left to right (optionally seeded by an initial value).",complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> indexed_collection",type:e=>{let n=Pn(e[1].type.type);return!n||n==="unknown"||n==="any"?e[0].type:co(e[0].type.type,n)},canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:e[2]!==void 0?n._fn("Scan",[t,i,e[2].canonical]):n._fn("Scan",[t,i])},collection:{isLazy:e=>!0,count:e=>g(e)?e.op1.count:void 0,isEmpty:e=>g(e)?e.op1.isEmptyCollection:void 0,isFinite:e=>g(e)?e.op1.isFiniteCollection:void 0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.ops.length>=3,i=e.ops[2],r=e.op1.each(),o,s=!1;return{next:()=>{let{value:a,done:u}=r.next();return u?{value:void 0,done:!0}:(s?o=n([o,a])??e.engine.Nothing:(s=!0,o=t?n([i,a])??e.engine.Nothing:a),{value:o,done:!1})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=X(e.op2);if(!t)return;let i=e.ops.length>=3,r=e.ops[2],o=0,s;for(let a of e.op1.each())if(o+=1,o===1?s=i?t([r,a])??e.engine.Nothing:a:s=t([s,a])??e.engine.Nothing,o===n)return s}}},Differences:{description:"Return the successive differences of a collection: a collection whose k-th element is `x(k+1) \u2212 xk`, of length one less than the input.",complexity:8200,lazy:!0,signature:"(collection) -> indexed_collection",type:e=>{let n=le(e[0].type.type)??"number";return L(`list<${q(n)}>`)},canonical:(e,{engine:n})=>{let t=Ne(n,e[0]);return t.isValid?n._fn("Differences",[t]):null},collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Number.isFinite(n)?Math.max(0,n-1):1/0},isFinite:e=>g(e)?e.op1.isFiniteCollection:void 0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.each(),t=n.next();if(t.done)return{next:()=>({value:void 0,done:!0})};let i=t.value;return{next:()=>{let{value:r,done:o}=n.next();if(o)return{value:void 0,done:!0};let s=e.engine.function("Subtract",[r,i]).evaluate();return i=r,{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=e.op1.at(n),i=e.op1.at(n+1);if(!(t===void 0||i===void 0))return e.engine.function("Subtract",[i,t]).evaluate()}}},TakeWhile:{description:["Return the leading elements of the collection for which the predicate returns True, stopping at the first element that does not."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:n._fn("TakeWhile",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(!g(e)||e.op1.isFiniteCollection!==!0)return;let n=0;for(let t of e.each())n++;return n},isFinite:e=>g(e)&&e.op1.isFiniteCollection===!0?!0:void 0,isEmpty:e=>{if(!g(e))return;if(e.op1.isEmptyCollection===!0)return!0;let n=e.op1.each().next();if(n.done)return!0;let t=X(e.op2);if(t)return Q(t([n.value]))!=="True"},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=!1,r=0,o=e.engine.iterationLimit;return{next:()=>{if(i)return{value:void 0,done:!0};let{value:s,done:a}=t.next();if(a)return i=!0,{value:void 0,done:!0};if(r+=1,r>o)throw new Le({cause:"iteration-limit-exceeded",message:`Iteration limit of ${o} exceeded while evaluating TakeWhile()`});let u=n([s]);if(u===void 0)throw new Error(`Invalid TakeWhile predicate. ${Qe(e.op2)}`);return Q(u)==="True"?{value:s,done:!1}:(i=!0,{value:void 0,done:!0})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=X(e.op2);if(!t)return;let i=0;for(let r of e.op1.each()){if(Q(t([r]))!=="True")return;if(i+=1,i===n)return r}}}},DropWhile:{description:["Return the collection with its leading elements for which the predicate returns True removed; the remaining elements are returned unfiltered."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:n._fn("DropWhile",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(!g(e)||e.op1.isFiniteCollection!==!0)return;let n=0;for(let t of e.each())n++;return n},isFinite:e=>g(e)&&e.op1.isFiniteCollection===!0?!0:void 0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=!0;return{next:()=>{for(;;){let{value:r,done:o}=t.next();if(o)return{value:void 0,done:!0};if(i){if(Q(n([r]))==="True")continue;i=!1}return{value:r,done:!1}}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=0;for(let i of e.each())if(t+=1,t===n)return i}}},FlatMap:{description:["Map a function over a collection and concatenate the results into a single list, splicing collection-valued results and keeping scalar results as single elements."],complexity:8200,lazy:!0,signature:"(collection, function) -> list",type:e=>{let n=Pn(e[1].type.type);if(!n||n==="unknown"||n==="any")return L("list");let t=le(n);return L(`list<${q(t??n)}>`)},canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:n._fn("FlatMap",[t,i])},evaluate:(e,{engine:n,materialization:t})=>{if(!t)return;let i=n._fn("FlatMap",e);if(e[0].isFiniteCollection)return n._fn("List",Array.from(i.each()))},collection:{isLazy:e=>!0,count:e=>g(e)&&e.op1.isEmptyCollection===!0?0:void 0,isEmpty:e=>g(e)&&e.op1.isEmptyCollection===!0?!0:void 0,isFinite:e=>g(e)&&e.op1.isEmptyCollection===!0?!0:void 0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=null;return{next:()=>{for(;;){if(i){let a=i.next();if(!a.done)return{value:a.value,done:!1};i=null}let{value:r,done:o}=t.next();if(o)return{value:void 0,done:!0};let s=n([r])??e.engine.Nothing;if(s.isCollection)i=s.each();else return{value:s,done:!1}}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=0;for(let i of e.each())if(t+=1,t===n)return i}}},Join:{description:["Join the elements of some collections into a flat collection."],complexity:8200,signature:"(collection*) -> collection",type:Dd,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=0;for(let t of e.ops){let i=t.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;n+=i}return n},contains:(e,n)=>g(e)?e.ops.some(t=>t.contains(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.ops.map(i=>i.each()),t=0;return{next:()=>{for(;;){let{value:i,done:r}=n[t].next();if(!r)return{value:i,done:!1};if(t+=1,t>=n.length)return{value:void 0,done:!0}}}}},at:(e,n)=>{if(!(typeof n!="number"||!g(e))){if(n<0){let t=0;for(let i of e.ops){let r=i.count;if(r===void 0||!Number.isFinite(r))return;t+=r}n=t+n+1}if(!(n<1))for(let t of e.ops){let i=t.count;if(i===void 0)return;if(n<=i)return t.at(n);n-=i}}}}},Append:{description:["Add an element to the end of a collection."],complexity:8200,signature:"(collection, value) -> collection",type:e=>Dd([e[0]]),collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Number.isFinite(n)?n+1:1/0},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},isEmpty:e=>!1,contains:(e,n)=>g(e)?e.op1.contains(n)||e.op2.isSame(n):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.each(),t=!1;return{next:()=>{let{value:i,done:r}=n.next();return r?t?{value:void 0,done:!0}:(t=!0,{value:e.op2,done:!1}):{value:i,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||!Number.isFinite(t))return;let i=t+1;if(n<0&&(n=i+n+1),!(n<1)){if(n<=t)return e.op1.at(n);if(n===i)return e.op2}}}},At:{description:["Access an element of an indexed collection.","If the index is negative, it is counted from the end.","Multiple indices can be provided to access nested collections (e.g., matrices).","If the index is a finite collection of booleans, returns the elements where the mask is True.","If the index is a finite collection of integers, returns the elements at those indices."],complexity:8200,signature:"(value: indexed_collection | dictionary, index: (number|string|boolean|indexed_collection)+) -> unknown",type:e=>{let n=e[0],t=n.type.type;if(typeof t=="string"){if(t==="dictionary"||t==="record")return"any"}else{if(t.kind==="dictionary")return t.values;if(t.kind==="record"){let i=e[1];if(i&&ne(i)){let r=t.elements[i.string];if(r)return r}return ve(...Object.values(t.elements))}else if(t.kind==="tuple"){let i=e[1];if(e.length===2&&i?.isInteger===!0){let r=t.elements.length,o=i.re;if(typeof o=="number"&&Number.isFinite(o)){let s=o<0?r+o+1:o;if(s>=1&&s<=r)return t.elements[s-1].type}}}}return n.operatorDefinition?.collection?.elttype?.(n)??le(t)??"any"},canonical:(e,{engine:n})=>{let t=yt(n,e,c1,!1,!1);if(!t)return n._fn("At",e);let i=[...t],r=e[0],o=r?.type.type;return r?.isValid&&i[0]?.operator==="Error"&&(r.type.matches("number")&&!ws(r)||f1(r)||typeof o!="string"&&o?.kind==="broadcastable"||r.type.type==="value")&&(i[0]=r),n._fn("At",i)},evaluate:(e,{engine:n})=>{let t=e[0],i=1;for(;e[i];){let r=e[i];if(Dn(t)){if(!ne(r))return;t=t.get(r.string)??n.Nothing,i+=1;continue}let s=t.baseDefinition?.collection?.at;if(!s)return;let a=ne(r)?r.string:void 0;if(a!==void 0){t=s(t,a)??n.Nothing,i+=1;continue}if(r.isCollection&&r.isFiniteCollection){let l=Array.from(r.each()),c=l.every(d=>{let p=Q(d);return p==="True"||p==="False"}),f=[];if(c)l.forEach((d,p)=>{if(Q(d)!=="True")return;let h=s(t,p+1);h!==void 0&&f.push(h)});else for(let d of l){let p=d.re;if(!Number.isInteger(p))return;let h=t.at(p);h!==void 0&&f.push(h)}t=n._fn("List",f),i+=1;continue}let u=r.re;if(!Number.isInteger(u))return;t=t.at(u)??n.Nothing,i+=1}return t}},Take:{description:["Return `n` elements from a collection."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${q(le(e.type.type)??"any")}>`,collection:{isLazy:e=>!0,count:ya,isEmpty:e=>{if(!g(e))return;let[n,t]=e.ops;if(n.isEmptyCollection)return!0;if(n.isFiniteCollection===!1)return!1;let i=Math.max(0,ee(t)??0);if(n.isEmptyCollection===!1&&i>=1)return!1;let r=n.count;if(r!==void 0)return Number.isFinite(i)?Math.min(r,i)===0:!1},isFinite:e=>{if(!g(e))return;let n=ee(e.op2);if(n!==null&&n<=0)return!0;let t=ya(e);return t!==void 0&&Number.isFinite(t)?!0:e.op1.isFiniteCollection},iterator:w1,at:(e,n)=>{if(typeof n!="number"||n===0||!g(e))return;let t=Math.max(0,ee(e.op2)??0);if(t===0)return;if(n>0)return n>t?void 0:e.op1.at(n);let i=ya(e);if(!(i===void 0||i===0)&&!(n<-i))return e.op1.at(i+n+1)}}},Drop:{description:["Return the collection without the first n elements."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${q(le(e.type.type)??"any")}>`,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;if(n.isEmptyCollection)return 0;let r=ee(t)??0;return r>=i?0:Math.max(0,i-r)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let[n,t]=e.ops,i=ee(t)??0;if(i<=0)return n.each();let r=n.count,o=i+1;return{next:()=>{if(r!==void 0&&o>r)return{value:void 0,done:!0};let s=n.at(o++);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let[t,i]=e.ops,r=ee(i)??0;if(r<=0)return t.at(n);if(n<0){let o=t.count;return o!==void 0&&-n>o-r?void 0:t.at(n)}if(!(n<1))return t.at(n+r)}}},First:{description:"The first element of a collection.",complexity:8200,signature:"(any) -> any",type:([e])=>jt(e,1),evaluate:([e],{engine:n})=>Jn(e,1,n)},Second:{description:"The second element of a collection.",complexity:8200,signature:"(any) -> any",type:([e])=>jt(e,2),evaluate:([e],{engine:n})=>Jn(e,2,n)},Third:{description:"The third element of a collection.",complexity:8200,signature:"(any) -> any",type:([e])=>jt(e,3),evaluate:([e],{engine:n})=>Jn(e,3,n)},PointX:{description:"The x-coordinate of a point, broadcasting over a list of points.",complexity:8200,signature:"(any) -> any",type:([e])=>ga(e,1),evaluate:([e],{engine:n,numericApproximation:t})=>ba(e,1,n,t??!1)},PointY:{description:"The y-coordinate of a point, broadcasting over a list of points.",complexity:8200,signature:"(any) -> any",type:([e])=>ga(e,2),evaluate:([e],{engine:n,numericApproximation:t})=>ba(e,2,n,t??!1)},PointZ:{description:"The z-coordinate of a point, broadcasting over a list of points.",complexity:8200,signature:"(any) -> any",type:([e])=>ga(e,3),evaluate:([e],{engine:n,numericApproximation:t})=>ba(e,3,n,t??!1)},Last:{description:"The last element of a collection.",complexity:8200,signature:"(collection) -> any",type:([e])=>jt(e,-1),evaluate:([e],{engine:n})=>Jn(e,-1,n)},Rest:{description:["Return the collection without the first element.","If the collection has only one element, return an empty collection."],complexity:8200,signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isEmpty:e=>{if(!g(e))return;if(e.op1.isEmptyCollection)return!0;let n=e.op1.count;if(n!==void 0)return n<=1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1,t=n.count,i=2;return{next:()=>{if(t!==void 0&&i>t)return{value:void 0,done:!0};let r=n.at(i);return r===void 0?{value:void 0,done:!0}:(i+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(n>0?n+1:n)}}},Most:{complexity:8200,description:["Return the collection without the last element.","If the collection has only one element, return an empty collection."],signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},isEmpty:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return n<=1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=1)return{next:()=>({value:void 0,done:!0})};let t=1,i=n-1;return{next:()=>t>i?{value:void 0,done:!0}:{value:e.op1.at(t++),done:!1}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t!==void 0&&(n<1&&(n=t+1+n),!(n<1||n>t-1)))return e.op1.at(n)}}},Slice:{description:["Return a range of elements from an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: indexed_collection, start: number, end: number) -> list",type:([e])=>L(`list<${q(le(e.type.type)??"any")}>`),collection:{isLazy:e=>!0,count:e=>{let n=lo(e);if(n)return Math.max(0,n.end-n.start+1)},isFinite:e=>{let n=lo(e);if(n)return Number.isFinite(Math.max(0,n.end-n.start+1))},at:(e,n)=>{if(typeof n!="number")return;let t=lo(e);if(!t||!g(e))return;let i=t.end-t.start+1;if(!(i<=0)){if(n<0){if(!Number.isFinite(i))return;n=i+1+n}if(!(n<1||n>i))return e.op1.at(t.start+n-1)}},iterator:e=>{let n=lo(e);if(!n||!g(e))return{next:()=>({value:void 0,done:!0})};let t=n.start,i=n.end;return{next:()=>{if(t>i)return{value:void 0,done:!0};let r=e.op1.at(t);return r===void 0?{value:void 0,done:!0}:(t+=1,{value:r,done:!1})}}}}},Reverse:{description:"Reverse the order of the elements of an indexed collection.",complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:([e])=>e.type,collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=-1;return{next:()=>{let t=e.op1.at(n);return t===void 0?{value:void 0,done:!0}:(n-=1,{value:t,done:!1})}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(-n)}}},Insert:{description:["Return a copy of the indexed collection with `value` inserted before the 1-based `index`.","`index` may range from 1 to n+1 (n+1 appends). A negative index counts from the end, with -1 appending at the end (Elixir semantics).","An out-of-range, zero, or non-integer index leaves the expression unevaluated."],complexity:8200,signature:"(indexed_collection, integer, value) -> list",type:e=>L(`list<${q(ve(le(e[0].type.type)??"any",e[2].type.type))}>`),evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=e.count;if(r===void 0||r>on)return;let o=ee(n);if(o===null||o===0)return;let s=Array.from(e.each()),a=s.length,u;if(o>0){if(o>a+1)return;u=o-1}else{if(o<-(a+1))return;u=a+1+o}return i.function("List",[...s.slice(0,u),t,...s.slice(u)])},collection:{isLazy:e=>!0,count:e=>{if(!g(e)||Gi(e)===void 0)return;let n=e.op1.count;if(n!==void 0)return Number.isFinite(n)?n+1:1/0},isEmpty:e=>Gi(e)===void 0?void 0:!1,isFinite:e=>{if(g(e)&&Gi(e)!==void 0)return e.op1.isFiniteCollection},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=Gi(e);if(t!==void 0&&!(n<1))return n<t?e.op1.at(n):n===t?e.op3:e.op1.at(n-1)},iterator:e=>{if(!g(e))return;let n=Gi(e);if(n===void 0)return;let t=e.op1.each(),i=e.op3,r=0,o=!1;return{next:()=>{if(!o&&r===n-1)return o=!0,{value:i,done:!1};let{value:s,done:a}=t.next();return a?o?{value:void 0,done:!0}:(o=!0,{value:i,done:!1}):(r+=1,{value:s,done:!1})}}}}},DeleteAt:{description:["Return a copy of the indexed collection with the element at the 1-based `index` removed.","A negative index counts from the end. An out-of-range, zero, or non-integer index leaves the expression unevaluated."],complexity:8200,signature:"(indexed_collection, integer) -> list",type:e=>L(`list<${q(le(e[0].type.type)??"any")}>`),evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=e.count;if(i===void 0||i>on)return;let r=ee(n);if(r===null)return;let o=Array.from(e.each()),s=o.length,a;if(r>0){if(r>s)return;a=r-1}else if(r<0){if(r<-s)return;a=s+r}else return;return t.function("List",[...o.slice(0,a),...o.slice(a+1)])},collection:{isLazy:e=>!0,count:e=>{if(!g(e)||ln(e)===void 0)return;let n=e.op1.count;if(n!==void 0)return Number.isFinite(n)?n-1:1/0},isEmpty:e=>{if(!g(e)||ln(e)===void 0)return;let n=e.op1.count;if(n!==void 0)return Number.isFinite(n)?n-1<=0:!1},isFinite:e=>{if(g(e)&&ln(e)!==void 0)return e.op1.isFiniteCollection},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=ln(e);if(t!==void 0&&!(n<1))return n<t?e.op1.at(n):e.op1.at(n+1)},iterator:e=>{if(!g(e))return;let n=ln(e);if(n===void 0)return;let t=e.op1.each(),i=0;return{next:()=>{for(;;){let{value:r,done:o}=t.next();if(o)return{value:void 0,done:!0};if(i+=1,i!==n)return{value:r,done:!1}}}}}}},ReplaceAt:{description:["Return a copy of the indexed collection with the element at the 1-based `index` replaced by `value`.","A negative index counts from the end. An out-of-range, zero, or non-integer index leaves the expression unevaluated."],complexity:8200,signature:"(indexed_collection, integer, value) -> list",type:e=>L(`list<${q(ve(le(e[0].type.type)??"any",e[2].type.type))}>`),evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=e.count;if(r===void 0||r>on)return;let o=ee(n);if(o===null)return;let s=Array.from(e.each()),a=s.length,u;if(o>0){if(o>a)return;u=o-1}else if(o<0){if(o<-a)return;u=a+o}else return;let l=[...s];return l[u]=t,i.function("List",l)},collection:{isLazy:e=>!0,count:e=>{if(g(e)&&ln(e)!==void 0)return e.op1.count},isEmpty:e=>{if(!g(e)||ln(e)===void 0)return;let n=e.op1.count;if(n!==void 0)return Number.isFinite(n)?n<=0:!1},isFinite:e=>{if(g(e)&&ln(e)!==void 0)return e.op1.isFiniteCollection},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=ln(e);if(t!==void 0&&!(n<1))return n===t?e.op3:e.op1.at(n)},iterator:e=>{if(!g(e))return;let n=ln(e);if(n===void 0)return;let t=e.op1.each(),i=e.op3,r=0;return{next:()=>{let{value:o,done:s}=t.next();return s?{value:void 0,done:!0}:(r+=1,{value:r===n?i:o,done:!1})}}}}},RotateLeft:{description:"Rotate the elements of the collection to the left by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=ee(e.op2)??1;t=(t%n+n)%n;let i=1,r=n;return{next:()=>{if(i===r+1)return{value:void 0,done:!0};i+=1;let o=e.op1.at((i-1-1+t)%n+1);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=ee(e.op2)??1;return i=(i%t+t)%t,e.op1.at((n-1+i)%t+1)}}},RotateRight:{description:"Rotate the elements of the collection to the right by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=ee(e.op2)??1;t=(t%n+n)%n;let i=1;return{next:()=>{if(i===n+1)return{value:void 0,done:!0};i+=1;let r=(i-1-1+(n-t))%n+1,o=e.op1.at(r);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=ee(e.op2)??1;i=(i%t+t)%t;let r=(n-1+(t-i))%t+1;return e.op1.at(r)}}},IndexOf:{description:"Return the 1-based index of the first occurrence of value in collection, or 0 if not found.",complexity:8200,signature:"(collection, any) -> integer",evaluate:([e,n],{engine:t})=>{let i=e.indexWhere(r=>r.isSame(n))??void 0;return t.number(i??0)}},IndexWhere:{description:"Return the 1-based index of the first element satisfying the predicate, or 0 if not found.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=X(n);if(!i)return t.Zero;let r=e.indexWhere(o=>{let s=Q(i([o]));if(s==="True")return!0;if(s==="False")return!1;throw new Error(`Filter predicate must return "True" or "False". ${Qe(n)}`)})??void 0;return t.number(r??0)}},Find:{description:"Return the first element of the collection satisfying the predicate, or Nothing if none found.",complexity:8200,signature:"(collection, function) -> any",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{let i=X(n);if(!i)return t.Nothing;for(let r of e.each()){let o=Q(i([r]));if(o!=="False"){if(o==="True")return r;throw new Error(`Filter predicate must return "True" or "False". ${Qe(n)}`)}}return t.Nothing}},CountIf:{description:"Return the number of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=X(n);if(!i)return t.Zero;if(e.isFiniteCollection!==!0)return;let r=0;for(let o of e.each()){let s=Q(i([o]));if(s!=="False")if(s==="True")r++;else throw new Error(`Filter predicate must return "True" or "False". ${Qe(n)}`)}return t.number(r)}},Position:{description:"Return a list of indexes of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> list<integer>",type:()=>"list<integer>",evaluate:([e,n],{engine:t})=>{let i=X(n);if(!i)return t.function("List",[]);if(e.isFiniteCollection!==!0)return;let r=[],o=1;for(let s of e.each()){let a=Q(i([s]));if(a==="True")r.push(t.number(o));else if(a!=="False")throw new Error(`Filter predicate must return "True" or "False". ${Qe(n)}`);o++}return t.function("List",r)}},Ordering:{description:"Return the indexes that would sort the collection.",complexity:8200,signature:"(indexed_collection, function?) -> list<integer>",evaluate:([e,n],{engine:t})=>{if(e.isFiniteCollection!==!0)return;let i=Od(e,n);return i?t.function("List",i):t.function("List",[])}},Sort:{description:"Return the elements of the collection sorted according to the given comparison function.",complexity:8200,signature:"(indexed_collection, function?) -> indexed_collection",type:([e])=>`list<${q(le(e.type.type)??"any")}>`,evaluate:([e,n],{engine:t})=>{if(e.isFiniteCollection!==!0)return;let i=Od(e,n);if(i)return t.function("List",i.map(r=>e.at(r)))}},MaxBy:{description:"Return the element of the collection that maximizes the given key function.",complexity:8200,lazy:!0,signature:"(collection, function) -> value",canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:n._fn("MaxBy",[t,i])},type:e=>le(e[0].type.type)??"any",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=X(n);return Rn(uo(e,i,t,"max","element"),t._timeRemaining)}},MinBy:{description:"Return the element of the collection that minimizes the given key function.",complexity:8200,lazy:!0,signature:"(collection, function) -> value",canonical:(e,{engine:n})=>{let t=Ne(n,e[0]),i=me(e[1]);return!t.isValid||!i?null:n._fn("MinBy",[t,i])},type:e=>le(e[0].type.type)??"any",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=X(n);return Rn(uo(e,i,t,"min","element"),t._timeRemaining)}},ArgMax:{description:"Return the 1-based index of the element that maximizes the given key function (or the element itself when no key is given).",complexity:8200,lazy:!0,signature:"(indexed_collection, function?) -> integer",canonical:(e,{engine:n})=>{let t=Bd(n,"ArgMax",e);if(t!==void 0)return t;let i=Ne(n,e[0],"indexed_collection");if(!i.isValid)return null;if(e[1]===void 0)return n._fn("ArgMax",[i]);let r=me(e[1]);return r?n._fn("ArgMax",[i,r]):null},type:()=>"integer",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=n?X(n):void 0;return Rn(uo(e,i,t,"max","index"),t._timeRemaining)}},ArgMin:{description:"Return the 1-based index of the element that minimizes the given key function (or the element itself when no key is given).",complexity:8200,lazy:!0,signature:"(indexed_collection, function?) -> integer",canonical:(e,{engine:n})=>{let t=Bd(n,"ArgMin",e);if(t!==void 0)return t;let i=Ne(n,e[0],"indexed_collection");if(!i.isValid)return null;if(e[1]===void 0)return n._fn("ArgMin",[i]);let r=me(e[1]);return r?n._fn("ArgMin",[i,r]):null},type:()=>"integer",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=n?X(n):void 0;return Rn(uo(e,i,t,"min","index"),t._timeRemaining)}},Shuffle:{description:"Randomize the order of the elements in the collection. With an optional `seed` argument, the shuffle is deterministic.",complexity:8200,signature:"(indexed_collection, real?) -> indexed_collection",type:([e])=>`list<${q(le(e.type.type)??"any")}>`,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=Array.from(e.each()),r=n?.re;if(r!==void 0&&!Number.isNaN(r)){let o=r;for(let s=i.length-1;s>0;s--){let a=Math.floor(wd(o)*(s+1));[i[s],i[a]]=[i[a],i[s]],o=Md(o)}}else for(let o=i.length-1;o>0;o--){let s=Math.floor(t._random()*(o+1));[i[o],i[s]]=[i[s],i[o]]}return t.function("List",i)}},Tabulate:{description:"Create a collection by applying a function to each index in the specified dimensions.",keywords:["table"],complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> indexed_collection",type:e=>{if(e.length<=1)return L("indexed_collection");if(e.length===2){let n=Pn(e[0].type.type)??"any";return L(`indexed_collection<${q(n)}>`)}return L("indexed_collection<list>")},canonical:(e,{engine:n})=>{let t=me(e[0]);return t?e[2]?n._fn("Tabulate",[t,bt(n,e[1]?.canonical,"integer"),bt(n,e[2]?.canonical,"integer")]):n._fn("Tabulate",[t,bt(n,e[1]?.canonical,"integer")]):null},collection:{isLazy:()=>!0,count:e=>xa(e),isEmpty:e=>{let n=xa(e);return n===void 0?void 0:n===0},isFinite:e=>{let n=xa(e);return n===void 0?void 0:Number.isFinite(n)},iterator:k1,at:(e,n)=>M1(e,n)}},Table:{description:["An alias for `Tabulate` (the preferred name) that additionally accepts","Mathematica-style iterator specs, e.g. `Table(i^2, {i, 1, n})` or","`Table(i, {i, lo, hi, step})`."],complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",canonical:(e,{engine:n})=>{let t=e.slice(1);if(!t.some(o=>g(o,"Set")))return n.function("Tabulate",e);let i=[];for(let o of t){if(!g(o,"Set"))return null;let s=o.ops??[],a=s[0];if(!a||!S(a)||s.length<3||s.length>4)return null;i.push({index:a,lo:s[1],hi:s[2],step:s.length===4?s[3]:void 0})}if(i.every(o=>o.step===void 0&&o.lo.isSame(1))){let o=n._fn("Function",[e[0],...i.map(s=>s.index)],{canonical:!1});return n.function("Tabulate",[o,...i.map(s=>s.hi)])}let r=e[0];for(let o=i.length-1;o>=0;o--){let s=i[o],a=n._fn("Range",s.step?[s.lo,s.hi,s.step]:[s.lo,s.hi],{canonical:!1}),u=n._fn("Function",[r,s.index],{canonical:!1});r=n._fn("Map",[a,u],{canonical:!1})}return r.canonical}},Tally:{description:"Return a tuple with the unique elements of the collection and their respective counts.",complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:([e],{engine:n})=>{let t=e.type.type;return t==="string"?L("tuple<list<string>, list<integer>>"):L(`tuple<list<${q(le(t)??"any")}>, list<integer>>`)},evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Pd(e[0]);return n.tuple(n.function("List",t),n.function("List",i))}},Unique:{description:"Return a list of the unique elements of the collection.",complexity:8200,signature:"(collection) -> list",type:([e])=>`list<${q(le(e.type.type)??"any")}>`,evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Pd(e[0]);return n.function("List",t)}},Dedup:{description:["Return the collection with consecutive duplicate elements collapsed to a single element.","Only immediately-adjacent equal elements are removed; unlike `Unique`, a value that recurs after a different element is kept."],complexity:8200,lazy:!0,signature:"(collection) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=Ne(n,e[0]);return t.isValid?n._fn("Dedup",[t]):null},collection:{isLazy:e=>!0,count:e=>{if(!g(e)||e.op1.isFiniteCollection!==!0)return;let n=0;for(let t of e.each())n++;return n},isFinite:e=>g(e)&&e.op1.isFiniteCollection===!0?!0:void 0,isEmpty:e=>g(e)?e.op1.isEmptyCollection:void 0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.each(),t,i=!1;return{next:()=>{for(;;){let{value:r,done:o}=n.next();if(o)return{value:void 0,done:!0};if(!(i&&t.isSame(r)))return t=r,i=!0,{value:r,done:!1}}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=0,i,r=!1;for(let o of e.op1.each())if(!(r&&i.isSame(o))&&(i=o,r=!0,t+=1,t===n))return o}}},Partition:{description:["Partition a collection into consecutive chunks each of size `n`; the trailing chunk may be shorter when `n` does not divide the length.","With a third argument `step`, produce sliding windows of length `n` whose starts are `step` apart, keeping only complete windows.","With a predicate function instead of an integer, split into two groups: elements for which the predicate is true, and those for which it is false.","Asymmetry: with no `step`, the trailing partial chunk is included; with an explicit `step`, only complete windows are returned.","See `Chunk` for splitting into a given number of nearly-equal groups."],wikidata:"Q381060",complexity:8200,signature:"(collection, integer | function, integer?) -> list",type:([e])=>`list<list<${q(le(e.type.type)??"any")}>>`,evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=ee(n);if(r!==null){if(r<=0)return;let u=e.count;if(u===void 0||u>on)return;let l=Array.from(e.each()),c=[];if(t!==void 0){let f=ee(t);if(f===null||f<=0)return;for(let d=0;d+r<=l.length;d+=f)c.push(i.function("List",l.slice(d,d+r)));return i.function("List",c)}for(let f=0;f<l.length;f+=r)c.push(i.function("List",l.slice(f,f+r)));return i.function("List",c)}let o=X(n);if(!o)return;let s=[],a=[];for(let u of e.each()){let l=Q(o([u]));if(l==="True")s.push(u);else if(l==="False")a.push(u);else throw new Error(`Partition predicate must return "True" or "False". ${Qe(n)}`)}return i.function("List",[i.function("List",s),i.function("List",a)])},collection:$c(e=>{if(!g(e))return;let n=ee(e.op2);if(!(n===null||n<=0)){if(e.nops>=3){let t=ee(e.op3);return t===null||t<=0?void 0:{src:e.op1,size:n,step:t,keepPartial:!1}}return{src:e.op1,size:n,step:n,keepPartial:!0}}})},Chunk:{description:"Split the collection into `k` nearly equal-sized groups. See `Partition` for splitting into fixed-size chunks.",complexity:8200,signature:"(collection, integer) -> list<list>",evaluate:([e,n],{engine:t})=>{let i=ee(n);if(!e.isFiniteCollection||i===null||i<=0)return;let r=Array.from(e.each()),o=[],s=Math.ceil(r.length/i);for(let a=0;a<i;a++){let u=r.slice(a*s,(a+1)*s);o.push(t.function("List",u))}return t.function("List",o)}},ChunkBy:{description:["Split the collection into maximal runs of consecutive elements over which the key function yields the same value.","Returns a list of lists. Unlike `GroupBy`, only adjacent elements are grouped, so a key value that recurs after a different run starts a new chunk."],complexity:8200,signature:"(collection, function) -> list<list>",type:e=>L(`list<list<${q(le(e[0].type.type)??"any")}>>`),evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=e.count;if(i===void 0||i>on)return;let r=X(n);if(!r)return;let o=[],s,a=[];for(let u of e.each()){let l=r([u])??t.Nothing;a.length===0?(a=[u],s=l):s.isSame(l)?a.push(u):(o.push(a),a=[u],s=l)}return a.length>0&&o.push(a),t.function("List",o.map(u=>t.function("List",u)))},collection:{isLazy:e=>!0,count:e=>{if(!g(e)||e.op1.isFiniteCollection!==!0)return;let n=0;for(let t of e.each())n++;return n},isFinite:e=>g(e)&&e.op1.isFiniteCollection===!0?!0:void 0,isEmpty:e=>g(e)?e.op1.isEmptyCollection:void 0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.engine,i=e.op1.each(),r,o,s=!1;return{next:()=>{if(s&&r===void 0)return{value:void 0,done:!0};let a,u;if(r!==void 0)a=[r],u=o,r=void 0,o=void 0;else{let l=i.next();if(l.done)return s=!0,{value:void 0,done:!0};a=[l.value],u=n([l.value])??t.Nothing}for(;;){let{value:l,done:c}=i.next();if(c){s=!0;break}let f=n([l])??t.Nothing;if(u.isSame(f))a.push(l);else{r=l,o=f;break}}return{value:t.function("List",a),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=0;for(let i of e.each())if(t+=1,t===n)return i}}},GroupBy:{description:["Partition the collection into a dictionary of lists based on the key returned by the function."],complexity:8200,signature:"(collection, function) -> dictionary<list>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=X(n);if(!i)return;let r={};for(let o of e.each()){let s=i([o])??t.Nothing;if(g(s)){let u=t.lookupDefinition(s.operator);if(u!==void 0&&"value"in u&&u.value?.inferredType===!0)throw new Error(`Unknown function "${s.operator}" in GroupBy key function. ${Qe(s)}`)}let a=(S(s)?s.symbol:void 0)??(ne(s)?s.string:void 0)??s.toString();a in r||(r[a]=[]),r[a].push(o)}return t.function("Dictionary",Object.entries(r).map(([o,s])=>t._fn("Tuple",[t.string(o),t.function("List",s)])))}},Zip:{description:"Combine multiple collections element-wise into a list of tuples. The result has the length of the shortest input.",complexity:8200,signature:"(indexed_collection+) -> list",collection:{isLazy:e=>!0,count:A1,isFinite:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isFiniteCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},isEmpty:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isEmptyCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},iterator:e=>{if(!g(e)||e.nops===0)return{next:()=>({value:void 0,done:!0})};let n=e.ops.map(t=>t.each());return{next:()=>{let t=[];for(let i of n){let{value:r,done:o}=i.next();if(o||r===void 0)return{value:void 0,done:!0};t.push(r)}return{value:e.engine.tuple(...t),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e)||e.nops===0)return;let t=e.ops.map(i=>i.at(n));if(!t.some(i=>i===void 0))return e.engine.tuple(...t)}}},Iterate:{description:"Produce an infinite sequence by repeatedly applying a function to the previous value, starting with an initial value.",complexity:8200,signature:"((index: integer, acc:any) -> any, initial: any?) -> list",canonical:([e,n],{engine:t})=>{let i=me(e);if(!i)return null;let r=n?.canonical;return r?t._fn("Iterate",[i,r]):t._fn("Iterate",[i])},collection:{isLazy:e=>!0,count:()=>1/0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op2??e.engine.Nothing,i=0;return{next:()=>(i+=1,t=n([e.engine.number(i),t])??e.engine.Nothing,{value:t,done:!1})}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=X(e.op1);if(!t)return;let i=e.op2??e.engine.Nothing;for(let r=1;r<n;r++)i=t([e.engine.number(r),i])??e.engine.Nothing;return i}}},Repeat:{description:"Produce a sequence by repeating a single value. With 1 argument, returns an infinite sequence; with 2 arguments (value, count), returns a finite list of `count` copies.",complexity:8200,signature:"(value: any, count: integer?) -> list",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let t=ee(e[1]);if(t===null)return;let i=Math.max(0,t);if(!(i>n.maxCollectionSize))return n._fn("List",Array(i).fill(e[0]))},collection:{isLazy:e=>g(e)&&e.ops?.length===1,count:e=>{if(g(e)){if(e.ops?.length===2){let n=ee(e.op2);return n!==null?Math.max(0,n):void 0}return 1/0}},isEmpty:e=>{if(g(e)){if(e.ops?.length===2){let n=ee(e.op2);return n!==null?n<=0:void 0}return!1}},isFinite:e=>g(e)&&e.ops?.length===2,contains:(e,n)=>{if(!g(e))return!1;if(e.ops?.length===2){let t=ee(e.op2);if(t!==null&&t<=0)return!1}return e.op1.isSame(n)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.ops?.length===2){let n=ee(e.op2);if(n===null)return{next:()=>({value:void 0,done:!0})};let t=Math.max(0,n),i=0;return{next:()=>i++<t?{value:e.op1,done:!1}:{value:void 0,done:!0}}}return{next:()=>({value:e.op1,done:!1})}},at:(e,n)=>{if(g(e)&&typeof n=="number"){if(e.ops?.length===2){let t=ee(e.op2),i=t!==null?Math.max(0,t):0;if(n<1||n>i)return}else if(n<1)return;return e.op1}}}},Cycle:{description:"Produce an infinite sequence by cycling through the elements of a finite collection.",complexity:8200,signature:"(list) -> list",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.isEmptyCollection?0:1/0},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isEmptyCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.op1.count;return t===void 0||t===0?{next:()=>({value:void 0,done:!0})}:{next:()=>{let i=(n-1)%t+1,r=e.op1.at(i);return r===void 0?{value:void 0,done:!0}:(n+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=e.op1.count;if(t===void 0||t===0)return;let i=(n-1)%t+1;return e.op1.at(i)}}},Fill:{description:"Produce a 2D list (matrix) by applying a function to each pair of row and column indexes.",complexity:8200,signature:"(function, tuple) -> list",collection:{isLazy:e=>!0,count:e=>!g(e)||!g(e.op2)?void 0:e.op2.ops.map(t=>ee(t)??0)[0]??0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=X(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};if(!g(e.op2))return{next:()=>({value:void 0,done:!0})};let t=e.op2.ops.map(a=>ee(a)??0),i=t[0]??0,r=t[1]??0,o=i,s=1;return{next:()=>{if(s===o+1)return{value:void 0,done:!0};s+=1;let a=[];for(let u=1;u<=r;u++)a.push(n([e.engine.number(s-1),e.engine.number(u)])??e.engine.Nothing);return{value:e.engine.function("List",a),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=X(e.op1);if(!t||!g(e.op2))return;let i=e.op2.ops.map(u=>ee(u)??0),r=i[0]??0,o=i[1]??0;if(n>r*o)return;let s=Math.ceil(n/o),a=(n-1)%o+1;return t([e.engine.number(s),e.engine.number(a)])??e.engine.Nothing}}},ListFrom:{description:"Create a list from the elements of a collection.",complexity:8200,signature:"(value*) -> list",type:e=>{if(e.length===0)return"list";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"list";n=ve(n,le(t.type.type)??n)}return L(`list<${q(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("List",t)}},SetFrom:{description:"Create a set from the elements of a collection.",complexity:8200,signature:"(value*) -> set",type:e=>{if(e.length===0)return"set";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"set";n=ve(n,le(t.type.type)??n)}return L(`set<${q(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("Set",t)}},TupleFrom:{description:"Create a tuple from the elements of a collection.",complexity:8200,signature:"(value*) -> tuple",evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.tuple(...t)}},DictionaryFrom:{description:"Create a dictionary from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> dictionary",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Record"))return n.function("Dictionary",[...e.ops]);if(!e.isFiniteCollection)return;let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,o=i.op2;if(!ne(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,o))}return n.function("Dictionary",t)}},RecordFrom:{description:"Create a record from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> record",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Dictionary"))return n.function("Record",[...e.ops]);if(!e.isFiniteCollection)return;let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,o=i.op2;if(!ne(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,o))}return n.function("Record",t)}}};function Gi(e){if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=ee(e.op2);if(!(t===null||t===0)){if(t>0)return Number.isFinite(n)&&t>n+1?void 0:t;if(Number.isFinite(n)&&!(t<-(n+1)))return n+2+t}}function ln(e){if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=ee(e.op2);if(!(t===null||t===0)){if(t>0)return Number.isFinite(n)&&t>n?void 0:t;if(Number.isFinite(n)&&!(t<-n))return n+t+1}}function qn(e){return g(e)?e.ops.some(n=>Number.isNaN(n.re)):!1}function ao(e){return e===void 0||S(e)&&e.symbol==="Nothing"?!1:Number.isNaN(e.re)}function Rd(e,n,t,i){let r=t?X(t):void 0,o=e==="Any"?"True":"False",s=e==="Any"?"False":"True",a=e==="Any"?i.True:i.False,u=e==="Any"?i.False:i.True,l=!1;return Rn((function*(){for(let c of n.each()){let f=r?r([c]):c.evaluate(),d=Q(f);if(d===o)return a;d!==s&&(l=!0),yield}return l?void 0:u})(),i._timeRemaining)}function An(e){if(!g(e))return[1,0,0];if(e.nops===0)return[1,0,0];let n=e.op1.re;if(e.nops===1)return[1,n,1];let t=e.op2.re;return e.nops===2?[n,t,t>=n?1:-1]:[n,t,e.op3.re]}function N1(e,{engine:n}){let t=e[0];if(e.length===1&&g(t,"Matrix")){let[r,o,s]=t.ops;if(!o||ne(o)&&o.string==="..")return s?n._fn("Matrix",[r,n.string("[]"),s]):n._fn("Matrix",[r,o])}let i=e.map(r=>g(r,"Delimiter")?g(r.op1,"Sequence")?n._fn("List",kd(n,r.op1.ops)):n._fn("List",[r.op1?.canonical??n.Nothing]):r.canonical);return n._fn("List",i)}function T1(e,{engine:n}){if(e=e.map(r=>r.canonical),cn(e)!==null)return n._fn("Set",[...e]);let t=[],i=r=>t.some(o=>o.isSame(r));for(let r of e)i(r)||t.push(r);return n._fn("Set",t)}function cn(e){if(e.length!==2)return null;let[n,t]=e,i=r=>r.isCanonical?r:r.canonical;if(g(t,"Element")&&t.nops>=2){if(!S(t.op1))return null;let r=t.op1.symbol;if(!n.has(r))return null;let o=t.nops>=3&&Q(t.op3)!=="Nothing"?t.op3:void 0;return{body:n,variable:r,domain:t.op2,condition:o}}if(g(t,"Condition")&&t.nops>=1){let r=t.op1;if(g(n,"Element")&&n.nops===2&&S(n.op1))return{body:n.op1,variable:n.op1.symbol,domain:i(n.op2),condition:i(r)};if(g(r,"Element")&&r.nops===2&&S(r.op1)){let o=r.op1.symbol;if(n.has(o))return{body:n,variable:o,domain:i(r.op2),condition:void 0}}if(g(r,"And")){let o=r.ops.filter(a=>g(a,"Element")&&a.nops===2&&S(a.op1)&&n.has(a.op1.symbol)),s=o.length===1?o[0]:void 0;if(s&&g(s,"Element")&&S(s.op1)){let a=r.ops.filter(c=>c!==s).map(i),u=n.engine,l=a.length===0?void 0:a.length===1?a[0]:u._fn("And",a);return{body:n,variable:s.op1.symbol,domain:i(s.op2),condition:l}}}return{body:n,variable:S(n)?n.symbol:void 0,domain:void 0,condition:r}}return null}function xt(e){let{body:n,variable:t,domain:i,condition:r}=e;if(t===void 0||i===void 0)return;let o=n.engine,s=c=>da(o._fn("Element",[o.symbol(t),c,...r?[r]:[]]),o),a=s(i);if(a.status!=="success"){let c=i.evaluate();c.isSame(i)||(a=s(c))}if(a.status!=="success")return;let u=S(n)&&n.symbol===t,l=[];for(let c of a.values){let f=u?c:n.subs({[t]:c}).evaluate();l.some(d=>d.isSame(f))||l.push(f)}return l}function Vd(e,n){let t=!1;for(let i of e){if(n.isSame(i))return!0;if(F(n)&&F(i)){let r=n.isEqual(i);if(r===!0)return!0;r!==!1&&(t=!0)}else ne(n)&&ne(i)||(t=!0)}return t?void 0:!1}function _1(e,n){let t=xt(e);if(t!==void 0)return Vd(t,n);if(e.domain!==void 0&&e.variable!==void 0&&S(e.body)&&e.body.symbol===e.variable){let i=e.domain.contains(n);if(i===!1)return!1;let r=!0;if(e.condition!==void 0)if(F(n)||ne(n)){let o=e.condition.subs({[e.variable]:n}).evaluate();r=Q(o)==="True"?!0:Q(o)==="False"?!1:void 0}else r=void 0;if(r===!1)return!1;if(i===!0&&r===!0)return!0}}function Pd(e){let n=[],t=[],i=r=>{for(let o=0;o<n.length;o++)if(n[o].isSame(r))return o;return-1};for(let r of e.each()){let o=i(r);o>=0?t[o]++:(n.push(r),t.push(1))}return[n,t]}function qd(e){return e.isEmptyCollection===!0?!1:e.each().next().done===!0}function*Jd(e,n,t){let i=t;for(let r of e.each()){let o=n(i,r);if(o===null)return;yield i,i=o}return i}function Dd(e){return e.some(n=>n.type.matches("record"))?"record":e.some(n=>n.type.matches("dictionary"))?"dictionary":e.some(n=>n.type.matches("set"))?"set":"list"}function Fd(e,n){return e.operator!==n.operator?(e.operator==="Tuple"?n.type.matches("tuple"):n.type.matches("indexed_collection")&&!n.type.matches("tuple"))?void 0:!1:!g(e)||!g(n)||e.nops!==n.nops?!1:e.ops.every((t,i)=>t.isSame(n.ops[i]))}function Od(e,n=void 0){let t=e.count;if(t===void 0||!Number.isFinite(t)||t<1)return;let i=Array.from({length:t},(a,u)=>u+1),r=(a,u)=>a.isLess(u)?-1:a.isEqual(u)?0:1,o=n?X(n):void 0;if(o&&n&&I1(n)===1){let a=new Map;for(let l of i){let c=o([e.at(l)]);if(c===void 0)return;a.set(l,c)}let u=!1;return i.sort((l,c)=>{let f=zd(a.get(l),a.get(c));return f===void 0?(u=!0,0):f}),u?void 0:i}let s=o?(a,u)=>{let l=o([a,u]),c=Q(l);return c==="True"?-1:c==="False"?1:l?.isNegative?-1:l?.isSame(0)?0:1}:r;return i.sort((a,u)=>{let l=e.at(a),c=e.at(u);return s(l,c)}),i}function I1(e){let n=_c(e.type.type);if(!(!n||typeof n=="string"||n.kind!=="signature")&&!(n.variadicArg||n.optArgs&&n.optArgs.length>0))return n.args?.length}function zd(e,n){if(e.isEqual(n)===!0)return 0;if(e.isLess(n)===!0)return-1;if(n.isLess(e)===!0)return 1}function Bd(e,n,t){if(t.length!==2)return;let[i,r]=t;if(!g(i,"Function"))return;let o=r.canonical;if(!o.type.matches("set"))return;let s=me(i);return s?e._fn(n,[s,o]):null}function*uo(e,n,t,i,r){let o,s,a=0;for(let u of e.each()){a+=1;let l=n?n([u]):u;if(l===void 0)return;let c=r==="index"?t.number(a):u;if(s===void 0){s=l,o=c,yield void 0;continue}let f=zd(s,l);if(f===void 0)return;(i==="max"?f===-1:f===1)&&(s=l,o=c),yield void 0}return o}function lo(e){if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=ee(e.op2)??1;if(t<1){if(!Number.isFinite(n))return;t=n+1+t}t<1&&(t=1);let i=ee(e.op3)??n;return i<1&&(i=n+1+i),i<1&&(i=1),i>n&&(i=n),{start:t,end:i}}function Ea(e){if(e.length===0)return[];let n=[];for(let t of e)Q(t)!=="Nothing"&&(g(t,"Sequence")?n.push(...Ea([...t.ops])):ne(t)?n.push(t):t.isLazyCollection&&t.isFiniteCollection===!0?n.push(...Ea([...t.each()])):n.push(t));return n}function S1(e,n){return ne(e)?!0:F(e)?!n||!e.isExact:!1}function w1(e){if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Math.max(0,ee(e.op2)??0);if(n===0)return{next:()=>({value:void 0,done:!0})};let t=1,i=0;return{next:()=>{if(i>=Math.abs(n))return{value:void 0,done:!0};let r=e.op1.at(t);return r?(t+=1,i+=1,{value:r,done:!1}):{value:void 0,done:!0}}}}function ya(e){if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;let r=Math.max(0,ee(t)??0);return Number.isFinite(r)?Math.min(i,r):1/0}function va(e){if(!g(e))return null;let n=e.ops.slice(1).map(t=>ee(t));return n.some(t=>t===null||t<=0)?null:n}function xa(e){if(!g(e))return;if(e.ops.length<=1)return 0;let n=va(e);if(n!==null)return n[0]}function jd(e,n,t,i){if(t.length===1)return n([e.number(i)])??e.Nothing;let r=(s,a)=>{if(a===t.length)return n(s.map(l=>e.number(l)))??e.Nothing;let u=["List"];for(let l=1;l<=t[a];l++)s[a]=l,u.push(r(s,a+1));return u},o=Array(t.length).fill(0);return o[0]=i,e.expr(r(o,1))}function M1(e,n){if(typeof n!="number"||!Number.isInteger(n)||n===0||!g(e))return;let t=va(e);if(t===null||t.length===0)return;let i=X(e.op1);if(!i)return;let r=n;if(r<0&&(r=t[0]+r+1),!(r<1||r>t[0]))return jd(e.engine,i,t,r)}function*k1(e){if(!g(e))return;let n=va(e);if(n===null||n.length===0)return;let t=X(e.op1);if(!t)return;let i=e.engine;for(let r=1;r<=n[0];r++)yield jd(i,t,n,r)}function Gd(e){if(!e.some(n=>n===void 0))return e.length===0?0:Math.min(...e)}function A1(e){if(g(e))return Gd(e.ops.map(n=>n.count))}function Ud(e){e?.operator,g(e);let n=1,t=n+Mt,i,r=!0,o=e,s=o.op1;i=S(s)?s.symbol:void 0,n=Math.floor(o.op2.re),isNaN(n)&&(n=1),Number.isFinite(n)||(r=!1);let a=o.op3;return(S(a)?a.symbol:void 0)==="Nothing"||a.isInfinity?(r=!1,t=1/0):(isNaN(a.re)||(t=Math.floor(a.re??t)),Number.isFinite(t)||(r=!1)),r||(!Number.isFinite(n)&&!Number.isFinite(t)?(n=-Mt/2,t=n+Mt):Number.isFinite(n)?t=n+Mt:n=t-Mt),{index:i,lower:n,upper:t,isFinite:r}}var Hd=new WeakMap;function _a(e,n){let t=Hd.get(n);if(t!==void 0)return t;let i=C1(e,n);return Hd.set(n,i),i}function C1(e,n){let t=[],i;for(let r of n.slice(1)){if(!g(r,"MatchCase"))continue;let o=r.ops;if(o.length<2)continue;let s=o[0],a=o.length>=3,u=a?o[1]:void 0,l=o[o.length-1],c=Ta(s),f=c.map(T=>T.name),d=c.map(T=>T.key),p=u!==void 0?hi(e,[u,...f.map(T=>e.symbol(T,{canonical:!1}))]):void 0,h=hi(e,[l,...f.map(T=>e.symbol(T,{canonical:!1}))]),b={captureKeys:d,captureNames:f,hasGuard:a,guard:u,body:l,guardClosure:p,bodyClosure:h};if(g(s,"Alternatives")){let T=s.ops,_;for(let G of T)if(Ta(G).length>0){_=G;break}if(_!==void 0){i===void 0&&(i=_),t.push({...b,tier:3,rawPatterns:[...T]});continue}let A=[],k=[],O=!a,j=!0;for(let G of T){let re=Na(e,G);if(re.dispatch!==void 0)A.push(re.dispatch),k.push(re.test);else if(re.test!==void 0)O=!1,k.push(re.test);else{j=!1;break}}j&&O?t.push({...b,tier:0,dispatchKeys:A}):j?t.push({...b,tier:1,tests:k}):t.push({...b,tier:3,rawPatterns:[...T]});continue}let y=Na(e,s);if(y.dispatch!==void 0&&!a){t.push({...b,tier:0,dispatchKeys:[y.dispatch]});continue}if(y.test!==void 0){t.push({...b,tier:1,tests:[y.test]});continue}let v=Zd(s);if(v!==void 0&&!F1(v)){t.push({...b,tier:2,shape:v});continue}t.push({...b,tier:3,rawPatterns:[s]})}return{errorAlt:i,segments:$1(t)}}function $1(e){let n=[],t=0;for(;t<e.length;)if(e[t].tier===0){let i=[],r=new Map,o=[];for(;t<e.length&&e[t].tier===0;){let s=i.length;i.push(e[t]);for(let{key:a,value:u}of e[t].dispatchKeys)r.has(a)||r.set(a,s),o.push({value:u,index:s});t++}n.push({kind:"dispatch",table:r,constants:o,cases:i})}else{let i=[];for(;t<e.length&&e[t].tier!==0;)i.push(e[t++]);n.push({kind:"chain",cases:i})}return n}function Na(e,n){if(g(n,"Pin")){let t=n.op1,i=Na(e,t);return i.dispatch!==void 0?{dispatch:i.dispatch,test:{kind:"pin",expr:t}}:{test:{kind:"pin",expr:t}}}if(Ln(n))return{};if(F(n)){let t=R1(n);return t!==void 0?{dispatch:{key:t,value:n},test:{kind:"literal",value:n}}:{test:{kind:"literal",value:n}}}return ne(n)?{dispatch:{key:"s:"+n.string,value:n},test:{kind:"literal",value:n}}:S(n)?e.box(n.symbol).isConstant?{dispatch:{key:"sym:"+n.symbol,value:n},test:{kind:"literal",value:n}}:{test:{kind:"literal",value:n}}:{}}function R1(e){if(!F(e)||!e.isExact||e.isInteger!==!0)return;let n=e.re;if(Number.isSafeInteger(n))return"n:"+String(n)}function Zd(e){if(!g(e))return;if(e.operator==="Dictionary")return P1(e);if(e.operator!=="List"&&e.operator!=="Tuple")return;let n=[],t=[],i;for(let r of e.ops){if(Ln(r)){let s=ua(r),a=Bi(r);if(s==="OptionalSequence"){if(i!==void 0)return;i={key:a.replace(/^_+/,"").length?a:null};continue}if(s==="Sequence")return;let u=Yd(r);if(u===void 0)return;(i===void 0?n:t).push(u);continue}let o=Wd(r);if(o===void 0)return;(i===void 0?n:t).push(o)}return{kind:"seq",operator:e.operator,prefix:n,rest:i,suffix:t}}function P1(e){if(!g(e))return;let n=[],t=new Set;for(let i of e.ops){let r=D1(i);if(r===void 0||t.has(r.key))return;t.add(r.key);let o=Yd(r.value);if(o===void 0)return;n.push({key:r.key,value:o})}return{kind:"dict",entries:n}}function Yd(e){if(Ln(e)){let n=ua(e);if(n==="Sequence"||n==="OptionalSequence")return;let t=Bi(e);return t.replace(/^_+/,"").length?{kind:"bind",key:t}:{kind:"ignore"}}return Wd(e)}function Wd(e){if(g(e,"Pin"))return{kind:"pin",expr:e.op1};if(F(e)||ne(e))return{kind:"literal",value:e};if(S(e))return{kind:"literal",value:e};let n=Zd(e);if(n!==void 0)return{kind:"shape",node:n}}function D1(e){if(!g(e))return;let n=e.operator;if(n!=="KeyValuePair"&&n!=="Pair"&&n!=="Tuple"||e.nops<2)return;let t=e.ops[0],i=e.ops[1];if(ne(t))return{key:t.string,value:i};if(S(t))return{key:t.symbol,value:i}}function F1(e){let n=new Set,t=!1,i=s=>{n.has(s)?t=!0:n.add(s)},r=s=>{s.kind==="bind"?i(s.key):s.kind==="shape"&&o(s.node)},o=s=>{if(s.kind==="dict"){for(let{value:a}of s.entries)r(a);return}s.rest?.key&&i(s.rest.key);for(let a of[...s.prefix,...s.suffix])r(a)};return o(e),t}function Ta(e){let n=new Set,t=[],i=o=>{if(o===null)return;let s=o.replace(/^_+/,"");s.length===0||n.has(s)||(n.add(s),t.push({key:o,name:s}))},r=o=>{if(Ln(o)){i(Bi(o));return}if(g(o)){if(o.operator==="Pin")return;o.operator.startsWith("_")&&i(o.operator);for(let s of o.ops)r(s)}};return r(e),t}function Xd(e){let n=Ta(e).map(r=>r.name),t=[],i=r=>{if(g(r,"Pin")){r.op1!==void 0&&t.push(r.op1);return}if(g(r))for(let o of r.ops)i(o)};return i(e),{captures:n,pinExprs:t}}function Ui(e){if(!gi(e))return!1;let n=e.type.type;return typeof n!="string"&&n.kind==="broadcastable"?!0:e.isCanonical||e.isStructural}var N=class e{static FOLD_OPERAND_PREC=1e3;static WORD_KEYWORD_OPERATORS=new Set(["And","Or","Not"]);static CONTROL_FLOW_HEADS=new Set(["Sequence","Sum","Product","Function","Declare","Assign","Return","Break","Continue","Loop","Comprehension","If","Which","When","Match","Block"]);static BINARY_INFIX_VALUE_OPERATORS=new Set(["Add","Subtract","Multiply","Divide"]);static compileValueOperand(n,t,i=0){let r=e.compile(n,t,i);if(t.bareStatementBlocks&&typeof r=="string"&&r.includes(`
11
- `)){let o=n!==void 0&&g(n)?n.operator:"?";throw new Error(`${o}: a multi-statement construct (loop-form Sum/Product, Loop, or Block) cannot be used as a sub-expression in "${t.language??"this"}" \u2014 it is only valid as a top-level function body. Fail closed (D6).`)}return r}static compile(n,t,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);if(S(n)){let r=n.symbol,o=t.operators?.(r);if(o!==void 0){if(!e.BINARY_INFIX_VALUE_OPERATORS.has(r))throw new Error(`${r}: cannot compile as a first-class function \u2014 only the binary arithmetic operators (Add/Subtract/Multiply/Divide) lower to a combiner lambda. Fail closed (D6).`);return`(a,b) => a ${o[0]} b`}let s=t.var?.(r),a=t.userFunctions,u=s===r||t.boundVars?.has(r)===!0||t.varsKeys?.has(r)===!0;if(a&&!u&&!a.misses?.has(r)){let c=e.ensureUserFunctionEmitted(n.engine,r,t);if(c!==void 0)return c;(a.misses??=new Set).add(r)}if(s!==void 0)return s;let l=e.tryFoldKnownSymbol(n.engine,r,t);return l!==void 0?l:t.mangleId?t.mangleId(r):r}if(F(n)){if(n.im!==0){if(!t.complex)throw new Error("Complex numbers are not supported by this target");return t.complex(n.re,n.im)}let r=t.number(n.re);return n.re<0&&(t.operators?.("Negate")?.[1]??14)<i?`(${r})`:r}if(ne(n))return t.string(n.string);if(!g(n))throw new Error(`Cannot compile expression: "${n.toString()}"`);return e.compileExpr(n.engine,n.operator,n.ops,i,t)}static compileExpr(n,t,i,r,o){if(t==="Error")throw new Error("Error");if(t==="Sequence")return i.length===0?"":`(${i.map(u=>e.compile(u,o,r)).join(", ")})`;if(t==="Sum"||t==="Product"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):typeof u=="string"?`${u}(${i.map(l=>e.compile(l,o)).join(", ")})`:e.compileLoop(t,i,o)}if(!e.CONTROL_FLOW_HEADS.has(t)){let u=n.lookupDefinition(t);if(je(u)&&typeof u.operator.compile=="function"){let l=u.operator.compile(i,c=>e.compileValueOperand(c,o),{language:o.language??"javascript"});if(l!=null&&l!=="")return l}}if(o.language==="javascript"){let u=e.tryCompileBroadcast(n,t,i,o);if(u!==null)return u}if(o.language==="javascript"){let u=n.lookupDefinition(t);if((e.SCALAR_ARITHMETIC_HEADS.has(t)||je(u)&&u.operator.broadcastable===!0&&!lt(t)&&!e.LOGICAL_BROADCAST_HEADS.has(t))&&i.some(c=>c.isCollection||c.type.matches("list")||c.type.matches("indexed_collection")||Ui(c))){let c=o.operators?.(t),f=c===void 0||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c[0]),d=i.length===1&&je(u)&&u.operator.broadcastable===!0&&typeof o.functions?.(t)=="function"&&sn(i[0]);if(f&&!d)throw new Error(`${t}: cannot compile scalar arithmetic over a list-valued operand \u2014 the JavaScript compile target has no list-arithmetic support. Fail closed (D6). Materialize the list with evaluate() and compile a scalar element function instead.`)}}if(o.language==="python"){let u=n.lookupDefinition(t),l=e.SCALAR_ARITHMETIC_HEADS.has(t)||je(u)&&u.operator.broadcastable===!0&&!lt(t)&&!e.LOGICAL_BROADCAST_HEADS.has(t),c=o.operators?.(t),f=c!==void 0&&!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c[0]);if(l&&f&&i.some(d=>d.isCollection||d.type.matches("list")||d.type.matches("indexed_collection")||Ui(d)))throw new Error(`${t}: cannot compile arithmetic over a possibly-collection-typed operand on the Python target \u2014 Python's arithmetic operators repeat/concatenate a list instead of broadcasting element-wise, diverging from the interpreter. Fail closed (D6). Materialize the operand with evaluate() and compile a scalar element function instead.`)}let s=o.operators?.(t);if(s!==void 0&&!i.some(l=>e.isComplexValued(l))){let l=/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s[0])&&!e.WORD_KEYWORD_OPERATORS.has(t),c=/^[a-zA-Z_]/.test(s[0]);if(l)return`${s[0]}(${i.map(f=>e.compileValueOperand(f,o)).join(", ")})`;if(i.every(f=>!f.isCollection)){if(lt(t)&&i.length>2){let d=o.chainOp??"&&",p=[],h=i.map((v,T)=>{let _=e.compileValueOperand(v,o,s[1]),A=T>=1&&T<=i.length-2;if(o.bindExpr&&A&&!S(v)&&!F(v)){let k=e.tempVar();return p.push([k,_]),k}return _}),b=[];for(let v=0;v<h.length-1;v++)b.push(`${h[v]} ${s[0]} ${h[v+1]}`);let y=`(${b.join(`) ${d} (`)})`;return p.length>0&&o.bindExpr?o.bindExpr(p,y):y}let f;if(i.length===1){let d=e.compileValueOperand(i[0],o,s[1]),p=!c&&d.length>0&&d[0]===s[0][s[0].length-1],h=c||p?" ":"";f=`${s[0]}${h}${d}`}else{let d=t==="Power",p=t==="Subtract"||t==="Divide";f=i.map((h,b)=>{let y=s[1];return(d&&b<i.length-1||p&&b>0)&&(y=s[1]+1),e.compileValueOperand(h,o,y)}).join(` ${s[0]} `)}return s[1]<r?`(${f})`:f}}if(t==="Function"){let u=o.functions?.(t);if(typeof u=="function")return u(i,c=>e.compileValueOperand(c,o),o);let l=i.slice(1).map(c=>he(c)||"_");return`((${l.join(", ")}) => ${e.compile(i[0].canonical,{...o,var:c=>l.includes(c)?c:o.var(c),boundVars:e.withBoundNames(o,l)})})`}if(t==="Declare"){let u=S(i[0])?i[0].symbol:"_";if(o.declare)return o.declare(u);let l=e.declareValueOperand(i);return l===void 0?`let ${u}`:`let ${u} = ${e.compile(l,o)}`}if(t==="Assign")return`${S(i[0])?i[0].symbol:"_"} = ${e.compile(i[1],o)}`;if(t==="Return")return`return ${e.compile(i[0],o)}`;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Loop"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):e.compileForLoop(i,o)}if(t==="Comprehension"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):e.compileComprehension(i,o)}if(t==="If"){if(i.length!==3)throw new Error("If: wrong number of arguments");e.assertScalarCondition(i[0]);let u=o.functions?.(t);return u?typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):`${u}(${i.map(l=>e.compile(l,o)).join(", ")})`:`((${e.compile(i[0],o)}) ? (${e.compile(i[1],o)}) : (${e.compile(i[2],o)}))`}if(t==="Which"){if(i.length<2||i.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let u=o.functions?.(t);if(u)return typeof u=="function"?u(i,c=>e.compileValueOperand(c,o),o):`${u}(${i.map(c=>e.compile(c,o)).join(", ")})`;let l=c=>{if(c>=i.length)return"NaN";let f=i[c],d=i[c+1];return S(f,"True")?`(${e.compile(d,o)})`:`((${e.guardCondition(f,o)}) ? (${e.compile(d,o)}) : ${l(c+2)})`};return l(0)}if(t==="When"){if(i.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");let u=o.functions?.(t);if(u)return typeof u=="function"?u(i,f=>e.compileValueOperand(f,o),o):`${u}(${i.map(f=>e.compile(f,o)).join(", ")})`;if(S(i[1],"True"))return`(${e.compile(i[0],o)})`;if(S(i[1],"False"))return"NaN";let l=e.compile(i[0],o);return`((${e.guardCondition(i[1],o)}) ? (${l}) : NaN)`}if(t==="Match"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):e.compileMatchJS(n,i,o)}if(t==="Block")return e.compileBlock(i,o);if(t==="Typed")return e.compile(i[0],o);let a=o.functions?.(t);if(!a){let u=e.tryCompileUserFunction(n,t,i,o);if(u!==void 0)return u;throw new Error(`Unknown operator \`${t}\``)}if(typeof a=="function"){let u=n.lookupDefinition(t);if(je(u)&&u.operator.broadcastable&&i.length===1&&sn(i[0])){let l=e.tempVar(),c={...o,var:f=>f===l?l:o.var(f),boundVars:e.withBoundNames(o,[l])};return`(${e.compile(i[0],o)}).map((${l}) => ${a([i[0].engine.expr(l)],f=>e.compileValueOperand(f,c),c)})`}return a(i,l=>e.compileValueOperand(l,o),o)}if(o.language!==void 0&&!o.language.startsWith("interval")&&!e.COMPLEX_TRANSPARENT_HEADS.has(t)&&i.some(u=>e.isComplexValued(u)))throw new Error(`${t}: real-only target helper "${a}" cannot represent a complex-valued argument. Fail closed (D6).`);return`${a}(${i.map(u=>e.compileValueOperand(u,o)).join(", ")})`}static COMPLEX_TRANSPARENT_HEADS=new Set(["Real","Imaginary","Argument","Conjugate"]);static SCALAR_ARITHMETIC_HEADS=new Set(["Add","Subtract","Multiply","Divide","Negate","Power"]);static LOGICAL_BROADCAST_HEADS=new Set(["And","Or","Not","Xor","Nand","Nor","Implies","Equivalent"]);static tryCompileBroadcast(n,t,i,r){let o=n.lookupDefinition(t);if(!je(o)||o.operator.broadcastable!==!0||lt(t)||e.LOGICAL_BROADCAST_HEADS.has(t))return null;let s=r.operators?.(t);if(s!==void 0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s[0]))return null;let a=h=>{let b=le(h.type.type);return b===void 0?!1:kr(b)};if(t==="Multiply"){let h=y=>tt(y)||it(y)||y.type.matches("list")||y.type.matches("indexed_collection")||Ui(y),b=i.filter(h);if(b.length>=2){if(b.some(Ui))return i.some(_=>e.isComplexValued(_)||a(_))?null:`_SYS.mul(${i.map(_=>e.compile(_,r)).join(", ")})`;let y=T=>tt(T)&&T.shape.length>=2||T.type.matches("matrix");if(b.some(T=>it(T))||i.some(y))return null;let v=b.filter(T=>tt(T)&&T.shape.length===1).map(T=>T.shape[0]);if(v.length>=2&&new Set(v).size>1)return null}}let u=r.functions?.(t);if(typeof u!="function")return null;let l=h=>h.isCollection||h.type.matches("list")||h.type.matches("indexed_collection")||Ui(h);if(!i.some(l)||i.some(h=>e.isComplexValued(h)||a(h)))return null;let c=i.map(()=>e.tempVar()),f={...r,var:h=>c.includes(h)?h:r.var(h),boundVars:e.withBoundNames(r,c)},d=u(c.map(h=>n.expr(h)),h=>e.compileValueOperand(h,f),f),p=i.map(h=>e.compile(h,r)).join(", ");return`_SYS.bcast((${c.join(", ")}) => ${d}, ${p})`}static declareValueOperand(n){let t=n.slice(1),i,r=t[t.length-1];return r!==void 0&&Dn(r)&&(i=r.get("value"),t=t.slice(0,-1)),t[1]??i}static compileBlock(n,t){let i=[];for(let a of n)if(g(a,"Declare")){let u=a.ops[0];S(u)&&i.push(u.symbol)}if(n.length===1&&i.length===0)return e.compile(n[0],t);let r={};if(t.declare&&t.language){let u=t.language==="wgsl"?"vec2f":"vec2";for(let l of i)for(let c of n){if(g(c,"Declare")&&S(c.ops[0],l)&&S(c.ops[1],"complex")){r[l]=u;break}if(g(c,"Assign")&&S(c.ops[0],l)){e.isComplexValued(c.ops[1])&&(r[l]=u);break}}}let o={...t,var:a=>i.includes(a)?a:t.var(a),boundVars:e.withBoundNames(t,i)},s=n.filter(a=>!S(a,"Nothing")).flatMap(a=>{if(g(a,"Declare")&&S(a.ops[0])&&t.declare){let u=a.ops[0].symbol,l=t.declare(u,r[u]),c=e.declareValueOperand(a.ops);return c!==void 0?[l,`${u} = ${e.compile(c,o)}`]:[l]}return[e.compile(a,o)]}).filter(a=>a!=="");return s.length===0?"":t.block?t.block(s):(s[s.length-1]=`return ${s[s.length-1]}`,`(() => {${t.ws(`
12
- `)}${s.join(`;${t.ws(`
11
+ `)){let o=n!==void 0&&g(n)?n.operator:"?";throw new Error(`${o}: a multi-statement construct (loop-form Sum/Product, Loop, or Block) cannot be used as a sub-expression in "${t.language??"this"}" \u2014 it is only valid as a top-level function body. Fail closed (D6).`)}return r}static compile(n,t,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);let r=e._boundVarsCtx;e._boundVarsCtx=t.boundVars??r;try{return e._compileInner(n,t,i)}finally{e._boundVarsCtx=r}}static _boundVarsCtx;static _compileInner(n,t,i=0){if(S(n)){let r=n.symbol,o=t.operators?.(r);if(o!==void 0){if(!e.BINARY_INFIX_VALUE_OPERATORS.has(r))throw new Error(`${r}: cannot compile as a first-class function \u2014 only the binary arithmetic operators (Add/Subtract/Multiply/Divide) lower to a combiner lambda. Fail closed (D6).`);return`(a,b) => a ${o[0]} b`}let s=t.var?.(r),a=t.userFunctions,u=s===r||t.boundVars?.has(r)===!0||t.varsKeys?.has(r)===!0;if(a&&!u&&!a.misses?.has(r)){let c=e.ensureUserFunctionEmitted(n.engine,r,t);if(c!==void 0)return c;(a.misses??=new Set).add(r)}if(s!==void 0)return s;let l=e.tryFoldKnownSymbol(n.engine,r,t);return l!==void 0?l:t.mangleId?t.mangleId(r):r}if(F(n)){if(n.im!==0){if(!t.complex)throw new Error("Complex numbers are not supported by this target");return t.complex(n.re,n.im)}let r=t.number(n.re);return n.re<0&&(t.operators?.("Negate")?.[1]??14)<i?`(${r})`:r}if(ne(n))return t.string(n.string);if(!g(n))throw new Error(`Cannot compile expression: "${n.toString()}"`);return e.compileExpr(n.engine,n.operator,n.ops,i,t)}static compileExpr(n,t,i,r,o){if(t==="Error")throw new Error("Error");if(t==="Sequence")return i.length===0?"":`(${i.map(u=>e.compile(u,o,r)).join(", ")})`;if(t==="Sum"||t==="Product"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):typeof u=="string"?`${u}(${i.map(l=>e.compile(l,o)).join(", ")})`:e.compileLoop(t,i,o)}if(!e.CONTROL_FLOW_HEADS.has(t)){let u=n.lookupDefinition(t);if(je(u)&&typeof u.operator.compile=="function"){let l=u.operator.compile(i,c=>e.compileValueOperand(c,o),{language:o.language??"javascript"});if(l!=null&&l!=="")return l}}if(o.language==="javascript"){let u=e.tryCompileBroadcast(n,t,i,o);if(u!==null)return u}if(o.language==="javascript"){let u=n.lookupDefinition(t);if((e.SCALAR_ARITHMETIC_HEADS.has(t)||je(u)&&u.operator.broadcastable===!0&&!lt(t)&&!e.LOGICAL_BROADCAST_HEADS.has(t))&&i.some(c=>c.isCollection||c.type.matches("list")||c.type.matches("indexed_collection")||Ui(c))){let c=o.operators?.(t),f=c===void 0||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c[0]),d=i.length===1&&je(u)&&u.operator.broadcastable===!0&&typeof o.functions?.(t)=="function"&&sn(i[0]);if(f&&!d)throw new Error(`${t}: cannot compile scalar arithmetic over a list-valued operand \u2014 the JavaScript compile target has no list-arithmetic support. Fail closed (D6). Materialize the list with evaluate() and compile a scalar element function instead.`)}}if(o.language==="python"){let u=n.lookupDefinition(t),l=e.SCALAR_ARITHMETIC_HEADS.has(t)||je(u)&&u.operator.broadcastable===!0&&!lt(t)&&!e.LOGICAL_BROADCAST_HEADS.has(t),c=o.operators?.(t),f=c!==void 0&&!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c[0]);if(l&&f&&i.some(d=>d.isCollection||d.type.matches("list")||d.type.matches("indexed_collection")||Ui(d)))throw new Error(`${t}: cannot compile arithmetic over a possibly-collection-typed operand on the Python target \u2014 Python's arithmetic operators repeat/concatenate a list instead of broadcasting element-wise, diverging from the interpreter. Fail closed (D6). Materialize the operand with evaluate() and compile a scalar element function instead.`)}let s=o.operators?.(t);if(s!==void 0&&!i.some(l=>e.isComplexValued(l))){let l=/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s[0])&&!e.WORD_KEYWORD_OPERATORS.has(t),c=/^[a-zA-Z_]/.test(s[0]);if(l)return`${s[0]}(${i.map(f=>e.compileValueOperand(f,o)).join(", ")})`;if(i.every(f=>!f.isCollection)){if(lt(t)&&i.length>2){let d=o.chainOp??"&&",p=[],h=i.map((v,T)=>{let _=e.compileValueOperand(v,o,s[1]),A=T>=1&&T<=i.length-2;if(o.bindExpr&&A&&!S(v)&&!F(v)){let k=e.tempVar();return p.push([k,_]),k}return _}),b=[];for(let v=0;v<h.length-1;v++)b.push(`${h[v]} ${s[0]} ${h[v+1]}`);let y=`(${b.join(`) ${d} (`)})`;return p.length>0&&o.bindExpr?o.bindExpr(p,y):y}let f;if(i.length===1){let d=e.compileValueOperand(i[0],o,s[1]),p=!c&&d.length>0&&d[0]===s[0][s[0].length-1],h=c||p?" ":"";f=`${s[0]}${h}${d}`}else{let d=t==="Power",p=t==="Subtract"||t==="Divide";f=i.map((h,b)=>{let y=s[1];return(d&&b<i.length-1||p&&b>0)&&(y=s[1]+1),e.compileValueOperand(h,o,y)}).join(` ${s[0]} `)}return s[1]<r?`(${f})`:f}}if(t==="Function"){let u=o.functions?.(t);if(typeof u=="function")return u(i,c=>e.compileValueOperand(c,o),o);let l=i.slice(1).map(c=>he(c)||"_");return`((${l.join(", ")}) => ${e.compile(i[0].canonical,{...o,var:c=>l.includes(c)?c:o.var(c),boundVars:e.withBoundNames(o,l)})})`}if(t==="Declare"){let u=S(i[0])?i[0].symbol:"_";if(o.declare)return o.declare(u);let l=e.declareValueOperand(i);return l===void 0?`let ${u}`:`let ${u} = ${e.compile(l,o)}`}if(t==="Assign")return`${S(i[0])?i[0].symbol:"_"} = ${e.compile(i[1],o)}`;if(t==="Return")return`return ${e.compile(i[0],o)}`;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Loop"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):e.compileForLoop(i,o)}if(t==="Comprehension"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):e.compileComprehension(i,o)}if(t==="If"){if(i.length!==3)throw new Error("If: wrong number of arguments");e.assertScalarCondition(i[0]);let u=o.functions?.(t);return u?typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):`${u}(${i.map(l=>e.compile(l,o)).join(", ")})`:`((${e.compile(i[0],o)}) ? (${e.compile(i[1],o)}) : (${e.compile(i[2],o)}))`}if(t==="Which"){if(i.length<2||i.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let u=o.functions?.(t);if(u)return typeof u=="function"?u(i,c=>e.compileValueOperand(c,o),o):`${u}(${i.map(c=>e.compile(c,o)).join(", ")})`;let l=c=>{if(c>=i.length)return"NaN";let f=i[c],d=i[c+1];return S(f,"True")?`(${e.compile(d,o)})`:`((${e.guardCondition(f,o)}) ? (${e.compile(d,o)}) : ${l(c+2)})`};return l(0)}if(t==="When"){if(i.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");let u=o.functions?.(t);if(u)return typeof u=="function"?u(i,f=>e.compileValueOperand(f,o),o):`${u}(${i.map(f=>e.compile(f,o)).join(", ")})`;if(S(i[1],"True"))return`(${e.compile(i[0],o)})`;if(S(i[1],"False"))return"NaN";let l=e.compile(i[0],o);return`((${e.guardCondition(i[1],o)}) ? (${l}) : NaN)`}if(t==="Match"){let u=o.functions?.(t);return typeof u=="function"?u(i,l=>e.compileValueOperand(l,o),o):e.compileMatchJS(n,i,o)}if(t==="Block")return e.compileBlock(i,o);if(t==="Typed")return e.compile(i[0],o);let a=o.functions?.(t);if(!a){let u=e.tryCompileUserFunction(n,t,i,o);if(u!==void 0)return u;throw new Error(`Unknown operator \`${t}\``)}if(typeof a=="function"){let u=n.lookupDefinition(t);if(je(u)&&u.operator.broadcastable&&i.length===1&&sn(i[0])){let l=e.tempVar(),c={...o,var:f=>f===l?l:o.var(f),boundVars:e.withBoundNames(o,[l])};return`(${e.compile(i[0],o)}).map((${l}) => ${a([i[0].engine.expr(l)],f=>e.compileValueOperand(f,c),c)})`}return a(i,l=>e.compileValueOperand(l,o),o)}if(o.language!==void 0&&!o.language.startsWith("interval")&&!e.COMPLEX_TRANSPARENT_HEADS.has(t)&&i.some(u=>e.isComplexValued(u)))throw new Error(`${t}: real-only target helper "${a}" cannot represent a complex-valued argument. Fail closed (D6).`);return`${a}(${i.map(u=>e.compileValueOperand(u,o)).join(", ")})`}static COMPLEX_TRANSPARENT_HEADS=new Set(["Real","Imaginary","Argument","Conjugate"]);static SCALAR_ARITHMETIC_HEADS=new Set(["Add","Subtract","Multiply","Divide","Negate","Power"]);static LOGICAL_BROADCAST_HEADS=new Set(["And","Or","Not","Xor","Nand","Nor","Implies","Equivalent"]);static tryCompileBroadcast(n,t,i,r){let o=n.lookupDefinition(t);if(!je(o)||o.operator.broadcastable!==!0||lt(t)||e.LOGICAL_BROADCAST_HEADS.has(t))return null;let s=r.operators?.(t);if(s!==void 0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s[0]))return null;let a=h=>{let b=le(h.type.type);return b===void 0?!1:kr(b)};if(t==="Multiply"){let h=y=>tt(y)||it(y)||y.type.matches("list")||y.type.matches("indexed_collection")||Ui(y),b=i.filter(h);if(b.length>=2){if(b.some(Ui))return i.some(_=>e.isComplexValued(_)||a(_))?null:`_SYS.mul(${i.map(_=>e.compile(_,r)).join(", ")})`;let y=T=>tt(T)&&T.shape.length>=2||T.type.matches("matrix");if(b.some(T=>it(T))||i.some(y))return null;let v=b.filter(T=>tt(T)&&T.shape.length===1).map(T=>T.shape[0]);if(v.length>=2&&new Set(v).size>1)return null}}let u=r.functions?.(t);if(typeof u!="function")return null;let l=h=>h.isCollection||h.type.matches("list")||h.type.matches("indexed_collection")||Ui(h);if(!i.some(l)||i.some(h=>e.isComplexValued(h)||a(h)))return null;let c=i.map(()=>e.tempVar()),f={...r,var:h=>c.includes(h)?h:r.var(h),boundVars:e.withBoundNames(r,c)},d=u(c.map(h=>n.expr(h)),h=>e.compileValueOperand(h,f),f),p=i.map(h=>e.compile(h,r)).join(", ");return`_SYS.bcast((${c.join(", ")}) => ${d}, ${p})`}static declareValueOperand(n){let t=n.slice(1),i,r=t[t.length-1];return r!==void 0&&Dn(r)&&(i=r.get("value"),t=t.slice(0,-1)),t[1]??i}static compileBlock(n,t){let i=[];for(let o of n)if(g(o,"Declare")){let s=o.ops[0];S(s)&&i.push(s.symbol)}if(n.length===1&&i.length===0)return e.compile(n[0],t);let r=new Map;for(let o of i)r.set(o,!1);e._localComplex.push(r);try{for(let u of n)if(g(u,"Declare")&&S(u.ops[0])){let l=u.ops[0].symbol;S(u.ops[1],"complex")&&r.set(l,!0);let c=e.declareValueOperand(u.ops);c!==void 0&&e.isComplexValued(c)&&r.set(l,!0)}else g(u,"Assign")&&S(u.ops[0])&&r.get(u.ops[0].symbol)===!1&&e.isComplexValued(u.ops[1])&&r.set(u.ops[0].symbol,!0);let o={};if(t.declare&&t.language){let u=t.language==="wgsl"?"vec2f":"vec2";for(let l of i)r.get(l)&&(o[l]=u)}let s={...t,var:u=>i.includes(u)?u:t.var(u),boundVars:e.withBoundNames(t,i)},a=n.filter(u=>!S(u,"Nothing")).flatMap(u=>{if(g(u,"Declare")&&S(u.ops[0])&&t.declare){let l=u.ops[0].symbol,c=t.declare(l,o[l]),f=e.declareValueOperand(u.ops);return f!==void 0?[c,`${l} = ${e.compile(f,s)}`]:[c]}return[e.compile(u,s)]}).filter(u=>u!=="");return a.length===0?"":t.block?t.block(a):(a[a.length-1]=`return ${a[a.length-1]}`,`(() => {${t.ws(`
12
+ `)}${a.join(`;${t.ws(`
13
13
  `)}`)}${t.ws(`
14
- `)}})()`)}static compileForLoop(n,t){if(!n[0])throw new Error("Loop: no body");let i=n[0],r=n.slice(1),o=t.language??"";if(r.length===0){if(o==="glsl"||o==="wgsl")throw new Error(`${o.toUpperCase()}: an unbounded Loop(body) is not supported.`);let a=e.compileLoopBody(i,t);return`(() => {${t.ws(`
14
+ `)}})()`)}finally{e._localComplex.pop()}}static compileForLoop(n,t){if(!n[0])throw new Error("Loop: no body");let i=n[0],r=n.slice(1),o=t.language??"";if(r.length===0){if(o==="glsl"||o==="wgsl")throw new Error(`${o.toUpperCase()}: an unbounded Loop(body) is not supported.`);let a=e.compileLoopBody(i,t);return`(() => {${t.ws(`
15
15
  `)}while (true) {${t.ws(`
16
16
  `)}${a}${t.ws(`
17
17
  `)}}${t.ws(`
@@ -48,16 +48,16 @@ ${t.join(`
48
48
  ${r}++;
49
49
  }
50
50
  return ${d};
51
- })()`}static isComplexValued(n){if(F(n))return n.im!==0;if(S(n)){if(n.symbol==="ImaginaryUnit")return!0;let t=n.type;return t?kr(t.type):!1}if(g(n)){let t=n.type;return kr(t.type)?!0:t.matches("real")?!1:n.ops.some(i=>e.isComplexValued(i))}return!1}static assertScalarBigOpBody(n,t){if(t.type.matches("list")||t.type.matches("indexed_collection"))throw new Error(`${n}: a collection-valued body does not compile \u2014 distribute the element access through the ${n} (At(${n}(\u2026), k) \u2192 ${n}(At(\u2026, k))) or evaluate instead. Fail closed (D6).`)}static isBooleanValued(n){if(S(n,"True")||S(n,"False"))return!0;if(g(n)){let t=n.operator;if(lt(t)||t==="And"||t==="Or"||t==="Not")return!0;let i=n.type;return i?i.matches("boolean"):!1}if(S(n)){let t=n.type;return t?t.matches("boolean"):!1}return!1}static assertScalarCondition(n){if(n.type.matches("collection"))throw new Error("Cannot compile: a branch condition is a collection-valued expression, which is never a scalar boolean. Materialize the collection first. Fail closed (D6).")}static guardCondition(n,t){e.assertScalarCondition(n);let i=e.compile(n,t);return t.assertBoolean&&!e.isBooleanValued(n)?t.assertBoolean(i):i}static isIntegerValued(n){if(F(n))return n.im===0&&Number.isInteger(n.re);let t=n.type;return t?t.matches("integer"):!1}static isNonNegative(n){return F(n)?n.im===0&&n.re>=0:n.isNonNegative===!0}static MATCH_SWITCH_THRESHOLD=8;static isIrrefutableCase(n){return n.tier===3&&!n.hasGuard&&n.rawPatterns!==void 0&&n.rawPatterns.length===1&&Ln(n.rawPatterns[0])}static matchCaseComparisons(n){return n.tier===0?(n.dispatchKeys??[]).map(t=>({kind:"literal",value:t.value})):n.tests??[]}static compileMatchConstant(n,t,i,r){let o=t.kind==="literal"?t.value:t.expr;if(ne(o)){if(!i)throw new Error(`Match: a string constant is not compilable to "${r.language??"this"}" (no string type). Fail closed (D6).`);return e.compile(o,r)}if(t.kind==="pin"&&!(F(o)||ne(o)||S(o)&&n.box(o.symbol).isConstant))throw new Error(`Match: pin '== ${o.toString()}' references a runtime value; not compilable. Fail closed (D6).`);return e.compile(o,r)}static matchLeafCondition(n,t,i,r,o,s){let a=e.matchCaseComparisons(t).map(u=>`${i} ${r} ${e.compileMatchConstant(n,u,o,s)}`);return a.length===0?"false":a.length===1?a[0]:`(${a.join(" || ")})`}static compileMatchBody(n,t,i){if(n.captureNames.length===0)return e.compile(n.body.canonical,i);if(n.bodyClosure===void 0||!g(n.bodyClosure))throw new Error("Match: case body is not compilable. Fail closed (D6).");return e.compile(n.bodyClosure.op1,e.matchCaptureTarget(t,i))}static compileMatchGuard(n,t,i){if(!(!n.hasGuard||n.guard===void 0)){if(n.captureNames.length===0)return e.compile(n.guard.canonical,i);if(n.guardClosure===void 0||!g(n.guardClosure))throw new Error("Match: case guard is not compilable. Fail closed (D6).");return e.compile(n.guardClosure.op1,e.matchCaptureTarget(t,i))}}static matchCaptureTarget(n,t){return n===void 0||n.size===0?t:{...t,var:i=>n.get(i)??t.var(i),boundVars:e.withBoundNames(t,[...n.keys()])}}static compileMatchJS(n,t,i){let r=_a(n,t);if(r.errorAlt!==void 0)throw new Error(`Match: an or-alternative binds the name '${r.errorAlt.toString()}'; not compilable. Fail closed (D6).`);let o=e.tempVar(),s=i.ws(`
51
+ })()`}static _localComplex=[];static isComplexValued(n){if(F(n))return n.im!==0;if(S(n)){if(n.symbol==="ImaginaryUnit")return!0;for(let r=e._localComplex.length-1;r>=0;r--){let s=e._localComplex[r].get(n.symbol);if(s!==void 0)return s}let t=n.type;if(!t)return!1;if(kr(t.type))return!0;if(t.matches("real")||e._boundVarsCtx?.has(n.symbol))return!1;let i=n.engine._getSymbolValue(n.symbol);return i!==void 0?e.isComplexValued(i):!1}if(g(n)){let t=n.type;return kr(t.type)?!0:t.matches("real")?!1:n.ops.some(i=>e.isComplexValued(i))}return!1}static assertScalarBigOpBody(n,t){if(t.type.matches("list")||t.type.matches("indexed_collection"))throw new Error(`${n}: a collection-valued body does not compile \u2014 distribute the element access through the ${n} (At(${n}(\u2026), k) \u2192 ${n}(At(\u2026, k))) or evaluate instead. Fail closed (D6).`)}static isBooleanValued(n){if(S(n,"True")||S(n,"False"))return!0;if(g(n)){let t=n.operator;if(lt(t)||t==="And"||t==="Or"||t==="Not")return!0;let i=n.type;return i?i.matches("boolean"):!1}if(S(n)){let t=n.type;return t?t.matches("boolean"):!1}return!1}static assertScalarCondition(n){if(n.type.matches("collection"))throw new Error("Cannot compile: a branch condition is a collection-valued expression, which is never a scalar boolean. Materialize the collection first. Fail closed (D6).")}static guardCondition(n,t){e.assertScalarCondition(n);let i=e.compile(n,t);return t.assertBoolean&&!e.isBooleanValued(n)?t.assertBoolean(i):i}static isIntegerValued(n){if(F(n))return n.im===0&&Number.isInteger(n.re);let t=n.type;return t?t.matches("integer"):!1}static isNonNegative(n){return F(n)?n.im===0&&n.re>=0:n.isNonNegative===!0}static MATCH_SWITCH_THRESHOLD=8;static isIrrefutableCase(n){return n.tier===3&&!n.hasGuard&&n.rawPatterns!==void 0&&n.rawPatterns.length===1&&Ln(n.rawPatterns[0])}static matchCaseComparisons(n){return n.tier===0?(n.dispatchKeys??[]).map(t=>({kind:"literal",value:t.value})):n.tests??[]}static compileMatchConstant(n,t,i,r){let o=t.kind==="literal"?t.value:t.expr;if(ne(o)){if(!i)throw new Error(`Match: a string constant is not compilable to "${r.language??"this"}" (no string type). Fail closed (D6).`);return e.compile(o,r)}if(t.kind==="pin"&&!(F(o)||ne(o)||S(o)&&n.box(o.symbol).isConstant))throw new Error(`Match: pin '== ${o.toString()}' references a runtime value; not compilable. Fail closed (D6).`);return e.compile(o,r)}static matchLeafCondition(n,t,i,r,o,s){let a=e.matchCaseComparisons(t).map(u=>`${i} ${r} ${e.compileMatchConstant(n,u,o,s)}`);return a.length===0?"false":a.length===1?a[0]:`(${a.join(" || ")})`}static compileMatchBody(n,t,i){if(n.captureNames.length===0)return e.compile(n.body.canonical,i);if(n.bodyClosure===void 0||!g(n.bodyClosure))throw new Error("Match: case body is not compilable. Fail closed (D6).");return e.compile(n.bodyClosure.op1,e.matchCaptureTarget(t,i))}static compileMatchGuard(n,t,i){if(!(!n.hasGuard||n.guard===void 0)){if(n.captureNames.length===0)return e.compile(n.guard.canonical,i);if(n.guardClosure===void 0||!g(n.guardClosure))throw new Error("Match: case guard is not compilable. Fail closed (D6).");return e.compile(n.guardClosure.op1,e.matchCaptureTarget(t,i))}}static matchCaptureTarget(n,t){return n===void 0||n.size===0?t:{...t,var:i=>n.get(i)??t.var(i),boundVars:e.withBoundNames(t,[...n.keys()])}}static compileMatchJS(n,t,i){let r=_a(n,t);if(r.errorAlt!==void 0)throw new Error(`Match: an or-alternative binds the name '${r.errorAlt.toString()}'; not compilable. Fail closed (D6).`);let o=e.tempVar(),s=i.ws(`
52
52
  `),a=[],u=!1;for(let c of r.segments){if(u)break;if(c.kind==="dispatch"&&e.matchSwitchable(c)){a.push(e.emitMatchSwitch(n,c,o,i));continue}for(let f of c.cases){if(u)break;if(e.isIrrefutableCase(f)){let d=f.captureNames.length===1?new Map([[f.captureNames[0],o]]):void 0;a.push(`return ${e.compileMatchBody(f,d,i)};`),u=!0;break}a.push(e.emitMatchCaseJS(n,f,o,i))}}u||a.push("return NaN;");let l=e.compile(t[0],i);return`((${o}) => {${s}${a.join(s)}${s}})(${l})`}static emitMatchCaseJS(n,t,i,r){if(t.tier===0||t.tier===1){let s=e.matchLeafCondition(n,t,i,"===",!0,r),a=e.compileMatchGuard(t,void 0,r);return`if (${a===void 0?s:`(${s}) && (${a})`}) return ${e.compileMatchBody(t,void 0,r)};`}if(t.tier===2){let s=[],a=new Map;e.walkMatchShape(n,t.shape,i,s,a,r);let u=e.compileMatchGuard(t,a,r);u!==void 0&&s.push(`(${u})`);let l=e.compileMatchBody(t,a,r);return`if (${s.join(" && ")}) return ${l};`}let o=t.rawPatterns?.[0];throw new Error(`Match: pattern '${o?.toString()??"?"}' is not compilable; rewrite with destructuring or guards. Fail closed (D6).`)}static walkMatchShape(n,t,i,r,o,s){if(t.kind==="dict"){let l=t.entries.map(c=>`'${c.key}'`).join(", ");throw new Error(`Match: dictionary pattern {${l}} is not compilable; rewrite with destructuring or guards. Fail closed (D6).`)}r.push(`Array.isArray(${i})`);let a=t.prefix.length+t.suffix.length;t.rest===void 0?r.push(`${i}.length === ${a}`):r.push(`${i}.length >= ${a}`),t.prefix.forEach((l,c)=>e.walkMatchElement(n,l,`${i}[${c}]`,r,o,s));let u=t.suffix.length;if(t.suffix.forEach((l,c)=>e.walkMatchElement(n,l,`${i}[${i}.length - ${u} + ${c}]`,r,o,s)),t.rest!==void 0&&t.rest.key!==null){let l=t.rest.key.replace(/^_+/,"");o.set(l,`${i}.slice(${t.prefix.length}, ${i}.length - ${u})`)}}static walkMatchElement(n,t,i,r,o,s){switch(t.kind){case"ignore":return;case"bind":o.set(t.key.replace(/^_+/,""),i);return;case"literal":r.push(`${i} === ${e.compileMatchConstant(n,{kind:"literal",value:t.value},!0,s)}`);return;case"pin":r.push(`${i} === ${e.compileMatchConstant(n,{kind:"pin",expr:t.expr},!0,s)}`);return;case"shape":e.walkMatchShape(n,t.node,i,r,o,s);return}}static matchSwitchable(n){let t=0;for(let i of n.cases)for(let r of i.dispatchKeys??[]){if(!r.key.startsWith("n:"))return!1;t++}return t>=e.MATCH_SWITCH_THRESHOLD}static emitMatchSwitch(n,t,i,r){let o=r.ws(`
53
- `),s=new Set,a=[];for(let u of t.cases){let l=[];for(let c of u.dispatchKeys??[]){let f=Number(c.key.slice(2));s.has(f)||(s.add(f),l.push(`case ${f}:`))}l.length!==0&&a.push(`${l.join(" ")} return ${e.compileMatchBody(u,void 0,r)};`)}return`switch (${i}) {${o}${a.join(o)}${o}}`}static compileMatchTernary(n,t,i,r){let o=_a(n,t);if(o.errorAlt!==void 0)throw new Error(`Match: an or-alternative binds the name '${o.errorAlt.toString()}'; not compilable. Fail closed (D6).`);let s=e.compile(t[0],i),a=o.segments.flatMap(l=>l.cases),u=l=>{if(l>=a.length)return r.noMatch;let c=a[l];if(e.isIrrefutableCase(c)){let d=c.captureNames.length===1?new Map([[c.captureNames[0],s]]):void 0;return e.compileMatchBody(c,d,i)}if(c.tier===0||c.tier===1){let d=e.matchLeafCondition(n,c,s,r.eq,r.allowStrings,i),p=e.compileMatchGuard(c,void 0,i),h=p===void 0?d:`(${d}) && (${p})`;return r.ternary(h,e.compileMatchBody(c,void 0,i),u(l+1))}if(c.tier===2)throw new Error(`Match: list/tuple destructuring is not compilable to "${i.language??"this"}". Fail closed (D6).`);let f=c.rawPatterns?.[0];throw new Error(`Match: pattern '${f?.toString()??"?"}' is not compilable; rewrite with destructuring or guards. Fail closed (D6).`)};return u(0)}static tryFoldKnownSymbol(n,t,i){let r=n._getSymbolValue(t);if(r!==void 0)return e.compile(r,i,e.FOLD_OPERAND_PREC)}static userFunctionLiteral(n,t){let i=n.lookupDefinition(t);if(i&&"operator"in i){let o=i.operator._lambdaLiteral;if(o!==void 0&&g(o,"Function"))return o}let r=n._getSymbolValue(t);if(r!==void 0&&g(r,"Function"))return r}static userFunctionName(n){return`_fn_${n.replace(/[^\w$]/g,"_")}`}static tryCompileUserFunction(n,t,i,r){let o=e.ensureUserFunctionEmitted(n,t,r);if(o===void 0)return;let s=i.map(a=>e.compileValueOperand(a,r)).join(", ");return`${o}(${s})`}static ensureUserFunctionEmitted(n,t,i){let r=i.userFunctions;if(!r)return;let o=e.userFunctionLiteral(n,t);if(o===void 0)return;let s=e.userFunctionName(t);if(!r.defs.has(s)){if(r.compiling.has(s))throw new Error(`Recursive user-defined function \`${t}\` cannot be compiled. Fail closed (D6).`);r.compiling.add(s);try{let a=o.ops.slice(1).map(l=>he(l)||"_"),u=e.compile(o.ops[0].canonical,{...i,var:l=>a.includes(l)?l:i.var(l)});r.defs.set(s,`const ${s} = (${a.join(", ")}) => ${u};`)}finally{r.compiling.delete(s)}}return s}static userFunctionsPreamble(n){let t=n.userFunctions?.defs;return!t||t.size===0?"":[...t.values()].join(`
53
+ `),s=new Set,a=[];for(let u of t.cases){let l=[];for(let c of u.dispatchKeys??[]){let f=Number(c.key.slice(2));s.has(f)||(s.add(f),l.push(`case ${f}:`))}l.length!==0&&a.push(`${l.join(" ")} return ${e.compileMatchBody(u,void 0,r)};`)}return`switch (${i}) {${o}${a.join(o)}${o}}`}static compileMatchTernary(n,t,i,r){let o=_a(n,t);if(o.errorAlt!==void 0)throw new Error(`Match: an or-alternative binds the name '${o.errorAlt.toString()}'; not compilable. Fail closed (D6).`);let s=e.compile(t[0],i),a=o.segments.flatMap(l=>l.cases),u=l=>{if(l>=a.length)return r.noMatch;let c=a[l];if(e.isIrrefutableCase(c)){let d=c.captureNames.length===1?new Map([[c.captureNames[0],s]]):void 0;return e.compileMatchBody(c,d,i)}if(c.tier===0||c.tier===1){let d=e.matchLeafCondition(n,c,s,r.eq,r.allowStrings,i),p=e.compileMatchGuard(c,void 0,i),h=p===void 0?d:`(${d}) && (${p})`;return r.ternary(h,e.compileMatchBody(c,void 0,i),u(l+1))}if(c.tier===2)throw new Error(`Match: list/tuple destructuring is not compilable to "${i.language??"this"}". Fail closed (D6).`);let f=c.rawPatterns?.[0];throw new Error(`Match: pattern '${f?.toString()??"?"}' is not compilable; rewrite with destructuring or guards. Fail closed (D6).`)};return u(0)}static tryFoldKnownSymbol(n,t,i){let r=n._getSymbolValue(t);if(r!==void 0)return e.compile(r,i,e.FOLD_OPERAND_PREC)}static userFunctionLiteral(n,t){let i=n.lookupDefinition(t);if(i&&"operator"in i){let o=i.operator._lambdaLiteral;if(o!==void 0&&g(o,"Function"))return o}let r=n._getSymbolValue(t);if(r!==void 0&&g(r,"Function"))return r}static userFunctionName(n){return`_fn_${n.replace(/[^\w$]/g,"_")}`}static tryCompileUserFunction(n,t,i,r){let o=e.ensureUserFunctionEmitted(n,t,r);if(o===void 0)return;let s=i.map(a=>e.compileValueOperand(a,r)).join(", ");return`${o}(${s})`}static ensureUserFunctionEmitted(n,t,i){let r=i.userFunctions;if(!r)return;let o=e.userFunctionLiteral(n,t);if(o===void 0)return;let s=e.userFunctionName(t);if(!r.defs.has(s)){if(r.compiling.has(s))throw new Error(`Recursive user-defined function \`${t}\` cannot be compiled. Fail closed (D6).`);r.compiling.add(s);try{let a=o.ops.slice(1).map(l=>he(l)||"_"),u=e.compile(o.ops[0].canonical,{...i,var:l=>a.includes(l)?l:i.var(l),boundVars:e.withBoundNames(i,a)});r.defs.set(s,`const ${s} = (${a.join(", ")}) => ${u};`)}finally{r.compiling.delete(s)}}return s}static userFunctionsPreamble(n){let t=n.userFunctions?.defs;return!t||t.size===0?"":[...t.values()].join(`
54
54
  `)+`
55
- `}static STRUCTURAL_HEADS=new Set(["Sequence","Sum","Product","Function","Declare","Assign","Return","Break","Continue","Loop","Comprehension","If","Which","When","Match","Block","Limits","Element"]);static analyzeReferences(n,t,i){let r=n.engine,o=new Set,s=new Set,a=new Set,u=new Set,l=(f,d)=>{let p=new Set(f);for(let h of d)p.add(h);return p},c=(f,d)=>{if(S(f)){let v=f.symbol;if(d.has(v)||t.operators?.(v)!==void 0)return;if(i?.has(v)){o.add(v);return}if(t.userFunctions!==void 0){let _=e.userFunctionLiteral(r,v);if(_!==void 0){if(!u.has(v)){u.add(v);let A=_.ops.slice(1).map(k=>he(k)).filter(k=>k!=="");c(_.ops[0],A.length?l(d,A):d)}return}}let T=r._getSymbolValue(v);if(T!==void 0){a.has(v)||(a.add(v),c(T,d));return}o.add(v);return}if(!g(f))return;let p=f.operator,h=f.ops,b=t.userFunctions!==void 0&&!e.STRUCTURAL_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0?e.userFunctionLiteral(r,p):void 0,y=!1;if(!e.CONTROL_FLOW_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0&&b===void 0){let v=r.lookupDefinition(p);if(je(v)&&typeof v.operator.compile=="function")try{let T=v.operator.compile(h,_=>e.compileValueOperand(_,t),{language:t.language??"javascript"});y=T!=null&&T!==""}catch{y=!1}}if(p!=="Error"&&!e.STRUCTURAL_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0&&b===void 0&&!y&&s.add(p),b!==void 0){if(!u.has(p)){u.add(p);let v=b.ops.slice(1).map(T=>he(T)).filter(T=>T!=="");c(b.ops[0],v.length?l(d,v):d)}for(let v of h)c(v,d);return}if(p==="Function"){let v=h.slice(1).map(T=>he(T)).filter(T=>T!=="");c(h[0],v.length?l(d,v):d);return}if(p==="Sum"||p==="Product"||p==="Integrate"||p==="Loop"||p==="Comprehension"){let v=[],T=[];for(let _ of h.slice(1))if(g(_)){S(_.ops[0])&&v.push(_.ops[0].symbol);for(let A of _.ops.slice(1))T.push(A)}else T.push(_);c(h[0],v.length?l(d,v):d);for(let _ of T)c(_,d);return}if(p==="Block"){let v=[];for(let _ of h)g(_,"Declare")&&S(_.ops[0])&&v.push(_.ops[0].symbol);let T=v.length?l(d,v):d;for(let _ of h)c(_,T);return}if(p==="Match"){h[0]!==void 0&&c(h[0],d);for(let v of h.slice(1)){if(!g(v,"MatchCase")||v.ops.length<2)continue;let T=v.ops,_=T[0],A=T.length>=3?T[1]:void 0,k=T[T.length-1],{captures:O,pinExprs:j}=Xd(_),G=O.length?l(d,O):d;A!==void 0&&c(A,G),c(k,G);for(let re of j)c(re,d)}return}for(let v of h)c(v,d)};return c(n,new Set),{freeSymbols:[...o],unsupported:[...s]}}static withReferences(n,t,i,r){return Object.assign(n,e.analyzeReferences(t,i,r))}static buildInterpreterFallback(n,t,i,r,o){let s=n.engine,a=c=>c.isCollection?[...c.each()].map(a):c.re,u={freeSymbols:[],unsupported:[]};try{r&&(u=e.analyzeReferences(n,r,o))}catch{}return g(n,"Function")?{target:i,success:!1,code:"",calling:"lambda",run:((...f)=>s.function("Apply",[n,...f.map(d=>s.expr(d))]).evaluate().re),error:t,...u}:{target:i,success:!1,code:"",calling:"expression",run:(c=>{s.pushScope();try{if(c&&typeof c=="object")for(let[f,d]of Object.entries(c))s.declare(f,"number"),s.assign(f,d);return a(n.evaluate())}finally{s.popScope()}}),error:t,...u}}static withBoundNames(n,t){let i=t.filter(o=>o!==""&&o!==void 0);if(i.length===0)return n.boundVars;let r=new Set(n.boundVars);for(let o of i)r.add(o);return r}static tempVar(){return`_${Math.random().toString(36).substring(4)}`}static inlineExpression(n,t){if(/^[\p{L}_][\p{L}\p{N}_]*$/u.test(t)||/^[0-9]+$/.test(t))return new Function("x",`return \`${n}\`;`)(t);{let r=e.tempVar();return new Function("x",`return \`(() => { const ${r} = \${x}; return ${n.replace(/\\\${x}/g,r)}; })()\`;`)(t)}}};var O1=new Set(["Sin","Cos","Tan","Cot","Sec","Csc","Haversine"]),B1=new Set(["Arcsin","Arccos","Arctan","Arctan2","Arccot","Arcsec","Arccsc","InverseHaversine"]);function fn(e){let n=e.engine,t=n.angularUnit;if(t==="rad")return e;let i=t==="deg"?Math.PI/180:t==="grad"?Math.PI/200:2*Math.PI,r=o=>{if(!g(o))return o;let s=!1,a=o.ops.map(l=>{let c=r(l);return c!==l&&(s=!0),c}),u=o.operator;if(O1.has(u)&&a.length===1)return n.function(u,[n.function("Multiply",[n.number(i),a[0]])]);if(B1.has(u)&&a.length>=1){let l=s?n.function(u,a):o;return n.function("Multiply",[n.number(1/i),l])}return s?n.function(u,a):o};return r(e)}function Hi(e){return typeof e=="object"&&e!==null}function Kd(e){return typeof e=="number"&&Number.isFinite(e)}function L1(e){if(!Hi(e))throw new Error("Invalid compile target: expected an object");if(typeof e.var!="function")throw new Error('Invalid compile target: missing required method "var()"');if(typeof e.string!="function")throw new Error('Invalid compile target: missing required method "string()"');if(typeof e.number!="function")throw new Error('Invalid compile target: missing required method "number()"');if(typeof e.ws!="function")throw new Error('Invalid compile target: missing required method "ws()"');if(typeof e.preamble!="string")throw new Error('Invalid compile target: "preamble" must be a string');if(!Kd(e.indent))throw new Error('Invalid compile target: "indent" must be a finite number');if(e.operators!==void 0&&typeof e.operators!="function")throw new Error('Invalid compile target: "operators" must be a function');if(e.functions!==void 0&&typeof e.functions!="function")throw new Error('Invalid compile target: "functions" must be a function');if(e.language!==void 0&&typeof e.language!="string")throw new Error('Invalid compile target: "language" must be a string')}function V1(e,n){if(n!==void 0&&(!Array.isArray(n)||n.length!==2||typeof n[0]!="string"||!Kd(n[1])))throw new Error(`Invalid compilation option "operators.${e}": expected [string, number]`)}function q1(e){if(e!==void 0&&typeof e!="function"){if(!Hi(e)||Array.isArray(e))throw new Error('Invalid compilation option "operators": expected a function or a record');for(let[n,t]of Object.entries(e))V1(n,t)}}function J1(e){if(e!==void 0){if(!Hi(e)||Array.isArray(e))throw new Error('Invalid compilation option "functions": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string"&&typeof t!="function")throw new Error(`Invalid compilation option "functions.${n}": expected a string or function`)}}function z1(e){if(e!==void 0){if(!Hi(e)||Array.isArray(e))throw new Error('Invalid compilation option "vars": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string")throw new Error(`Invalid compilation option "vars.${n}": expected a string`)}}function j1(e){if(e!==void 0&&!Array.isArray(e))throw new Error('Invalid compilation option "imports": expected an array')}function Qd(e){if(e!==void 0){if(!Hi(e)||Array.isArray(e))throw new Error("Invalid compilation options: expected an object");if(e.to!==void 0&&typeof e.to!="string")throw new Error('Invalid compilation option "to": expected a string');if(e.target!==void 0&&L1(e.target),q1(e.operators),J1(e.functions),z1(e.vars),j1(e.imports),e.preamble!==void 0&&typeof e.preamble!="string")throw new Error('Invalid compilation option "preamble": expected a string');if(e.fallback!==void 0&&typeof e.fallback!="boolean")throw new Error('Invalid compilation option "fallback": expected a boolean');if(e.iterationBudget!==void 0&&(typeof e.iterationBudget!="number"||!(e.iterationBudget>0)))throw new Error('Invalid compilation option "iterationBudget": expected a positive number');if(e.quadrature!==void 0&&e.quadrature!=="adaptive"&&e.quadrature!=="monte-carlo")throw new Error('Invalid compilation option "quadrature": expected "adaptive" or "monte-carlo"')}}function ep(e,n){Qd(n);try{if(n?.target){let r=N.compile(fn(e),n.target);return N.withReferences({target:n.target.language??"custom",success:!0,code:r},e,n.target,n.vars?new Set(Object.keys(n.vars)):void 0)}let t=n?.to??"javascript",i=e.engine.getCompilationTarget(t);if(!i)throw new Error(`Compilation target "${t}" is not registered. Available targets: ${e.engine.listCompilationTargets().join(", ")}`);return i.compile(e,{operators:n?.operators,functions:n?.functions,vars:n?.vars,imports:n?.imports,preamble:n?.preamble,realOnly:n?.realOnly,iterationBudget:n?.iterationBudget,quadrature:n?.quadrature})}catch(t){if(n?.fallback??!0){let i=t.message;console.warn(`Compilation fallback for "${e.operator}" (target: ${n?.to??"javascript"}): ${i}`);let r=n?.to??"javascript";if(r==="interval-js"){let s=e.engine.getCompilationTarget("interval-js");if(s)return s.compile(e,{vars:n?.vars,fallback:!0})}let o=n?.target??e.engine.getCompilationTarget(r)?.createTarget();return N.buildInterpreterFallback(e,i,r,o,n?.vars?new Set(Object.keys(n.vars)):void 0)}throw t}}function ge(e){if(!Number.isFinite(e))throw new Error(`Cannot compile the non-finite value \`${e}\` to a GPU shader: GLSL/WGSL have no infinity or NaN literals.`);let n=e.toString();return!n.includes(".")&&!n.includes("e")&&!n.includes("E")?`${n}.0`:n}function se(e){if(!F(e)||e.im!==0)return;let n=e.re;if(isFinite(n))return n}var G1=/^-?\d+(\.\d+)?$/;function zn(e,n,t){let i=t==="+"?0:1,r=null,o=[];for(let s of e)if(G1.test(s)){let a=parseFloat(s);if(t==="*"&&a===0)return"0.0";r===null?r=a:r=t==="+"?r+a:r*a}else o.push(s);return r!==null&&r!==i&&o.unshift(ge(r)),o.length===0?r!==null?ge(r):n:o.length===1?o[0]:o.join(t==="+"?" + ":" * ")}function fo(e,n){return g(e,"Add")||g(e,"Subtract")?`(${n})`:n}function np(e,n){if(S(e,"ImaginaryUnit"))return{re:null,im:"1.0"};if(F(e)&&e.im!==0){let t=e.re,i=e.im;return{re:t!==0?ge(t):null,im:ge(i)}}if(g(e,"Multiply")){let t=e.ops,i=t.findIndex(r=>S(r,"ImaginaryUnit")||F(r)&&r.re===0&&r.im!==0);if(i>=0){let r=t[i],o=S(r,"ImaginaryUnit")?1:r.im,s=t.filter((l,c)=>c!==i);if(s.length===0)return{re:null,im:ge(o)};let a=s.map(l=>fo(l,n(l)));return o!==1&&a.unshift(ge(o)),{re:null,im:zn(a,"1.0","*")}}}return N.isComplexValued(e)?null:{re:n(e),im:null}}function Ia(e){let n=Math.abs(e);return n<=.0031308?12.92*e:(Math.sign(e)||1)*(1.055*Math.pow(n,1/2.4)-.055)}function Sa(e){let n=Math.abs(e);return n<=.04045?e/12.92:(Math.sign(e)||1)*Math.pow((n+.055)/1.055,2.4)}function yo(e,n,t){e=e/360;let i,r,o;if(n===0)i=r=o=t;else{let s=(l,c,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<.16666666666666666?l+(c-l)*6*f:f<.5?c:f<.6666666666666666?l+(c-l)*(.6666666666666666-f)*6:l),a=t<.5?t*(1+n):t+n-t*n,u=2*t-a;i=s(u,a,e+1/3),r=s(u,a,e),o=s(u,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(r*255),b:Math.round(o*255)}}function xo(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),o=(i+r)/2;if(i===r)return{h:0,s:0,l:o};let s=i-r,a=o>.5?s/(2-i-r):s/(i+r),u;return i===e?u=((n-t)/s+(n<t?6:0))/6:i===n?u=((t-e)/s+2)/6:u=((e-n)/s+4)/6,{h:u*360,s:a,l:o}}function xp(e,n,t){e=(e%360+360)%360,n=Math.max(0,Math.min(1,n)),t=Math.max(0,Math.min(1,t));let i=t*n,r=i*(1-Math.abs(e/60%2-1)),o=t-i,s=0,a=0,u=0;return e<60?[s,a,u]=[i,r,0]:e<120?[s,a,u]=[r,i,0]:e<180?[s,a,u]=[0,i,r]:e<240?[s,a,u]=[0,r,i]:e<300?[s,a,u]=[r,0,i]:[s,a,u]=[i,0,r],{r:(s+o)*255,g:(a+o)*255,b:(u+o)*255}}function Ep(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),o=i-r,s=0;o>0&&(i===e?s=(n-t)/o%6:i===n?s=(t-e)/o+2:s=(e-n)/o+4,s*=60,s<0&&(s+=360));let a=i===0?0:o/i;return{h:s,s:a,v:i}}function U1(e){let n=e.startsWith("#")?e.substring(1):e,t,i,r,o;if(n.length===3)t=parseInt(n[0]+n[0],16),i=parseInt(n[1]+n[1],16),r=parseInt(n[2]+n[2],16);else if(n.length===6)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16);else if(n.length===8)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16),o=parseInt(n.substring(6,8),16)/255;else return{r:0,g:0,b:0};let s={r:t,g:i,b:r};return o!==void 0&&(s.alpha=o),s}function ho(e){return typeof e=="number"?{r:e>>>24&255,g:e>>>16&255,b:e>>>8&255,alpha:(e&255)/255}:typeof e=="string"?U1(e):"C"in e?Eo(e):"a"in e&&"b"in e?Ca(e):e}function tp(e){let n=ho(e),t=n.alpha!==void 0?pn(n.alpha*255):255;return(pn(n.r)<<24|pn(n.g)<<16|pn(n.b)<<8|t)>>>0}function pn(e){return e<0?0:e>255?255:Math.round(e)}function Et(e){let[n,t,i]=[e.L,e.C,e.H],r=i*Math.PI/180,o={L:n,a:t*Math.cos(r),b:t*Math.sin(r)};return e.alpha!==void 0&&(o.alpha=e.alpha),o}function Yi(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.sqrt(t*t+i*i),s=Math.atan2(i,t)*180/Math.PI,a={L:n,C:r,H:s};return e.alpha!==void 0&&(a.alpha=e.alpha),a}function mo(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.pow(.9999999984505198*n+.39633779217376786*t+.2158037580607588*i,3),o=Math.pow(1.00000000888176*n-.10556134232365635*t-.0638541747717059*i,3),s=Math.pow(n*1.000000054672411-.0894841820949657*t-1.2914855378640917*i,3),a=4.076741661347994*r-3.307711590408193*o+.230969928729428*s,u=-1.2684380040921763*r+2.6097574006633715*o-.3413193963102197*s,l=-.004196086541837188*r-.7034186144594493*o+1.7076147009309444*s;return[Ia(a),Ia(u),Ia(l)]}function wa(e){let[n,t,i]=e;return n>=0&&n<=1&&t>=0&&t<=1&&i>=0&&i<=1}function Ma(e,n){let[t,i,r]=e;return t=pn(t*255),i=pn(i*255),r=pn(r*255),n!==void 0?{r:t,g:i,b:r,alpha:n}:{r:t,g:i,b:r}}function Ca(e){let[n,t,i]=mo(e);if(wa([n,t,i]))return Ma([n,t,i],e.alpha);let r=Yi(e);if(r.C=0,[n,t,i]=mo(Et(r)),!wa([n,t,i]))return Ma([n,t,i],e.alpha);let o=0,s=e.L,a=(o+s)/2;r.C=a;let u=.36/Math.pow(2,12);for(;s-o>u;)a=(o+s)/2,r.C=a,[n,t,i]=mo(Et(r)),wa([n,t,i])?o=a:s=a;return Ma([n,t,i],e.alpha)}function Eo(e){return Ca(Et(e))}function $a(e){let[n,t,i]=[e.r,e.g,e.b],r=Sa(n/255),o=Sa(t/255),s=Sa(i/255),a=.41222147079999993*r+.5363325363*o+.0514459929*s,u=.2119034981999999*r+.6806995450999999*o+.1073969566*s,l=.08830246189999998*r+.2817188376*o+.6299787005000002*s,c=Math.cbrt(a),f=Math.cbrt(u),d=Math.cbrt(l),p={L:.2104542553*c+.793617785*f-.0040720468*d,a:1.9779984951*c-2.428592205*f+.4505937099*d,b:.0259040371*c+.7827717662*f-.808675766*d};return e.alpha!==void 0&&(p.alpha=e.alpha),p}function qe(e){return Yi($a(e))}function ka(e,n){let t=n*Math.PI/180,i=0,r=1.5;for(let o=0;o<32;o++){let s=(i+r)/2,[a,u,l]=mo({L:e,a:s*Math.cos(t),b:s*Math.sin(t)});a>=0&&a<=1&&u>=0&&u<=1&&l>=0&&l<=1?i=s:r=s}return i}function Ut(e,n,t){let i=e/100;if(i<=0)return 255;let r=Eo({L:i,C:n,H:t});return(pn(r.r)<<24|pn(r.g)<<16|pn(r.b)<<8|255)>>>0}function H1(e){let{l:n,c:t,h:i}=go(e);return Ut(n+2.8,t+.002,i+.46)}function go(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=qe({r:n,g:t,b:i});return{l:r.L*100,c:r.C,h:r.H<0?r.H+360:r.H}}function Aa(e,n,t){let{l:i,c:r,h:o}=go(e),{l:s,c:a,h:u}=go(n),l=i+(s-i)*t,c=r+(a-r)*t,f=u-o;f>180&&(f-=360),f<-180&&(f+=360);let d=o+f*t,p=e&255,h=n&255,b=Math.round(p+(h-p)*t);return Ut(l,c,d<0?d+360:d>360?d-360:d)&4294967040|b}function Z1(e,n=.1){let a=.45,u=0;for(let h=.45;h>=.35;h-=.01){let b=ka(h,e);if(b>=.15){a=h,u=.15;break}else b>u&&(a=h,u=b)}if(u<.15*.8)for(let h=.45+.01;h<=.5;h+=.01){let b=ka(h,e);if(b>=.15||b>u*1.2){a=h,u=Math.min(.15,b);break}}let l=.96,c=.02,f=ka(.96,e);f<.02&&(c=f*(1-n)),c=Math.max(.015,Math.min(.02,c));let d=Ut(a*100,u,e),p=Ut(l*100,c,e);return{darkest:d,lightest:p}}function Y1(e,n){let t=Math.max(0,Math.min(1e3,n)),i,r,o;if(typeof e=="object")i=e.darkest,o=e.lightest,r=e.mid??0;else{r=e;let{h:u}=go(r),l=r&255,{darkest:c,lightest:f}=Z1(u);i=c&4294967040|l,o=f&4294967040|l}if(!r&&typeof e=="object"&&!e.mid&&(r=Aa(i,o,.5)),t<=500){let u=t/500,l=u*u*(3-2*u);return Aa(o,r,l)}let s=(t-500)/500,a=s*s*(3-2*s);return Aa(r,i,a)}var W1=[{id:"pink",name:"Pink",colors:{mid:{lightness:69,chroma:.202,hue:7.4}}},{id:"red",name:"Red",colors:{lightest:{lightness:95,chroma:.2,hue:30},mid:{lightness:62,chroma:.25,hue:30},darkest:{lightness:36,chroma:.16,hue:25}}},{id:"brown",name:"Brown",colors:{lightest:{lightness:94.5,chroma:.021,hue:72.1},mid:{lightness:59,chroma:.2,hue:73},darkest:{lightness:20,chroma:.061,hue:72.7}}},{id:"orange",name:"Orange",colors:{lightest:{lightness:95,chroma:.06,hue:82},mid:{lightness:73,chroma:.21,hue:56},darkest:{lightness:46,chroma:.2,hue:35}}},{id:"yellow",name:"Yellow",colors:{lightest:{lightness:97,chroma:.02,hue:106},mid:{lightness:89,chroma:.21,hue:99},darkest:{lightness:67,chroma:.43,hue:59}}},{id:"lime",name:"Lime",colors:{mid:{lightness:65,chroma:.192,hue:134.3}}},{id:"green",name:"Green",colors:{mid:{lightness:64,chroma:.21,hue:144}}},{id:"teal",name:"Teal",colors:{mid:{lightness:65,chroma:.116,hue:192.6}}},{id:"cyan",name:"Cyan",colors:{lightest:{lightness:97,chroma:.11,hue:195},mid:{lightness:61,chroma:.11,hue:210},darkest:{lightness:42,chroma:.11,hue:210}}},{id:"blue",name:"Blue",colors:{lightest:{lightness:91,chroma:.22,hue:240},mid:{lightness:63,chroma:.22,hue:255},darkest:{lightness:38,chroma:.22,hue:252}}},{id:"indigo",name:"Indigo",colors:{lightest:{lightness:92.7,chroma:.036,hue:291},mid:{lightness:67,chroma:.285,hue:296},darkest:{lightness:28,chroma:.23,hue:278}}},{id:"purple",name:"Purple",colors:{mid:{lightness:67,chroma:.21,hue:299}}}];function Gt({lightness:e,chroma:n,hue:t}){return Ut(e,n,t)}function X1(e){let{mid:n,lightest:t,darkest:i}=e.colors;if(t&&i&&n)return{lightest:Gt(t),mid:Gt(n),darkest:Gt(i)};if(t&&i)return{lightest:Gt(t),darkest:Gt(i)};if(n)return Gt(n);throw new Error(`Color scale preset "${e.id}" is missing required anchors.`)}var po=null;function K1(){if(!po){po=Object.create(null);for(let e of W1)po[e.id]=X1(e)}return po}var ip={red:"#d7170b",orange:"#fe8a2b",yellow:"#ffc02b",lime:"#63b215",green:"#21ba3a",teal:"#17cfcf",cyan:"#13a7ec",blue:"#0d80f2",indigo:"#63c",purple:"#a219e6",magenta:"#eb4799",brown:"#8c564b",olive:"#8a8f2a",midnight:"#2c4670",sky:"#d2dce9",black:"#000",white:"#ffffff",carbon:"#111111",charcoal:"#333333",slate:"#555555","dark-grey":"#666",graphite:"#777777",stone:"#999999",grey:"#A6A6A6","light-grey":"#d4d5d2",ash:"#E6E6E6",mist:"#F3F3F3",snow:"#FFFFFF"};function Cn(e,n){let t=e.trim().toLowerCase(),i=t.match(/^(.+?)\s*\/\s*(\d+(?:\.\d+)?)%?\s*$/);if(i){let l=Cn(i[1].trim(),n),c=Math.max(0,Math.min(100,parseFloat(i[2]))),f=Math.round(c/100*255);return l&4294967040|f}if(t.startsWith("#")){let l=t.substring(1),c,f,d,p=255;if(l.length===3)c=parseInt(l[0]+l[0],16),f=parseInt(l[1]+l[1],16),d=parseInt(l[2]+l[2],16);else if(l.length===6)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),d=parseInt(l.substring(4,6),16);else if(l.length===8)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),d=parseInt(l.substring(4,6),16),p=parseInt(l.substring(6,8),16);else return 0;return(c<<24|f<<16|d<<8|p)>>>0}let r=t.match(/^rgba?\s*\(\s*([^)]+)\s*\)$/);if(r){let l=r[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0,d=parseFloat(l[2])||0;l[0].includes("%")||l[1].includes("%")||l[2].includes("%")?(l[0].includes("%")&&(c=c/100*255),l[1].includes("%")&&(f=f/100*255),l[2].includes("%")&&(d=d/100*255)):c<=1&&f<=1&&d<=1&&(c=c*255,f=f*255,d=d*255),c=Math.round(Math.max(0,Math.min(255,c))),f=Math.round(Math.max(0,Math.min(255,f))),d=Math.round(Math.max(0,Math.min(255,d)));let p=255;if(l.length>=4){let h=parseFloat(l[3]);l[3].includes("%")?h=h/100:h>1&&(h=h/255),p=Math.round(Math.max(0,Math.min(255,h*255)))}return(c<<24|f<<16|d<<8|p)>>>0}let o=t.match(/^oklch\s*\(\s*([^)]+)\s*\)$/);if(o){let l=o[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);l[0].includes("%")?c=c/100:c<=1||(c=c/100);let f=parseFloat(l[1])||0,d=parseFloat(l[2])||0,p=1;l.length>=4&&(p=parseFloat(l[3]),l[3].includes("%")?p=p/100:p>1&&(p=p/255));let h=Ut(c*100,f,d),b=Math.round(p*255);return h&4294967040|b}let s=t.match(/^oklab\s*\(\s*([^)]+)\s*\)$/);if(s){let l=s[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);(l[0].includes("%")||c>1)&&(c=c/100);let f=parseFloat(l[1])||0,d=parseFloat(l[2])||0,p=1;l.length>=4&&(p=parseFloat(l[3]),l[3].includes("%")?p=p/100:p>1&&(p=p/255));let h=Ca({L:c,a:f,b:d}),b=h.r,y=h.g,v=h.b,T=Math.round(p*255);return(b<<24|y<<16|v<<8|T)>>>0}let a=t.match(/^hsl\s*\(\s*([^)]+)\s*\)$/);if(a){let l=a[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0;l[1].includes("%")?f=f/100:f<=1||(f=f/100);let d=parseFloat(l[2])||0;l[2].includes("%")?d=d/100:d<=1||(d=d/100);let p=1;l.length>=4&&(p=parseFloat(l[3]),l[3].includes("%")?p=p/100:p>1&&(p=p/255));let{r:h,g:b,b:y}=yo(c,f,d),v=Math.round(p*255);return(h<<24|b<<16|y<<8|v)>>>0}if(t==="transparent")return 0;let u=t.match(/^([a-z]+)-(\d+)$/);if(u){let l=K1()[u[1]];if(l){let c=Y1(l,parseInt(u[2],10));return n?H1(c):c}}return t in ip?Cn(ip[t]):(console.warn(`parseColor: unrecognized color "${e}"`),0)}function bo(e,n){let t=ho(e),i=ho(n),r=.56,o=.57,s=.62,a=.65,u=.022,l=1.414,c=.1,f=5e-4,d=1.14,p=.027,h=1.14,b=.027;function y(O){return O>=u?O:O+(u-O)**l}function v(O){return(O<0?-1:1)*Math.pow(Math.abs(O),2.4)}let T=y(v(i.r/255)*.2126729+v(i.g/255)*.7151522+v(i.b/255)*.072175),_=y(v(t.r/255)*.2126729+v(t.g/255)*.7151522+v(t.b/255)*.072175),A,k;return Math.abs(_-T)<f?k=0:_>T?(A=_**r-T**o,k=A*d):(A=_**a-T**s,k=A*h),Math.abs(k)<c?0:k>0?k-b:k+p}function Ra(e){let n,t,i;typeof e!="object"||!("bg"in e)?(n=ho(e),t="#ffffff",i="#000000"):(n=e.bg,t=e.fg1,i=e.fg2);let r=Math.abs(bo(t,n)),o=Math.abs(bo(i,n));return r>=o?tp(t):tp(i)}function vp(e,n){let t=e.L-n.L,i=e.a-n.a,r=e.b-n.b;return Math.sqrt(t*t+i*i+r*r)}var Q1=["#4e79a7","#f28e2b","#59a14f","#e15759","#b07aa1","#9c755f","#ff9da7","#edc948","#76b7b2","#6b8fd6","#c07bc4"],ey=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],ny=["#4e79a7","#f28e2b","#2ca58d","#d13a3c","#b07aa1","#9c755f","#ff9da7","#e3c13b","#5fb8b2","#6b8fd6","#c07bc4"],ty=["#8fb1d4","#f6b878","#8ecf86","#f08a8b","#d3a9cc","#c3a492","#ffc6cc","#f3e08a","#a8d8d4","#a9c0ea","#e0b4e4"],iy=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],ry=["#2f6fb0","#ff7a00","#2fa23a","#e02f2f","#9b4db5","#7f4f38","#ff6f86","#f2c200","#2daaa3","#4c79e0","#b84ac6"],oy=["#4f93ff","#ff8c1a","#33c94a","#ff4f4f","#b86bff","#a86a4a","#ff7f9e","#ffd400","#2ec9c1","#6f9bff","#cc5bd9"],sy=["#5E81B5","#E19C24","#8FB131","#EB6235","#8778B3","#C56E1A","#5E9EC9","#B23A3A","#4C9F70","#C979B7"],ay=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],uy=["#007AFF","#FF9500","#34C759","#FF3B30","#AF52DE","#FF2D55","#30B0C7","#5856D6","#A2845E","#32ADE6","#00C7BE"],ly=["#0A84FF","#FF9F0A","#30D158","#FF453A","#BF5AF2","#FF375F","#40C8E0","#5E5CE6","#AC8E68","#64D2FF","#00D1C1"],cy=["#fdfdfd","#1d1d1d","#ebce2b","#702c8c","#db6917","#96cde6","#ba1c30","#c0bd7f","#7f7e80","#5fa641","#d485b2","#4277b6","#df8461","#463397","#e1a11a","#91218c","#e8e948","#7e1510","#92ae31","#6f340d","#d32b1e","#2b3514"],fy=["#4148cc","#db3c80","#12b5b0","#ff8c14","#848aff","#78e16e","#1e78f0","#ebcd00","#beeb3c","#7828d2","#cd5f00","#00915f"],Np={tycho11:Q1,"tycho-dark11":ey,"tycho-robust11":ny,"tycho-soft11":ty,"tycho-soft-dark11":iy,"tycho-bold11":ry,"tycho-bold-dark11":oy,tableau10:ay,kelly22:cy,mathematica10:sy,cupertino10:uy,"cupertino-dark10":ly,spectrum12:fy},rp=["#033198","#053399","#07359a","#09379b","#0b399c","#0c3b9c","#0e3d9d","#0f3f9e","#11409f","#1242a0","#1344a0","#1446a1","#1548a2","#164aa3","#174ca4","#184da4","#194fa5","#1951a6","#1a53a7","#1b54a8","#1b56a8","#1c58a9","#1d5aaa","#1d5bab","#1e5dab","#1e5fac","#1f60ad","#2062ae","#2064ae","#2166af","#2167b0","#2269b0","#226ab1","#236cb2","#236eb3","#246fb3","#2471b4","#2573b5","#2574b5","#2676b6","#2677b7","#2779b7","#287ab8","#287cb9","#297eb9","#297fba","#2a81bb","#2b82bb","#2b84bc","#2c85bd","#2d87bd","#2d88be","#2e8abf","#2f8cbf","#308dc0","#308fc1","#3190c1","#3292c2","#3394c3","#3495c3","#3597c4","#3698c5","#379ac5","#389cc6","#399dc7","#3a9fc7","#3ca1c8","#3da2c9","#3ea4c9","#40a6ca","#41a7cb","#43a9cb","#44abcc","#46accc","#47aecd","#49b0ce","#4bb2ce","#4db3cf","#4fb5d0","#51b7d0","#53b8d1","#55bad1","#57bcd2","#59bdd2","#5bbfd3","#5dc1d3","#60c3d4","#62c4d4","#64c6d5","#67c7d5","#69c9d5","#6ccbd6","#6eccd6","#71ced6","#74cfd6","#76d1d7","#79d2d7","#7bd4d7","#7ed5d7","#81d7d7","#83d8d7","#86d9d7","#89dad7","#8bdcd7","#8eddd7","#90ded7","#93dfd6","#95e0d6","#98e1d6","#9be2d5","#9de3d5","#9fe4d4","#a2e5d4","#a4e5d3","#a6e6d2","#a9e7d2","#abe7d1","#ade8d0","#afe8cf","#b1e9ce","#b3e9cd","#b5eacc","#b7eaca","#b9eac9","#bbeac8","#bdeac6","#beeac5","#c0eac3","#c1eac2","#c3eac0","#c4eabe","#c6eabc","#c7e9ba","#c8e9b8","#c9e9b6","#cbe8b4","#cce7b2","#cce7b0","#cde6ad","#cee5ab","#cfe5a8","#d0e4a6","#d0e3a3","#d1e2a1","#d1e19e","#d1df9b","#d2de98","#d2dd96","#d2dc93","#d2da90","#d2d98d","#d2d78a","#d2d687","#d2d484","#d2d381","#d2d17e","#d1cf7b","#d1cd78","#d0cc75","#d0ca72","#cfc86f","#cfc66d","#cec46a","#cec267","#cdc064","#ccbe62","#cbbc5f","#cbba5d","#cab85a","#c9b658","#c8b455","#c7b253","#c7b051","#c6ae4f","#c5ac4c","#c4aa4a","#c3a848","#c2a647","#c1a545","#c1a343","#c0a141","#bf9f40","#be9d3e","#bd9b3c","#bc993b","#bb9739","#ba9538","#ba9437","#b99235","#b89034","#b78e33","#b68c32","#b58b31","#b58930","#b4872f","#b3862e","#b2842d","#b1822c","#b0802b","#b07f2a","#af7d29","#ae7c28","#ad7a27","#ad7826","#ac7726","#ab7525","#aa7324","#a97223","#a97023","#a86f22","#a76d21","#a66c20","#a66a20","#a5681f","#a4671e","#a3651e","#a2641d","#a2621c","#a1611c","#a05f1b","#9f5d1a","#9e5c19","#9e5a19","#9d5818","#9c5717","#9b5517","#9a5316","#995215","#995014","#984e14","#974d13","#964b12","#954912","#944711","#934610","#92440f","#91420f","#90400e","#903e0d","#8f3c0c","#8e3a0b","#8d380b","#8c360a","#8b3409","#8a3208","#883008","#872e07","#862c06","#852a06","#842705","#832504","#822204","#812003","#801d02","#7f1a01","#7e1700"],op=["#0b3c78","#2366a8","#4f97cf","#9bc7e4","#f7f7f7","#e88fa0","#c23c6f","#8e1d4d","#5a0c2e"],sp=["#2c557f","#4a7fa8","#7aa8c9","#b5cfe3","#f7f7f7","#e4b0b0","#c96c72","#9b3d4f","#6b1a2b"],ap=["#053061","#11458c","#1f5fa5","#337ab7","#4f94c6","#6baed6","#8bbdd9","#a6cce3","#c1dbec","#dceaf4","#f7f7f7","#fbe3d6","#f9c8b2","#f5a993","#ee8a75","#e36b58","#d64b41","#c72c33","#af212d","#971628","#7f0b23","#67001f"],up=["#3b4cc0","#465ecf","#5070de","#5c82ea","#6f96f5","#86aafc","#9dbdff","#b6d0f3","#cfe1e8","#e6efe1","#f1f1f1","#f7f7f7","#f6e1d3","#f4cbb3","#f1b594","#ee9f76","#ea8960","#e06b53","#d24f49","#c1363f","#ae2036","#b40426"],Zi=e=>e.slice().reverse(),Tp={roma:rp,"roma-reversed":Zi(rp),vik:op,"vik-reversed":Zi(op),broc:sp,"broc-reversed":Zi(sp),rdbu:ap,"rdbu-reversed":Zi(ap),coolwarm:up,"coolwarm-reversed":Zi(up)},lp=["#30123b","#321543","#33184a","#341b51","#351e58","#36215f","#372466","#38276d","#392a73","#3a2d79","#3b2f80","#3c3286","#3d358b","#3e3891","#3f3b97","#3f3e9c","#4040a2","#4143a7","#4146ac","#4249b1","#424bb5","#434eba","#4451bf","#4454c3","#4456c7","#4559cb","#455ccf","#455ed3","#4661d6","#4664da","#4666dd","#4669e0","#466be3","#476ee6","#4771e9","#4773eb","#4776ee","#4778f0","#477bf2","#467df4","#4680f6","#4682f8","#4685fa","#4687fb","#458afc","#458cfd","#448ffe","#4391fe","#4294ff","#4196ff","#4099ff","#3e9bfe","#3d9efe","#3ba0fd","#3aa3fc","#38a5fb","#37a8fa","#35abf8","#33adf7","#31aff5","#2fb2f4","#2eb4f2","#2cb7f0","#2ab9ee","#28bceb","#27bee9","#25c0e7","#23c3e4","#22c5e2","#20c7df","#1fc9dd","#1ecbda","#1ccdd8","#1bd0d5","#1ad2d2","#1ad4d0","#19d5cd","#18d7ca","#18d9c8","#18dbc5","#18ddc2","#18dec0","#18e0bd","#19e2bb","#19e3b9","#1ae4b6","#1ce6b4","#1de7b2","#1fe9af","#20eaac","#22ebaa","#25eca7","#27eea4","#2aefa1","#2cf09e","#2ff19b","#32f298","#35f394","#38f491","#3cf58e","#3ff68a","#43f787","#46f884","#4af880","#4ef97d","#52fa7a","#55fa76","#59fb73","#5dfc6f","#61fc6c","#65fd69","#69fd66","#6dfe62","#71fe5f","#75fe5c","#79fe59","#7dff56","#80ff53","#84ff51","#88ff4e","#8bff4b","#8fff49","#92ff47","#96fe44","#99fe42","#9cfe40","#9ffd3f","#a1fd3d","#a4fc3c","#a7fc3a","#a9fb39","#acfb38","#affa37","#b1f936","#b4f836","#b7f735","#b9f635","#bcf534","#bef434","#c1f334","#c3f134","#c6f034","#c8ef34","#cbed34","#cdec34","#d0ea34","#d2e935","#d4e735","#d7e535","#d9e436","#dbe236","#dde037","#dfdf37","#e1dd37","#e3db38","#e5d938","#e7d739","#e9d539","#ebd339","#ecd13a","#eecf3a","#efcd3a","#f1cb3a","#f2c93a","#f4c73a","#f5c53a","#f6c33a","#f7c13a","#f8be39","#f9bc39","#faba39","#fbb838","#fbb637","#fcb336","#fcb136","#fdae35","#fdac34","#fea933","#fea732","#fea431","#fea130","#fe9e2f","#fe9b2d","#fe992c","#fe962b","#fe932a","#fe9029","#fd8d27","#fd8a26","#fc8725","#fc8423","#fb8122","#fb7e21","#fa7b1f","#f9781e","#f9751d","#f8721c","#f76f1a","#f66c19","#f56918","#f46617","#f36315","#f26014","#f15d13","#f05b12","#ef5811","#ed5510","#ec530f","#eb500e","#ea4e0d","#e84b0c","#e7490c","#e5470b","#e4450a","#e2430a","#e14109","#df3f08","#dd3d08","#dc3b07","#da3907","#d83706","#d63506","#d43305","#d23105","#d02f05","#ce2d04","#cc2b04","#ca2a04","#c82803","#c52603","#c32503","#c12302","#be2102","#bc2002","#b91e02","#b71d02","#b41b01","#b21a01","#af1801","#ac1701","#a91601","#a71401","#a41301","#a11201","#9e1001","#9b0f01","#980e01","#950d01","#920b01","#8e0a01","#8b0902","#880802","#850702","#810602","#7e0502","#7a0403"],cp=["#000004","#010005","#010106","#010108","#020109","#02020b","#02020d","#03030f","#030312","#040414","#050416","#060518","#06051a","#07061c","#08071e","#090720","#0a0822","#0b0924","#0c0926","#0d0a29","#0e0b2b","#100b2d","#110c2f","#120d31","#130d34","#140e36","#150e38","#160f3b","#180f3d","#19103f","#1a1042","#1c1044","#1d1147","#1e1149","#20114b","#21114e","#221150","#241253","#251255","#271258","#29115a","#2a115c","#2c115f","#2d1161","#2f1163","#311165","#331067","#341069","#36106b","#38106c","#390f6e","#3b0f70","#3d0f71","#3f0f72","#400f74","#420f75","#440f76","#451077","#471078","#491078","#4a1079","#4c117a","#4e117b","#4f127b","#51127c","#52137c","#54137d","#56147d","#57157e","#59157e","#5a167e","#5c167f","#5d177f","#5f187f","#601880","#621980","#641a80","#651a80","#671b80","#681c81","#6a1c81","#6b1d81","#6d1d81","#6e1e81","#701f81","#721f81","#732081","#752181","#762181","#782281","#792282","#7b2382","#7c2382","#7e2482","#802582","#812581","#832681","#842681","#862781","#882781","#892881","#8b2981","#8c2981","#8e2a81","#902a81","#912b81","#932b80","#942c80","#962c80","#982d80","#992d80","#9b2e7f","#9c2e7f","#9e2f7f","#a02f7f","#a1307e","#a3307e","#a5317e","#a6317d","#a8327d","#aa337d","#ab337c","#ad347c","#ae347b","#b0357b","#b2357b","#b3367a","#b5367a","#b73779","#b83779","#ba3878","#bc3978","#bd3977","#bf3a77","#c03a76","#c23b75","#c43c75","#c53c74","#c73d73","#c83e73","#ca3e72","#cc3f71","#cd4071","#cf4070","#d0416f","#d2426f","#d3436e","#d5446d","#d6456c","#d8456c","#d9466b","#db476a","#dc4869","#de4968","#df4a68","#e04c67","#e24d66","#e34e65","#e44f64","#e55064","#e75263","#e85362","#e95462","#ea5661","#eb5760","#ec5860","#ed5a5f","#ee5b5e","#ef5d5e","#f05f5e","#f1605d","#f2625d","#f2645c","#f3655c","#f4675c","#f4695c","#f56b5c","#f66c5c","#f66e5c","#f7705c","#f7725c","#f8745c","#f8765c","#f9785d","#f9795d","#f97b5d","#fa7d5e","#fa7f5e","#fa815f","#fb835f","#fb8560","#fb8761","#fc8961","#fc8a62","#fc8c63","#fc8e64","#fc9065","#fd9266","#fd9467","#fd9668","#fd9869","#fd9a6a","#fd9b6b","#fe9d6c","#fe9f6d","#fea16e","#fea36f","#fea571","#fea772","#fea973","#feaa74","#feac76","#feae77","#feb078","#feb27a","#feb47b","#feb67c","#feb77e","#feb97f","#febb81","#febd82","#febf84","#fec185","#fec287","#fec488","#fec68a","#fec88c","#feca8d","#fecc8f","#fecd90","#fecf92","#fed194","#fed395","#fed597","#fed799","#fed89a","#fdda9c","#fddc9e","#fddea0","#fde0a1","#fde2a3","#fde3a5","#fde5a7","#fde7a9","#fde9aa","#fdebac","#fcecae","#fceeb0","#fcf0b2","#fcf2b4","#fcf4b6","#fcf6b8","#fcf7b9","#fcf9bb","#fcfbbd","#fcfdbf"],fp=["#000004","#010005","#010106","#010108","#02010a","#02020c","#02020e","#030210","#040312","#040314","#050417","#060419","#07051b","#08051d","#09061f","#0a0722","#0b0724","#0c0826","#0d0829","#0e092b","#10092d","#110a30","#120a32","#140b34","#150b37","#160b39","#180c3c","#190c3e","#1b0c41","#1c0c43","#1e0c45","#1f0c48","#210c4a","#230c4c","#240c4f","#260c51","#280b53","#290b55","#2b0b57","#2d0b59","#2f0a5b","#310a5c","#320a5e","#340a5f","#360961","#380962","#390963","#3b0964","#3d0965","#3e0966","#400a67","#420a68","#440a68","#450a69","#470b6a","#490b6a","#4a0c6b","#4c0c6b","#4d0d6c","#4f0d6c","#510e6c","#520e6d","#540f6d","#550f6d","#57106e","#59106e","#5a116e","#5c126e","#5d126e","#5f136e","#61136e","#62146e","#64156e","#65156e","#67166e","#69166e","#6a176e","#6c186e","#6d186e","#6f196e","#71196e","#721a6e","#741a6e","#751b6e","#771c6d","#781c6d","#7a1d6d","#7c1d6d","#7d1e6d","#7f1e6c","#801f6c","#82206c","#84206b","#85216b","#87216b","#88226a","#8a226a","#8c2369","#8d2369","#8f2469","#902568","#922568","#932667","#952667","#972766","#982766","#9a2865","#9b2964","#9d2964","#9f2a63","#a02a63","#a22b62","#a32c61","#a52c60","#a62d60","#a82e5f","#a92e5e","#ab2f5e","#ad305d","#ae305c","#b0315b","#b1325a","#b3325a","#b43359","#b63458","#b73557","#b93556","#ba3655","#bc3754","#bd3853","#bf3952","#c03a51","#c13a50","#c33b4f","#c43c4e","#c63d4d","#c73e4c","#c83f4b","#ca404a","#cb4149","#cc4248","#ce4347","#cf4446","#d04545","#d24644","#d34743","#d44842","#d54a41","#d74b3f","#d84c3e","#d94d3d","#da4e3c","#db503b","#dd513a","#de5238","#df5337","#e05536","#e15635","#e25734","#e35933","#e45a31","#e55c30","#e65d2f","#e75e2e","#e8602d","#e9612b","#ea632a","#eb6429","#eb6628","#ec6726","#ed6925","#ee6a24","#ef6c23","#ef6e21","#f06f20","#f1711f","#f1731d","#f2741c","#f3761b","#f37819","#f47918","#f57b17","#f57d15","#f67e14","#f68013","#f78212","#f78410","#f8850f","#f8870e","#f8890c","#f98b0b","#f98c0a","#f98e09","#fa9008","#fa9207","#fa9407","#fb9606","#fb9706","#fb9906","#fb9b06","#fb9d07","#fc9f07","#fca108","#fca309","#fca50a","#fca60c","#fca80d","#fcaa0f","#fcac11","#fcae12","#fcb014","#fcb216","#fcb418","#fbb61a","#fbb81d","#fbba1f","#fbbc21","#fbbe23","#fac026","#fac228","#fac42a","#fac62d","#f9c72f","#f9c932","#f9cb35","#f8cd37","#f8cf3a","#f7d13d","#f7d340","#f6d543","#f6d746","#f5d949","#f5db4c","#f4dd4f","#f4df53","#f4e156","#f3e35a","#f3e55d","#f2e661","#f2e865","#f2ea69","#f1ec6d","#f1ed71","#f1ef75","#f1f179","#f2f27d","#f2f482","#f3f586","#f3f68a","#f4f88e","#f5f992","#f6fa96","#f8fb9a","#f9fc9d","#fafda1","#fcffa4"],dp=["#0d0887","#100788","#130789","#16078a","#19068c","#1b068d","#1d068e","#20068f","#220690","#240691","#260591","#280592","#2a0593","#2c0594","#2e0595","#2f0596","#310597","#330597","#350498","#370499","#38049a","#3a049a","#3c049b","#3e049c","#3f049c","#41049d","#43039e","#44039e","#46039f","#48039f","#4903a0","#4b03a1","#4c02a1","#4e02a2","#5002a2","#5102a3","#5302a3","#5502a4","#5601a4","#5801a4","#5901a5","#5b01a5","#5c01a6","#5e01a6","#6001a6","#6100a7","#6300a7","#6400a7","#6600a7","#6700a8","#6900a8","#6a00a8","#6c00a8","#6e00a8","#6f00a8","#7100a8","#7201a8","#7401a8","#7501a8","#7701a8","#7801a8","#7a02a8","#7b02a8","#7d03a8","#7e03a8","#8004a8","#8104a7","#8305a7","#8405a7","#8606a6","#8707a6","#8808a6","#8a09a5","#8b0aa5","#8d0ba5","#8e0ca4","#8f0da4","#910ea3","#920fa3","#9410a2","#9511a1","#9613a1","#9814a0","#99159f","#9a169f","#9c179e","#9d189d","#9e199d","#a01a9c","#a11b9b","#a21d9a","#a31e9a","#a51f99","#a62098","#a72197","#a82296","#aa2395","#ab2494","#ac2694","#ad2793","#ae2892","#b02991","#b12a90","#b22b8f","#b32c8e","#b42e8d","#b52f8c","#b6308b","#b7318a","#b83289","#ba3388","#bb3488","#bc3587","#bd3786","#be3885","#bf3984","#c03a83","#c13b82","#c23c81","#c33d80","#c43e7f","#c5407e","#c6417d","#c7427c","#c8437b","#c9447a","#ca457a","#cb4679","#cc4778","#cc4977","#cd4a76","#ce4b75","#cf4c74","#d04d73","#d14e72","#d24f71","#d35171","#d45270","#d5536f","#d5546e","#d6556d","#d7566c","#d8576b","#d9586a","#da5a6a","#da5b69","#db5c68","#dc5d67","#dd5e66","#de5f65","#de6164","#df6263","#e06363","#e16462","#e26561","#e26660","#e3685f","#e4695e","#e56a5d","#e56b5d","#e66c5c","#e76e5b","#e76f5a","#e87059","#e97158","#e97257","#ea7457","#eb7556","#eb7655","#ec7754","#ed7953","#ed7a52","#ee7b51","#ef7c51","#ef7e50","#f07f4f","#f0804e","#f1814d","#f1834c","#f2844b","#f3854b","#f3874a","#f48849","#f48948","#f58b47","#f58c46","#f68d45","#f68f44","#f79044","#f79143","#f79342","#f89441","#f89540","#f9973f","#f9983e","#f99a3e","#fa9b3d","#fa9c3c","#fa9e3b","#fb9f3a","#fba139","#fba238","#fca338","#fca537","#fca636","#fca835","#fca934","#fdab33","#fdac33","#fdae32","#fdaf31","#fdb130","#fdb22f","#fdb42f","#fdb52e","#feb72d","#feb82c","#feba2c","#febb2b","#febd2a","#febe2a","#fec029","#fdc229","#fdc328","#fdc527","#fdc627","#fdc827","#fdca26","#fdcb26","#fccd25","#fcce25","#fcd025","#fcd225","#fbd324","#fbd524","#fbd724","#fad824","#fada24","#f9dc24","#f9dd25","#f8df25","#f8e125","#f7e225","#f7e425","#f6e626","#f6e826","#f5e926","#f5eb27","#f4ed27","#f3ee27","#f3f027","#f2f227","#f1f426","#f1f525","#f0f724","#f0f921"],pp=["#440154","#440256","#450457","#450559","#46075a","#46085c","#460a5d","#460b5e","#470d60","#470e61","#471063","#471164","#471365","#481467","#481668","#481769","#48186a","#481a6c","#481b6d","#481c6e","#481d6f","#481f70","#482071","#482173","#482374","#482475","#482576","#482677","#482878","#482979","#472a7a","#472c7a","#472d7b","#472e7c","#472f7d","#46307e","#46327e","#46337f","#463480","#453581","#453781","#453882","#443983","#443a83","#443b84","#433d84","#433e85","#423f85","#424086","#424186","#414287","#414487","#404588","#404688","#3f4788","#3f4889","#3e4989","#3e4a89","#3e4c8a","#3d4d8a","#3d4e8a","#3c4f8a","#3c508b","#3b518b","#3b528b","#3a538b","#3a548c","#39558c","#39568c","#38588c","#38598c","#375a8c","#375b8d","#365c8d","#365d8d","#355e8d","#355f8d","#34608d","#34618d","#33628d","#33638d","#32648e","#32658e","#31668e","#31678e","#31688e","#30698e","#306a8e","#2f6b8e","#2f6c8e","#2e6d8e","#2e6e8e","#2e6f8e","#2d708e","#2d718e","#2c718e","#2c728e","#2c738e","#2b748e","#2b758e","#2a768e","#2a778e","#2a788e","#29798e","#297a8e","#297b8e","#287c8e","#287d8e","#277e8e","#277f8e","#27808e","#26818e","#26828e","#26828e","#25838e","#25848e","#25858e","#24868e","#24878e","#23888e","#23898e","#238a8d","#228b8d","#228c8d","#228d8d","#218e8d","#218f8d","#21908d","#21918c","#20928c","#20928c","#20938c","#1f948c","#1f958b","#1f968b","#1f978b","#1f988b","#1f998a","#1f9a8a","#1e9b8a","#1e9c89","#1e9d89","#1f9e89","#1f9f88","#1fa088","#1fa188","#1fa187","#1fa287","#20a386","#20a486","#21a585","#21a685","#22a785","#22a884","#23a983","#24aa83","#25ab82","#25ac82","#26ad81","#27ad81","#28ae80","#29af7f","#2ab07f","#2cb17e","#2db27d","#2eb37c","#2fb47c","#31b57b","#32b67a","#34b679","#35b779","#37b878","#38b977","#3aba76","#3bbb75","#3dbc74","#3fbc73","#40bd72","#42be71","#44bf70","#46c06f","#48c16e","#4ac16d","#4cc26c","#4ec36b","#50c46a","#52c569","#54c568","#56c667","#58c765","#5ac864","#5cc863","#5ec962","#60ca60","#63cb5f","#65cb5e","#67cc5c","#69cd5b","#6ccd5a","#6ece58","#70cf57","#73d056","#75d054","#77d153","#7ad151","#7cd250","#7fd34e","#81d34d","#84d44b","#86d549","#89d548","#8bd646","#8ed645","#90d743","#93d741","#95d840","#98d83e","#9bd93c","#9dd93b","#a0da39","#a2da37","#a5db36","#a8db34","#aadc32","#addc30","#b0dd2f","#b2dd2d","#b5de2b","#b8de29","#bade28","#bddf26","#c0df25","#c2df23","#c5e021","#c8e020","#cae11f","#cde11d","#d0e11c","#d2e21b","#d5e21a","#d8e219","#dae319","#dde318","#dfe318","#e2e418","#e5e419","#e7e419","#eae51a","#ece51b","#efe51c","#f1e51d","#f4e61e","#f6e620","#f8e621","#fbe723","#fde725"],mp=["#00204d","#00214e","#002250","#002252","#002353","#002455","#002557","#002558","#00265a","#00275c","#00275e","#002860","#002961","#002a63","#002a65","#002b67","#002c69","#002c6a","#002d6c","#002e6e","#002e6f","#002f6f","#002f6f","#00306f","#00306f","#00316f","#00326f","#00336f","#00336f","#00346f","#00356e","#01366e","#06366e","#0b376e","#0f386e","#12386d","#15396d","#183a6d","#1a3b6d","#1d3b6d","#1f3c6d","#213d6d","#233e6c","#243e6c","#263f6c","#28406c","#2a406c","#2b416c","#2d426c","#2e436c","#30436c","#31446b","#32456b","#34456b","#35466b","#36476b","#38486b","#39486b","#3a496b","#3b4a6b","#3d4a6b","#3e4b6b","#3f4c6b","#404d6b","#414d6b","#424e6b","#434f6b","#444f6b","#46506b","#47516b","#48526b","#49526b","#4a536b","#4b546c","#4c546c","#4d556c","#4e566c","#4f576c","#50576c","#51586c","#52596c","#53596c","#545a6c","#555b6d","#565c6d","#575c6d","#585d6d","#595e6d","#595f6d","#5a5f6d","#5b606e","#5c616e","#5d616e","#5e626e","#5f636e","#60646f","#61646f","#62656f","#63666f","#64666f","#646770","#656870","#666970","#676970","#686a71","#696b71","#6a6c71","#6b6c71","#6c6d72","#6c6e72","#6d6e72","#6e6f73","#6f7073","#707173","#717174","#727274","#727374","#737475","#747475","#757575","#767676","#777776","#787777","#787877","#797977","#7a7a78","#7b7a78","#7c7b78","#7d7c78","#7e7d78","#7f7d78","#807e79","#817f79","#828079","#838079","#848179","#848279","#858379","#868379","#878479","#888579","#898679","#8a8779","#8b8779","#8c8879","#8d8979","#8e8a79","#8f8a79","#908b79","#918c78","#928d78","#938e78","#948e78","#958f78","#969078","#979178","#989278","#999278","#9a9377","#9b9477","#9c9577","#9d9677","#9e9677","#9f9777","#a09877","#a19976","#a29a76","#a39a76","#a49b76","#a59c76","#a69d75","#a89e75","#a99f75","#aa9f75","#aba074","#aca174","#ada274","#aea374","#afa473","#b0a473","#b1a573","#b2a672","#b3a772","#b4a872","#b5a971","#b6a971","#b7aa71","#b8ab70","#b9ac70","#baad70","#bbae6f","#bcaf6f","#beaf6f","#bfb06e","#c0b16e","#c1b26d","#c2b36d","#c3b46d","#c4b56c","#c5b56c","#c6b66b","#c7b76b","#c8b86a","#c9b96a","#cbba69","#ccbb69","#cdbc68","#cebc68","#cfbd67","#d0be67","#d1bf66","#d2c066","#d3c165","#d4c264","#d6c364","#d7c463","#d8c563","#d9c562","#dac661","#dbc761","#dcc860","#ddc95f","#deca5f","#e0cb5e","#e1cc5d","#e2cd5c","#e3ce5c","#e4cf5b","#e5d05a","#e6d159","#e8d259","#e9d358","#ead357","#ebd456","#ecd555","#edd654","#efd753","#f0d852","#f1d951","#f2da50","#f3db4f","#f4dc4e","#f6dd4d","#f7de4c","#f8df4b","#f9e04a","#fae149","#fbe248","#fde346","#fee445","#ffe544","#ffe642","#ffe742","#ffe843","#ffe944","#ffea46"],hp=["#03051a","#04051a","#05061b","#06071c","#07071d","#08081e","#0a091f","#0b0920","#0d0a21","#0e0b22","#100b23","#110c24","#130d25","#140e26","#160e27","#170f28","#180f29","#1a102a","#1b112b","#1d112c","#1e122d","#20122e","#211330","#221331","#241432","#251433","#271534","#281535","#2a1636","#2b1637","#2d1738","#2e1739","#30173a","#31183b","#33183c","#34193d","#35193e","#37193f","#381a40","#3a1a41","#3c1a42","#3d1a42","#3f1b43","#401b44","#421b45","#431c46","#451c47","#461c48","#481c48","#491d49","#4b1d4a","#4c1d4b","#4e1d4b","#501d4c","#511e4d","#531e4d","#541e4e","#561e4f","#581e4f","#591e50","#5b1e51","#5c1e51","#5e1f52","#601f52","#611f53","#631f53","#641f54","#661f54","#681f55","#691f55","#6b1f56","#6d1f56","#6e1f57","#701f57","#711f57","#731f58","#751f58","#761f58","#781f59","#7a1f59","#7b1f59","#7d1f5a","#7f1e5a","#811e5a","#821e5a","#841e5a","#861e5b","#871e5b","#891e5b","#8b1d5b","#8c1d5b","#8e1d5b","#901d5b","#921c5b","#931c5b","#951c5b","#971c5b","#981b5b","#9a1b5b","#9c1b5b","#9e1a5b","#9f1a5b","#a11a5b","#a3195b","#a4195b","#a6195a","#a8185a","#aa185a","#ab185a","#ad1759","#af1759","#b01759","#b21758","#b41658","#b51657","#b71657","#b91657","#ba1656","#bc1656","#bd1655","#bf1654","#c11754","#c21753","#c41753","#c51852","#c71951","#c81951","#ca1a50","#cb1b4f","#cd1c4e","#ce1d4e","#cf1e4d","#d11f4c","#d2204c","#d3214b","#d5224a","#d62449","#d72549","#d82748","#d92847","#db2946","#dc2b46","#dd2c45","#de2e44","#df2f44","#e03143","#e13342","#e23442","#e33641","#e43841","#e53940","#e63b40","#e73d3f","#e83f3f","#e8403e","#e9423e","#ea443e","#eb463e","#eb483e","#ec4a3e","#ec4c3e","#ed4e3e","#ed503e","#ee523f","#ee543f","#ef5640","#ef5840","#ef5a41","#f05c42","#f05e42","#f06043","#f16244","#f16445","#f16646","#f26747","#f26948","#f26b49","#f26d4b","#f26f4c","#f3714d","#f3734e","#f37450","#f37651","#f37852","#f47a54","#f47c55","#f47d57","#f47f58","#f4815a","#f4835b","#f4845d","#f4865e","#f58860","#f58a61","#f58b63","#f58d64","#f58f66","#f59067","#f59269","#f5946b","#f5966c","#f5976e","#f59970","#f69b71","#f69c73","#f69e75","#f6a077","#f6a178","#f6a37a","#f6a47c","#f6a67e","#f6a880","#f6a981","#f6ab83","#f6ad85","#f6ae87","#f6b089","#f6b18b","#f6b38d","#f6b48f","#f6b691","#f6b893","#f6b995","#f6bb97","#f6bc99","#f6be9b","#f6bf9d","#f6c19f","#f7c2a2","#f7c4a4","#f7c6a6","#f7c7a8","#f7c9aa","#f7caac","#f7ccaf","#f7cdb1","#f7cfb3","#f7d0b5","#f8d1b8","#f8d3ba","#f8d4bc","#f8d6be","#f8d7c0","#f8d9c3","#f8dac5","#f8dcc7","#f9ddc9","#f9dfcb","#f9e0cd","#f9e2d0","#f9e3d2","#f9e5d4","#fae6d6","#fae8d8","#fae9da","#faebdd"],gp=["#0b0405","#0d0406","#0e0508","#0f0609","#10060a","#11070c","#12080d","#13090f","#140910","#150a12","#160b13","#170c15","#180d16","#190e18","#1a0e19","#1b0f1a","#1c101c","#1d111d","#1e111f","#1f1220","#201322","#211423","#221425","#231526","#241628","#251729","#26172b","#27182d","#28192e","#291930","#291a31","#2a1b33","#2b1c35","#2c1c36","#2d1d38","#2e1e39","#2e1e3b","#2f1f3d","#30203e","#312140","#312142","#322243","#332345","#342447","#342548","#35254a","#35264c","#36274d","#37284f","#372851","#382953","#382a54","#392b56","#3a2c58","#3a2c59","#3b2d5b","#3b2e5d","#3b2f5f","#3c3060","#3c3162","#3d3164","#3d3266","#3e3367","#3e3469","#3e356b","#3f366d","#3f366f","#3f3770","#403872","#403974","#403a76","#403b78","#403c79","#413d7b","#413e7d","#413e7f","#413f80","#414082","#414184","#414285","#414387","#414488","#40468a","#40478b","#40488d","#40498e","#3f4a8f","#3f4b90","#3f4c92","#3e4d93","#3e4f94","#3e5095","#3d5195","#3d5296","#3c5397","#3c5598","#3b5698","#3b5799","#3b589a","#3a599a","#3a5b9b","#3a5c9b","#395d9c","#395e9c","#385f9c","#38619d","#38629d","#38639d","#37649e","#37659e","#37669e","#37689f","#36699f","#366a9f","#366b9f","#366ca0","#366da0","#366fa0","#3670a0","#3671a0","#3572a1","#3573a1","#3574a1","#3575a1","#3576a2","#3578a2","#3579a2","#357aa2","#357ba3","#357ca3","#357da3","#357ea4","#347fa4","#3480a4","#3482a4","#3483a5","#3484a5","#3485a5","#3486a5","#3487a6","#3488a6","#3489a6","#348ba6","#348ca7","#348da7","#348ea7","#348fa7","#3490a8","#3491a8","#3492a8","#3493a8","#3495a9","#3496a9","#3497a9","#3498a9","#3499aa","#349aaa","#359baa","#359caa","#359eaa","#359fab","#35a0ab","#35a1ab","#36a2ab","#36a3ab","#36a4ab","#37a5ac","#37a6ac","#37a8ac","#38a9ac","#38aaac","#39abac","#39acac","#3aadac","#3aaead","#3bafad","#3cb1ad","#3cb2ad","#3db3ad","#3eb4ad","#3fb5ad","#3fb6ad","#40b7ad","#41b8ad","#42b9ad","#43baad","#44bcad","#45bdad","#46bead","#47bfad","#48c0ad","#49c1ad","#4bc2ad","#4cc3ad","#4dc4ad","#4fc5ad","#50c6ad","#52c7ad","#53c9ad","#55caad","#57cbad","#59ccad","#5bcdad","#5ecdad","#60ceac","#62cfac","#65d0ad","#68d1ad","#6ad2ad","#6dd3ad","#70d4ad","#73d4ad","#76d5ae","#79d6ae","#7cd6af","#7fd7af","#82d8b0","#85d9b1","#88d9b1","#8bdab2","#8edbb3","#91dbb4","#94dcb5","#96ddb5","#99ddb6","#9cdeb7","#9edfb8","#a1dfb9","#a4e0bb","#a6e1bc","#a9e1bd","#abe2be","#aee3c0","#b0e4c1","#b2e4c2","#b5e5c4","#b7e6c5","#b9e6c7","#bbe7c8","#bee8ca","#c0e9cc","#c2e9cd","#c4eacf","#c6ebd1","#c8ecd2","#caedd4","#ccedd6","#ceeed7","#d0efd9","#d2f0db","#d4f1dc","#d6f1de","#d8f2e0","#daf3e1","#dcf4e3","#def5e5"],bp=["#000000","#111111","#222222","#333333","#444444","#555555","#666666","#777777","#888888","#999999","#aaaaaa","#bbbbbb","#cccccc","#dddddd","#eeeeee","#ffffff"],yp=["#a8780d","#b3701b","#be6828","#c75f35","#cf5643","#d54b53","#db4066","#de357b","#df2a93","#dc25ad","#d529c4","#cc34d7","#c041e5","#b24fef","#a25cf3","#9168f4","#7d73f0","#687ce8","#5285dc","#3d8bcd","#2c90bc","#2093ac","#19959c","#12978c","#0c987c","#119a69","#249a52","#409839","#5e9420","#778d12","#8b860d","#9b7f0d"],dn=e=>e.slice().reverse(),_p={turbo:lp,"turbo-reversed":dn(lp),grey:bp,"grey-reversed":dn(bp),magma:cp,"magma-reversed":dn(cp),inferno:fp,"inferno-reversed":dn(fp),plasma:dp,"plasma-reversed":dn(dp),viridis:pp,"viridis-reversed":dn(pp),cividis:mp,"cividis-reversed":dn(mp),rocket:hp,"rocket-reversed":dn(hp),mako:gp,"mako-reversed":dn(gp),"cmocean-phase":yp,"cmocean-phase-reversed":dn(yp)};var No=7,To=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function we(e){if(e<0)return NaN;if(e===1||e===2)return 0;let n=e-1,t=To[0];for(let r=1;r<No+2;r++)t+=To[r]/(n+r);let i=n+No+.5;return .5*Math.log(2*Math.PI)+(n+.5)*Math.log(i)-i+Math.log(t)}var dy=171.6243769563027;function Ip(e){e-=1;let n=To[0];for(let i=1;i<No+2;i++)n+=To[i]/(e+i);let t=e+No+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,e+.5)*Math.exp(-t)*n}function _o(e,n){if(n<=0)return 1;if(n===1)return e;let t=n>>>1;return _o(e,t)*_o(e+t,n-t)}function ue(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*ue(1-e));if(e>dy)return 1/0;if(Number.isInteger(e))return _o(1,e-1);if(e>=2){let n=Math.floor(e)-1,t=e-n;return Ip(t)*_o(t,n)}return Ip(e)}var Re=1e-300;function py(e,n){if(n===0)return 0;let t=e,i=1/e,r=i;for(let o=0;o<1e3&&(t+=1,i*=n/t,r+=i,!(Math.abs(i)<Math.abs(r)*1e-16));o++);return r*Math.exp(e*Math.log(n)-n-we(e))}function my(e,n){let t=n+1-e,i=1/Re,r=1/t,o=r;for(let s=1;s<1e3;s++){let a=-s*(s-e);t+=2,r=a*r+t,Math.abs(r)<Re&&(r=Re),i=t+a/i,Math.abs(i)<Re&&(i=Re),r=1/r;let u=r*i;if(o*=u,Math.abs(u-1)<1e-16)break}return Math.exp(e*Math.log(n)-n-we(e))*o}function $p(e,n){return Number.isNaN(e)||Number.isNaN(n)?NaN:e<=0||n<0?NaN:n===0?1:n<e+1?1-py(e,n):my(e,n)}function Sp(e,n,t){let i=e+n,r=e+1,o=e-1,s=1,a=1-i*t/r;Math.abs(a)<Re&&(a=Re),a=1/a;let u=a;for(let l=1;l<1e3;l++){let c=2*l,f=l*(n-l)*t/((o+c)*(e+c));a=1+f*a,Math.abs(a)<Re&&(a=Re),s=1+f/s,Math.abs(s)<Re&&(s=Re),a=1/a,u*=a*s,f=-(e+l)*(i+l)*t/((e+c)*(r+c)),a=1+f*a,Math.abs(a)<Re&&(a=Re),s=1+f/s,Math.abs(s)<Re&&(s=Re),a=1/a;let d=a*s;if(u*=d,Math.abs(d-1)<1e-16)break}return u}function Rp(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(n<=0||t<=0||e<0||e>1)return NaN;if(e===0)return 0;if(e===1)return 1;let i=Math.exp(we(n+t)-we(n)-we(t)+n*Math.log(e)+t*Math.log(1-e));return e<(n+1)/(n+t+2)?i*Sp(n,t,e)/n:1-i*Sp(t,n,1-e)/t}function hy(e){let t=Math.log(1-e*e),i=2/(Math.PI*.147)+t/2;return Math.sign(e)*Math.sqrt(Math.sqrt(i*i-t/.147)-i)}function Pp(e){if(Number.isNaN(e)||e<-1||e>1)return NaN;if(e===0)return 0;if(e===1)return 1/0;if(e===-1)return-1/0;let n=e<0?-1:1,t=Math.abs(e),i=hy(t),r=Math.sqrt(Math.PI)/2,o=1-t,s=t>.9;for(let a=0;a<5;a++){let u=s?o-Nt(i):Tt(i)-t;i-=u*r*Math.exp(i*i)}return n*i}function Nt(e){if(Number.isNaN(e))return NaN;if(!Number.isFinite(e))return e>0?0:2;if(e<0)return 2-Nt(-e);if(e<2)return 1-Tt(e);let n=1e-300,t=e===0?n:e,i=t,r=0;for(let o=1;o<=500;o++){let s=o/2;r=e+s*r,r===0&&(r=n),r=1/r,i=e+s/i,i===0&&(i=n);let a=i*r;if(t*=a,Math.abs(a-1)<1e-17)break}return Math.exp(-e*e)/(Math.sqrt(Math.PI)*t)}function Tt(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1:-1;let n=e<0?-1:1,t=Math.abs(e);if(t>=6)return n;let i=t*t,r=t,o=t;for(let s=1;s<200&&(r*=2*i/(2*s+1),o+=r,!(r<o*1e-18));s++);return n*(2/Math.sqrt(Math.PI))*Math.exp(-i)*o}var Io=.5772156649015329,Gn=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function Mo(e){if(!isFinite(e))return NaN;if(e<0)return Number.isInteger(e)?NaN:Mo(1-e)-Math.PI/Math.tan(Math.PI*e);if(e===0)return NaN;let n=0,t=e;for(;t<7;)n-=1/t,t+=1;n+=Math.log(t)-1/(2*t);let i=t*t;for(let r=0;r<Gn.length;r++)n-=Gn[r]/(2*(r+1)*i),i*=t*t;return n}function ko(e){if(!isFinite(e))return NaN;if(e<0){if(Number.isInteger(e))return NaN;let r=Math.sin(Math.PI*e);return Math.PI*Math.PI/(r*r)-ko(1-e)}if(e===0)return NaN;let n=0,t=e;for(;t<7;)n+=1/(t*t),t+=1;n+=1/t+1/(2*t*t);let i=t*t*t;for(let r=0;r<Gn.length;r++)n+=Gn[r]/i,i*=t*t;return n}function Dp(e,n){if(!Number.isInteger(e)||e<0)return NaN;if(e===0)return Mo(n);if(e===1)return ko(n);if(!isFinite(n)||n===0)return NaN;if(n<0&&Number.isInteger(n))return NaN;let t=0,i=n,r=Pa(e),o=e%2===0?-1:1,s=e+10;for(;i<s;)t+=o*r/Math.pow(i,e+1),i+=1;let a=e%2===0?-1:1;t+=a*Pa(e-1)/Math.pow(i,e),t+=a*r/(2*Math.pow(i,e+1));let u=r*(e+1)/(2*Math.pow(i,e+2)),l=1/0;for(let c=1;c<=Gn.length;c++){let f=Gn[c-1]*u;if(Math.abs(f)>=l)break;t+=a*f,l=Math.abs(f);let d=2*c;u*=(d+e)*(d+e+1)/((d+1)*(d+2)*i*i)}return t}function Pa(e){if(e<=1)return 1;let n=1;for(let t=2;t<=e;t++)n*=t;return n}function Fp(e,n){return e>100||n>100||e+n>100?Math.exp(we(e)+we(n)-we(e+n)):ue(e)*ue(n)/ue(e+n)}function Da(e){if(!isFinite(e))return NaN;if(e===1)return 1/0;if(e===0)return-.5;if(e===2)return Math.PI*Math.PI/6;if(e===4)return Math.PI**4/90;if(e===6)return Math.PI**6/945;if(e===8)return Math.PI**8/9450;if(e<0&&Number.isInteger(e)){if(e%2===0)return 0;let o=1-e;if(o/2<=Gn.length)return-Gn[o/2-1]/o}if(e<0)return Math.pow(2,e)*Math.pow(Math.PI,e-1)*Math.sin(Math.PI*e/2)*ue(1-e)*Da(1-e);if(e>=12){let o=1;for(let s=2;s<=128;s++){let a=Math.pow(s,-e);if(o+=a,a<o*1e-18)break}return o}let[n,t]=gy(),i=0,r=0;for(let o=0;o<Op;o++){let a=(o%2===0?n[o]:-n[o])*Math.pow(o+1,-e)-r,u=i+a;r=u-i-a,i=u}return i/t/-Math.expm1((1-e)*Math.LN2)}var Op=28,vo=null;function gy(){if(vo)return vo;let e=Op,n=1n<<64n,t=n,i=n,r=[i];for(let u=0;u<e;u++)t=t*BigInt(4*(e+u)*(e-u))/BigInt((2*u+1)*(2*u+2)),i+=t,r.push(i);let o=r[e],s=Math.pow(2,64),a=[];for(let u=0;u<e;u++)a.push(Number(o-r[u])/s);return vo=[a,Number(o)/s],vo}function wp(e,n){for(let t=0;t<30;t++){let i=Math.exp(e),o=e*i-n,s=i*(e+1),a=i*(e+2),u=o/(s-o*a/(2*s));if(e-=u,Math.abs(u)<1e-15*(1+Math.abs(e)))break}return e}function Bp(e,n=0){if(!isFinite(e))return e;let t=1/Math.E;if(n===0){if(e===0)return 0;if(e<-t)return NaN;if(Math.abs(e+t)<1e-15)return-1;let i;if(e<0){let r=Math.sqrt(2*(Math.E*e+1));i=-1+r-r*r/3+11/72*r*r*r}else if(e<=1)i=e*(1-e*(1-1.5*e));else if(e<100){let r=Math.log(e);i=r-Math.log(r)}else{let r=Math.log(e),o=Math.log(r);i=r-o+o/r}return wp(i,e)}if(n===-1){if(e<-t||e>=0)return NaN;if(Math.abs(e+t)<1e-15)return-1;let i;if(e<-.27){let r=Math.sqrt(2*(Math.E*e+1));i=-1-r-r*r/3-11/72*r*r*r}else{let r=Math.log(-e);i=r-Math.log(-r)}return wp(i,e)}return NaN}function jn(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:e<0?(e=-e,e%2===0?jn(e,n):-jn(e,n)):n<0?e%2===0?jn(e,-n):-jn(e,-n):n>25+e*e/2?yy(e,n):n<5+e?by(e,n):xy(e,n)}function by(e,n){let t=n/2,i=-(n*n)/4,r=1;for(let s=1;s<=e;s++)r/=s;let o=r;for(let s=1;s<=60&&(r*=i/(s*(e+s)),o+=r,!(Math.abs(r)<Math.abs(o)*1e-16));s++);return o*Math.pow(t,e)}function Lp(e,n){let t=4*e*e,i=1,r=0,o=1,s=8*n;for(let a=1;a<=20;a++){o*=t-(2*a-1)*(2*a-1);let u=Pa(a)*Math.pow(s,a),l=o/u;if(a%2===1?r+=(a%4===1?1:-1)*l:i+=(a%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[i,r]}function yy(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=Lp(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.cos(t)-r*Math.sin(t))}function xy(e,n){let t=Math.max(e+20,Math.ceil(n)+30),i=0,r=1,o=new Array(t+1);o[t]=r;for(let u=t;u>=1;u--){let l=2*u/n*r-i;i=r,r=l,o[u-1]=r}let s=o[0];for(let u=2;u<=t;u+=2)s+=2*o[u];let a=1/s;return o[e]*a}function So(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;if(e<0)return e=-e,e%2===0?So(e,n):-So(e,n);if(n>12+e*e/4)return Ny(e,n);let t=Ey(n);if(e===0)return t;let i=vy(n);if(e===1)return i;let r=t,o=i;for(let s=1;s<e;s++){let a=2*s/n*o-r;r=o,o=a}return o}function Ey(e){let n=e/2,t=n*n,i=jn(0,e),r=0,o=1,s=0;for(let a=1;a<=60&&(s+=1/a,o*=-t/(a*a),r-=o*s,!(Math.abs(o*s)<Math.abs(r)*1e-16));a++);return 2/Math.PI*(i*(Math.log(n)+Io)+r)}function vy(e){let n=e/2,t=n*n,i=jn(1,e),r=0,o=1,s=1;for(let a=0;a<=60;a++){a>0&&(s*=a,o*=t);let u=s*(a+1),l=0;for(let b=1;b<=a;b++)l+=1/b;let c=l+1/(a+1),f=-Io+l,d=-Io+c,h=(a%2===0?1:-1)*(f+d)*o/(s*u);if(r+=h,a>3&&Math.abs(h)<1e-16*Math.abs(r))break}return-2/(Math.PI*e)+2/Math.PI*Math.log(n)*i-n/Math.PI*r}function Ny(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=Lp(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.sin(t)+r*Math.cos(t))}function vt(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:(e<0&&(e=-e),n<0?e%2===0?vt(e,-n):-vt(e,-n):n>20&&n>=e*e?_y(e,n):Ty(e,n))}function Ty(e,n){let t=n/2,i=n*n/4,r=1;for(let a=1;a<=e;a++)r/=a;let o=r,s=0;for(let a=1;a<=500;a++){r*=i/(a*(e+a));let u=r-s,l=o+u;if(s=l-o-u,o=l,Math.abs(r)<Math.abs(o)*1e-17)break}return o*Math.pow(t,e)}function _y(e,n){let t=4*e*e,i=1,r=1,o=1/0;for(let s=1;s<=40;s++){let a=t-(2*s-1)*(2*s-1);if(i*=-a/(s*8*n),Math.abs(i)>=o||(r+=i,o=Math.abs(i),Math.abs(i)<1e-17*Math.abs(r)))break}return Math.exp(n)/Math.sqrt(2*Math.PI*n)*r}function Vp(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;e<0&&(e=-e);let t,i;if(n>=20){if(t=Mp(0,n),e===0)return t;i=Mp(1,n)}else if(n>=1.5){if([t,i]=Iy(n),e===0)return t}else{if(t=qp(n),e===0)return t;i=Sy(n)}if(e===1)return i;let r=t,o=i;for(let s=1;s<e;s++){let a=2*s/n*o+r;r=o,o=a}return o}function Iy(e){let t=2*(1+e),i=1/t,r=i,o=i,s=0,a=1,u=-.25,l=.25,c=.25,f=1+c*o,d=0,p=0;for(let y=2;y<=1e4;y++){u-=2*(y-1),l=-u*l/y;let v=(s-t*a)/u;s=a,a=v,c+=l*v,t+=2,i=1/(t+u*i),o=(t*i-1)*o;let T=o-p,_=r+T;p=_-r-T,r=_;let A=c*o;if(T=A-d,_=f+T,d=_-f-T,f=_,Math.abs(A)<1e-18*Math.abs(f))break}r=.25*r;let h=Math.sqrt(Math.PI/(2*e))*Math.exp(-e)/f,b=h*(e+.5-r)/e;return[h,b]}function qp(e){let n=e/2,t=n*n,i=vt(0,e),r=0,o=1,s=0;for(let a=1;a<=60&&(s+=1/a,o*=t/(a*a),r+=o*s,!(Math.abs(o*s)<Math.abs(r)*1e-16&&a>3));a++);return-(Math.log(n)+Io)*i+r}function Sy(e){let n=vt(0,e),t=vt(1,e),i=qp(e);return(1/e-t*i)/n}function Mp(e,n){let t=4*e*e,i=1,r=1,o=1/0;for(let s=1;s<=40;s++){let a=t-(2*s-1)*(2*s-1);if(i*=a/(s*8*n),Math.abs(i)>=o||(r+=i,o=Math.abs(i),Math.abs(i)<1e-17*Math.abs(r)))break}return Math.sqrt(Math.PI/(2*n))*Math.exp(-n)*r}var kp=134217729;function Ap(e,n){let t=e+n,i=t-e;return[t,e-(t-i)+(n-i)]}function Yt(e,n){let t=e+n;return[t,n-(t-e)]}function Wt(e,n){let t=e*n,i=kp*e,r=i-(i-e),o=e-r,s=kp*n,a=s-(s-n),u=n-a;return[t,r*a-t+r*u+o*a+o*u]}function nn(e,n){let[t,i]=Ap(e[0],n[0]),[r,o]=Ap(e[1],n[1]),[s,a]=Yt(t,i+r);return Yt(s,a+o)}function Ao(e){return[-e[0],-e[1]]}function De(e,n){let[t,i]=Wt(e[0],n[0]);return Yt(t,i+e[0]*n[1]+e[1]*n[0])}function wo(e,n){let[t,i]=Wt(e[0],n);return Yt(t,i+e[1]*n)}function Ht(e,n){let t=e[0]/n,[i,r]=Wt(t,n),o=nn(e,[-i,-r]);return Yt(t,(o[0]+o[1])/n)}function wy(e){let n=Math.sqrt(e),[t,i]=Wt(n,n);return Yt(n,(e-t-i)/(2*n))}var Co=[.3550280538878172,205233632436212e-31],$o=[.2588194037928068,-2522243111610832e-32],Jp=[1.7320508075688772,10035084221806903e-32],zp=[.7853981633974483,3061616997868383e-32];function jp(e){let n=wo(Wt(e,e),e),t=[1,0],i=[e,0],r=[1,0],o=[e,0];for(let s=1;s<=200;s++){let a=3*s;if(r=Ht(De(r,n),(a-1)*a),o=Ht(De(o,n),a*(a+1)),t=nn(t,r),i=nn(i,o),Math.abs(r[0])+Math.abs(o[0])<1e-34*(Math.abs(t[0])+Math.abs(i[0])))break}return[t,i]}function Xt(e){let n=wo(wy(e),e);return Ht(wo(n,2),3)}function Kt(e){return(6*e-5)*(6*e-3)*(6*e-1)/(216*e*(2*e-1))}function Gp(e){let n=Xt(e),t=n[0],i=nn(n,Ao(zp)),r=Math.cos(i[0]),o=Math.sin(i[0]),s=r-o*i[1],a=o+r*i[1],u=1,l=0,c=1,f=1/0;for(let p=1;p<=60;p++){c*=Kt(p)/t;let h=Math.abs(c);if(h>=f)break;f=h;let b=p%4===0||p%4===1?c:-c;if(p%2===0?u+=b:l+=b,h<1e-18)break}let d=1/(Math.sqrt(Math.PI)*Math.pow(e,.25));return[u,l,s,a,d]}function Up(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 0;let o=1,s=1,a=1/0;for(let l=1;l<=60&&(s*=Kt(l)/r,!(s>=a||(o+=l%2===0?s:-s,a=s,s<1e-18*o)));l++);return Math.exp(-r)*(1-i[1])/(2*Math.sqrt(Math.PI)*Math.pow(e,.25))*o}if(e<-9){let[i,r,o,s,a]=Gp(-e);return a*(o*i+s*r)}let[n,t]=jp(e);return nn(De(Co,n),Ao(De($o,t)))[0]}function Hp(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 1/0;let o=1,s=1,a=1/0;for(let l=1;l<=60&&(s*=Kt(l)/r,!(s>=a||(o+=s,a=s,s<1e-18*o)));l++);return Math.exp(r)*(1+i[1])/(Math.sqrt(Math.PI)*Math.pow(e,.25))*o}if(e<-9){let[i,r,o,s,a]=Gp(-e);return a*(-s*i+o*r)}let[n,t]=jp(e);return De(Jp,nn(De(Co,n),De($o,t)))[0]}function Zp(e){let n=Wt(e,e),t=wo(n,e),i=Ht(n,2),r=[1,0],o=i,s=r;for(let a=1;a<=200;a++){let u=3*a;if(i=Ht(De(i,t),u*(u+2)),r=Ht(De(r,t),(u-2)*u),o=nn(o,i),s=nn(s,r),Math.abs(i[0])+Math.abs(r[0])<1e-34*(Math.abs(o[0])+Math.abs(s[0])))break}return[o,s]}function Yp(e){let n=Xt(e),t=n[0],i=nn(n,Ao(zp)),r=Math.cos(i[0]),o=Math.sin(i[0]),s=r-o*i[1],a=o+r*i[1],u=1,l=0,c=1,f=1/0;for(let p=1;p<=60;p++){c*=Kt(p)/t;let h=c*(6*p+1)/(1-6*p),b=Math.abs(h);if(b>=f)break;f=b;let y=p%4===0||p%4===1?h:-h;if(p%2===0?u+=y:l+=y,b<1e-18)break}let d=Math.pow(e,.25)/Math.sqrt(Math.PI);return[u,l,s,a,d]}function Wp(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 0;let o=1,s=1,a=1/0;for(let l=1;l<=60;l++){s*=Kt(l)/r;let c=s*(6*l+1)/(1-6*l),f=Math.abs(c);if(f>=a||(o+=l%2===0?c:-c,a=f,f<1e-18*Math.abs(o)))break}return-(Math.exp(-r)*(1-i[1])*Math.pow(e,.25))/(2*Math.sqrt(Math.PI))*o}if(e<-9){let[i,r,o,s,a]=Yp(-e);return a*(s*i-o*r)}let[n,t]=Zp(e);return nn(De(Co,n),Ao(De($o,t)))[0]}function Xp(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 1/0;let o=1,s=1,a=1/0;for(let l=1;l<=60;l++){s*=Kt(l)/r;let c=s*(6*l+1)/(1-6*l),f=Math.abs(c);if(f>=a||(o+=c,a=f,f<1e-18*Math.abs(o)))break}return Math.exp(r)*(1+i[1])*Math.pow(e,.25)/Math.sqrt(Math.PI)*o}if(e<-9){let[i,r,o,s,a]=Yp(-e);return a*(o*i+s*r)}let[n,t]=Zp(e);return De(Jp,nn(De(Co,n),De($o,t)))[0]}var My=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],ky=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Ay=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Cy=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],Kp=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],Qp=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],em=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],nm=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function He(e,n){let t=n[0];for(let i=1;i<n.length;i++)t=t*e+n[i];return t}var tm=6e15;function im(e){let t=134217729*e,i=t-(t-e),r=e-i,o=i*i%4+2*(i*r%2)+r*r%4;return o%=4,o<0&&(o+=4),Math.PI/2*o}function Un(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*t*He(i,My)/He(i,ky)}if(e<tm){let t=e*e,i=Math.PI*t,r=1/(i*i),o=1-r*He(r,Kp)/He(r,Qp),s=1/i*He(r,em)/He(r,nm),a=im(e),u=Math.cos(a),l=Math.sin(a);return n*(.5-(o*u+s*l)/(Math.PI*e))}return n*.5}function Hn(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*He(i,Ay)/He(i,Cy)}if(e<tm){let t=e*e,i=Math.PI*t,r=1/(i*i),o=1-r*He(r,Kp)/He(r,Qp),s=1/i*He(r,em)/He(r,nm),a=im(e),u=Math.cos(a),l=Math.sin(a);return n*(.5+(o*l-s*u)/(Math.PI*e))}return n*.5}function rm(e){return e===0?1:Math.sin(e)/e}function om(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1/0:-1/0;let n=e<0?-1:1,t=Math.abs(e),i=t*t,r=t,o=t;for(let s=1;s<1e3&&(r*=i*(2*s-1)/(s*(2*s+1)),o+=r,!(r<o*1e-18));s++);return n*(2/Math.sqrt(Math.PI))*o}var Fa=.5772156649015329;function sm(e){let r=Math.abs(e);if(r===0)return{si:0,ci:-1/0};if(!Number.isFinite(r))return{si:e>0?Math.PI/2:-Math.PI/2,ci:0};let o,s;if(r>2){let a=1,u=r,l=1e30,c=0,f=a*a+u*u,d=a/f,p=-u/f,h=d,b=p;for(let A=1;A<100;A++){let k=-A*A;a+=2;let O=k*d+a,j=k*p+u;f=O*O+j*j,d=O/f,p=-j/f,f=l*l+c*c,l=a+k*l/f,c=u-k*c/f;let G=l*d-c*p,re=l*p+c*d;if(O=h*G-b*re,j=h*re+b*G,h=O,b=j,Math.abs(G-1)+Math.abs(re)<=1e-16)break}let y=Math.cos(r),v=Math.sin(r),T=y*h+v*b,_=y*b-v*h;s=-T,o=Math.PI/2+_}else{let a=0,u=0,l=0,c=1,f=1,d=!0;for(let p=1;p<=100;p++){f*=r/p;let h=f/p;a+=c*h;let b=h/Math.abs(a);if(d?(c=-c,u=a,a=l):(l=a,a=u),b<1e-16)break;d=!d}o=u,s=l+Math.log(r)+Fa}return e<0&&(o=-o),{si:o,ci:s}}function am(e){return Number.isNaN(e)?NaN:sm(e).si}function um(e){return Number.isNaN(e)?NaN:sm(e).ci}function $y(e){if(e<=0)return NaN;if(e<=1){let u=-Math.log(e)-Fa,l=1;for(let c=1;c<=200;c++){l*=-e/c;let f=-l/c;if(u+=f,Math.abs(f)<Math.abs(u)*1e-16)break}return u}let i=1e30,r=e+1,o=i,s=1/r,a=s;for(let u=1;u<=200;u++){let l=-u*u;r+=2,s=1/(l*s+r),o=r+l/o;let c=o*s;if(a*=c,Math.abs(c-1)<=1e-16)break}return a*Math.exp(-e)}function Oa(e){if(Number.isNaN(e))return NaN;if(e===0)return-1/0;if(!Number.isFinite(e))return e>0?1/0:0;if(e<0)return-$y(-e);let n=1e-16,t=200,i=-Math.log(n);if(e<=i){let s=0,a=1;for(let u=1;u<=t;u++){a*=e/u;let l=a/u;if(s+=l,l<n*s)break}return s+Math.log(e)+Fa}let r=0,o=1;for(let s=1;s<=t;s++){let a=o;if(o*=s/e,o<n)break;if(o<a)r+=o;else{r-=a;break}}return Math.exp(e)*(1+r)/e}function lm(e){return Number.isNaN(e)?NaN:e===0?0:e===1?-1/0:e<0?NaN:Oa(Math.log(e))}function Ba(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(e<0||n<0)return NaN;if(e===0||n===0)return 0;if(!isFinite(e)||!isFinite(n))return 1/0;for(let t=0;t<64&&Math.abs(e-n)>1e-17*Math.abs(e);t++){let i=.5*(e+n);n=Math.sqrt(e*n),e=i}return .5*(e+n)}function La(e){return Number.isNaN(e)?NaN:e===1?1/0:e>1?NaN:Math.PI/(2*Ba(1,Math.sqrt(1-e)))}function Va(e){if(Number.isNaN(e))return NaN;if(e===1)return 1;if(e>1)return NaN;let n=1,t=Math.sqrt(1-e),i=.5*e,r=.5;for(let s=0;s<64&&Math.abs(n-t)>1e-17*n;s++){let a=.5*(n-t),u=.5*(n+t);t=Math.sqrt(n*t),n=u,r*=2,i+=r*a*a}return Math.PI/(2*n)*(1-i)}var cm=1e-24;function Zt(e,n){if(Number.isNaN(e)||Number.isNaN(n)||e<0)return NaN;if(n===0)return 1/0;if(e===0)return Math.PI/(2*Math.sqrt(n));if(n<0)return Math.sqrt(e/(e-n))*Zt(e-n,-n);if(e===n)return 1/Math.sqrt(e);let t=(n-e)/e;if(Math.abs(t)<.01){let r=0,o=1;for(let s=0;s<10;s++)r+=o/(2*s+1),o*=-t;return r/Math.sqrt(e)}let i=Math.sqrt(e/n);return e<n?Math.acos(i)/Math.sqrt(n-e):Math.acosh(i)/Math.sqrt(e-n)}function Ki(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(e<0||n<0||t<0)return NaN;if((e===0?1:0)+(n===0?1:0)+(t===0?1:0)>1)return 1/0;if(n===t)return Zt(e,n);if(e===t)return Zt(n,e);if(e===n)return Zt(t,e);let i=(e+n+t)/3,r=Math.pow(3*cm,-1/6)*Math.max(Math.abs(i-e),Math.abs(i-n),Math.abs(i-t)),[o,s,a]=[e,n,t],u=i,l=1;for(let y=0;y<64&&l*r>=Math.abs(u);y++){let v=Math.sqrt(o),T=Math.sqrt(s),_=Math.sqrt(a),A=v*T+v*_+T*_;u=(u+A)/4,o=(o+A)/4,s=(s+A)/4,a=(a+A)/4,l/=4}let c=l/u,f=(i-e)*c,d=(i-n)*c,p=-f-d,h=f*d-p*p,b=f*d*p;return Math.pow(u,-.5)*(9240-924*h+385*h*h+660*b-630*h*b)/9240}function Ro(e,n,t,i){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t)||Number.isNaN(i))return NaN;if(e<0||n<0||t<0)return NaN;if(i===0||(e===0?1:0)+(n===0?1:0)+(t===0?1:0)>1)return 1/0;if(i<0){let[G,re,oe]=[e,n,t].sort((ke,Xn)=>ke-Xn),Ee=-i,ie=(oe*(G+re+Ee)-G*re)/(oe+Ee),ae=(ie-oe)*Ro(G,re,oe,ie);return ae-=3*Ki(G,re,oe),ae+=3*Math.sqrt(G*re*oe/(G*re+ie*Ee))*Zt(G*re+ie*Ee,ie*Ee),ae/(oe+Ee)}let r=(e+n+t+2*i)/5,o=(i-e)*(i-n)*(i-t),s=Math.pow(.25*cm,-1/6)*Math.max(Math.abs(r-e),Math.abs(r-n),Math.abs(r-t),Math.abs(r-i)),[a,u,l,c]=[e,n,t,i],f=r,d=1,p=0;for(let G=0;G<64;G++){let re=Math.sqrt(a),oe=Math.sqrt(u),Ee=Math.sqrt(l),ie=Math.sqrt(c),ae=re*oe+re*Ee+oe*Ee,ke=(f+ae)/4;a=(a+ae)/4,u=(u+ae)/4,l=(l+ae)/4,c=(c+ae)/4;let Xn=(ie+re)*(ie+oe)*(ie+Ee),ns=o*d*d*d/(Xn*Xn);if(d*s<Math.abs(f))break;p+=Zt(1,1+ns)*d/Xn,d/=4,f=ke}let h=d/f,b=(r-e)*h,y=(r-n)*h,v=(r-t)*h,T=(-b-y-v)/2,_=b*y+b*v+y*v-3*T*T,A=b*y*v+2*_*T+4*T*T*T,k=(2*b*y*v+_*T+3*T*T*T)*T,O=b*y*v*T*T,j=(24024-5148*_+2457*_*_+4004*A-4158*_*A-3276*k+2772*O)/24024;return d*Math.pow(f,-1.5)*j+6*p}function Ry(e,n,t){return Ro(e,n,t,t)}function qa(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(Math.abs(e)>Math.PI/2){let o=Math.round(e/Math.PI),s=La(n);return Number.isFinite(s)?2*o*s+qa(e-o*Math.PI,n):NaN}let t=Math.sin(e),i=1-n*t*t;if(i<0)return NaN;let r=Math.cos(e);return t*Ki(r*r,i,1)}function Ja(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(Math.abs(e)>Math.PI/2){let s=Math.round(e/Math.PI),a=Va(n);return Number.isFinite(a)?2*s*a+Ja(e-s*Math.PI,n):NaN}let t=Math.sin(e),i=1-n*t*t;if(i<0)return NaN;let r=Math.cos(e),o=t*t*t;return t*Ki(r*r,i,1)-n/3*o*Ry(r*r,i,1)}function za(e,n){return Number.isNaN(e)||Number.isNaN(n)?NaN:e===1||n===1?1/0:n>1?NaN:Ki(0,1-n,1)+e/3*Ro(0,1-n,1,1-e)}function ja(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(Math.abs(n)>Math.PI/2){let u=Math.round(n/Math.PI),l=za(e,t);return Number.isFinite(l)?2*u*l+ja(e,n-u*Math.PI,t):NaN}let i=Math.sin(n),r=1-t*i*i;if(r<0)return NaN;let o=Math.cos(n),s=i*i*i,a=1-e*i*i;return a===0?1/0:i*Ki(o*o,r,1)+e/3*s*Ro(o*o,r,1,a)}function Xi(e){return Number.isInteger(e)&&e<=0}function Wi(e,n,t,i,r=1e4){let o=1,s=1;for(let a=0;a<r;a++)if(o*=(e+a)*(n+a)*i/((t+a)*(a+1)),o===0||(s+=o,a>2&&Math.abs(o)<=Number.EPSILON*Math.abs(s)))return s;return s}function Ga(e,n,t,i){if([e,n,t,i].some(Number.isNaN))return NaN;let r=Xi(e)?-e:1/0,o=Xi(n)?-n:1/0,s=Math.min(r,o);if(Xi(t)&&(s===1/0||s>-t))return NaN;if(s!==1/0)return Wi(e,n,t,i,s+1);if(i===0)return 1;if(i===1){let c=t-e-n;return c<=0?c===0?1/0:NaN:ue(t)*ue(c)/(ue(t-e)*ue(t-n))}if(i>1)return NaN;if(i<0)return Math.pow(1-i,-e)*Ga(e,t-n,t,i/(i-1));if(i<=.5)return Wi(e,n,t,i);let a=t-e-n;if(Number.isInteger(a)){if(i<1){let c=Math.ceil(17/-Math.log10(i));if(c<=4e5)return Wi(e,n,t,i,c+10)}return NaN}let u=ue(t)*ue(a)/(ue(t-e)*ue(t-n))*Wi(e,n,1-a,1-i),l=ue(t)*ue(-a)/(ue(e)*ue(n))*Math.pow(1-i,a)*Wi(t-e,t-n,1+a,1-i);return u+l}function Cp(e,n,t,i=2e4){let r=1,o=1;for(let s=0;s<i;s++)if(r*=(e+s)*t/((n+s)*(s+1)),r===0||(o+=r,s>2&&Math.abs(r)<=Number.EPSILON*Math.abs(o)))return o;return o}function Ua(e,n,t){if([e,n,t].some(Number.isNaN))return NaN;let i=Xi(e)?-e:1/0;return Xi(n)&&(i===1/0||i>-n)?NaN:i!==1/0?Cp(e,n,t,i+1):t<0?Math.exp(t)*Ua(n-e,n,-t):Cp(e,n,t)}var MM=new pe("matrix"),kM=new pe("vector");var Qi=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function er(e,n){for(;e>=Qi.length;){let t=Qi.length,i=[1],r=Qi[t-1];for(let o=1;o<t;o++)i[o]=r[o-1]+r[o];i[t]=1,Qi.push(i)}return Qi[e][n]}function fm(e){let n=0,t=0;for(let i of e)n+=i,t++;return t===0?NaN:n/t}function nr(e){let n=[...e].sort((i,r)=>i-r),t=Math.floor(n.length/2);return n.length%2===0?(n[t-1]+n[t])/2:n[t]}function Ha(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/(i-1)}function Za(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/i}function dm(e){return Math.sqrt(Ha(e))}function pm(e){return Math.sqrt(Za(e))}function mm(e){let n=0,t=0,i=0,r=0,o=0;for(let c of e){let f=c;if(!Number.isFinite(f))return NaN;n+=f,t+=f*f,i+=f*f*f,r+=f*f*f*f,o++}if(o===0)return NaN;let s=o,a=n/s,u=(t-n*n/s)/s;return(r-4*a*i+6*a*a*t-4*a*a*a*n+s*a*a*a*a)/s/(u*u)}function hm(e){let n=0,t=0,i=0,r=0;for(let l of e){let c=l;if(!Number.isFinite(c))return NaN;n+=c,t+=c*c,i+=c*c*c,r++}if(r===0)return NaN;let o=r,s=n/o,a=(t-n*n/o)/o;return(i-3*s*t+3*s*s*n-o*s*s*s)/o/Math.pow(a,3/2)}function gm(e){let n={};for(let r of e)n[r]=(n[r]??0)+1;let t=0,i=NaN;for(let r in n){let o=n[r];o>t&&(t=o,i=+r)}return i}function Ya(e){let n=[...e].sort((u,l)=>u-l),t=n.length,i=Math.floor(t/2),r=i+t%2,o=nr(n.slice(0,i)),s=nr(n),a=nr(n.slice(r));return[o,s,a]}function bm(e,n,t){let i=[...e],r=[...n],o=i.length;if(o!==r.length||o<2)return NaN;let s=0,a=0,u=0;for(let l=0;l<o;l++)s+=i[l],a+=r[l],u+=i[l]*r[l];return(u-s*a/o)/(t?o:o-1)}function ym(e,n){return bm(e,n,!1)}function xm(e,n){return bm(e,n,!0)}function Em(e,n){let t=[...e],i=[...n],r=t.length;if(r!==i.length||r<2)return NaN;let o=0,s=0,a=0,u=0,l=0;for(let h=0;h<r;h++)o+=t[h],s+=i[h],a+=t[h]*i[h],u+=t[h]*t[h],l+=i[h]*i[h];let c=a-o*s/r,f=u-o*o/r,d=l-s*s/r,p=Math.sqrt(f*d);return p===0?NaN:c/p}function vm(e){let[n,,t]=Ya(e);return t-n}function Gy(e,n){if(n===0)return{estimate:e,error:n};let t=Math.abs(n),i=Math.floor(Math.log10(t)),r=2,o=Math.pow(10,i-(r-1)),s=Math.round(n/o)*o,a=Math.max(0,-(i-(r-1)));return{estimate:Number(e.toFixed(a)),error:s}}function Wa(e,n,t,i=1e5,r){r??=It();let o;n===-1/0&&t===1/0?o=()=>{let y=Math.random(),v=Math.tan(Math.PI*(y-.5));return e(v)*Math.PI*(1+v*v)}:n===-1/0?o=()=>{let y=Math.random();return e(t+Math.log(y))/y}:t===1/0?o=()=>{let y=Math.random();return e(n-Math.log(y))/y}:o=()=>e(n+Math.random()*(t-n));let s=0,a=0,u=0;dr(r,()=>{for(let y=0;y<i;y++){if((y&63)===0&&r!==void 0&&Date.now()>=r){y===0&&rn(r);break}let v;try{v=o()}catch(T){if(T instanceof Le&&u>0)break;throw T}s+=v,a+=v*v,u++}});let l=s/u,c=(a-u*l*l)/(u-1),f=Math.sqrt(c/u),d=isFinite(n)&&isFinite(t)?t-n:1,p=l*d,h=f*d;return Gy(p,h)}var Nm=[.9914553711208126,.9491079123427585,.8648644233597691,.7415311855993945,.5860872354676911,.4058451513773972,.2077849550078985,0],tr=[.0229353220105292,.0630920926299786,.1047900103222502,.1406532597155259,.1690047266392679,.1903505780647854,.2044329400752989,.2094821410847278],Tm=[.1294849661688697,.2797053914892767,.3818300505051189,.4179591836734694];function Xa(e,n,t){let i=.5*(n+t),r=.5*(t-n),o=Math.abs(r),s=e(i),a=Tm[3]*s,u=tr[7]*s,l=new Array(7),c=new Array(7);for(let b=0;b<3;b++){let y=2*b+1,v=r*Nm[y],T=e(i-v),_=e(i+v);l[y]=T,c[y]=_;let A=T+_;a+=Tm[b]*A,u+=tr[y]*A}for(let b=0;b<4;b++){let y=2*b,v=r*Nm[y],T=e(i-v),_=e(i+v);l[y]=T,c[y]=_,u+=tr[y]*(T+_)}let f=u*r,d=u*.5,p=tr[7]*Math.abs(s-d);for(let b=0;b<7;b++)p+=tr[b]*(Math.abs(l[b]-d)+Math.abs(c[b]-d));p*=o;let h=Math.abs((u-a)*r);return p!==0&&h!==0&&(h=p*Math.min(1,Math.pow(200*h/p,1.5))),{a:n,b:t,value:f,error:h}}function _m(e){return Number.isFinite(e)?e:Number.POSITIVE_INFINITY}function Ka(e){return!Number.isFinite(e.value)||!Number.isFinite(e.error)}function Uy(e,n,t,i,r,o){let s=Xa(e,n,t),a=[s],u=Number.isFinite(s.value)?s.value:0,l=Number.isFinite(s.error)?s.error:0,c=Ka(s)?1:0,f=!1,d=()=>Math.max(r,i*Math.abs(u)),p=y=>{Number.isFinite(y.value)&&(u+=y.value),Number.isFinite(y.error)&&(l+=y.error),Ka(y)&&(c+=1)},h=y=>{Number.isFinite(y.value)&&(u-=y.value),Number.isFinite(y.error)&&(l-=y.error),Ka(y)&&(c-=1)};for(;a.length<o&&!(c===0&&l<=d());){let y=0;for(let k=1;k<a.length;k++)_m(a[k].error)>_m(a[y].error)&&(y=k);let v=a[y],T=.5*(v.a+v.b);if(T<=v.a||T>=v.b){f=!0;break}let _=Xa(e,v.a,T),A=Xa(e,T,v.b);h(v),p(_),p(A),a[y]=_,a.push(A)}let b=!f&&c===0&&Number.isFinite(u)&&Number.isFinite(l)&&l<=d();return{estimate:u,error:l,converged:b}}function ir(e,n,t,i){let r=i?.rtol??1e-10,o=i?.atol??1e-12,s=i?.maxIntervals??1500;if(Number.isNaN(n)||Number.isNaN(t))return{estimate:NaN,error:NaN,converged:!1};if(n===t)return{estimate:0,error:0,converged:!0};if(n>t){let d=ir(e,t,n,i);return{estimate:-d.estimate,error:d.error,converged:d.converged}}let a=!Number.isFinite(n),u=!Number.isFinite(t),l,c,f;if(a&&u){let d={rtol:r,atol:o,maxIntervals:Math.ceil(s/2)},p=ir(e,n,0,d),h=ir(e,0,t,d),b=p.estimate+h.estimate,y=p.error+h.error,v=Math.abs(p.estimate)+Math.abs(h.estimate),T=p.converged&&h.converged&&Number.isFinite(b)&&y<=Math.max(o,r*v);return{estimate:b,error:y,converged:T}}else u?(l=d=>{let p=1-d;return e(n+d/p)/(p*p)},c=0,f=1):a?(l=d=>{let p=1-d;return e(t-d/p)/(p*p)},c=0,f=1):(l=e,c=n,f=t);return Uy(l,c,f,r,o,s)}var Qa={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]};function Im(e,n,t){if(n.length<2)throw new Error(`${e}: expected at least two arguments`);let i=n[0]?.engine?.tolerance??1e-10,r=l=>l.type.matches("collection")||Rm(l);if(n.some(r)){if(n.length===2)return`_SYS.${e==="Equal"?"eq":"neq"}((${t(n[0])}), (${t(n[1])}), ${i})`;throw new Error(`${e}: cannot compile \u2014 chained (n-ary) comparison over an operand that may be a collection at run time (collection-valued or possibly-collection-typed). Materialize the collection first. Fail closed (D6).`)}let o=e==="Equal"?"<=":">",s=(l,c)=>{if(!(N.isComplexValued(l)||N.isComplexValued(c)))return`Math.abs((${t(l)}) - (${t(c)}))`;let d=b=>{let y=t(b);return N.isComplexValued(b)?{re:`(${y}).re`,im:`(${y}).im`}:{re:`(${y})`,im:"0"}},p=d(l),h=d(c);return`_SYS.cabs({ re: ${p.re} - ${h.re}, im: ${p.im} - ${h.im} })`},a=(l,c)=>`(${s(l,c)} ${o} ${i})`;if(n.length===2)return a(n[0],n[1]);let u=[];for(let l=0;l<n.length-1;l++)u.push(a(n[l],n[l+1]));return`(${u.join(" && ")})`}function hn(e){let n=e.type;return n.matches("list")||n.matches("indexed_collection")}function Rm(e){let n=e.type.type;return n==="unknown"||n==="any"||n==="value"?g(e)&&(e.isCanonical||e.isStructural):typeof n!="string"&&n.kind==="broadcastable"}function eu(e,n,t){let i=t(e),r=e.type.type;return typeof r!="string"&&r.kind==="tuple"?`${i}[${n}]`:Hy(e)?`(${i}).map((_pt) => _pt[${n}])`:`${i}[${n}]`}function Hy(e){let n=le(e.type.type);if(n!==void 0&&typeof n!="string"&&n.kind==="tuple")return!0;if(e.isFiniteCollection){let t=e.at(1);if(t===void 0)return!1;let i=t.type.type;return typeof i!="string"&&i.kind==="tuple"||t.operator==="Tuple"}return!1}var nu={Equal:(e,n)=>Im("Equal",e,n),NotEqual:(e,n)=>Im("NotEqual",e,n),Abs:(e,n)=>N.isComplexValued(e[0])?`_SYS.cabs(${n(e[0])})`:N.isNonNegative(e[0])?n(e[0]):`Math.abs(${n(e[0])})`,Add:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(s=>N.isComplexValued(s))){let s=e.map(se);if(s.every(u=>u!==void 0))return String(s.reduce((u,l)=>u+l,0));let a=e.filter(u=>se(u)!==0);return a.length===0?"0":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" + ")})`}let i=e.map(s=>({code:n(s),isComplex:N.isComplexValued(s)})),r=i.map(s=>s.isComplex?`(${s.code}).re`:s.code),o=i.filter(s=>s.isComplex).map(s=>`(${s.code}).im`);return`({ re: ${r.join(" + ")}, im: ${o.join(" + ")} })`},Arccos:(e,n)=>N.isComplexValued(e[0])?`_SYS.cacos(${n(e[0])})`:`Math.acos(${n(e[0])})`,Arcosh:"Math.acosh",Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return N.isComplexValued(e)?`_SYS.cacot(${n(e)})`:`(Math.PI / 2 - Math.atan(${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return N.isComplexValued(e)?`_SYS.cacoth(${n(e)})`:`Math.atanh(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return N.isComplexValued(e)?`_SYS.cacsc(${n(e)})`:`Math.asin(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return N.isComplexValued(e)?`_SYS.cacsch(${n(e)})`:`Math.asinh(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return N.isComplexValued(e)?`_SYS.casec(${n(e)})`:`Math.acos(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return N.isComplexValued(e)?`_SYS.casech(${n(e)})`:`Math.acosh(1 / (${n(e)}))`},Arcsin:(e,n)=>N.isComplexValued(e[0])?`_SYS.casin(${n(e[0])})`:`Math.asin(${n(e[0])})`,Arsinh:"Math.asinh",Arctan:(e,n)=>N.isComplexValued(e[0])?`_SYS.catan(${n(e[0])})`:`Math.atan(${n(e[0])})`,Artanh:"Math.atanh",Ceil:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`Math.ceil(${n(e[0])})`,Chop:"_SYS.chop",Cos:(e,n)=>N.isComplexValued(e[0])?`_SYS.ccos(${n(e[0])})`:`Math.cos(${n(e[0])})`,Cosh:(e,n)=>N.isComplexValued(e[0])?`_SYS.ccosh(${n(e[0])})`:`Math.cosh(${n(e[0])})`,Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return N.isComplexValued(e)?`_SYS.ccot(${n(e)})`:N.inlineExpression("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return N.isComplexValued(e)?`_SYS.ccoth(${n(e)})`:N.inlineExpression("(Math.cosh(${x}) / Math.sinh(${x}))",n(e))},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return N.isComplexValued(e)?`_SYS.ccsc(${n(e)})`:`1 / Math.sin(${n(e)})`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return N.isComplexValued(e)?`_SYS.ccsch(${n(e)})`:`1 / Math.sinh(${n(e)})`},Exp:(e,n)=>N.isComplexValued(e[0])?`_SYS.cexp(${n(e[0])})`:`Math.exp(${n(e[0])})`,First:(e,n)=>`${n(e[0])}[0]`,Floor:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`Math.floor(${n(e[0])})`,Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return N.inlineExpression("${x} - Math.floor(${x})",n(e))},Gamma:"_SYS.gamma",GCD:(e,n)=>Cm("GCD",e,n),Integrate:(e,n,t)=>ix(e,n,t),LCM:(e,n)=>Cm("LCM",e,n),Product:(e,n,t)=>wm("Product",e,n,t),Sum:(e,n,t)=>wm("Sum",e,n,t),Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:(e,n)=>N.isComplexValued(e[0])?`_SYS.cln(${n(e[0])})`:`Math.log(${n(e[0])})`,List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>n(e[0]),Tuple:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Length:(e,n)=>{let t=e[0];if(t==null)throw new Error("Length: no argument");if(!hn(t))throw new Error("Length: cannot compile \u2014 operand is not an indexed collection (list/vector/range). Fail closed (D6).");return`(${n(t)}).length`},At:(e,n)=>{let t=e[0],i=e[1];if(t==null||i===null||i===void 0)throw new Error("At: missing argument");if(e.length!==2)throw new Error("At: only the single-index form compiles; multi-index (nested) access is not supported. Fail closed (D6).");if(!hn(t))throw new Error("At: cannot compile \u2014 first operand is not an indexed collection (list/vector/range). Fail closed (D6).");return`_SYS.at(${n(t)}, ${n(i)})`},Reduce:(e,n,t)=>{let i=e[0],r=e[1],o=e[2];if(i==null||r===null||r===void 0)throw new Error("Reduce: missing argument");if(!hn(i))throw new Error("Reduce: cannot compile \u2014 first operand is not an indexed collection (list/vector/range). Fail closed (D6).");let s=Mm(r);if(s===void 0&&(g(r,"Function")||S(r))){if(o==null)throw new Error("Reduce: a custom combiner compiles only with an explicit initial value. Fail closed (D6).");s=km(r,n,t)}if(s===void 0)throw new Error("Reduce: the combiner does not compile to a function \u2014 only Add/Multiply/Min/Max folds, function literals, and user-defined functions compile on the JavaScript target. Fail closed (D6).");let a=n(i);return o!=null?`(${a}).reduce(${s}, ${n(o)})`:`((_l) => _l.length === 0 ? NaN : _l.reduce(${s}))(${a})`},Last:(e,n)=>`_SYS.at(${J("Last",e[0],n)}, -1)`,Rest:(e,n)=>`(${J("Rest",e[0],n)}).slice(1)`,Take:(e,n)=>{let t=J("Take",e[0],n);if(e[1]==null)throw new Error("Take: missing count");return`(${t}).slice(0, Math.max(0, ${n(e[1])}))`},Drop:(e,n)=>{let t=J("Drop",e[0],n);if(e[1]==null)throw new Error("Drop: missing count");return`(${t}).slice(Math.max(0, ${n(e[1])}))`},Reverse:(e,n)=>`(${J("Reverse",e[0],n)}).slice().reverse()`,Sort:(e,n)=>{let t=J("Sort",e[0],n);if(e.length>1)throw new Error("Sort: a custom comparator does not compile; only the default ascending numeric sort is supported. Fail closed (D6).");return`(${t}).slice().sort((_a, _b) => _a - _b)`},Join:(e,n)=>e.length===0?"[]":`[${e.map((t,i)=>`...(${J("Join",t,n,i+1)})`).join(", ")}]`,IndexOf:(e,n)=>{let t=J("IndexOf",e[0],n);if(e[1]==null)throw new Error("IndexOf: missing value");let i=e[0]?.engine?.tolerance??1e-10;return`((_v) => (${t}).findIndex((_x) => Math.abs(_x - _v) <= ${i}) + 1)(${n(e[1])})`},Map:(e,n)=>{if(e.length>2)throw new Error("Map: multi-collection form is not compiled");let t=J("Map",e[0],n);if(e[1]==null)throw new Error("Map: missing mapping function");return`((_f) => (${t}).map((_x) => _f(_x)))(${n(e[1])})`},Filter:(e,n)=>{let t=J("Filter",e[0],n);if(e[1]==null)throw new Error("Filter: missing predicate");return`((_f) => (${t}).filter((_x) => _f(_x)))(${n(e[1])})`},CountIf:(e,n)=>{let t=J("CountIf",e[0],n);if(e[1]==null)throw new Error("CountIf: missing predicate");return`((_f) => (${t}).filter((_x) => _f(_x)).length)(${n(e[1])})`},Find:(e,n)=>{let t=J("Find",e[0],n);if(e[1]==null)throw new Error("Find: missing predicate");return`((_f) => ((${t}).find((_x) => _f(_x)) ?? NaN))(${n(e[1])})`},IndexWhere:(e,n)=>{let t=J("IndexWhere",e[0],n);if(e[1]==null)throw new Error("IndexWhere: missing predicate");return`((_f) => (${t}).findIndex((_x) => _f(_x)) + 1)(${n(e[1])})`},Position:(e,n)=>{let t=J("Position",e[0],n);if(e[1]==null)throw new Error("Position: missing predicate");return`((_f) => (${t}).flatMap((_x, _i) => _f(_x) ? [_i + 1] : []))(${n(e[1])})`},Tabulate:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Tabulate: missing argument");if(e.length>3)throw new Error("Tabulate: only the 1-D and 2-D forms compile. Fail closed (D6).");for(let o=1;o<e.length;o++){let s=se(e[o]);if(s!==void 0&&Math.round(s)<=0)throw new Error(`Tabulate: a statically non-positive dimension (${s}) is inert in the interpreter. Fail closed (D6).`)}let t=n(e[0]),i=n(e[1]);if(e.length===2)return`((_f, _n) => Array.from({ length: Math.max(0, Math.round(_n)) }, (_, _i) => _f(_i + 1)))(${t}, ${i})`;let r=n(e[2]);return`((_f, _n, _m) => Array.from({ length: Math.max(0, Math.round(_n)) }, (_, _i) => Array.from({ length: Math.max(0, Math.round(_m)) }, (_, _j) => _f(_i + 1, _j + 1))))(${t}, ${i}, ${r})`},Fill:(e,n)=>{let t=e[1];if(e[0]==null||t==null)throw new Error("Fill: missing argument");if(!g(t)||t.ops.length!==2)throw new Error("Fill: only the (function, (rows, cols)) form compiles. Fail closed (D6).");let i=n(e[0]),r=n(t.ops[0]),o=n(t.ops[1]);return`((_f, _r, _c) => Array.from({ length: Math.max(0, Math.round(_r)) }, (_, _i) => Array.from({ length: Math.max(0, Math.round(_c)) }, (_, _j) => _f(_i + 1, _j + 1))))(${i}, ${r}, ${o})`},Append:(e,n)=>{let t=J("Append",e[0],n);if(e[1]==null)throw new Error("Append: missing value");return`[...(${t}), ${n(e[1])}]`},Most:(e,n)=>`(${J("Most",e[0],n)}).slice(0, -1)`,Slice:(e,n)=>{let t=J("Slice",e[0],n);if(e[1]==null||e[2]==null)throw new Error("Slice: missing index");return`((_l, _s, _e) => { _s = Math.round(_s); if (!Number.isFinite(_s)) _s = 1; _e = Math.round(_e); if (!Number.isFinite(_e)) _e = _l.length; if (_s < 1) _s = _l.length + 1 + _s; if (_s < 1) _s = 1; if (_s > _l.length) return []; if (_e < 1) _e = _l.length + 1 + _e; if (_e < 1) _e = 1; if (_e > _l.length) _e = _l.length; return _l.slice(_s - 1, _e); })(${t}, ${n(e[1])}, ${n(e[2])})`},IsEmpty:(e,n)=>`((${J("IsEmpty",e[0],n)}).length === 0)`,Count:(e,n)=>`(${J("Count",e[0],n)}).length`,Contains:(e,n)=>{e[0]&&_t("Contains",e[0]);let t=J("Contains",e[0],n);if(e[1]==null)throw new Error("Contains: missing value");return`(${t}).includes(${n(e[1])})`},Unique:(e,n)=>(e[0]&&_t("Unique",e[0]),`[...new Set(${J("Unique",e[0],n)})]`),RotateLeft:(e,n)=>{let t=J("RotateLeft",e[0],n),i=e[1]==null?"1":n(e[1]);return`((_l, _n) => { if (_l.length === 0) return []; _n = Math.round(_n); if (!Number.isFinite(_n)) _n = 1; _n = ((_n % _l.length) + _l.length) % _l.length; return [..._l.slice(_n), ..._l.slice(0, _n)]; })(${t}, ${i})`},RotateRight:(e,n)=>{let t=J("RotateRight",e[0],n),i=e[1]==null?"1":n(e[1]);return`((_l, _n) => { if (_l.length === 0) return []; _n = Math.round(_n); if (!Number.isFinite(_n)) _n = 1; _n = ((-_n % _l.length) + _l.length) % _l.length; return [..._l.slice(_n), ..._l.slice(0, _n)]; })(${t}, ${i})`},Zip:(e,n)=>e.length===0?"[]":`((..._ls) => Array.from({ length: Math.min(..._ls.map((_l) => _l.length)) }, (_, _i) => _ls.map((_l) => _l[_i])))(${e.map((i,r)=>J("Zip",i,n,r+1)).join(", ")})`,Linspace:(e,n)=>{if(e[0]==null)throw new Error("Linspace: missing argument");let t=e[1]==null?"1":n(e[0]),i=e[1]==null?n(e[0]):n(e[1]),r=e[2]==null?"50":n(e[2]);return`((_s, _e, _c) => { _c = Math.floor(_c); if (!Number.isFinite(_c)) _c = 50; _c = Math.max(0, _c); if (_c === 1) return [_s]; return Array.from({ length: _c }, (_, _i) => _s + ((_e - _s) * _i) / (_c - 1)); })(${t}, ${i}, ${r})`},Chunk:(e,n)=>{let t=J("Chunk",e[0],n);if(e[1]==null)throw new Error("Chunk: missing count");let i=se(e[1]);if(i!==void 0&&!(Math.round(i)>0))throw new Error(`Chunk: a statically non-positive chunk count (${i}) is inert in the interpreter. Fail closed (D6).`);return`((_l, _k) => { _k = Math.round(_k); if (!(Number.isFinite(_k) && _k > 0)) return []; const _sz = Math.ceil(_l.length / _k); return Array.from({ length: _k }, (_, _i) => _l.slice(_i * _sz, (_i + 1) * _sz)); })(${t}, ${n(e[1])})`},Partition:(e,n)=>{let t=J("Partition",e[0],n),i=e[1];if(i==null)throw new Error("Partition: missing operand");if(i.type.matches("number")){let r=se(i);if(r!==void 0&&!(Math.round(r)>0))throw new Error(`Partition: a statically non-positive chunk size (${r}) is inert in the interpreter. Fail closed (D6).`);let o=e[2];if(o!==void 0){let s=se(o);if(s!==void 0&&!(Math.round(s)>0))throw new Error(`Partition: a statically non-positive step (${s}) is inert in the interpreter. Fail closed (D6).`);return`((_l, _n, _s) => { _n = Math.round(_n); _s = Math.round(_s); if (!(Number.isFinite(_n) && _n > 0 && Number.isFinite(_s) && _s > 0)) return []; const _r = []; for (let _i = 0; _i + _n <= _l.length; _i += _s) _r.push(_l.slice(_i, _i + _n)); return _r; })(${t}, ${n(i)}, ${n(o)})`}return`((_l, _n) => { _n = Math.round(_n); if (!(Number.isFinite(_n) && _n > 0)) return []; const _r = []; for (let _i = 0; _i < _l.length; _i += _n) _r.push(_l.slice(_i, _i + _n)); return _r; })(${t}, ${n(i)})`}if(g(i,"Function")||S(i)&&N.userFunctionLiteral(i.engine,i.symbol)!==void 0)return`((_f, _l) => { const _t = [], _u = []; for (const _x of _l) (_f(_x) ? _t : _u).push(_x); return [_t, _u]; })(${n(i)}, ${t})`;throw new Error("Partition: the second operand must be an integer or a function literal. Fail closed (D6).")},Ordering:(e,n)=>{let t=J("Ordering",e[0],n);if(e.length>1)throw new Error("Ordering: a custom ordering function does not compile; only the default ascending numeric order is supported. Fail closed (D6).");return`((_l) => Array.from({ length: _l.length }, (_, _i) => _i + 1).sort((_a, _b) => _l[_a - 1] - _l[_b - 1]))(${t})`},Shuffle:(e,n,t)=>{let i=J("Shuffle",e[0],n);if(e.length>1)throw new Error("Shuffle: the seeded form does not compile. Fail closed (D6).");let r=t?.randomSeed;if(r!=null){let o=t?.randomState?t.randomState.counter++:0,s=(r^Math.imul(o+1,2654435761))>>>0;return`_SYS.shuffle(${i}, ${s})`}return`_SYS.shuffle(${i})`},Any:(e,n)=>{let t=J("Any",e[0],n);if(e[1]==null)throw new Error("Any: only the predicate form compiles. Fail closed (D6).");return`((_f) => (${t}).some((_x) => _f(_x)))(${n(e[1])})`},All:(e,n)=>{let t=J("All",e[0],n);if(e[1]==null)throw new Error("All: only the predicate form compiles. Fail closed (D6).");return`((_f) => (${t}).every((_x) => _f(_x)))(${n(e[1])})`},TakeWhile:(e,n)=>{let t=J("TakeWhile",e[0],n);if(e[1]==null)throw new Error("TakeWhile: missing predicate");return`((_f, _l) => { const _i = _l.findIndex((_x) => !_f(_x)); return _i < 0 ? _l.slice() : _l.slice(0, _i); })(${n(e[1])}, ${t})`},DropWhile:(e,n)=>{let t=J("DropWhile",e[0],n);if(e[1]==null)throw new Error("DropWhile: missing predicate");return`((_f, _l) => { const _i = _l.findIndex((_x) => !_f(_x)); return _i < 0 ? [] : _l.slice(_i); })(${n(e[1])}, ${t})`},FlatMap:(e,n)=>{let t=J("FlatMap",e[0],n);if(e[1]==null)throw new Error("FlatMap: missing mapping function");return`((_f) => (${t}).flatMap((_x) => _f(_x)))(${n(e[1])})`},Scan:(e,n,t)=>{let i=e[0],r=e[1],o=e[2];if(i==null||r==null)throw new Error("Scan: missing argument");if(!hn(i))throw new Error("Scan: cannot compile \u2014 first operand is not an indexed collection (list/vector/range). Fail closed (D6).");let s=Mm(r)??(g(r,"Function")||S(r)?km(r,n,t):void 0);if(s===void 0)throw new Error("Scan: the combiner does not compile to a function \u2014 only Add/Multiply/Min/Max folds, function literals, and user-defined functions compile on the JavaScript target. Fail closed (D6).");let a=n(i);return o!=null?`((_f, _l, _a) => _l.map((_x) => (_a = _f(_a, _x))))(${s}, ${a}, ${n(o)})`:`((_f, _l) => { let _a; return _l.map((_x, _i) => (_a = _i === 0 ? _x : _f(_a, _x))); })(${s}, ${a})`},Boole:(e,n)=>{if(e[0]==null)throw new Error("Boole: missing argument");let t=n(e[0]);return N.isBooleanValued(e[0])?`((${t}) ? 1 : 0)`:`(_SYS.cond(${t}) ? 1 : 0)`},KroneckerDelta:(e,n)=>{if(e.length===0||e[0]==null)throw new Error("KroneckerDelta: missing argument");let t=e[0].engine.tolerance??1e-10;return e.length===1?`(Math.abs(${n(e[0])}) <= ${t} ? 1 : 0)`:`((..._v) => _v.every((_x) => Math.abs(_x - _v[0]) <= ${t}) ? 1 : 0)(${e.map(i=>n(i)).join(", ")})`},Element:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Element: missing argument");return _t("Element",e[1]),`(${J("Element",e[1],n)}).includes(${n(e[0])})`},Identity:(e,n)=>{if(e[0]==null)throw new Error("Identity: missing argument");return n(e[0])},Apply:(e,n)=>{if(e[0]==null)throw new Error("Apply: missing function");return`(${n(e[0])})(${e.slice(1).map(t=>n(t)).join(", ")})`},Dot:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Dot: missing argument");return`_SYS.matmul(${J("Dot",e[0],n,1)}, ${J("Dot",e[1],n,2)})`},MatrixMultiply:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("MatrixMultiply: missing argument");return`_SYS.matmul(${J("MatrixMultiply",e[0],n,1)}, ${J("MatrixMultiply",e[1],n,2)})`},Cross:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Cross: missing argument");return`_SYS.cross(${J("Cross",e[0],n,1)}, ${J("Cross",e[1],n,2)})`},Norm:(e,n)=>{if(e[0]==null)throw new Error("Norm: missing argument");if(e[1]!=null){if(ne(e[1])){if(e[1].string==="Frobenius")return`_SYS.norm(${n(e[0])})`;throw new Error(`Norm: the "${e[1].string}" norm does not compile. Fail closed (D6).`)}return`_SYS.norm(${n(e[0])}, ${n(e[1])})`}return`_SYS.norm(${n(e[0])})`},Transpose:(e,n)=>{if(e.length>1)throw new Error("Transpose: explicit axes do not compile. Fail closed (D6).");return`_SYS.transpose(${J("Transpose",e[0],n)})`},Determinant:(e,n)=>`_SYS.det(${J("Determinant",e[0],n)})`,Inverse:(e,n)=>`_SYS.inv(${J("Inverse",e[0],n)})`,Trace:(e,n)=>{if(e.length>1)throw new Error("Trace: explicit axes do not compile. Fail closed (D6).");return`_SYS.trace(${J("Trace",e[0],n)})`},ConjugateTranspose:(e,n)=>{if(e.length>1)throw new Error("ConjugateTranspose: explicit axes do not compile. Fail closed (D6).");return`_SYS.conjTranspose(${J("ConjugateTranspose",e[0],n)})`},Diagonal:(e,n)=>{if(e.length>1)throw new Error("Diagonal: the offset/banded form does not compile. Fail closed (D6).");return`_SYS.diagonal(${J("Diagonal",e[0],n)})`},MatrixPower:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("MatrixPower: missing argument");return`_SYS.matpow(${J("MatrixPower",e[0],n)}, ${n(e[1])})`},RowReduce:(e,n)=>`_SYS.rref(${J("RowReduce",e[0],n)})`,Rank:(e,n)=>{if(e[0]==null)throw new Error("Rank: missing argument");return`(_SYS.shape(${n(e[0])}).length)`},Shape:(e,n)=>{if(e[0]==null)throw new Error("Shape: missing argument");return`_SYS.shape(${n(e[0])})`},Flatten:(e,n)=>{let t=J("Flatten",e[0],n);return e[1]!=null?`(${t}).flat(${n(e[1])})`:`(${t}).flat(Infinity)`},Reshape:(e,n)=>{let t=J("Reshape",e[0],n),i=e[1];if(i==null)throw new Error("Reshape: missing shape");if(!g(i)||i.ops.length===0||i.ops.length>2)throw new Error("Reshape: only a 1-D or 2-D target shape compiles. Fail closed (D6).");return`_SYS.reshape(${t}, [${i.ops.map(r=>n(r)).join(", ")}])`},Log:(e,n)=>e.length===1?`Math.log10(${n(e[0])})`:`(Math.log(${n(e[0])}) / Math.log(${n(e[1])}))`,GammaLn:"_SYS.lngamma",Lb:"Math.log2",ElementMax:(e,n)=>`Math.max(${e.map(t=>n(t)).join(", ")})`,ElementMin:(e,n)=>`Math.min(${e.map(t=>n(t)).join(", ")})`,Clamp:(e,n)=>`Math.min(Math.max(${n(e[0])}, ${n(e[1])}), ${n(e[2])})`,Max:(e,n)=>Am("Max",e,n),Mean:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mean(${n(e[0])})`:`_SYS.mean([${e.map(t=>n(t)).join(", ")}])`,Median:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.median(${n(e[0])})`:`_SYS.median([${e.map(t=>n(t)).join(", ")}])`,Variance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.variance(${n(e[0])})`:`_SYS.variance([${e.map(t=>n(t)).join(", ")}])`,PopulationVariance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationVariance(${n(e[0])})`:`_SYS.populationVariance([${e.map(t=>n(t)).join(", ")}])`,StandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.standardDeviation(${n(e[0])})`:`_SYS.standardDeviation([${e.map(t=>n(t)).join(", ")}])`,PopulationStandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationStandardDeviation(${n(e[0])})`:`_SYS.populationStandardDeviation([${e.map(t=>n(t)).join(", ")}])`,Kurtosis:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.kurtosis(${n(e[0])})`:`_SYS.kurtosis([${e.map(t=>n(t)).join(", ")}])`,Skewness:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.skewness(${n(e[0])})`:`_SYS.skewness([${e.map(t=>n(t)).join(", ")}])`,Mode:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mode(${n(e[0])})`:`_SYS.mode([${e.map(t=>n(t)).join(", ")}])`,Quartiles:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.quartiles(${n(e[0])})`:`_SYS.quartiles([${e.map(t=>n(t)).join(", ")}])`,InterquartileRange:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.interquartileRange(${n(e[0])})`:`_SYS.interquartileRange([${e.map(t=>n(t)).join(", ")}])`,Covariance:(e,n)=>{if(e.length!==2)throw new Error("Covariance: expected two collection arguments to compile");return`_SYS.covariance(${n(e[0])}, ${n(e[1])})`},PopulationCovariance:(e,n)=>{if(e.length!==2)throw new Error("PopulationCovariance: expected two collection arguments to compile");return`_SYS.populationCovariance(${n(e[0])}, ${n(e[1])})`},Correlation:(e,n)=>{if(e.length!==2)throw new Error("Correlation: expected two collection arguments to compile");return`_SYS.correlation(${n(e[0])}, ${n(e[1])})`},Min:(e,n)=>Am("Min",e,n),Power:(e,n)=>{let t=e[0],i=e[1];if(t===null)throw new Error("Power: no argument");if(N.isComplexValued(t)||N.isComplexValued(i))return`_SYS.cpow(${n(t)}, ${n(i)})`;let r=se(t),o=se(i);if(r!==void 0&&o!==void 0){let s=Math.pow(r,o);if(Number.isNaN(s))throw new Error(`Power(${r}, ${o}) has no real value; cannot compile to a real target`);return String(s)}if(o===0)return"1";if(o===1)return n(t);if(o===2&&(S(t)||F(t))){let s=n(t);return`(${s} * ${s})`}return o===-1?`(1 / (${n(t)}))`:o===.5?`Math.sqrt(${n(t)})`:o===1/3?`Math.cbrt(${n(t)})`:o===-.5?`(1 / Math.sqrt(${n(t)}))`:o===void 0?`_SYS.pow(${n(t)}, ${n(i)})`:`Math.pow(${n(t)}, ${n(i)})`},Range:(e,n)=>{if(e.length===0)return"[]";if(e.length===1)return`Array.from({length: ${n(e[0])}}, (_, i) => i)`;let t=n(e[0]),i=n(e[1]),r=e[2]?n(e[2]):"1";if(t===null)throw new Error("Range: no start");if(i===null&&(i=t,t="1"),r==="0")throw new Error("Range: step cannot be zero");if(e[2]===void 0||e[2]===null){let o=parseFloat(i),s=parseFloat(t);if(!isNaN(o)&&!isNaN(s)){let a=o>=s?1:-1,u=Math.floor(Math.abs(o-s))+1;return u<50?`[${Array.from({length:u},(l,c)=>s+a*c).join(", ")}]`:`Array.from({length: ${u}}, (_e, i) => ${t} ${a===1?"+":"-"} i)`}return`((_a, _b) => Array.from({length: Math.floor(Math.abs(_b - _a)) + 1}, (_e, _i) => _b >= _a ? _a + _i : _a - _i))(${t}, ${i})`}return`Array.from({length: Math.floor((${i} - ${t}) / ${r}) + 1}, (_e, i) => ${t} + i * ${r})`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n===null)return`Math.sqrt(${t(e)})`;let i=se(e),r=se(n);if(i!==void 0&&r!==void 0&&r!==0){let o=Math.pow(i,1/r);if(Number.isNaN(o)){if(Number.isInteger(r)&&r%2!==0&&i<0)return String(-Math.pow(-i,1/r));throw new Error(`Root(${i}, ${r}) has no real value; cannot compile to a real target`)}return String(o)}return r===2?`Math.sqrt(${t(e)})`:r===3?`Math.cbrt(${t(e)})`:r!==void 0&&Number.isInteger(r)&&r%2!==0?N.inlineExpression(`(Math.sign(\${x}) * Math.pow(Math.abs(\${x}), ${1/r}))`,t(e)):r!==void 0?`Math.pow(${t(e)}, ${1/r})`:`Math.pow(${t(e)}, 1 / (${t(n)}))`},Random:(e,n,t)=>{let i=t?.randomSeed,r=e.length===1&&!N.isIntegerValued(e[0]);if(i!=null&&!r){let a=t?.randomState?t.randomState.counter++:0,u=pa((i^Math.imul(a+1,2654435761))>>>0)();if(e.length===0)return u.toString();if(e.length===2){let l=n(e[0]),c=n(e[1]);return`((${l}) + Math.floor(${u} * ((${c}) - (${l}))))`}return`Math.floor(${u} * (${n(e[0])}))`}if(e.length===0)return"Math.random()";if(e.length===2){let a=n(e[0]),u=n(e[1]);return`((${a}) + Math.floor(Math.random() * ((${u}) - (${a}))))`}let o=e[0];return N.isIntegerValued(o)?`Math.floor(Math.random() * (${n(o)}))`:`(() => { const _s = (${n(o)}) * 12.9898; const _v = Math.sin(_s) * 43758.5453; return _v - Math.floor(_v); })()`},Round:(e,n)=>{if(e.length<2)return N.isIntegerValued(e[0])?n(e[0]):N.inlineExpression("(Math.sign(${x}) * Math.round(Math.abs(${x})))",n(e[0]));let t=N.tempVar(),i=N.tempVar();return`(() => { const ${i} = Math.pow(10, ${n(e[1])}); const ${t} = ${n(e[0])} * ${i}; return (Math.sign(${t}) * Math.round(Math.abs(${t}))) / ${i}; })()`},Square:(e,n)=>{let t=e[0];if(t===null)throw new Error("Square: no argument");let i=se(t);if(i!==void 0)return String(i*i);if(S(t)){let r=n(t);return`(${r} * ${r})`}return`Math.pow(${n(t)}, 2)`},Sec:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sec: no argument");return N.isComplexValued(t)?`_SYS.csec(${n(t)})`:`1 / Math.cos(${n(t)})`},Sech:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sech: no argument");return N.isComplexValued(t)?`_SYS.csech(${n(t)})`:`1 / Math.cosh(${n(t)})`},Second:(e,n)=>`${n(e[0])}[1]`,Heaviside:"_SYS.heaviside",Sign:"Math.sign",Sinc:"_SYS.sinc",FresnelS:"_SYS.fresnelS",FresnelC:"_SYS.fresnelC",Sin:(e,n)=>N.isComplexValued(e[0])?`_SYS.csin(${n(e[0])})`:`Math.sin(${n(e[0])})`,Sinh:(e,n)=>N.isComplexValued(e[0])?`_SYS.csinh(${n(e[0])})`:`Math.sinh(${n(e[0])})`,Sqrt:(e,n)=>{if(N.isComplexValued(e[0]))return`_SYS.csqrt(${n(e[0])})`;let t=se(e[0]);if(t!==void 0){let i=Math.sqrt(t);if(Number.isNaN(i))throw new Error(`Sqrt(${t}) has no real value; cannot compile to a real target`);return String(i)}return`Math.sqrt(${n(e[0])})`},Tan:(e,n)=>N.isComplexValued(e[0])?`_SYS.ctan(${n(e[0])})`:`Math.tan(${n(e[0])})`,Tanh:(e,n)=>N.isComplexValued(e[0])?`_SYS.ctanh(${n(e[0])})`:`Math.tanh(${n(e[0])})`,Third:(e,n)=>`${n(e[0])}[2]`,PointX:(e,n)=>eu(e[0],0,n),PointY:(e,n)=>eu(e[0],1,n),PointZ:(e,n)=>eu(e[0],2,n),Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");let i=t(e),r=t(n);return N.isIntegerValued(e)&&N.isIntegerValued(n)&&N.isNonNegative(e)?`(${i} % ${r})`:`(((${i} % ${r}) + ${r}) % ${r})`},Truncate:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`Math.trunc(${n(e[0])})`,Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * Math.round(${t(e)} / ${t(n)}))`},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");let i=N.isComplexValued(e),r=N.isComplexValued(n);if(!i&&!r){let o=se(e),s=se(n);return o!==void 0&&s!==void 0&&s!==0?String(o/s):s===1?t(e):`(${t(e)} / ${t(n)})`}return i&&r?`(() => { const _a = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: (_a.re * _b.re + _a.im * _b.im) / _d, im: (_a.im * _b.re - _a.re * _b.im) / _d }; })()`:i&&!r?`(() => { const _a = ${t(e)}, _r = ${t(n)}; return { re: _a.re / _r, im: _a.im / _r }; })()`:`(() => { const _r = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: _r * _b.re / _d, im: -_r * _b.im / _d }; })()`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");if(!N.isComplexValued(e)){let t=se(e);return t!==void 0?String(-t):`(-${n(e)})`}return`_SYS.cneg(${n(e)})`},Multiply:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(s=>N.isComplexValued(s))){if(e.some(u=>se(u)===0))return"0";let s=e.map(se);if(s.every(u=>u!==void 0))return String(s.reduce((u,l)=>u*l,1));let a=e.filter(u=>se(u)!==1);return a.length===0?"1":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" * ")})`}if(e.length===2){let s=N.isComplexValued(e[0]),a=N.isComplexValued(e[1]),u=n(e[0]),l=n(e[1]);return s&&a?`(() => { const _a = ${u}, _b = ${l}; return { re: _a.re * _b.re - _a.im * _b.im, im: _a.re * _b.im + _a.im * _b.re }; })()`:s&&!a?`(() => { const _a = ${u}, _r = ${l}; return { re: _a.re * _r, im: _a.im * _r }; })()`:`(() => { const _r = ${u}, _b = ${l}; return { re: _r * _b.re, im: _r * _b.im }; })()`}let i=[],r=[];for(let s=0;s<e.length;s++){let a=`_v${s}`;r.push(a),i.push(`const ${a} = ${n(e[s])}`)}let o=N.isComplexValued(e[0]);i.push(`let _re = ${o?`${r[0]}.re`:r[0]}`),i.push(`let _im = ${o?`${r[0]}.im`:"0"}`);for(let s=1;s<e.length;s++){let a=r[s],u=N.isComplexValued(e[s]),l=u?`${a}.re`:a,c=u?`${a}.im`:"0";i.push(`const _nre${s} = _re * ${l} - _im * ${c}`),i.push(`const _nim${s} = _re * ${c} + _im * ${l}`),i.push(`_re = _nre${s}`),i.push(`_im = _nim${s}`)}return`(() => { ${i.join("; ")}; return { re: _re, im: _im }; })()`},Factorial:"_SYS.factorial",Factorial2:"_SYS.factorial2",Exp2:([e],n)=>{if(e===null)throw new Error("Exp2: no argument");return`Math.pow(2, ${n(e)})`},Log2:"Math.log2",Log10:"Math.log10",Lg:"Math.log10",Arctan2:"Math.atan2",Hypot:"Math.hypot",Degrees:([e],n)=>{if(e===null)throw new Error("Degrees: no argument");return`(${n(e)} * Math.PI / 180)`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return N.inlineExpression("(1 - Math.cos(${x})) / 2",n(e))},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2 * Math.asin(Math.sqrt(${n(e)})))`},Erf:"_SYS.erf",Erfc:"_SYS.erfc",ErfInv:"_SYS.erfInv",Erfi:"_SYS.erfi",Beta:"_SYS.beta",GammaRegularized:"_SYS.gammaQ",BetaRegularized:"_SYS.betaRegularized",Digamma:"_SYS.digamma",Trigamma:"_SYS.trigamma",PolyGamma:(e,n)=>`_SYS.polygamma(${n(e[0])}, ${n(e[1])})`,Zeta:"_SYS.zeta",LambertW:"_SYS.lambertW",BesselJ:(e,n)=>`_SYS.besselJ(${n(e[0])}, ${n(e[1])})`,BesselY:(e,n)=>`_SYS.besselY(${n(e[0])}, ${n(e[1])})`,BesselI:(e,n)=>`_SYS.besselI(${n(e[0])}, ${n(e[1])})`,BesselK:(e,n)=>`_SYS.besselK(${n(e[0])}, ${n(e[1])})`,AiryAi:"_SYS.airyAi",AiryBi:"_SYS.airyBi",AiryAiPrime:"_SYS.airyAiPrime",AiryBiPrime:"_SYS.airyBiPrime",SinIntegral:"_SYS.sinIntegral",CosIntegral:"_SYS.cosIntegral",ExpIntegralEi:"_SYS.expIntegralEi",LogIntegral:"_SYS.logIntegral",AGM:(e,n)=>e.length===1?`_SYS.agm(1, ${n(e[0])})`:`_SYS.agm(${n(e[0])}, ${n(e[1])})`,EllipticK:"_SYS.ellipticK",EllipticE:(e,n)=>e.length===2?`_SYS.ellipticEIncomplete(${n(e[0])}, ${n(e[1])})`:`_SYS.ellipticE(${n(e[0])})`,EllipticF:(e,n)=>`_SYS.ellipticF(${n(e[0])}, ${n(e[1])})`,EllipticPi:(e,n)=>e.length===3?`_SYS.ellipticPiIncomplete(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.ellipticPiComplete(${n(e[0])}, ${n(e[1])})`,Hypergeometric2F1:(e,n)=>`_SYS.hypergeometric2F1(${n(e[0])}, ${n(e[1])}, ${n(e[2])}, ${n(e[3])})`,Hypergeometric1F1:(e,n)=>`_SYS.hypergeometric1F1(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`,Mandelbrot:([e,n],t)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");return`_SYS.mandelbrot(${t(e)}, ${t(n)})`},Julia:([e,n,t],i)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");return`_SYS.julia(${i(e)}, ${i(n)}, ${i(t)})`},Binomial:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Choose:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Fibonacci:"_SYS.fibonacci",Real:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).re`:n(e[0]),Imaginary:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).im`:"0",Argument:(e,n)=>N.isComplexValued(e[0])?`_SYS.carg(${n(e[0])})`:`(${n(e[0])} >= 0 ? 0 : Math.PI)`,Conjugate:(e,n)=>N.isComplexValued(e[0])?`_SYS.cconj(${n(e[0])})`:n(e[0]),Color:([e],n)=>{if(e===null)throw new Error("Color: no argument");return`_SYS.color(${n(e)})`},ColorToString:(e,n)=>{if(e.length===0)throw new Error("ColorToString: no argument");return e.length>=2?`_SYS.colorToString(${n(e[0])}, ${n(e[1])})`:`_SYS.colorToString(${n(e[0])})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");return e.length>=3?`_SYS.colorMix(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.colorMix(${n(e[0])}, ${n(e[1])})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_SYS.colorContrast(${t(e)}, ${t(n)})`},ContrastingColor:(e,n)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");return e.length>=3?`_SYS.contrastingColor(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.contrastingColor(${n(e[0])})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");return`_SYS.colorToColorspace(${t(e)}, ${t(n)})`},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");return`_SYS.colorFromColorspace(${t(e)}, ${t(n)})`},Colormap:(e,n)=>{if(e.length===0)throw new Error("Colormap: no argument");return e.length>=2?`_SYS.colormap(${n(e[0])}, ${n(e[1])})`:`_SYS.colormap(${n(e[0])})`},Rgb:(e,n)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_SYS.rgb(${e.map(n).join(", ")})`},Hsv:(e,n)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_SYS.hsv(${e.map(n).join(", ")})`},Hsl:(e,n)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_SYS.hsl(${e.map(n).join(", ")})`},Oklab:(e,n)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_SYS.oklab(${e.map(n).join(", ")})`},Oklch:(e,n)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`_SYS.oklch(${e.map(n).join(", ")})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_SYS.asRgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_SYS.asHsv(${n(e)})`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_SYS.asHsl(${n(e)})`},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_SYS.asOklab(${n(e)})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},ColorDelta:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorDelta: need two colors");return`_SYS.colorDelta(${t(e)}, ${t(n)})`},Distance:([e,n],t)=>{if(e===null||n===null)throw new Error("Distance: need two points");return`_SYS.distance(${t(e)}, ${t(n)})`}};function fe(e){return{re:e.re,im:e.im}}function tn(e){if(e!==void 0&&Number.isFinite(e)&&!(Math.abs(e-1)<1e-9))return e}function mn(e){if(typeof e=="string"){let t=Cn(e),i={r:t>>>24&255,g:t>>>16&255,b:t>>>8&255},r=tn((t&255)/255);return r!==void 0&&(i.alpha=r),i}let n=Eo({L:e[0],C:e[1],H:e[2]});if(e.length>=4){let t=tn(e[3]);t!==void 0&&(n.alpha=t)}return n}function rr(e){if(typeof e=="string"){let n=Cn(e),t=n>>>24&255,i=n>>>16&255,r=n>>>8&255,o=qe({r:t,g:i,b:r}),s=tn((n&255)/255);return s!==void 0&&(o.alpha=s),o}return{L:e[0],C:e[1],H:e[2],alpha:e.length>=4?tn(e[3]):void 0}}function Po(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=qe({r:n,g:t,b:i}),o=tn((e&255)/255);return o!==void 0?[r.L,r.C,r.H,o]:[r.L,r.C,r.H]}var Zy={color(e){return Po(Cn(e))},colorToString(e,n){let t=mn(e),i=(n??"hex").toLowerCase();switch(i){case"hex":{let r=Math.round(Math.max(0,Math.min(255,t.r))),o=Math.round(Math.max(0,Math.min(255,t.g))),s=Math.round(Math.max(0,Math.min(255,t.b))),a=`#${r.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;if(t.alpha!==void 0){let u=Math.round(Math.max(0,Math.min(255,t.alpha*255)));a+=u.toString(16).padStart(2,"0")}return a}case"rgb":{let r=Math.round(t.r),o=Math.round(t.g),s=Math.round(t.b);return t.alpha!==void 0?`rgb(${r} ${o} ${s} / ${t.alpha})`:`rgb(${r} ${o} ${s})`}case"hsl":{let r=xo(t.r,t.g,t.b),o=Math.round(r.h*10)/10,s=Math.round(r.s*1e3)/10,a=Math.round(r.l*1e3)/10;return t.alpha!==void 0?`hsl(${o} ${s}% ${a}% / ${t.alpha})`:`hsl(${o} ${s}% ${a}%)`}case"oklch":{let r=qe(t),o=Math.round(r.L*1e3)/1e3,s=Math.round(r.C*1e3)/1e3,a=Math.round(r.H*10)/10;return t.alpha!==void 0?`oklch(${o} ${s} ${a} / ${t.alpha})`:`oklch(${o} ${s} ${a})`}default:throw new Error(`Unknown color format: ${i}`)}},colorMix(e,n,t=.5){let i=rr(e),r=rr(n);t=Math.max(0,Math.min(1,t));let o=i.C<1e-6,s=r.C<1e-6,a;if(o&&s)a=i.H;else if(o)a=r.H;else if(s)a=i.H;else{let p=r.H-i.H;p>180&&(p-=360),p<-180&&(p+=360),a=i.H+p*t,a<0&&(a+=360),a>=360&&(a-=360)}let u=i.L+(r.L-i.L)*t,l=i.C+(r.C-i.C)*t,c=i.alpha??1,f=r.alpha??1,d=tn(c+(f-c)*t);return d!==void 0?[u,l,a,d]:[u,l,a]},colorContrast(e,n){return bo(mn(e),mn(n))},contrastingColor(e,n,t){let i=mn(e);return Po(n!==void 0&&t!==void 0?Ra({bg:i,fg1:mn(n),fg2:mn(t)}):Ra(i))},colorToColorspace(e,n){let t=mn(e),i=t.alpha,r;switch(n.toLowerCase()){case"rgb":r=[t.r/255,t.g/255,t.b/255];break;case"hsl":{let o=xo(t.r,t.g,t.b);r=[o.h,o.s,o.l];break}case"oklch":{let o=qe(t);r=[o.L,o.C,o.H];break}case"oklab":case"lab":{let o=$a(t);r=[o.L,o.a,o.b];break}default:throw new Error(`Unknown color space: ${n}`)}return i!==void 0&&r.push(i),r},colormap(e,n){let i={..._p,...Np,...Tp}[e];if(!i)throw new Error(`Unknown palette: ${e}`);let r=i.map(s=>Po(Cn(s)));if(n===void 0)return r;if(Number.isInteger(n)&&n>=2){let s=n,a=[];for(let u=0;u<s;u++){let l=s===1?0:u/(s-1);a.push(this._interpolatePalette(r,l))}return a}let o=Math.max(0,Math.min(1,n));return this._interpolatePalette(r,o)},_interpolatePalette(e,n){if(e.length===0)return[0,0,0];if(n<=0)return[...e[0]];if(n>=1)return[...e[e.length-1]];let t=n*(e.length-1),i=Math.floor(t),r=t-i;if(r===0||i>=e.length-1)return[...e[Math.min(i,e.length-1)]];let[o,s,a]=e[i],[u,l,c]=e[i+1],f=s<1e-6,d=l<1e-6,p;if(f&&d)p=a;else if(f)p=c;else if(d)p=a;else{let h=c-a;h>180&&(h-=360),h<-180&&(h+=360),p=a+h*r,p<0&&(p+=360),p>=360&&(p-=360)}return[o+(u-o)*r,s+(l-s)*r,p]},colorFromColorspace(e,n){let t=e[0],i=e[1],r=e[2],o=e.length>=4?e[3]:void 0,s;switch(n.toLowerCase()){case"rgb":s=qe({r:t*255,g:i*255,b:r*255});break;case"hsl":{let a=yo(t,i,r);s=qe(a);break}case"oklch":s={L:t,C:i,H:r};break;case"oklab":case"lab":s=Yi({L:t,a:i,b:r});break;default:throw new Error(`Unknown color space: ${n}`)}return o!==void 0?[s.L,s.C,s.H,o]:[s.L,s.C,s.H]},rgb(e,n,t,i){let r=qe({r:e*255,g:n*255,b:t*255}),o=tn(i);return o!==void 0?[r.L,r.C,r.H,o]:[r.L,r.C,r.H]},hsv(e,n,t,i){let r=xp(e,n,t),o=qe(r),s=tn(i);return s!==void 0?[o.L,o.C,o.H,s]:[o.L,o.C,o.H]},hsl(e,n,t,i){let r=yo(e,n,t),o=qe({r:r.r,g:r.g,b:r.b}),s=tn(i);return s!==void 0?[o.L,o.C,o.H,s]:[o.L,o.C,o.H]},oklab(e,n,t,i){let r=Yi({L:e,a:n,b:t}),o=tn(i);return o!==void 0?[r.L,r.C,r.H,o]:[r.L,r.C,r.H]},oklch(e,n,t,i){let r=tn(i);return r!==void 0?[e,n,t,r]:[e,n,t]},asRgb(e){let n=mn(e),t=n.r/255,i=n.g/255,r=n.b/255;return n.alpha!==void 0?[t,i,r,n.alpha]:[t,i,r]},asHsv(e){let n=mn(e),t=Ep(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.v,n.alpha]:[t.h,t.s,t.v]},asHsl(e){let n=mn(e),t=xo(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.l,n.alpha]:[t.h,t.s,t.l]},asOklab(e){let n=rr(e),t=Et({L:n.L,C:n.C,H:n.H});return n.alpha!==void 0?[t.L,t.a,t.b,n.alpha]:[t.L,t.a,t.b]},colorDelta(e,n){let t=Et(rr(e)),i=Et(rr(n));return vp(t,i)},distance(e,n){if(!Array.isArray(e)||!Array.isArray(n))throw new Error("Distance: expected two arrays");if(e.length!==n.length)throw new Error("Distance: dimension mismatch");let t=0;for(let i=0;i<e.length;i++){let r=e[i]-n[i];t+=r*r}return Math.sqrt(t)}};function Do(e,...n){let t=-1;for(let r of n)Array.isArray(r)&&(t=t<0?r.length:Math.min(t,r.length));if(t<0)return e(...n);let i=new Array(t);for(let r=0;r<t;r++)i[r]=Do(e,...n.map(o=>Array.isArray(o)?o[r]:o));return i}function su(e,n){let t=Array.isArray(e?.[0]),i=Array.isArray(n?.[0]);if(!t&&!i){if(e.length!==n.length)return NaN;let u=0;for(let l=0;l<e.length;l++)u+=e[l]*n[l];return u}if(t&&!i)return e.map(u=>u.length===n.length?u.reduce((l,c,f)=>l+c*n[f],0):NaN);if(!t&&i){if(e.length!==n.length)return NaN;let u=n[0].length,l=new Array(u).fill(0);for(let c=0;c<e.length;c++)for(let f=0;f<u;f++)l[f]+=e[c]*n[c][f];return l}let r=e.length,o=e[0].length;if(n.length!==o)return NaN;let s=n[0].length,a=[];for(let u=0;u<r;u++){let l=new Array(s).fill(0);for(let c=0;c<o;c++){let f=e[u][c];for(let d=0;d<s;d++)l[d]+=f*n[c][d]}a.push(l)}return a}function Yy(...e){let n=[],t=1;for(let r of e)Array.isArray(r)?n.push(r):t*=r;if(n.length===0)return t;let i=n[0];for(let r=1;r<n.length;r++){let o=n[r],s=!Array.isArray(i[0]),a=!Array.isArray(o[0]);if(s&&a){if(i.length!==o.length)return NaN;let u=new Array(i.length);for(let l=0;l<i.length;l++)u[l]=i[l]*o[l];i=u}else{let u=su(i,o);if(typeof u=="number")return u;i=u}}return t!==1&&(i=Do(r=>r*t,i)),i}function Qt(e,n,t){let i=Array.isArray(e),r=Array.isArray(n);if(i&&r){if(e.length!==n.length)return!1;for(let u=0;u<e.length;u++)if(Qt(e[u],n[u],t)!==!0)return!1;return!0}if(i)return e.map(u=>Qt(u,n,t));if(r)return n.map(u=>Qt(e,u,t));let o=u=>typeof u=="object"&&u!==null&&"re"in u?u:{re:u,im:0},s=o(e),a=o(n);return Math.hypot(s.re-a.re,s.im-a.im)<=t}function iu(e,n,t){let i=Array.isArray(e),r=Array.isArray(n);return i&&r?Qt(e,n,t)!==!0:i?e.map(o=>iu(o,n,t)):r?n.map(o=>iu(e,o,t)):Qt(e,n,t)!==!0}function Pm(e){let n=e?.length;if(!n||e.some(i=>!Array.isArray(i)||i.length!==n))return NaN;let t=e.map((i,r)=>[...i,...Array.from({length:n},(o,s)=>r===s?1:0)]);for(let i=0;i<n;i++){let r=i;for(let s=i+1;s<n;s++)Math.abs(t[s][i])>Math.abs(t[r][i])&&(r=s);if(t[r][i]===0)return NaN;r!==i&&([t[i],t[r]]=[t[r],t[i]]);let o=t[i][i];for(let s=0;s<2*n;s++)t[i][s]/=o;for(let s=0;s<n;s++){if(s===i)continue;let a=t[s][i];if(a!==0)for(let u=0;u<2*n;u++)t[s][u]-=a*t[i][u]}}return t.map(i=>i.slice(n))}function Wy(e){let n=t=>t&&typeof t=="object"&&"im"in t?{re:t.re,im:-t.im}:t;return Array.isArray(e)?Array.isArray(e[0])?e[0].map((t,i)=>e.map(r=>n(r[i]))):e.map(n):e}function Xy(e){if(!Array.isArray(e))return NaN;if(Array.isArray(e[0])){let t=Math.min(e.length,e[0].length),i=[];for(let r=0;r<t;r++)i.push(e[r][r]);return i}let n=e.length;return Array.from({length:n},(t,i)=>Array.from({length:n},(r,o)=>i===o?e[i]:0))}function Ky(e,n){if(!Array.isArray(e)||!Array.isArray(e[0]))return NaN;let t=e.length;if(e.some(s=>!Array.isArray(s)||s.length!==t))return NaN;if(!Number.isInteger(n))return NaN;let i=e.map(s=>s.slice()),r=n;if(r<0){let s=Pm(e);if(!Array.isArray(s))return NaN;i=s,r=-r}let o=Array.from({length:t},(s,a)=>Array.from({length:t},(u,l)=>a===l?1:0));for(let s=0;s<r;s++)o=su(o,i);return o}function Qy(e){if(!Array.isArray(e)||!Array.isArray(e[0]))return NaN;let n=e.length,t=e[0].length,i=e.map(o=>o.slice()),r=0;for(let o=0;o<t&&r<n;o++){let s=r;for(let u=r+1;u<n;u++)Math.abs(i[u][o])>Math.abs(i[s][o])&&(s=u);if(i[s][o]===0)continue;s!==r&&([i[s],i[r]]=[i[r],i[s]]);let a=i[r][o];for(let u=0;u<t;u++)i[r][u]/=a;for(let u=0;u<n;u++){if(u===r)continue;let l=i[u][o];if(l!==0)for(let c=0;c<t;c++)i[u][c]-=l*i[r][c]}r++}return i}var Dm={bcast:Do,add:(e,n)=>Do((t,i)=>t+i,e,n),chop:ci,factorial:ui,factorial2:li,gamma:ue,gcd:ds,pow:(e,n)=>e===0&&n===0?NaN:Math.pow(e,n),cond:e=>{if(e===!0||e===!1)return e;throw new Error('Condition must evaluate to "True" or "False".')},heaviside:e=>e<0?0:e===0?.5:1,shuffle:(e,n)=>{let t=n===void 0?Math.random:pa(n>>>0),i=e.slice();for(let r=i.length-1;r>0;r--){let o=Math.floor(t()*(r+1));[i[r],i[o]]=[i[o],i[r]]}return i},matmul:su,mul:Yy,eq:Qt,neq:iu,cross:(e,n)=>e.length===3&&n.length===3?[e[1]*n[2]-e[2]*n[1],e[2]*n[0]-e[0]*n[2],e[0]*n[1]-e[1]*n[0]]:NaN,norm:(e,n)=>{if(typeof e=="number")return Math.abs(e);if(!Array.isArray(e))return NaN;if(Array.isArray(e[0])&&n!==void 0){let r=e;if(n===1){let o=0;for(let s=0;s<r[0].length;s++){let a=0;for(let u=0;u<r.length;u++)a+=Math.abs(r[u][s]);o=Math.max(o,a)}return o}if(n===1/0){let o=0;for(let s of r){let a=0;for(let u of s)a+=Math.abs(u);o=Math.max(o,a)}return o}return NaN}let t=e.flat(1/0);if(n===1/0){let r=0;for(let o of t)r=Math.max(r,Math.abs(o));return r}if(n===void 0||n===2){let r=0;for(let o of t)r+=o*o;return Math.sqrt(r)}let i=0;for(let r of t)i+=Math.pow(Math.abs(r),n);return Math.pow(i,1/n)},transpose:e=>!Array.isArray(e)||!Array.isArray(e[0])?e:e[0].map((n,t)=>e.map(i=>i[t])),det:e=>{let n=e?.length;if(!n||e.some(r=>!Array.isArray(r)||r.length!==n))return NaN;let t=e.map(r=>r.slice()),i=1;for(let r=0;r<n;r++){let o=r;for(let s=r+1;s<n;s++)Math.abs(t[s][r])>Math.abs(t[o][r])&&(o=s);if(t[o][r]===0)return 0;o!==r&&([t[r],t[o]]=[t[o],t[r]],i=-i),i*=t[r][r];for(let s=r+1;s<n;s++){let a=t[s][r]/t[r][r];for(let u=r;u<n;u++)t[s][u]-=a*t[r][u]}}return i},inv:Pm,conjTranspose:Wy,diagonal:Xy,matpow:Ky,rref:Qy,trace:e=>{if(!Array.isArray(e)||!Array.isArray(e[0]))return NaN;let n=0;for(let t=0;t<Math.min(e.length,e[0].length);t++){if(typeof e[t][t]!="number")return NaN;n+=e[t][t]}return n},shape:e=>{let n=[],t=e;for(;Array.isArray(t);)n.push(t.length),t=t[0];return n},reshape:(e,n)=>{let t=e.flat(1/0);if(t.length===0)return NaN;let i=r=>t[r%t.length];return n.length===1?Array.from({length:Math.max(0,n[0])},(r,o)=>i(o)):n.length===2?Array.from({length:Math.max(0,n[0])},(r,o)=>Array.from({length:Math.max(0,n[1])},(s,a)=>i(o*n[1]+a))):NaN},at:(e,n)=>{if(!Array.isArray(e))return NaN;let t=e.length,i=n>0?n-1:t+n;return n===0||i<0||i>=t?NaN:e[i]},integrate:(e,n,t)=>{let i=ir(e,n,t);return i.converged?i.estimate:Wa(e,n,t,1e7).estimate},integrateMC:(e,n,t)=>Wa(e,n,t,1e7).estimate,lcm:sc,lngamma:we,limit:Er,mean:fm,median:nr,variance:Ha,populationVariance:Za,standardDeviation:dm,populationStandardDeviation:pm,kurtosis:mm,skewness:hm,mode:gm,quartiles:Ya,interquartileRange:vm,covariance:ym,populationCovariance:xm,correlation:Em,erf:Tt,erfc:Nt,erfInv:Pp,beta:Fp,gammaQ:$p,betaRegularized:Rp,digamma:Mo,trigamma:ko,polygamma:Dp,zeta:Da,lambertW:Bp,besselJ:jn,besselY:So,besselI:vt,besselK:Vp,airyAi:Up,airyBi:Hp,airyAiPrime:Wp,airyBiPrime:Xp,sinc:rm,fresnelS:Un,fresnelC:Hn,sinIntegral:am,cosIntegral:um,expIntegralEi:Oa,logIntegral:lm,erfi:om,agm:Ba,ellipticK:La,ellipticE:Va,ellipticEIncomplete:Ja,ellipticF:qa,ellipticPiComplete:za,ellipticPiIncomplete:ja,hypergeometric2F1:Ga,hypergeometric1F1:Ua,mandelbrot:(e,n)=>{let t=0,i=0,r=typeof e=="number"?e:e.re,o=typeof e=="number"?0:e.im,s=Math.round(n);for(let a=0;a<s;a++){let u=t*t-i*i+r;i=2*t*i+o,t=u;let l=t*t+i*i;if(l>4){let c=(a-Math.log2(Math.log2(l))+4)/s;return Math.max(0,Math.min(1,c))}}return 1},julia:(e,n,t)=>{let i=typeof e=="number"?e:e.re,r=typeof e=="number"?0:e.im,o=typeof n=="number"?n:n.re,s=typeof n=="number"?0:n.im,a=Math.round(t);for(let u=0;u<a;u++){let l=i*i-r*r+o;r=2*i*r+s,i=l;let c=i*i+r*r;if(c>4){let f=(u-Math.log2(Math.log2(c))+4)/a;return Math.max(0,Math.min(1,f))}}return 1},binomial:er,fibonacci:ou,csin:e=>fe(new V(e.re,e.im).sin()),ccos:e=>fe(new V(e.re,e.im).cos()),ctan:e=>fe(new V(e.re,e.im).tan()),casin:e=>fe(new V(e.re,e.im).asin()),cacos:e=>fe(new V(e.re,e.im).acos()),catan:e=>fe(new V(e.re,e.im).atan()),csinh:e=>fe(new V(e.re,e.im).sinh()),ccosh:e=>fe(new V(e.re,e.im).cosh()),ctanh:e=>fe(new V(e.re,e.im).tanh()),csqrt:e=>fe(new V(e.re,e.im).sqrt()),cexp:e=>fe(new V(e.re,e.im).exp()),cln:e=>fe(new V(e.re,e.im).log()),cpow:(e,n)=>{let t=typeof e=="number"?new V(e,0):new V(e.re,e.im),i=typeof n=="number"?new V(n,0):new V(n.re,n.im);return fe(t.pow(i))},ccot:e=>fe(new V(e.re,e.im).cot()),csec:e=>fe(new V(e.re,e.im).sec()),ccsc:e=>fe(new V(e.re,e.im).csc()),ccoth:e=>fe(new V(e.re,e.im).coth()),csech:e=>fe(new V(e.re,e.im).sech()),ccsch:e=>fe(new V(e.re,e.im).csch()),cacot:e=>fe(new V(e.re,e.im).acot()),casec:e=>fe(new V(e.re,e.im).asec()),cacsc:e=>fe(new V(e.re,e.im).acsc()),cacoth:e=>fe(new V(e.re,e.im).acoth()),casech:e=>fe(new V(e.re,e.im).asech()),cacsch:e=>fe(new V(e.re,e.im).acsch()),cabs:e=>new V(e.re,e.im).abs(),carg:e=>new V(e.re,e.im).arg(),cconj:e=>fe(new V(e.re,e.im).conjugate()),cneg:e=>({re:-e.re,im:-e.im}),...Zy},ru=class extends Function{SYS=Dm;constructor(n,t=""){return super("_SYS","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,o)=>super.apply(r,[this.SYS,...o]),get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}},Fo=class extends Function{SYS=Dm;constructor(n,t,i=""){return super("_SYS",...t,i?`${i}return ${n}`:`return ${n}`),new Proxy(this,{apply:(r,o,s)=>super.apply(o,[this.SYS,...s]),get:(r,o)=>o==="toString"?()=>i?`(${t.join(", ")}) => { ${i}return ${n}; }`:`(${t.join(", ")}) => ${n}`:o==="isCompiled"?!0:Reflect.get(r,o)})}},Oo=class{getOperators(){return Qa}getFunctions(){return nu}createTarget(n={}){return{language:"javascript",operators:t=>Qa[t],functions:t=>nu[t],var:t=>({Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"})[t],string:t=>JSON.stringify(t),number:t=>t.toString(),complex:(t,i)=>`({ re: ${t}, im: ${i} })`,bindExpr:(t,i)=>`((${t.map(r=>r[0]).join(", ")}) => ${i})(${t.map(r=>r[1]).join(", ")})`,assertBoolean:t=>`_SYS.cond(${t})`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){try{return this.compileOrThrow(n,t)}catch(i){if(t.fallback!==!0)throw i;let r=i.message;return console.warn(`Compilation fallback for "${n.operator}" (target: javascript): ${r}`),N.buildInterpreterFallback(n,r,"javascript",this.createTarget(),t.vars?new Set(Object.keys(t.vars)):void 0)}}compileOrThrow(n,t={}){n=fn(n);let{operators:i,functions:r,vars:o,imports:s=[],preamble:a,realOnly:u,iterationBudget:l,quadrature:c}=t,f=n.unknowns,d=s.map(v=>{if(typeof v=="function")return v.toString();throw new Error(`Unsupported import \`${v}\``)}).join(`
55
+ `}static STRUCTURAL_HEADS=new Set(["Sequence","Sum","Product","Function","Declare","Assign","Return","Break","Continue","Loop","Comprehension","If","Which","When","Match","Block","Limits","Element"]);static analyzeReferences(n,t,i){let r=n.engine,o=new Set,s=new Set,a=new Set,u=new Set,l=(f,d)=>{let p=new Set(f);for(let h of d)p.add(h);return p},c=(f,d)=>{if(S(f)){let v=f.symbol;if(d.has(v)||t.operators?.(v)!==void 0)return;if(i?.has(v)){o.add(v);return}if(t.userFunctions!==void 0){let _=e.userFunctionLiteral(r,v);if(_!==void 0){if(!u.has(v)){u.add(v);let A=_.ops.slice(1).map(k=>he(k)).filter(k=>k!=="");c(_.ops[0],A.length?l(d,A):d)}return}}let T=r._getSymbolValue(v);if(T!==void 0){a.has(v)||(a.add(v),c(T,d));return}o.add(v);return}if(!g(f))return;let p=f.operator,h=f.ops,b=t.userFunctions!==void 0&&!e.STRUCTURAL_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0?e.userFunctionLiteral(r,p):void 0,y=!1;if(!e.CONTROL_FLOW_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0&&b===void 0){let v=r.lookupDefinition(p);if(je(v)&&typeof v.operator.compile=="function")try{let T=v.operator.compile(h,_=>e.compileValueOperand(_,t),{language:t.language??"javascript"});y=T!=null&&T!==""}catch{y=!1}}if(p!=="Error"&&!e.STRUCTURAL_HEADS.has(p)&&t.functions?.(p)===void 0&&t.operators?.(p)===void 0&&b===void 0&&!y&&s.add(p),b!==void 0){if(!u.has(p)){u.add(p);let v=b.ops.slice(1).map(T=>he(T)).filter(T=>T!=="");c(b.ops[0],v.length?l(d,v):d)}for(let v of h)c(v,d);return}if(p==="Function"){let v=h.slice(1).map(T=>he(T)).filter(T=>T!=="");c(h[0],v.length?l(d,v):d);return}if(p==="Sum"||p==="Product"||p==="Integrate"||p==="Loop"||p==="Comprehension"){let v=[],T=[];for(let _ of h.slice(1))if(g(_)){S(_.ops[0])&&v.push(_.ops[0].symbol);for(let A of _.ops.slice(1))T.push(A)}else T.push(_);c(h[0],v.length?l(d,v):d);for(let _ of T)c(_,d);return}if(p==="Block"){let v=[];for(let _ of h)g(_,"Declare")&&S(_.ops[0])&&v.push(_.ops[0].symbol);let T=v.length?l(d,v):d;for(let _ of h)c(_,T);return}if(p==="Match"){h[0]!==void 0&&c(h[0],d);for(let v of h.slice(1)){if(!g(v,"MatchCase")||v.ops.length<2)continue;let T=v.ops,_=T[0],A=T.length>=3?T[1]:void 0,k=T[T.length-1],{captures:O,pinExprs:j}=Xd(_),G=O.length?l(d,O):d;A!==void 0&&c(A,G),c(k,G);for(let re of j)c(re,d)}return}for(let v of h)c(v,d)};return c(n,new Set),{freeSymbols:[...o],unsupported:[...s]}}static withReferences(n,t,i,r){return Object.assign(n,e.analyzeReferences(t,i,r))}static buildInterpreterFallback(n,t,i,r,o){let s=n.engine,a=c=>c.isCollection?[...c.each()].map(a):c.re,u={freeSymbols:[],unsupported:[]};try{r&&(u=e.analyzeReferences(n,r,o))}catch{}return g(n,"Function")?{target:i,success:!1,code:"",calling:"lambda",run:((...f)=>s.function("Apply",[n,...f.map(d=>s.expr(d))]).evaluate().re),error:t,...u}:{target:i,success:!1,code:"",calling:"expression",run:(c=>{s.pushScope();try{if(c&&typeof c=="object")for(let[f,d]of Object.entries(c))s.declare(f,"number"),s.assign(f,d);return a(n.evaluate())}finally{s.popScope()}}),error:t,...u}}static withBoundNames(n,t){let i=t.filter(o=>o!==""&&o!==void 0);if(i.length===0)return n.boundVars;let r=new Set(n.boundVars);for(let o of i)r.add(o);return r}static tempVar(){return`_${Math.random().toString(36).substring(4)}`}static inlineExpression(n,t){if(/^[\p{L}_][\p{L}\p{N}_]*$/u.test(t)||/^[0-9]+$/.test(t))return new Function("x",`return \`${n}\`;`)(t);{let r=e.tempVar();return new Function("x",`return \`(() => { const ${r} = \${x}; return ${n.replace(/\\\${x}/g,r)}; })()\`;`)(t)}}};var O1=new Set(["Sin","Cos","Tan","Cot","Sec","Csc","Haversine"]),B1=new Set(["Arcsin","Arccos","Arctan","Arctan2","Arccot","Arcsec","Arccsc","InverseHaversine"]);function fn(e){let n=e.engine,t=n.angularUnit;if(t==="rad")return e;let i=t==="deg"?Math.PI/180:t==="grad"?Math.PI/200:2*Math.PI,r=o=>{if(!g(o))return o;let s=!1,a=o.ops.map(l=>{let c=r(l);return c!==l&&(s=!0),c}),u=o.operator;if(O1.has(u)&&a.length===1)return n.function(u,[n.function("Multiply",[n.number(i),a[0]])]);if(B1.has(u)&&a.length>=1){let l=s?n.function(u,a):o;return n.function("Multiply",[n.number(1/i),l])}return s?n.function(u,a):o};return r(e)}function Hi(e){return typeof e=="object"&&e!==null}function Kd(e){return typeof e=="number"&&Number.isFinite(e)}function L1(e){if(!Hi(e))throw new Error("Invalid compile target: expected an object");if(typeof e.var!="function")throw new Error('Invalid compile target: missing required method "var()"');if(typeof e.string!="function")throw new Error('Invalid compile target: missing required method "string()"');if(typeof e.number!="function")throw new Error('Invalid compile target: missing required method "number()"');if(typeof e.ws!="function")throw new Error('Invalid compile target: missing required method "ws()"');if(typeof e.preamble!="string")throw new Error('Invalid compile target: "preamble" must be a string');if(!Kd(e.indent))throw new Error('Invalid compile target: "indent" must be a finite number');if(e.operators!==void 0&&typeof e.operators!="function")throw new Error('Invalid compile target: "operators" must be a function');if(e.functions!==void 0&&typeof e.functions!="function")throw new Error('Invalid compile target: "functions" must be a function');if(e.language!==void 0&&typeof e.language!="string")throw new Error('Invalid compile target: "language" must be a string')}function V1(e,n){if(n!==void 0&&(!Array.isArray(n)||n.length!==2||typeof n[0]!="string"||!Kd(n[1])))throw new Error(`Invalid compilation option "operators.${e}": expected [string, number]`)}function q1(e){if(e!==void 0&&typeof e!="function"){if(!Hi(e)||Array.isArray(e))throw new Error('Invalid compilation option "operators": expected a function or a record');for(let[n,t]of Object.entries(e))V1(n,t)}}function J1(e){if(e!==void 0){if(!Hi(e)||Array.isArray(e))throw new Error('Invalid compilation option "functions": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string"&&typeof t!="function")throw new Error(`Invalid compilation option "functions.${n}": expected a string or function`)}}function z1(e){if(e!==void 0){if(!Hi(e)||Array.isArray(e))throw new Error('Invalid compilation option "vars": expected a record');for(let[n,t]of Object.entries(e))if(typeof t!="string")throw new Error(`Invalid compilation option "vars.${n}": expected a string`)}}function j1(e){if(e!==void 0&&!Array.isArray(e))throw new Error('Invalid compilation option "imports": expected an array')}function Qd(e){if(e!==void 0){if(!Hi(e)||Array.isArray(e))throw new Error("Invalid compilation options: expected an object");if(e.to!==void 0&&typeof e.to!="string")throw new Error('Invalid compilation option "to": expected a string');if(e.target!==void 0&&L1(e.target),q1(e.operators),J1(e.functions),z1(e.vars),j1(e.imports),e.preamble!==void 0&&typeof e.preamble!="string")throw new Error('Invalid compilation option "preamble": expected a string');if(e.fallback!==void 0&&typeof e.fallback!="boolean")throw new Error('Invalid compilation option "fallback": expected a boolean');if(e.iterationBudget!==void 0&&(typeof e.iterationBudget!="number"||!(e.iterationBudget>0)))throw new Error('Invalid compilation option "iterationBudget": expected a positive number');if(e.quadrature!==void 0&&e.quadrature!=="adaptive"&&e.quadrature!=="monte-carlo")throw new Error('Invalid compilation option "quadrature": expected "adaptive" or "monte-carlo"')}}function ep(e,n){Qd(n);try{if(n?.target){let r=N.compile(fn(e),n.target);return N.withReferences({target:n.target.language??"custom",success:!0,code:r},e,n.target,n.vars?new Set(Object.keys(n.vars)):void 0)}let t=n?.to??"javascript",i=e.engine.getCompilationTarget(t);if(!i)throw new Error(`Compilation target "${t}" is not registered. Available targets: ${e.engine.listCompilationTargets().join(", ")}`);return i.compile(e,{operators:n?.operators,functions:n?.functions,vars:n?.vars,imports:n?.imports,preamble:n?.preamble,realOnly:n?.realOnly,iterationBudget:n?.iterationBudget,quadrature:n?.quadrature})}catch(t){if(n?.fallback??!0){let i=t.message;console.warn(`Compilation fallback for "${e.operator}" (target: ${n?.to??"javascript"}): ${i}`);let r=n?.to??"javascript";if(r==="interval-js"){let s=e.engine.getCompilationTarget("interval-js");if(s)return s.compile(e,{vars:n?.vars,fallback:!0})}let o=n?.target??e.engine.getCompilationTarget(r)?.createTarget();return N.buildInterpreterFallback(e,i,r,o,n?.vars?new Set(Object.keys(n.vars)):void 0)}throw t}}function ge(e){if(!Number.isFinite(e))throw new Error(`Cannot compile the non-finite value \`${e}\` to a GPU shader: GLSL/WGSL have no infinity or NaN literals.`);let n=e.toString();return!n.includes(".")&&!n.includes("e")&&!n.includes("E")?`${n}.0`:n}function se(e){if(!F(e)||e.im!==0)return;let n=e.re;if(isFinite(n))return n}var G1=/^-?\d+(\.\d+)?$/;function zn(e,n,t){let i=t==="+"?0:1,r=null,o=[];for(let s of e)if(G1.test(s)){let a=parseFloat(s);if(t==="*"&&a===0)return"0.0";r===null?r=a:r=t==="+"?r+a:r*a}else o.push(s);return r!==null&&r!==i&&o.unshift(ge(r)),o.length===0?r!==null?ge(r):n:o.length===1?o[0]:o.join(t==="+"?" + ":" * ")}function fo(e,n){return g(e,"Add")||g(e,"Subtract")?`(${n})`:n}function np(e,n){if(S(e,"ImaginaryUnit"))return{re:null,im:"1.0"};if(F(e)&&e.im!==0){let t=e.re,i=e.im;return{re:t!==0?ge(t):null,im:ge(i)}}if(g(e,"Multiply")){let t=e.ops,i=t.findIndex(r=>S(r,"ImaginaryUnit")||F(r)&&r.re===0&&r.im!==0);if(i>=0){let r=t[i],o=S(r,"ImaginaryUnit")?1:r.im,s=t.filter((l,c)=>c!==i);if(s.length===0)return{re:null,im:ge(o)};let a=s.map(l=>fo(l,n(l)));return o!==1&&a.unshift(ge(o)),{re:null,im:zn(a,"1.0","*")}}}return N.isComplexValued(e)?null:{re:n(e),im:null}}function Ia(e){let n=Math.abs(e);return n<=.0031308?12.92*e:(Math.sign(e)||1)*(1.055*Math.pow(n,1/2.4)-.055)}function Sa(e){let n=Math.abs(e);return n<=.04045?e/12.92:(Math.sign(e)||1)*Math.pow((n+.055)/1.055,2.4)}function yo(e,n,t){e=e/360;let i,r,o;if(n===0)i=r=o=t;else{let s=(l,c,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<.16666666666666666?l+(c-l)*6*f:f<.5?c:f<.6666666666666666?l+(c-l)*(.6666666666666666-f)*6:l),a=t<.5?t*(1+n):t+n-t*n,u=2*t-a;i=s(u,a,e+1/3),r=s(u,a,e),o=s(u,a,e-1/3)}return{r:Math.round(i*255),g:Math.round(r*255),b:Math.round(o*255)}}function xo(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),o=(i+r)/2;if(i===r)return{h:0,s:0,l:o};let s=i-r,a=o>.5?s/(2-i-r):s/(i+r),u;return i===e?u=((n-t)/s+(n<t?6:0))/6:i===n?u=((t-e)/s+2)/6:u=((e-n)/s+4)/6,{h:u*360,s:a,l:o}}function xp(e,n,t){e=(e%360+360)%360,n=Math.max(0,Math.min(1,n)),t=Math.max(0,Math.min(1,t));let i=t*n,r=i*(1-Math.abs(e/60%2-1)),o=t-i,s=0,a=0,u=0;return e<60?[s,a,u]=[i,r,0]:e<120?[s,a,u]=[r,i,0]:e<180?[s,a,u]=[0,i,r]:e<240?[s,a,u]=[0,r,i]:e<300?[s,a,u]=[r,0,i]:[s,a,u]=[i,0,r],{r:(s+o)*255,g:(a+o)*255,b:(u+o)*255}}function Ep(e,n,t){e/=255,n/=255,t/=255;let i=Math.max(e,n,t),r=Math.min(e,n,t),o=i-r,s=0;o>0&&(i===e?s=(n-t)/o%6:i===n?s=(t-e)/o+2:s=(e-n)/o+4,s*=60,s<0&&(s+=360));let a=i===0?0:o/i;return{h:s,s:a,v:i}}function U1(e){let n=e.startsWith("#")?e.substring(1):e,t,i,r,o;if(n.length===3)t=parseInt(n[0]+n[0],16),i=parseInt(n[1]+n[1],16),r=parseInt(n[2]+n[2],16);else if(n.length===6)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16);else if(n.length===8)t=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),r=parseInt(n.substring(4,6),16),o=parseInt(n.substring(6,8),16)/255;else return{r:0,g:0,b:0};let s={r:t,g:i,b:r};return o!==void 0&&(s.alpha=o),s}function ho(e){return typeof e=="number"?{r:e>>>24&255,g:e>>>16&255,b:e>>>8&255,alpha:(e&255)/255}:typeof e=="string"?U1(e):"C"in e?Eo(e):"a"in e&&"b"in e?Ca(e):e}function tp(e){let n=ho(e),t=n.alpha!==void 0?pn(n.alpha*255):255;return(pn(n.r)<<24|pn(n.g)<<16|pn(n.b)<<8|t)>>>0}function pn(e){return e<0?0:e>255?255:Math.round(e)}function Et(e){let[n,t,i]=[e.L,e.C,e.H],r=i*Math.PI/180,o={L:n,a:t*Math.cos(r),b:t*Math.sin(r)};return e.alpha!==void 0&&(o.alpha=e.alpha),o}function Yi(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.sqrt(t*t+i*i),s=Math.atan2(i,t)*180/Math.PI,a={L:n,C:r,H:s};return e.alpha!==void 0&&(a.alpha=e.alpha),a}function mo(e){let[n,t,i]=[e.L,e.a,e.b],r=Math.pow(.9999999984505198*n+.39633779217376786*t+.2158037580607588*i,3),o=Math.pow(1.00000000888176*n-.10556134232365635*t-.0638541747717059*i,3),s=Math.pow(n*1.000000054672411-.0894841820949657*t-1.2914855378640917*i,3),a=4.076741661347994*r-3.307711590408193*o+.230969928729428*s,u=-1.2684380040921763*r+2.6097574006633715*o-.3413193963102197*s,l=-.004196086541837188*r-.7034186144594493*o+1.7076147009309444*s;return[Ia(a),Ia(u),Ia(l)]}function wa(e){let[n,t,i]=e;return n>=0&&n<=1&&t>=0&&t<=1&&i>=0&&i<=1}function Ma(e,n){let[t,i,r]=e;return t=pn(t*255),i=pn(i*255),r=pn(r*255),n!==void 0?{r:t,g:i,b:r,alpha:n}:{r:t,g:i,b:r}}function Ca(e){let[n,t,i]=mo(e);if(wa([n,t,i]))return Ma([n,t,i],e.alpha);let r=Yi(e);if(r.C=0,[n,t,i]=mo(Et(r)),!wa([n,t,i]))return Ma([n,t,i],e.alpha);let o=0,s=e.L,a=(o+s)/2;r.C=a;let u=.36/Math.pow(2,12);for(;s-o>u;)a=(o+s)/2,r.C=a,[n,t,i]=mo(Et(r)),wa([n,t,i])?o=a:s=a;return Ma([n,t,i],e.alpha)}function Eo(e){return Ca(Et(e))}function $a(e){let[n,t,i]=[e.r,e.g,e.b],r=Sa(n/255),o=Sa(t/255),s=Sa(i/255),a=.41222147079999993*r+.5363325363*o+.0514459929*s,u=.2119034981999999*r+.6806995450999999*o+.1073969566*s,l=.08830246189999998*r+.2817188376*o+.6299787005000002*s,c=Math.cbrt(a),f=Math.cbrt(u),d=Math.cbrt(l),p={L:.2104542553*c+.793617785*f-.0040720468*d,a:1.9779984951*c-2.428592205*f+.4505937099*d,b:.0259040371*c+.7827717662*f-.808675766*d};return e.alpha!==void 0&&(p.alpha=e.alpha),p}function qe(e){return Yi($a(e))}function ka(e,n){let t=n*Math.PI/180,i=0,r=1.5;for(let o=0;o<32;o++){let s=(i+r)/2,[a,u,l]=mo({L:e,a:s*Math.cos(t),b:s*Math.sin(t)});a>=0&&a<=1&&u>=0&&u<=1&&l>=0&&l<=1?i=s:r=s}return i}function Ut(e,n,t){let i=e/100;if(i<=0)return 255;let r=Eo({L:i,C:n,H:t});return(pn(r.r)<<24|pn(r.g)<<16|pn(r.b)<<8|255)>>>0}function H1(e){let{l:n,c:t,h:i}=go(e);return Ut(n+2.8,t+.002,i+.46)}function go(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=qe({r:n,g:t,b:i});return{l:r.L*100,c:r.C,h:r.H<0?r.H+360:r.H}}function Aa(e,n,t){let{l:i,c:r,h:o}=go(e),{l:s,c:a,h:u}=go(n),l=i+(s-i)*t,c=r+(a-r)*t,f=u-o;f>180&&(f-=360),f<-180&&(f+=360);let d=o+f*t,p=e&255,h=n&255,b=Math.round(p+(h-p)*t);return Ut(l,c,d<0?d+360:d>360?d-360:d)&4294967040|b}function Z1(e,n=.1){let a=.45,u=0;for(let h=.45;h>=.35;h-=.01){let b=ka(h,e);if(b>=.15){a=h,u=.15;break}else b>u&&(a=h,u=b)}if(u<.15*.8)for(let h=.45+.01;h<=.5;h+=.01){let b=ka(h,e);if(b>=.15||b>u*1.2){a=h,u=Math.min(.15,b);break}}let l=.96,c=.02,f=ka(.96,e);f<.02&&(c=f*(1-n)),c=Math.max(.015,Math.min(.02,c));let d=Ut(a*100,u,e),p=Ut(l*100,c,e);return{darkest:d,lightest:p}}function Y1(e,n){let t=Math.max(0,Math.min(1e3,n)),i,r,o;if(typeof e=="object")i=e.darkest,o=e.lightest,r=e.mid??0;else{r=e;let{h:u}=go(r),l=r&255,{darkest:c,lightest:f}=Z1(u);i=c&4294967040|l,o=f&4294967040|l}if(!r&&typeof e=="object"&&!e.mid&&(r=Aa(i,o,.5)),t<=500){let u=t/500,l=u*u*(3-2*u);return Aa(o,r,l)}let s=(t-500)/500,a=s*s*(3-2*s);return Aa(r,i,a)}var W1=[{id:"pink",name:"Pink",colors:{mid:{lightness:69,chroma:.202,hue:7.4}}},{id:"red",name:"Red",colors:{lightest:{lightness:95,chroma:.2,hue:30},mid:{lightness:62,chroma:.25,hue:30},darkest:{lightness:36,chroma:.16,hue:25}}},{id:"brown",name:"Brown",colors:{lightest:{lightness:94.5,chroma:.021,hue:72.1},mid:{lightness:59,chroma:.2,hue:73},darkest:{lightness:20,chroma:.061,hue:72.7}}},{id:"orange",name:"Orange",colors:{lightest:{lightness:95,chroma:.06,hue:82},mid:{lightness:73,chroma:.21,hue:56},darkest:{lightness:46,chroma:.2,hue:35}}},{id:"yellow",name:"Yellow",colors:{lightest:{lightness:97,chroma:.02,hue:106},mid:{lightness:89,chroma:.21,hue:99},darkest:{lightness:67,chroma:.43,hue:59}}},{id:"lime",name:"Lime",colors:{mid:{lightness:65,chroma:.192,hue:134.3}}},{id:"green",name:"Green",colors:{mid:{lightness:64,chroma:.21,hue:144}}},{id:"teal",name:"Teal",colors:{mid:{lightness:65,chroma:.116,hue:192.6}}},{id:"cyan",name:"Cyan",colors:{lightest:{lightness:97,chroma:.11,hue:195},mid:{lightness:61,chroma:.11,hue:210},darkest:{lightness:42,chroma:.11,hue:210}}},{id:"blue",name:"Blue",colors:{lightest:{lightness:91,chroma:.22,hue:240},mid:{lightness:63,chroma:.22,hue:255},darkest:{lightness:38,chroma:.22,hue:252}}},{id:"indigo",name:"Indigo",colors:{lightest:{lightness:92.7,chroma:.036,hue:291},mid:{lightness:67,chroma:.285,hue:296},darkest:{lightness:28,chroma:.23,hue:278}}},{id:"purple",name:"Purple",colors:{mid:{lightness:67,chroma:.21,hue:299}}}];function Gt({lightness:e,chroma:n,hue:t}){return Ut(e,n,t)}function X1(e){let{mid:n,lightest:t,darkest:i}=e.colors;if(t&&i&&n)return{lightest:Gt(t),mid:Gt(n),darkest:Gt(i)};if(t&&i)return{lightest:Gt(t),darkest:Gt(i)};if(n)return Gt(n);throw new Error(`Color scale preset "${e.id}" is missing required anchors.`)}var po=null;function K1(){if(!po){po=Object.create(null);for(let e of W1)po[e.id]=X1(e)}return po}var ip={red:"#d7170b",orange:"#fe8a2b",yellow:"#ffc02b",lime:"#63b215",green:"#21ba3a",teal:"#17cfcf",cyan:"#13a7ec",blue:"#0d80f2",indigo:"#63c",purple:"#a219e6",magenta:"#eb4799",brown:"#8c564b",olive:"#8a8f2a",midnight:"#2c4670",sky:"#d2dce9",black:"#000",white:"#ffffff",carbon:"#111111",charcoal:"#333333",slate:"#555555","dark-grey":"#666",graphite:"#777777",stone:"#999999",grey:"#A6A6A6","light-grey":"#d4d5d2",ash:"#E6E6E6",mist:"#F3F3F3",snow:"#FFFFFF"};function Cn(e,n){let t=e.trim().toLowerCase(),i=t.match(/^(.+?)\s*\/\s*(\d+(?:\.\d+)?)%?\s*$/);if(i){let l=Cn(i[1].trim(),n),c=Math.max(0,Math.min(100,parseFloat(i[2]))),f=Math.round(c/100*255);return l&4294967040|f}if(t.startsWith("#")){let l=t.substring(1),c,f,d,p=255;if(l.length===3)c=parseInt(l[0]+l[0],16),f=parseInt(l[1]+l[1],16),d=parseInt(l[2]+l[2],16);else if(l.length===6)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),d=parseInt(l.substring(4,6),16);else if(l.length===8)c=parseInt(l.substring(0,2),16),f=parseInt(l.substring(2,4),16),d=parseInt(l.substring(4,6),16),p=parseInt(l.substring(6,8),16);else return 0;return(c<<24|f<<16|d<<8|p)>>>0}let r=t.match(/^rgba?\s*\(\s*([^)]+)\s*\)$/);if(r){let l=r[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0,d=parseFloat(l[2])||0;l[0].includes("%")||l[1].includes("%")||l[2].includes("%")?(l[0].includes("%")&&(c=c/100*255),l[1].includes("%")&&(f=f/100*255),l[2].includes("%")&&(d=d/100*255)):c<=1&&f<=1&&d<=1&&(c=c*255,f=f*255,d=d*255),c=Math.round(Math.max(0,Math.min(255,c))),f=Math.round(Math.max(0,Math.min(255,f))),d=Math.round(Math.max(0,Math.min(255,d)));let p=255;if(l.length>=4){let h=parseFloat(l[3]);l[3].includes("%")?h=h/100:h>1&&(h=h/255),p=Math.round(Math.max(0,Math.min(255,h*255)))}return(c<<24|f<<16|d<<8|p)>>>0}let o=t.match(/^oklch\s*\(\s*([^)]+)\s*\)$/);if(o){let l=o[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);l[0].includes("%")?c=c/100:c<=1||(c=c/100);let f=parseFloat(l[1])||0,d=parseFloat(l[2])||0,p=1;l.length>=4&&(p=parseFloat(l[3]),l[3].includes("%")?p=p/100:p>1&&(p=p/255));let h=Ut(c*100,f,d),b=Math.round(p*255);return h&4294967040|b}let s=t.match(/^oklab\s*\(\s*([^)]+)\s*\)$/);if(s){let l=s[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0]);(l[0].includes("%")||c>1)&&(c=c/100);let f=parseFloat(l[1])||0,d=parseFloat(l[2])||0,p=1;l.length>=4&&(p=parseFloat(l[3]),l[3].includes("%")?p=p/100:p>1&&(p=p/255));let h=Ca({L:c,a:f,b:d}),b=h.r,y=h.g,v=h.b,T=Math.round(p*255);return(b<<24|y<<16|v<<8|T)>>>0}let a=t.match(/^hsl\s*\(\s*([^)]+)\s*\)$/);if(a){let l=a[1].replace(/[,/]/g," ").trim().split(/\s+/),c=parseFloat(l[0])||0,f=parseFloat(l[1])||0;l[1].includes("%")?f=f/100:f<=1||(f=f/100);let d=parseFloat(l[2])||0;l[2].includes("%")?d=d/100:d<=1||(d=d/100);let p=1;l.length>=4&&(p=parseFloat(l[3]),l[3].includes("%")?p=p/100:p>1&&(p=p/255));let{r:h,g:b,b:y}=yo(c,f,d),v=Math.round(p*255);return(h<<24|b<<16|y<<8|v)>>>0}if(t==="transparent")return 0;let u=t.match(/^([a-z]+)-(\d+)$/);if(u){let l=K1()[u[1]];if(l){let c=Y1(l,parseInt(u[2],10));return n?H1(c):c}}return t in ip?Cn(ip[t]):(console.warn(`parseColor: unrecognized color "${e}"`),0)}function bo(e,n){let t=ho(e),i=ho(n),r=.56,o=.57,s=.62,a=.65,u=.022,l=1.414,c=.1,f=5e-4,d=1.14,p=.027,h=1.14,b=.027;function y(O){return O>=u?O:O+(u-O)**l}function v(O){return(O<0?-1:1)*Math.pow(Math.abs(O),2.4)}let T=y(v(i.r/255)*.2126729+v(i.g/255)*.7151522+v(i.b/255)*.072175),_=y(v(t.r/255)*.2126729+v(t.g/255)*.7151522+v(t.b/255)*.072175),A,k;return Math.abs(_-T)<f?k=0:_>T?(A=_**r-T**o,k=A*d):(A=_**a-T**s,k=A*h),Math.abs(k)<c?0:k>0?k-b:k+p}function Ra(e){let n,t,i;typeof e!="object"||!("bg"in e)?(n=ho(e),t="#ffffff",i="#000000"):(n=e.bg,t=e.fg1,i=e.fg2);let r=Math.abs(bo(t,n)),o=Math.abs(bo(i,n));return r>=o?tp(t):tp(i)}function vp(e,n){let t=e.L-n.L,i=e.a-n.a,r=e.b-n.b;return Math.sqrt(t*t+i*i+r*r)}var Q1=["#4e79a7","#f28e2b","#59a14f","#e15759","#b07aa1","#9c755f","#ff9da7","#edc948","#76b7b2","#6b8fd6","#c07bc4"],ey=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],ny=["#4e79a7","#f28e2b","#2ca58d","#d13a3c","#b07aa1","#9c755f","#ff9da7","#e3c13b","#5fb8b2","#6b8fd6","#c07bc4"],ty=["#8fb1d4","#f6b878","#8ecf86","#f08a8b","#d3a9cc","#c3a492","#ffc6cc","#f3e08a","#a8d8d4","#a9c0ea","#e0b4e4"],iy=["#78a6d9","#ffae54","#7ddc7a","#ff7a7a","#d29be0","#c49a84","#ffb3bf","#ffe066","#7fd6d0","#8fb4ff","#e199eb"],ry=["#2f6fb0","#ff7a00","#2fa23a","#e02f2f","#9b4db5","#7f4f38","#ff6f86","#f2c200","#2daaa3","#4c79e0","#b84ac6"],oy=["#4f93ff","#ff8c1a","#33c94a","#ff4f4f","#b86bff","#a86a4a","#ff7f9e","#ffd400","#2ec9c1","#6f9bff","#cc5bd9"],sy=["#5E81B5","#E19C24","#8FB131","#EB6235","#8778B3","#C56E1A","#5E9EC9","#B23A3A","#4C9F70","#C979B7"],ay=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],uy=["#007AFF","#FF9500","#34C759","#FF3B30","#AF52DE","#FF2D55","#30B0C7","#5856D6","#A2845E","#32ADE6","#00C7BE"],ly=["#0A84FF","#FF9F0A","#30D158","#FF453A","#BF5AF2","#FF375F","#40C8E0","#5E5CE6","#AC8E68","#64D2FF","#00D1C1"],cy=["#fdfdfd","#1d1d1d","#ebce2b","#702c8c","#db6917","#96cde6","#ba1c30","#c0bd7f","#7f7e80","#5fa641","#d485b2","#4277b6","#df8461","#463397","#e1a11a","#91218c","#e8e948","#7e1510","#92ae31","#6f340d","#d32b1e","#2b3514"],fy=["#4148cc","#db3c80","#12b5b0","#ff8c14","#848aff","#78e16e","#1e78f0","#ebcd00","#beeb3c","#7828d2","#cd5f00","#00915f"],Np={tycho11:Q1,"tycho-dark11":ey,"tycho-robust11":ny,"tycho-soft11":ty,"tycho-soft-dark11":iy,"tycho-bold11":ry,"tycho-bold-dark11":oy,tableau10:ay,kelly22:cy,mathematica10:sy,cupertino10:uy,"cupertino-dark10":ly,spectrum12:fy},rp=["#033198","#053399","#07359a","#09379b","#0b399c","#0c3b9c","#0e3d9d","#0f3f9e","#11409f","#1242a0","#1344a0","#1446a1","#1548a2","#164aa3","#174ca4","#184da4","#194fa5","#1951a6","#1a53a7","#1b54a8","#1b56a8","#1c58a9","#1d5aaa","#1d5bab","#1e5dab","#1e5fac","#1f60ad","#2062ae","#2064ae","#2166af","#2167b0","#2269b0","#226ab1","#236cb2","#236eb3","#246fb3","#2471b4","#2573b5","#2574b5","#2676b6","#2677b7","#2779b7","#287ab8","#287cb9","#297eb9","#297fba","#2a81bb","#2b82bb","#2b84bc","#2c85bd","#2d87bd","#2d88be","#2e8abf","#2f8cbf","#308dc0","#308fc1","#3190c1","#3292c2","#3394c3","#3495c3","#3597c4","#3698c5","#379ac5","#389cc6","#399dc7","#3a9fc7","#3ca1c8","#3da2c9","#3ea4c9","#40a6ca","#41a7cb","#43a9cb","#44abcc","#46accc","#47aecd","#49b0ce","#4bb2ce","#4db3cf","#4fb5d0","#51b7d0","#53b8d1","#55bad1","#57bcd2","#59bdd2","#5bbfd3","#5dc1d3","#60c3d4","#62c4d4","#64c6d5","#67c7d5","#69c9d5","#6ccbd6","#6eccd6","#71ced6","#74cfd6","#76d1d7","#79d2d7","#7bd4d7","#7ed5d7","#81d7d7","#83d8d7","#86d9d7","#89dad7","#8bdcd7","#8eddd7","#90ded7","#93dfd6","#95e0d6","#98e1d6","#9be2d5","#9de3d5","#9fe4d4","#a2e5d4","#a4e5d3","#a6e6d2","#a9e7d2","#abe7d1","#ade8d0","#afe8cf","#b1e9ce","#b3e9cd","#b5eacc","#b7eaca","#b9eac9","#bbeac8","#bdeac6","#beeac5","#c0eac3","#c1eac2","#c3eac0","#c4eabe","#c6eabc","#c7e9ba","#c8e9b8","#c9e9b6","#cbe8b4","#cce7b2","#cce7b0","#cde6ad","#cee5ab","#cfe5a8","#d0e4a6","#d0e3a3","#d1e2a1","#d1e19e","#d1df9b","#d2de98","#d2dd96","#d2dc93","#d2da90","#d2d98d","#d2d78a","#d2d687","#d2d484","#d2d381","#d2d17e","#d1cf7b","#d1cd78","#d0cc75","#d0ca72","#cfc86f","#cfc66d","#cec46a","#cec267","#cdc064","#ccbe62","#cbbc5f","#cbba5d","#cab85a","#c9b658","#c8b455","#c7b253","#c7b051","#c6ae4f","#c5ac4c","#c4aa4a","#c3a848","#c2a647","#c1a545","#c1a343","#c0a141","#bf9f40","#be9d3e","#bd9b3c","#bc993b","#bb9739","#ba9538","#ba9437","#b99235","#b89034","#b78e33","#b68c32","#b58b31","#b58930","#b4872f","#b3862e","#b2842d","#b1822c","#b0802b","#b07f2a","#af7d29","#ae7c28","#ad7a27","#ad7826","#ac7726","#ab7525","#aa7324","#a97223","#a97023","#a86f22","#a76d21","#a66c20","#a66a20","#a5681f","#a4671e","#a3651e","#a2641d","#a2621c","#a1611c","#a05f1b","#9f5d1a","#9e5c19","#9e5a19","#9d5818","#9c5717","#9b5517","#9a5316","#995215","#995014","#984e14","#974d13","#964b12","#954912","#944711","#934610","#92440f","#91420f","#90400e","#903e0d","#8f3c0c","#8e3a0b","#8d380b","#8c360a","#8b3409","#8a3208","#883008","#872e07","#862c06","#852a06","#842705","#832504","#822204","#812003","#801d02","#7f1a01","#7e1700"],op=["#0b3c78","#2366a8","#4f97cf","#9bc7e4","#f7f7f7","#e88fa0","#c23c6f","#8e1d4d","#5a0c2e"],sp=["#2c557f","#4a7fa8","#7aa8c9","#b5cfe3","#f7f7f7","#e4b0b0","#c96c72","#9b3d4f","#6b1a2b"],ap=["#053061","#11458c","#1f5fa5","#337ab7","#4f94c6","#6baed6","#8bbdd9","#a6cce3","#c1dbec","#dceaf4","#f7f7f7","#fbe3d6","#f9c8b2","#f5a993","#ee8a75","#e36b58","#d64b41","#c72c33","#af212d","#971628","#7f0b23","#67001f"],up=["#3b4cc0","#465ecf","#5070de","#5c82ea","#6f96f5","#86aafc","#9dbdff","#b6d0f3","#cfe1e8","#e6efe1","#f1f1f1","#f7f7f7","#f6e1d3","#f4cbb3","#f1b594","#ee9f76","#ea8960","#e06b53","#d24f49","#c1363f","#ae2036","#b40426"],Zi=e=>e.slice().reverse(),Tp={roma:rp,"roma-reversed":Zi(rp),vik:op,"vik-reversed":Zi(op),broc:sp,"broc-reversed":Zi(sp),rdbu:ap,"rdbu-reversed":Zi(ap),coolwarm:up,"coolwarm-reversed":Zi(up)},lp=["#30123b","#321543","#33184a","#341b51","#351e58","#36215f","#372466","#38276d","#392a73","#3a2d79","#3b2f80","#3c3286","#3d358b","#3e3891","#3f3b97","#3f3e9c","#4040a2","#4143a7","#4146ac","#4249b1","#424bb5","#434eba","#4451bf","#4454c3","#4456c7","#4559cb","#455ccf","#455ed3","#4661d6","#4664da","#4666dd","#4669e0","#466be3","#476ee6","#4771e9","#4773eb","#4776ee","#4778f0","#477bf2","#467df4","#4680f6","#4682f8","#4685fa","#4687fb","#458afc","#458cfd","#448ffe","#4391fe","#4294ff","#4196ff","#4099ff","#3e9bfe","#3d9efe","#3ba0fd","#3aa3fc","#38a5fb","#37a8fa","#35abf8","#33adf7","#31aff5","#2fb2f4","#2eb4f2","#2cb7f0","#2ab9ee","#28bceb","#27bee9","#25c0e7","#23c3e4","#22c5e2","#20c7df","#1fc9dd","#1ecbda","#1ccdd8","#1bd0d5","#1ad2d2","#1ad4d0","#19d5cd","#18d7ca","#18d9c8","#18dbc5","#18ddc2","#18dec0","#18e0bd","#19e2bb","#19e3b9","#1ae4b6","#1ce6b4","#1de7b2","#1fe9af","#20eaac","#22ebaa","#25eca7","#27eea4","#2aefa1","#2cf09e","#2ff19b","#32f298","#35f394","#38f491","#3cf58e","#3ff68a","#43f787","#46f884","#4af880","#4ef97d","#52fa7a","#55fa76","#59fb73","#5dfc6f","#61fc6c","#65fd69","#69fd66","#6dfe62","#71fe5f","#75fe5c","#79fe59","#7dff56","#80ff53","#84ff51","#88ff4e","#8bff4b","#8fff49","#92ff47","#96fe44","#99fe42","#9cfe40","#9ffd3f","#a1fd3d","#a4fc3c","#a7fc3a","#a9fb39","#acfb38","#affa37","#b1f936","#b4f836","#b7f735","#b9f635","#bcf534","#bef434","#c1f334","#c3f134","#c6f034","#c8ef34","#cbed34","#cdec34","#d0ea34","#d2e935","#d4e735","#d7e535","#d9e436","#dbe236","#dde037","#dfdf37","#e1dd37","#e3db38","#e5d938","#e7d739","#e9d539","#ebd339","#ecd13a","#eecf3a","#efcd3a","#f1cb3a","#f2c93a","#f4c73a","#f5c53a","#f6c33a","#f7c13a","#f8be39","#f9bc39","#faba39","#fbb838","#fbb637","#fcb336","#fcb136","#fdae35","#fdac34","#fea933","#fea732","#fea431","#fea130","#fe9e2f","#fe9b2d","#fe992c","#fe962b","#fe932a","#fe9029","#fd8d27","#fd8a26","#fc8725","#fc8423","#fb8122","#fb7e21","#fa7b1f","#f9781e","#f9751d","#f8721c","#f76f1a","#f66c19","#f56918","#f46617","#f36315","#f26014","#f15d13","#f05b12","#ef5811","#ed5510","#ec530f","#eb500e","#ea4e0d","#e84b0c","#e7490c","#e5470b","#e4450a","#e2430a","#e14109","#df3f08","#dd3d08","#dc3b07","#da3907","#d83706","#d63506","#d43305","#d23105","#d02f05","#ce2d04","#cc2b04","#ca2a04","#c82803","#c52603","#c32503","#c12302","#be2102","#bc2002","#b91e02","#b71d02","#b41b01","#b21a01","#af1801","#ac1701","#a91601","#a71401","#a41301","#a11201","#9e1001","#9b0f01","#980e01","#950d01","#920b01","#8e0a01","#8b0902","#880802","#850702","#810602","#7e0502","#7a0403"],cp=["#000004","#010005","#010106","#010108","#020109","#02020b","#02020d","#03030f","#030312","#040414","#050416","#060518","#06051a","#07061c","#08071e","#090720","#0a0822","#0b0924","#0c0926","#0d0a29","#0e0b2b","#100b2d","#110c2f","#120d31","#130d34","#140e36","#150e38","#160f3b","#180f3d","#19103f","#1a1042","#1c1044","#1d1147","#1e1149","#20114b","#21114e","#221150","#241253","#251255","#271258","#29115a","#2a115c","#2c115f","#2d1161","#2f1163","#311165","#331067","#341069","#36106b","#38106c","#390f6e","#3b0f70","#3d0f71","#3f0f72","#400f74","#420f75","#440f76","#451077","#471078","#491078","#4a1079","#4c117a","#4e117b","#4f127b","#51127c","#52137c","#54137d","#56147d","#57157e","#59157e","#5a167e","#5c167f","#5d177f","#5f187f","#601880","#621980","#641a80","#651a80","#671b80","#681c81","#6a1c81","#6b1d81","#6d1d81","#6e1e81","#701f81","#721f81","#732081","#752181","#762181","#782281","#792282","#7b2382","#7c2382","#7e2482","#802582","#812581","#832681","#842681","#862781","#882781","#892881","#8b2981","#8c2981","#8e2a81","#902a81","#912b81","#932b80","#942c80","#962c80","#982d80","#992d80","#9b2e7f","#9c2e7f","#9e2f7f","#a02f7f","#a1307e","#a3307e","#a5317e","#a6317d","#a8327d","#aa337d","#ab337c","#ad347c","#ae347b","#b0357b","#b2357b","#b3367a","#b5367a","#b73779","#b83779","#ba3878","#bc3978","#bd3977","#bf3a77","#c03a76","#c23b75","#c43c75","#c53c74","#c73d73","#c83e73","#ca3e72","#cc3f71","#cd4071","#cf4070","#d0416f","#d2426f","#d3436e","#d5446d","#d6456c","#d8456c","#d9466b","#db476a","#dc4869","#de4968","#df4a68","#e04c67","#e24d66","#e34e65","#e44f64","#e55064","#e75263","#e85362","#e95462","#ea5661","#eb5760","#ec5860","#ed5a5f","#ee5b5e","#ef5d5e","#f05f5e","#f1605d","#f2625d","#f2645c","#f3655c","#f4675c","#f4695c","#f56b5c","#f66c5c","#f66e5c","#f7705c","#f7725c","#f8745c","#f8765c","#f9785d","#f9795d","#f97b5d","#fa7d5e","#fa7f5e","#fa815f","#fb835f","#fb8560","#fb8761","#fc8961","#fc8a62","#fc8c63","#fc8e64","#fc9065","#fd9266","#fd9467","#fd9668","#fd9869","#fd9a6a","#fd9b6b","#fe9d6c","#fe9f6d","#fea16e","#fea36f","#fea571","#fea772","#fea973","#feaa74","#feac76","#feae77","#feb078","#feb27a","#feb47b","#feb67c","#feb77e","#feb97f","#febb81","#febd82","#febf84","#fec185","#fec287","#fec488","#fec68a","#fec88c","#feca8d","#fecc8f","#fecd90","#fecf92","#fed194","#fed395","#fed597","#fed799","#fed89a","#fdda9c","#fddc9e","#fddea0","#fde0a1","#fde2a3","#fde3a5","#fde5a7","#fde7a9","#fde9aa","#fdebac","#fcecae","#fceeb0","#fcf0b2","#fcf2b4","#fcf4b6","#fcf6b8","#fcf7b9","#fcf9bb","#fcfbbd","#fcfdbf"],fp=["#000004","#010005","#010106","#010108","#02010a","#02020c","#02020e","#030210","#040312","#040314","#050417","#060419","#07051b","#08051d","#09061f","#0a0722","#0b0724","#0c0826","#0d0829","#0e092b","#10092d","#110a30","#120a32","#140b34","#150b37","#160b39","#180c3c","#190c3e","#1b0c41","#1c0c43","#1e0c45","#1f0c48","#210c4a","#230c4c","#240c4f","#260c51","#280b53","#290b55","#2b0b57","#2d0b59","#2f0a5b","#310a5c","#320a5e","#340a5f","#360961","#380962","#390963","#3b0964","#3d0965","#3e0966","#400a67","#420a68","#440a68","#450a69","#470b6a","#490b6a","#4a0c6b","#4c0c6b","#4d0d6c","#4f0d6c","#510e6c","#520e6d","#540f6d","#550f6d","#57106e","#59106e","#5a116e","#5c126e","#5d126e","#5f136e","#61136e","#62146e","#64156e","#65156e","#67166e","#69166e","#6a176e","#6c186e","#6d186e","#6f196e","#71196e","#721a6e","#741a6e","#751b6e","#771c6d","#781c6d","#7a1d6d","#7c1d6d","#7d1e6d","#7f1e6c","#801f6c","#82206c","#84206b","#85216b","#87216b","#88226a","#8a226a","#8c2369","#8d2369","#8f2469","#902568","#922568","#932667","#952667","#972766","#982766","#9a2865","#9b2964","#9d2964","#9f2a63","#a02a63","#a22b62","#a32c61","#a52c60","#a62d60","#a82e5f","#a92e5e","#ab2f5e","#ad305d","#ae305c","#b0315b","#b1325a","#b3325a","#b43359","#b63458","#b73557","#b93556","#ba3655","#bc3754","#bd3853","#bf3952","#c03a51","#c13a50","#c33b4f","#c43c4e","#c63d4d","#c73e4c","#c83f4b","#ca404a","#cb4149","#cc4248","#ce4347","#cf4446","#d04545","#d24644","#d34743","#d44842","#d54a41","#d74b3f","#d84c3e","#d94d3d","#da4e3c","#db503b","#dd513a","#de5238","#df5337","#e05536","#e15635","#e25734","#e35933","#e45a31","#e55c30","#e65d2f","#e75e2e","#e8602d","#e9612b","#ea632a","#eb6429","#eb6628","#ec6726","#ed6925","#ee6a24","#ef6c23","#ef6e21","#f06f20","#f1711f","#f1731d","#f2741c","#f3761b","#f37819","#f47918","#f57b17","#f57d15","#f67e14","#f68013","#f78212","#f78410","#f8850f","#f8870e","#f8890c","#f98b0b","#f98c0a","#f98e09","#fa9008","#fa9207","#fa9407","#fb9606","#fb9706","#fb9906","#fb9b06","#fb9d07","#fc9f07","#fca108","#fca309","#fca50a","#fca60c","#fca80d","#fcaa0f","#fcac11","#fcae12","#fcb014","#fcb216","#fcb418","#fbb61a","#fbb81d","#fbba1f","#fbbc21","#fbbe23","#fac026","#fac228","#fac42a","#fac62d","#f9c72f","#f9c932","#f9cb35","#f8cd37","#f8cf3a","#f7d13d","#f7d340","#f6d543","#f6d746","#f5d949","#f5db4c","#f4dd4f","#f4df53","#f4e156","#f3e35a","#f3e55d","#f2e661","#f2e865","#f2ea69","#f1ec6d","#f1ed71","#f1ef75","#f1f179","#f2f27d","#f2f482","#f3f586","#f3f68a","#f4f88e","#f5f992","#f6fa96","#f8fb9a","#f9fc9d","#fafda1","#fcffa4"],dp=["#0d0887","#100788","#130789","#16078a","#19068c","#1b068d","#1d068e","#20068f","#220690","#240691","#260591","#280592","#2a0593","#2c0594","#2e0595","#2f0596","#310597","#330597","#350498","#370499","#38049a","#3a049a","#3c049b","#3e049c","#3f049c","#41049d","#43039e","#44039e","#46039f","#48039f","#4903a0","#4b03a1","#4c02a1","#4e02a2","#5002a2","#5102a3","#5302a3","#5502a4","#5601a4","#5801a4","#5901a5","#5b01a5","#5c01a6","#5e01a6","#6001a6","#6100a7","#6300a7","#6400a7","#6600a7","#6700a8","#6900a8","#6a00a8","#6c00a8","#6e00a8","#6f00a8","#7100a8","#7201a8","#7401a8","#7501a8","#7701a8","#7801a8","#7a02a8","#7b02a8","#7d03a8","#7e03a8","#8004a8","#8104a7","#8305a7","#8405a7","#8606a6","#8707a6","#8808a6","#8a09a5","#8b0aa5","#8d0ba5","#8e0ca4","#8f0da4","#910ea3","#920fa3","#9410a2","#9511a1","#9613a1","#9814a0","#99159f","#9a169f","#9c179e","#9d189d","#9e199d","#a01a9c","#a11b9b","#a21d9a","#a31e9a","#a51f99","#a62098","#a72197","#a82296","#aa2395","#ab2494","#ac2694","#ad2793","#ae2892","#b02991","#b12a90","#b22b8f","#b32c8e","#b42e8d","#b52f8c","#b6308b","#b7318a","#b83289","#ba3388","#bb3488","#bc3587","#bd3786","#be3885","#bf3984","#c03a83","#c13b82","#c23c81","#c33d80","#c43e7f","#c5407e","#c6417d","#c7427c","#c8437b","#c9447a","#ca457a","#cb4679","#cc4778","#cc4977","#cd4a76","#ce4b75","#cf4c74","#d04d73","#d14e72","#d24f71","#d35171","#d45270","#d5536f","#d5546e","#d6556d","#d7566c","#d8576b","#d9586a","#da5a6a","#da5b69","#db5c68","#dc5d67","#dd5e66","#de5f65","#de6164","#df6263","#e06363","#e16462","#e26561","#e26660","#e3685f","#e4695e","#e56a5d","#e56b5d","#e66c5c","#e76e5b","#e76f5a","#e87059","#e97158","#e97257","#ea7457","#eb7556","#eb7655","#ec7754","#ed7953","#ed7a52","#ee7b51","#ef7c51","#ef7e50","#f07f4f","#f0804e","#f1814d","#f1834c","#f2844b","#f3854b","#f3874a","#f48849","#f48948","#f58b47","#f58c46","#f68d45","#f68f44","#f79044","#f79143","#f79342","#f89441","#f89540","#f9973f","#f9983e","#f99a3e","#fa9b3d","#fa9c3c","#fa9e3b","#fb9f3a","#fba139","#fba238","#fca338","#fca537","#fca636","#fca835","#fca934","#fdab33","#fdac33","#fdae32","#fdaf31","#fdb130","#fdb22f","#fdb42f","#fdb52e","#feb72d","#feb82c","#feba2c","#febb2b","#febd2a","#febe2a","#fec029","#fdc229","#fdc328","#fdc527","#fdc627","#fdc827","#fdca26","#fdcb26","#fccd25","#fcce25","#fcd025","#fcd225","#fbd324","#fbd524","#fbd724","#fad824","#fada24","#f9dc24","#f9dd25","#f8df25","#f8e125","#f7e225","#f7e425","#f6e626","#f6e826","#f5e926","#f5eb27","#f4ed27","#f3ee27","#f3f027","#f2f227","#f1f426","#f1f525","#f0f724","#f0f921"],pp=["#440154","#440256","#450457","#450559","#46075a","#46085c","#460a5d","#460b5e","#470d60","#470e61","#471063","#471164","#471365","#481467","#481668","#481769","#48186a","#481a6c","#481b6d","#481c6e","#481d6f","#481f70","#482071","#482173","#482374","#482475","#482576","#482677","#482878","#482979","#472a7a","#472c7a","#472d7b","#472e7c","#472f7d","#46307e","#46327e","#46337f","#463480","#453581","#453781","#453882","#443983","#443a83","#443b84","#433d84","#433e85","#423f85","#424086","#424186","#414287","#414487","#404588","#404688","#3f4788","#3f4889","#3e4989","#3e4a89","#3e4c8a","#3d4d8a","#3d4e8a","#3c4f8a","#3c508b","#3b518b","#3b528b","#3a538b","#3a548c","#39558c","#39568c","#38588c","#38598c","#375a8c","#375b8d","#365c8d","#365d8d","#355e8d","#355f8d","#34608d","#34618d","#33628d","#33638d","#32648e","#32658e","#31668e","#31678e","#31688e","#30698e","#306a8e","#2f6b8e","#2f6c8e","#2e6d8e","#2e6e8e","#2e6f8e","#2d708e","#2d718e","#2c718e","#2c728e","#2c738e","#2b748e","#2b758e","#2a768e","#2a778e","#2a788e","#29798e","#297a8e","#297b8e","#287c8e","#287d8e","#277e8e","#277f8e","#27808e","#26818e","#26828e","#26828e","#25838e","#25848e","#25858e","#24868e","#24878e","#23888e","#23898e","#238a8d","#228b8d","#228c8d","#228d8d","#218e8d","#218f8d","#21908d","#21918c","#20928c","#20928c","#20938c","#1f948c","#1f958b","#1f968b","#1f978b","#1f988b","#1f998a","#1f9a8a","#1e9b8a","#1e9c89","#1e9d89","#1f9e89","#1f9f88","#1fa088","#1fa188","#1fa187","#1fa287","#20a386","#20a486","#21a585","#21a685","#22a785","#22a884","#23a983","#24aa83","#25ab82","#25ac82","#26ad81","#27ad81","#28ae80","#29af7f","#2ab07f","#2cb17e","#2db27d","#2eb37c","#2fb47c","#31b57b","#32b67a","#34b679","#35b779","#37b878","#38b977","#3aba76","#3bbb75","#3dbc74","#3fbc73","#40bd72","#42be71","#44bf70","#46c06f","#48c16e","#4ac16d","#4cc26c","#4ec36b","#50c46a","#52c569","#54c568","#56c667","#58c765","#5ac864","#5cc863","#5ec962","#60ca60","#63cb5f","#65cb5e","#67cc5c","#69cd5b","#6ccd5a","#6ece58","#70cf57","#73d056","#75d054","#77d153","#7ad151","#7cd250","#7fd34e","#81d34d","#84d44b","#86d549","#89d548","#8bd646","#8ed645","#90d743","#93d741","#95d840","#98d83e","#9bd93c","#9dd93b","#a0da39","#a2da37","#a5db36","#a8db34","#aadc32","#addc30","#b0dd2f","#b2dd2d","#b5de2b","#b8de29","#bade28","#bddf26","#c0df25","#c2df23","#c5e021","#c8e020","#cae11f","#cde11d","#d0e11c","#d2e21b","#d5e21a","#d8e219","#dae319","#dde318","#dfe318","#e2e418","#e5e419","#e7e419","#eae51a","#ece51b","#efe51c","#f1e51d","#f4e61e","#f6e620","#f8e621","#fbe723","#fde725"],mp=["#00204d","#00214e","#002250","#002252","#002353","#002455","#002557","#002558","#00265a","#00275c","#00275e","#002860","#002961","#002a63","#002a65","#002b67","#002c69","#002c6a","#002d6c","#002e6e","#002e6f","#002f6f","#002f6f","#00306f","#00306f","#00316f","#00326f","#00336f","#00336f","#00346f","#00356e","#01366e","#06366e","#0b376e","#0f386e","#12386d","#15396d","#183a6d","#1a3b6d","#1d3b6d","#1f3c6d","#213d6d","#233e6c","#243e6c","#263f6c","#28406c","#2a406c","#2b416c","#2d426c","#2e436c","#30436c","#31446b","#32456b","#34456b","#35466b","#36476b","#38486b","#39486b","#3a496b","#3b4a6b","#3d4a6b","#3e4b6b","#3f4c6b","#404d6b","#414d6b","#424e6b","#434f6b","#444f6b","#46506b","#47516b","#48526b","#49526b","#4a536b","#4b546c","#4c546c","#4d556c","#4e566c","#4f576c","#50576c","#51586c","#52596c","#53596c","#545a6c","#555b6d","#565c6d","#575c6d","#585d6d","#595e6d","#595f6d","#5a5f6d","#5b606e","#5c616e","#5d616e","#5e626e","#5f636e","#60646f","#61646f","#62656f","#63666f","#64666f","#646770","#656870","#666970","#676970","#686a71","#696b71","#6a6c71","#6b6c71","#6c6d72","#6c6e72","#6d6e72","#6e6f73","#6f7073","#707173","#717174","#727274","#727374","#737475","#747475","#757575","#767676","#777776","#787777","#787877","#797977","#7a7a78","#7b7a78","#7c7b78","#7d7c78","#7e7d78","#7f7d78","#807e79","#817f79","#828079","#838079","#848179","#848279","#858379","#868379","#878479","#888579","#898679","#8a8779","#8b8779","#8c8879","#8d8979","#8e8a79","#8f8a79","#908b79","#918c78","#928d78","#938e78","#948e78","#958f78","#969078","#979178","#989278","#999278","#9a9377","#9b9477","#9c9577","#9d9677","#9e9677","#9f9777","#a09877","#a19976","#a29a76","#a39a76","#a49b76","#a59c76","#a69d75","#a89e75","#a99f75","#aa9f75","#aba074","#aca174","#ada274","#aea374","#afa473","#b0a473","#b1a573","#b2a672","#b3a772","#b4a872","#b5a971","#b6a971","#b7aa71","#b8ab70","#b9ac70","#baad70","#bbae6f","#bcaf6f","#beaf6f","#bfb06e","#c0b16e","#c1b26d","#c2b36d","#c3b46d","#c4b56c","#c5b56c","#c6b66b","#c7b76b","#c8b86a","#c9b96a","#cbba69","#ccbb69","#cdbc68","#cebc68","#cfbd67","#d0be67","#d1bf66","#d2c066","#d3c165","#d4c264","#d6c364","#d7c463","#d8c563","#d9c562","#dac661","#dbc761","#dcc860","#ddc95f","#deca5f","#e0cb5e","#e1cc5d","#e2cd5c","#e3ce5c","#e4cf5b","#e5d05a","#e6d159","#e8d259","#e9d358","#ead357","#ebd456","#ecd555","#edd654","#efd753","#f0d852","#f1d951","#f2da50","#f3db4f","#f4dc4e","#f6dd4d","#f7de4c","#f8df4b","#f9e04a","#fae149","#fbe248","#fde346","#fee445","#ffe544","#ffe642","#ffe742","#ffe843","#ffe944","#ffea46"],hp=["#03051a","#04051a","#05061b","#06071c","#07071d","#08081e","#0a091f","#0b0920","#0d0a21","#0e0b22","#100b23","#110c24","#130d25","#140e26","#160e27","#170f28","#180f29","#1a102a","#1b112b","#1d112c","#1e122d","#20122e","#211330","#221331","#241432","#251433","#271534","#281535","#2a1636","#2b1637","#2d1738","#2e1739","#30173a","#31183b","#33183c","#34193d","#35193e","#37193f","#381a40","#3a1a41","#3c1a42","#3d1a42","#3f1b43","#401b44","#421b45","#431c46","#451c47","#461c48","#481c48","#491d49","#4b1d4a","#4c1d4b","#4e1d4b","#501d4c","#511e4d","#531e4d","#541e4e","#561e4f","#581e4f","#591e50","#5b1e51","#5c1e51","#5e1f52","#601f52","#611f53","#631f53","#641f54","#661f54","#681f55","#691f55","#6b1f56","#6d1f56","#6e1f57","#701f57","#711f57","#731f58","#751f58","#761f58","#781f59","#7a1f59","#7b1f59","#7d1f5a","#7f1e5a","#811e5a","#821e5a","#841e5a","#861e5b","#871e5b","#891e5b","#8b1d5b","#8c1d5b","#8e1d5b","#901d5b","#921c5b","#931c5b","#951c5b","#971c5b","#981b5b","#9a1b5b","#9c1b5b","#9e1a5b","#9f1a5b","#a11a5b","#a3195b","#a4195b","#a6195a","#a8185a","#aa185a","#ab185a","#ad1759","#af1759","#b01759","#b21758","#b41658","#b51657","#b71657","#b91657","#ba1656","#bc1656","#bd1655","#bf1654","#c11754","#c21753","#c41753","#c51852","#c71951","#c81951","#ca1a50","#cb1b4f","#cd1c4e","#ce1d4e","#cf1e4d","#d11f4c","#d2204c","#d3214b","#d5224a","#d62449","#d72549","#d82748","#d92847","#db2946","#dc2b46","#dd2c45","#de2e44","#df2f44","#e03143","#e13342","#e23442","#e33641","#e43841","#e53940","#e63b40","#e73d3f","#e83f3f","#e8403e","#e9423e","#ea443e","#eb463e","#eb483e","#ec4a3e","#ec4c3e","#ed4e3e","#ed503e","#ee523f","#ee543f","#ef5640","#ef5840","#ef5a41","#f05c42","#f05e42","#f06043","#f16244","#f16445","#f16646","#f26747","#f26948","#f26b49","#f26d4b","#f26f4c","#f3714d","#f3734e","#f37450","#f37651","#f37852","#f47a54","#f47c55","#f47d57","#f47f58","#f4815a","#f4835b","#f4845d","#f4865e","#f58860","#f58a61","#f58b63","#f58d64","#f58f66","#f59067","#f59269","#f5946b","#f5966c","#f5976e","#f59970","#f69b71","#f69c73","#f69e75","#f6a077","#f6a178","#f6a37a","#f6a47c","#f6a67e","#f6a880","#f6a981","#f6ab83","#f6ad85","#f6ae87","#f6b089","#f6b18b","#f6b38d","#f6b48f","#f6b691","#f6b893","#f6b995","#f6bb97","#f6bc99","#f6be9b","#f6bf9d","#f6c19f","#f7c2a2","#f7c4a4","#f7c6a6","#f7c7a8","#f7c9aa","#f7caac","#f7ccaf","#f7cdb1","#f7cfb3","#f7d0b5","#f8d1b8","#f8d3ba","#f8d4bc","#f8d6be","#f8d7c0","#f8d9c3","#f8dac5","#f8dcc7","#f9ddc9","#f9dfcb","#f9e0cd","#f9e2d0","#f9e3d2","#f9e5d4","#fae6d6","#fae8d8","#fae9da","#faebdd"],gp=["#0b0405","#0d0406","#0e0508","#0f0609","#10060a","#11070c","#12080d","#13090f","#140910","#150a12","#160b13","#170c15","#180d16","#190e18","#1a0e19","#1b0f1a","#1c101c","#1d111d","#1e111f","#1f1220","#201322","#211423","#221425","#231526","#241628","#251729","#26172b","#27182d","#28192e","#291930","#291a31","#2a1b33","#2b1c35","#2c1c36","#2d1d38","#2e1e39","#2e1e3b","#2f1f3d","#30203e","#312140","#312142","#322243","#332345","#342447","#342548","#35254a","#35264c","#36274d","#37284f","#372851","#382953","#382a54","#392b56","#3a2c58","#3a2c59","#3b2d5b","#3b2e5d","#3b2f5f","#3c3060","#3c3162","#3d3164","#3d3266","#3e3367","#3e3469","#3e356b","#3f366d","#3f366f","#3f3770","#403872","#403974","#403a76","#403b78","#403c79","#413d7b","#413e7d","#413e7f","#413f80","#414082","#414184","#414285","#414387","#414488","#40468a","#40478b","#40488d","#40498e","#3f4a8f","#3f4b90","#3f4c92","#3e4d93","#3e4f94","#3e5095","#3d5195","#3d5296","#3c5397","#3c5598","#3b5698","#3b5799","#3b589a","#3a599a","#3a5b9b","#3a5c9b","#395d9c","#395e9c","#385f9c","#38619d","#38629d","#38639d","#37649e","#37659e","#37669e","#37689f","#36699f","#366a9f","#366b9f","#366ca0","#366da0","#366fa0","#3670a0","#3671a0","#3572a1","#3573a1","#3574a1","#3575a1","#3576a2","#3578a2","#3579a2","#357aa2","#357ba3","#357ca3","#357da3","#357ea4","#347fa4","#3480a4","#3482a4","#3483a5","#3484a5","#3485a5","#3486a5","#3487a6","#3488a6","#3489a6","#348ba6","#348ca7","#348da7","#348ea7","#348fa7","#3490a8","#3491a8","#3492a8","#3493a8","#3495a9","#3496a9","#3497a9","#3498a9","#3499aa","#349aaa","#359baa","#359caa","#359eaa","#359fab","#35a0ab","#35a1ab","#36a2ab","#36a3ab","#36a4ab","#37a5ac","#37a6ac","#37a8ac","#38a9ac","#38aaac","#39abac","#39acac","#3aadac","#3aaead","#3bafad","#3cb1ad","#3cb2ad","#3db3ad","#3eb4ad","#3fb5ad","#3fb6ad","#40b7ad","#41b8ad","#42b9ad","#43baad","#44bcad","#45bdad","#46bead","#47bfad","#48c0ad","#49c1ad","#4bc2ad","#4cc3ad","#4dc4ad","#4fc5ad","#50c6ad","#52c7ad","#53c9ad","#55caad","#57cbad","#59ccad","#5bcdad","#5ecdad","#60ceac","#62cfac","#65d0ad","#68d1ad","#6ad2ad","#6dd3ad","#70d4ad","#73d4ad","#76d5ae","#79d6ae","#7cd6af","#7fd7af","#82d8b0","#85d9b1","#88d9b1","#8bdab2","#8edbb3","#91dbb4","#94dcb5","#96ddb5","#99ddb6","#9cdeb7","#9edfb8","#a1dfb9","#a4e0bb","#a6e1bc","#a9e1bd","#abe2be","#aee3c0","#b0e4c1","#b2e4c2","#b5e5c4","#b7e6c5","#b9e6c7","#bbe7c8","#bee8ca","#c0e9cc","#c2e9cd","#c4eacf","#c6ebd1","#c8ecd2","#caedd4","#ccedd6","#ceeed7","#d0efd9","#d2f0db","#d4f1dc","#d6f1de","#d8f2e0","#daf3e1","#dcf4e3","#def5e5"],bp=["#000000","#111111","#222222","#333333","#444444","#555555","#666666","#777777","#888888","#999999","#aaaaaa","#bbbbbb","#cccccc","#dddddd","#eeeeee","#ffffff"],yp=["#a8780d","#b3701b","#be6828","#c75f35","#cf5643","#d54b53","#db4066","#de357b","#df2a93","#dc25ad","#d529c4","#cc34d7","#c041e5","#b24fef","#a25cf3","#9168f4","#7d73f0","#687ce8","#5285dc","#3d8bcd","#2c90bc","#2093ac","#19959c","#12978c","#0c987c","#119a69","#249a52","#409839","#5e9420","#778d12","#8b860d","#9b7f0d"],dn=e=>e.slice().reverse(),_p={turbo:lp,"turbo-reversed":dn(lp),grey:bp,"grey-reversed":dn(bp),magma:cp,"magma-reversed":dn(cp),inferno:fp,"inferno-reversed":dn(fp),plasma:dp,"plasma-reversed":dn(dp),viridis:pp,"viridis-reversed":dn(pp),cividis:mp,"cividis-reversed":dn(mp),rocket:hp,"rocket-reversed":dn(hp),mako:gp,"mako-reversed":dn(gp),"cmocean-phase":yp,"cmocean-phase-reversed":dn(yp)};var No=7,To=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function we(e){if(e<0)return NaN;if(e===1||e===2)return 0;let n=e-1,t=To[0];for(let r=1;r<No+2;r++)t+=To[r]/(n+r);let i=n+No+.5;return .5*Math.log(2*Math.PI)+(n+.5)*Math.log(i)-i+Math.log(t)}var dy=171.6243769563027;function Ip(e){e-=1;let n=To[0];for(let i=1;i<No+2;i++)n+=To[i]/(e+i);let t=e+No+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,e+.5)*Math.exp(-t)*n}function _o(e,n){if(n<=0)return 1;if(n===1)return e;let t=n>>>1;return _o(e,t)*_o(e+t,n-t)}function ue(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*ue(1-e));if(e>dy)return 1/0;if(Number.isInteger(e))return _o(1,e-1);if(e>=2){let n=Math.floor(e)-1,t=e-n;return Ip(t)*_o(t,n)}return Ip(e)}var Re=1e-300;function py(e,n){if(n===0)return 0;let t=e,i=1/e,r=i;for(let o=0;o<1e3&&(t+=1,i*=n/t,r+=i,!(Math.abs(i)<Math.abs(r)*1e-16));o++);return r*Math.exp(e*Math.log(n)-n-we(e))}function my(e,n){let t=n+1-e,i=1/Re,r=1/t,o=r;for(let s=1;s<1e3;s++){let a=-s*(s-e);t+=2,r=a*r+t,Math.abs(r)<Re&&(r=Re),i=t+a/i,Math.abs(i)<Re&&(i=Re),r=1/r;let u=r*i;if(o*=u,Math.abs(u-1)<1e-16)break}return Math.exp(e*Math.log(n)-n-we(e))*o}function $p(e,n){return Number.isNaN(e)||Number.isNaN(n)?NaN:e<=0||n<0?NaN:n===0?1:n<e+1?1-py(e,n):my(e,n)}function Sp(e,n,t){let i=e+n,r=e+1,o=e-1,s=1,a=1-i*t/r;Math.abs(a)<Re&&(a=Re),a=1/a;let u=a;for(let l=1;l<1e3;l++){let c=2*l,f=l*(n-l)*t/((o+c)*(e+c));a=1+f*a,Math.abs(a)<Re&&(a=Re),s=1+f/s,Math.abs(s)<Re&&(s=Re),a=1/a,u*=a*s,f=-(e+l)*(i+l)*t/((e+c)*(r+c)),a=1+f*a,Math.abs(a)<Re&&(a=Re),s=1+f/s,Math.abs(s)<Re&&(s=Re),a=1/a;let d=a*s;if(u*=d,Math.abs(d-1)<1e-16)break}return u}function Rp(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(n<=0||t<=0||e<0||e>1)return NaN;if(e===0)return 0;if(e===1)return 1;let i=Math.exp(we(n+t)-we(n)-we(t)+n*Math.log(e)+t*Math.log(1-e));return e<(n+1)/(n+t+2)?i*Sp(n,t,e)/n:1-i*Sp(t,n,1-e)/t}function hy(e){let t=Math.log(1-e*e),i=2/(Math.PI*.147)+t/2;return Math.sign(e)*Math.sqrt(Math.sqrt(i*i-t/.147)-i)}function Pp(e){if(Number.isNaN(e)||e<-1||e>1)return NaN;if(e===0)return 0;if(e===1)return 1/0;if(e===-1)return-1/0;let n=e<0?-1:1,t=Math.abs(e),i=hy(t),r=Math.sqrt(Math.PI)/2,o=1-t,s=t>.9;for(let a=0;a<5;a++){let u=s?o-Nt(i):Tt(i)-t;i-=u*r*Math.exp(i*i)}return n*i}function Nt(e){if(Number.isNaN(e))return NaN;if(!Number.isFinite(e))return e>0?0:2;if(e<0)return 2-Nt(-e);if(e<2)return 1-Tt(e);let n=1e-300,t=e===0?n:e,i=t,r=0;for(let o=1;o<=500;o++){let s=o/2;r=e+s*r,r===0&&(r=n),r=1/r,i=e+s/i,i===0&&(i=n);let a=i*r;if(t*=a,Math.abs(a-1)<1e-17)break}return Math.exp(-e*e)/(Math.sqrt(Math.PI)*t)}function Tt(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1:-1;let n=e<0?-1:1,t=Math.abs(e);if(t>=6)return n;let i=t*t,r=t,o=t;for(let s=1;s<200&&(r*=2*i/(2*s+1),o+=r,!(r<o*1e-18));s++);return n*(2/Math.sqrt(Math.PI))*Math.exp(-i)*o}var Io=.5772156649015329,Gn=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function Mo(e){if(!isFinite(e))return NaN;if(e<0)return Number.isInteger(e)?NaN:Mo(1-e)-Math.PI/Math.tan(Math.PI*e);if(e===0)return NaN;let n=0,t=e;for(;t<7;)n-=1/t,t+=1;n+=Math.log(t)-1/(2*t);let i=t*t;for(let r=0;r<Gn.length;r++)n-=Gn[r]/(2*(r+1)*i),i*=t*t;return n}function ko(e){if(!isFinite(e))return NaN;if(e<0){if(Number.isInteger(e))return NaN;let r=Math.sin(Math.PI*e);return Math.PI*Math.PI/(r*r)-ko(1-e)}if(e===0)return NaN;let n=0,t=e;for(;t<7;)n+=1/(t*t),t+=1;n+=1/t+1/(2*t*t);let i=t*t*t;for(let r=0;r<Gn.length;r++)n+=Gn[r]/i,i*=t*t;return n}function Dp(e,n){if(!Number.isInteger(e)||e<0)return NaN;if(e===0)return Mo(n);if(e===1)return ko(n);if(!isFinite(n)||n===0)return NaN;if(n<0&&Number.isInteger(n))return NaN;let t=0,i=n,r=Pa(e),o=e%2===0?-1:1,s=e+10;for(;i<s;)t+=o*r/Math.pow(i,e+1),i+=1;let a=e%2===0?-1:1;t+=a*Pa(e-1)/Math.pow(i,e),t+=a*r/(2*Math.pow(i,e+1));let u=r*(e+1)/(2*Math.pow(i,e+2)),l=1/0;for(let c=1;c<=Gn.length;c++){let f=Gn[c-1]*u;if(Math.abs(f)>=l)break;t+=a*f,l=Math.abs(f);let d=2*c;u*=(d+e)*(d+e+1)/((d+1)*(d+2)*i*i)}return t}function Pa(e){if(e<=1)return 1;let n=1;for(let t=2;t<=e;t++)n*=t;return n}function Fp(e,n){return e>100||n>100||e+n>100?Math.exp(we(e)+we(n)-we(e+n)):ue(e)*ue(n)/ue(e+n)}function Da(e){if(!isFinite(e))return NaN;if(e===1)return 1/0;if(e===0)return-.5;if(e===2)return Math.PI*Math.PI/6;if(e===4)return Math.PI**4/90;if(e===6)return Math.PI**6/945;if(e===8)return Math.PI**8/9450;if(e<0&&Number.isInteger(e)){if(e%2===0)return 0;let o=1-e;if(o/2<=Gn.length)return-Gn[o/2-1]/o}if(e<0)return Math.pow(2,e)*Math.pow(Math.PI,e-1)*Math.sin(Math.PI*e/2)*ue(1-e)*Da(1-e);if(e>=12){let o=1;for(let s=2;s<=128;s++){let a=Math.pow(s,-e);if(o+=a,a<o*1e-18)break}return o}let[n,t]=gy(),i=0,r=0;for(let o=0;o<Op;o++){let a=(o%2===0?n[o]:-n[o])*Math.pow(o+1,-e)-r,u=i+a;r=u-i-a,i=u}return i/t/-Math.expm1((1-e)*Math.LN2)}var Op=28,vo=null;function gy(){if(vo)return vo;let e=Op,n=1n<<64n,t=n,i=n,r=[i];for(let u=0;u<e;u++)t=t*BigInt(4*(e+u)*(e-u))/BigInt((2*u+1)*(2*u+2)),i+=t,r.push(i);let o=r[e],s=Math.pow(2,64),a=[];for(let u=0;u<e;u++)a.push(Number(o-r[u])/s);return vo=[a,Number(o)/s],vo}function wp(e,n){for(let t=0;t<30;t++){let i=Math.exp(e),o=e*i-n,s=i*(e+1),a=i*(e+2),u=o/(s-o*a/(2*s));if(e-=u,Math.abs(u)<1e-15*(1+Math.abs(e)))break}return e}function Bp(e,n=0){if(!isFinite(e))return e;let t=1/Math.E;if(n===0){if(e===0)return 0;if(e<-t)return NaN;if(Math.abs(e+t)<1e-15)return-1;let i;if(e<0){let r=Math.sqrt(2*(Math.E*e+1));i=-1+r-r*r/3+11/72*r*r*r}else if(e<=1)i=e*(1-e*(1-1.5*e));else if(e<100){let r=Math.log(e);i=r-Math.log(r)}else{let r=Math.log(e),o=Math.log(r);i=r-o+o/r}return wp(i,e)}if(n===-1){if(e<-t||e>=0)return NaN;if(Math.abs(e+t)<1e-15)return-1;let i;if(e<-.27){let r=Math.sqrt(2*(Math.E*e+1));i=-1-r-r*r/3-11/72*r*r*r}else{let r=Math.log(-e);i=r-Math.log(-r)}return wp(i,e)}return NaN}function jn(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:e<0?(e=-e,e%2===0?jn(e,n):-jn(e,n)):n<0?e%2===0?jn(e,-n):-jn(e,-n):n>25+e*e/2?yy(e,n):n<5+e?by(e,n):xy(e,n)}function by(e,n){let t=n/2,i=-(n*n)/4,r=1;for(let s=1;s<=e;s++)r/=s;let o=r;for(let s=1;s<=60&&(r*=i/(s*(e+s)),o+=r,!(Math.abs(r)<Math.abs(o)*1e-16));s++);return o*Math.pow(t,e)}function Lp(e,n){let t=4*e*e,i=1,r=0,o=1,s=8*n;for(let a=1;a<=20;a++){o*=t-(2*a-1)*(2*a-1);let u=Pa(a)*Math.pow(s,a),l=o/u;if(a%2===1?r+=(a%4===1?1:-1)*l:i+=(a%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[i,r]}function yy(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=Lp(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.cos(t)-r*Math.sin(t))}function xy(e,n){let t=Math.max(e+20,Math.ceil(n)+30),i=0,r=1,o=new Array(t+1);o[t]=r;for(let u=t;u>=1;u--){let l=2*u/n*r-i;i=r,r=l,o[u-1]=r}let s=o[0];for(let u=2;u<=t;u+=2)s+=2*o[u];let a=1/s;return o[e]*a}function So(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;if(e<0)return e=-e,e%2===0?So(e,n):-So(e,n);if(n>12+e*e/4)return Ny(e,n);let t=Ey(n);if(e===0)return t;let i=vy(n);if(e===1)return i;let r=t,o=i;for(let s=1;s<e;s++){let a=2*s/n*o-r;r=o,o=a}return o}function Ey(e){let n=e/2,t=n*n,i=jn(0,e),r=0,o=1,s=0;for(let a=1;a<=60&&(s+=1/a,o*=-t/(a*a),r-=o*s,!(Math.abs(o*s)<Math.abs(r)*1e-16));a++);return 2/Math.PI*(i*(Math.log(n)+Io)+r)}function vy(e){let n=e/2,t=n*n,i=jn(1,e),r=0,o=1,s=1;for(let a=0;a<=60;a++){a>0&&(s*=a,o*=t);let u=s*(a+1),l=0;for(let b=1;b<=a;b++)l+=1/b;let c=l+1/(a+1),f=-Io+l,d=-Io+c,h=(a%2===0?1:-1)*(f+d)*o/(s*u);if(r+=h,a>3&&Math.abs(h)<1e-16*Math.abs(r))break}return-2/(Math.PI*e)+2/Math.PI*Math.log(n)*i-n/Math.PI*r}function Ny(e,n){let t=n-(e/2+.25)*Math.PI,[i,r]=Lp(e,n);return Math.sqrt(2/(Math.PI*n))*(i*Math.sin(t)+r*Math.cos(t))}function vt(e,n){return!isFinite(n)||!Number.isInteger(e)?NaN:n===0?e===0?1:0:(e<0&&(e=-e),n<0?e%2===0?vt(e,-n):-vt(e,-n):n>20&&n>=e*e?_y(e,n):Ty(e,n))}function Ty(e,n){let t=n/2,i=n*n/4,r=1;for(let a=1;a<=e;a++)r/=a;let o=r,s=0;for(let a=1;a<=500;a++){r*=i/(a*(e+a));let u=r-s,l=o+u;if(s=l-o-u,o=l,Math.abs(r)<Math.abs(o)*1e-17)break}return o*Math.pow(t,e)}function _y(e,n){let t=4*e*e,i=1,r=1,o=1/0;for(let s=1;s<=40;s++){let a=t-(2*s-1)*(2*s-1);if(i*=-a/(s*8*n),Math.abs(i)>=o||(r+=i,o=Math.abs(i),Math.abs(i)<1e-17*Math.abs(r)))break}return Math.exp(n)/Math.sqrt(2*Math.PI*n)*r}function Vp(e,n){if(!isFinite(n)||!Number.isInteger(e))return NaN;if(n<=0)return NaN;e<0&&(e=-e);let t,i;if(n>=20){if(t=Mp(0,n),e===0)return t;i=Mp(1,n)}else if(n>=1.5){if([t,i]=Iy(n),e===0)return t}else{if(t=qp(n),e===0)return t;i=Sy(n)}if(e===1)return i;let r=t,o=i;for(let s=1;s<e;s++){let a=2*s/n*o+r;r=o,o=a}return o}function Iy(e){let t=2*(1+e),i=1/t,r=i,o=i,s=0,a=1,u=-.25,l=.25,c=.25,f=1+c*o,d=0,p=0;for(let y=2;y<=1e4;y++){u-=2*(y-1),l=-u*l/y;let v=(s-t*a)/u;s=a,a=v,c+=l*v,t+=2,i=1/(t+u*i),o=(t*i-1)*o;let T=o-p,_=r+T;p=_-r-T,r=_;let A=c*o;if(T=A-d,_=f+T,d=_-f-T,f=_,Math.abs(A)<1e-18*Math.abs(f))break}r=.25*r;let h=Math.sqrt(Math.PI/(2*e))*Math.exp(-e)/f,b=h*(e+.5-r)/e;return[h,b]}function qp(e){let n=e/2,t=n*n,i=vt(0,e),r=0,o=1,s=0;for(let a=1;a<=60&&(s+=1/a,o*=t/(a*a),r+=o*s,!(Math.abs(o*s)<Math.abs(r)*1e-16&&a>3));a++);return-(Math.log(n)+Io)*i+r}function Sy(e){let n=vt(0,e),t=vt(1,e),i=qp(e);return(1/e-t*i)/n}function Mp(e,n){let t=4*e*e,i=1,r=1,o=1/0;for(let s=1;s<=40;s++){let a=t-(2*s-1)*(2*s-1);if(i*=a/(s*8*n),Math.abs(i)>=o||(r+=i,o=Math.abs(i),Math.abs(i)<1e-17*Math.abs(r)))break}return Math.sqrt(Math.PI/(2*n))*Math.exp(-n)*r}var kp=134217729;function Ap(e,n){let t=e+n,i=t-e;return[t,e-(t-i)+(n-i)]}function Yt(e,n){let t=e+n;return[t,n-(t-e)]}function Wt(e,n){let t=e*n,i=kp*e,r=i-(i-e),o=e-r,s=kp*n,a=s-(s-n),u=n-a;return[t,r*a-t+r*u+o*a+o*u]}function nn(e,n){let[t,i]=Ap(e[0],n[0]),[r,o]=Ap(e[1],n[1]),[s,a]=Yt(t,i+r);return Yt(s,a+o)}function Ao(e){return[-e[0],-e[1]]}function De(e,n){let[t,i]=Wt(e[0],n[0]);return Yt(t,i+e[0]*n[1]+e[1]*n[0])}function wo(e,n){let[t,i]=Wt(e[0],n);return Yt(t,i+e[1]*n)}function Ht(e,n){let t=e[0]/n,[i,r]=Wt(t,n),o=nn(e,[-i,-r]);return Yt(t,(o[0]+o[1])/n)}function wy(e){let n=Math.sqrt(e),[t,i]=Wt(n,n);return Yt(n,(e-t-i)/(2*n))}var Co=[.3550280538878172,205233632436212e-31],$o=[.2588194037928068,-2522243111610832e-32],Jp=[1.7320508075688772,10035084221806903e-32],zp=[.7853981633974483,3061616997868383e-32];function jp(e){let n=wo(Wt(e,e),e),t=[1,0],i=[e,0],r=[1,0],o=[e,0];for(let s=1;s<=200;s++){let a=3*s;if(r=Ht(De(r,n),(a-1)*a),o=Ht(De(o,n),a*(a+1)),t=nn(t,r),i=nn(i,o),Math.abs(r[0])+Math.abs(o[0])<1e-34*(Math.abs(t[0])+Math.abs(i[0])))break}return[t,i]}function Xt(e){let n=wo(wy(e),e);return Ht(wo(n,2),3)}function Kt(e){return(6*e-5)*(6*e-3)*(6*e-1)/(216*e*(2*e-1))}function Gp(e){let n=Xt(e),t=n[0],i=nn(n,Ao(zp)),r=Math.cos(i[0]),o=Math.sin(i[0]),s=r-o*i[1],a=o+r*i[1],u=1,l=0,c=1,f=1/0;for(let p=1;p<=60;p++){c*=Kt(p)/t;let h=Math.abs(c);if(h>=f)break;f=h;let b=p%4===0||p%4===1?c:-c;if(p%2===0?u+=b:l+=b,h<1e-18)break}let d=1/(Math.sqrt(Math.PI)*Math.pow(e,.25));return[u,l,s,a,d]}function Up(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 0;let o=1,s=1,a=1/0;for(let l=1;l<=60&&(s*=Kt(l)/r,!(s>=a||(o+=l%2===0?s:-s,a=s,s<1e-18*o)));l++);return Math.exp(-r)*(1-i[1])/(2*Math.sqrt(Math.PI)*Math.pow(e,.25))*o}if(e<-9){let[i,r,o,s,a]=Gp(-e);return a*(o*i+s*r)}let[n,t]=jp(e);return nn(De(Co,n),Ao(De($o,t)))[0]}function Hp(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 1/0;let o=1,s=1,a=1/0;for(let l=1;l<=60&&(s*=Kt(l)/r,!(s>=a||(o+=s,a=s,s<1e-18*o)));l++);return Math.exp(r)*(1+i[1])/(Math.sqrt(Math.PI)*Math.pow(e,.25))*o}if(e<-9){let[i,r,o,s,a]=Gp(-e);return a*(-s*i+o*r)}let[n,t]=jp(e);return De(Jp,nn(De(Co,n),De($o,t)))[0]}function Zp(e){let n=Wt(e,e),t=wo(n,e),i=Ht(n,2),r=[1,0],o=i,s=r;for(let a=1;a<=200;a++){let u=3*a;if(i=Ht(De(i,t),u*(u+2)),r=Ht(De(r,t),(u-2)*u),o=nn(o,i),s=nn(s,r),Math.abs(i[0])+Math.abs(r[0])<1e-34*(Math.abs(o[0])+Math.abs(s[0])))break}return[o,s]}function Yp(e){let n=Xt(e),t=n[0],i=nn(n,Ao(zp)),r=Math.cos(i[0]),o=Math.sin(i[0]),s=r-o*i[1],a=o+r*i[1],u=1,l=0,c=1,f=1/0;for(let p=1;p<=60;p++){c*=Kt(p)/t;let h=c*(6*p+1)/(1-6*p),b=Math.abs(h);if(b>=f)break;f=b;let y=p%4===0||p%4===1?h:-h;if(p%2===0?u+=y:l+=y,b<1e-18)break}let d=Math.pow(e,.25)/Math.sqrt(Math.PI);return[u,l,s,a,d]}function Wp(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 0;let o=1,s=1,a=1/0;for(let l=1;l<=60;l++){s*=Kt(l)/r;let c=s*(6*l+1)/(1-6*l),f=Math.abs(c);if(f>=a||(o+=l%2===0?c:-c,a=f,f<1e-18*Math.abs(o)))break}return-(Math.exp(-r)*(1-i[1])*Math.pow(e,.25))/(2*Math.sqrt(Math.PI))*o}if(e<-9){let[i,r,o,s,a]=Yp(-e);return a*(s*i-o*r)}let[n,t]=Zp(e);return nn(De(Co,n),Ao(De($o,t)))[0]}function Xp(e){if(!isFinite(e))return NaN;if(e>9){let i=Xt(e),r=i[0];if(!Number.isFinite(r))return 1/0;let o=1,s=1,a=1/0;for(let l=1;l<=60;l++){s*=Kt(l)/r;let c=s*(6*l+1)/(1-6*l),f=Math.abs(c);if(f>=a||(o+=c,a=f,f<1e-18*Math.abs(o)))break}return Math.exp(r)*(1+i[1])*Math.pow(e,.25)/Math.sqrt(Math.PI)*o}if(e<-9){let[i,r,o,s,a]=Yp(-e);return a*(o*i+s*r)}let[n,t]=Zp(e);return De(Jp,nn(De(Co,n),De($o,t)))[0]}var My=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],ky=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Ay=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Cy=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],Kp=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],Qp=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],em=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],nm=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function He(e,n){let t=n[0];for(let i=1;i<n.length;i++)t=t*e+n[i];return t}var tm=6e15;function im(e){let t=134217729*e,i=t-(t-e),r=e-i,o=i*i%4+2*(i*r%2)+r*r%4;return o%=4,o<0&&(o+=4),Math.PI/2*o}function Un(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*t*He(i,My)/He(i,ky)}if(e<tm){let t=e*e,i=Math.PI*t,r=1/(i*i),o=1-r*He(r,Kp)/He(r,Qp),s=1/i*He(r,em)/He(r,nm),a=im(e),u=Math.cos(a),l=Math.sin(a);return n*(.5-(o*u+s*l)/(Math.PI*e))}return n*.5}function Hn(e){if(!isFinite(e))return e!==e?NaN:e>0?.5:-.5;let n=e<0?-1:1;if(e=Math.abs(e),e<1.6){let t=e*e,i=t*t;return n*e*He(i,Ay)/He(i,Cy)}if(e<tm){let t=e*e,i=Math.PI*t,r=1/(i*i),o=1-r*He(r,Kp)/He(r,Qp),s=1/i*He(r,em)/He(r,nm),a=im(e),u=Math.cos(a),l=Math.sin(a);return n*(.5+(o*l-s*u)/(Math.PI*e))}return n*.5}function rm(e){return e===0?1:Math.sin(e)/e}function om(e){if(Number.isNaN(e))return NaN;if(e===0)return 0;if(!Number.isFinite(e))return e>0?1/0:-1/0;let n=e<0?-1:1,t=Math.abs(e),i=t*t,r=t,o=t;for(let s=1;s<1e3&&(r*=i*(2*s-1)/(s*(2*s+1)),o+=r,!(r<o*1e-18));s++);return n*(2/Math.sqrt(Math.PI))*o}var Fa=.5772156649015329;function sm(e){let r=Math.abs(e);if(r===0)return{si:0,ci:-1/0};if(!Number.isFinite(r))return{si:e>0?Math.PI/2:-Math.PI/2,ci:0};let o,s;if(r>2){let a=1,u=r,l=1e30,c=0,f=a*a+u*u,d=a/f,p=-u/f,h=d,b=p;for(let A=1;A<100;A++){let k=-A*A;a+=2;let O=k*d+a,j=k*p+u;f=O*O+j*j,d=O/f,p=-j/f,f=l*l+c*c,l=a+k*l/f,c=u-k*c/f;let G=l*d-c*p,re=l*p+c*d;if(O=h*G-b*re,j=h*re+b*G,h=O,b=j,Math.abs(G-1)+Math.abs(re)<=1e-16)break}let y=Math.cos(r),v=Math.sin(r),T=y*h+v*b,_=y*b-v*h;s=-T,o=Math.PI/2+_}else{let a=0,u=0,l=0,c=1,f=1,d=!0;for(let p=1;p<=100;p++){f*=r/p;let h=f/p;a+=c*h;let b=h/Math.abs(a);if(d?(c=-c,u=a,a=l):(l=a,a=u),b<1e-16)break;d=!d}o=u,s=l+Math.log(r)+Fa}return e<0&&(o=-o),{si:o,ci:s}}function am(e){return Number.isNaN(e)?NaN:sm(e).si}function um(e){return Number.isNaN(e)?NaN:sm(e).ci}function $y(e){if(e<=0)return NaN;if(e<=1){let u=-Math.log(e)-Fa,l=1;for(let c=1;c<=200;c++){l*=-e/c;let f=-l/c;if(u+=f,Math.abs(f)<Math.abs(u)*1e-16)break}return u}let i=1e30,r=e+1,o=i,s=1/r,a=s;for(let u=1;u<=200;u++){let l=-u*u;r+=2,s=1/(l*s+r),o=r+l/o;let c=o*s;if(a*=c,Math.abs(c-1)<=1e-16)break}return a*Math.exp(-e)}function Oa(e){if(Number.isNaN(e))return NaN;if(e===0)return-1/0;if(!Number.isFinite(e))return e>0?1/0:0;if(e<0)return-$y(-e);let n=1e-16,t=200,i=-Math.log(n);if(e<=i){let s=0,a=1;for(let u=1;u<=t;u++){a*=e/u;let l=a/u;if(s+=l,l<n*s)break}return s+Math.log(e)+Fa}let r=0,o=1;for(let s=1;s<=t;s++){let a=o;if(o*=s/e,o<n)break;if(o<a)r+=o;else{r-=a;break}}return Math.exp(e)*(1+r)/e}function lm(e){return Number.isNaN(e)?NaN:e===0?0:e===1?-1/0:e<0?NaN:Oa(Math.log(e))}function Ba(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(e<0||n<0)return NaN;if(e===0||n===0)return 0;if(!isFinite(e)||!isFinite(n))return 1/0;for(let t=0;t<64&&Math.abs(e-n)>1e-17*Math.abs(e);t++){let i=.5*(e+n);n=Math.sqrt(e*n),e=i}return .5*(e+n)}function La(e){return Number.isNaN(e)?NaN:e===1?1/0:e>1?NaN:Math.PI/(2*Ba(1,Math.sqrt(1-e)))}function Va(e){if(Number.isNaN(e))return NaN;if(e===1)return 1;if(e>1)return NaN;let n=1,t=Math.sqrt(1-e),i=.5*e,r=.5;for(let s=0;s<64&&Math.abs(n-t)>1e-17*n;s++){let a=.5*(n-t),u=.5*(n+t);t=Math.sqrt(n*t),n=u,r*=2,i+=r*a*a}return Math.PI/(2*n)*(1-i)}var cm=1e-24;function Zt(e,n){if(Number.isNaN(e)||Number.isNaN(n)||e<0)return NaN;if(n===0)return 1/0;if(e===0)return Math.PI/(2*Math.sqrt(n));if(n<0)return Math.sqrt(e/(e-n))*Zt(e-n,-n);if(e===n)return 1/Math.sqrt(e);let t=(n-e)/e;if(Math.abs(t)<.01){let r=0,o=1;for(let s=0;s<10;s++)r+=o/(2*s+1),o*=-t;return r/Math.sqrt(e)}let i=Math.sqrt(e/n);return e<n?Math.acos(i)/Math.sqrt(n-e):Math.acosh(i)/Math.sqrt(e-n)}function Ki(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(e<0||n<0||t<0)return NaN;if((e===0?1:0)+(n===0?1:0)+(t===0?1:0)>1)return 1/0;if(n===t)return Zt(e,n);if(e===t)return Zt(n,e);if(e===n)return Zt(t,e);let i=(e+n+t)/3,r=Math.pow(3*cm,-1/6)*Math.max(Math.abs(i-e),Math.abs(i-n),Math.abs(i-t)),[o,s,a]=[e,n,t],u=i,l=1;for(let y=0;y<64&&l*r>=Math.abs(u);y++){let v=Math.sqrt(o),T=Math.sqrt(s),_=Math.sqrt(a),A=v*T+v*_+T*_;u=(u+A)/4,o=(o+A)/4,s=(s+A)/4,a=(a+A)/4,l/=4}let c=l/u,f=(i-e)*c,d=(i-n)*c,p=-f-d,h=f*d-p*p,b=f*d*p;return Math.pow(u,-.5)*(9240-924*h+385*h*h+660*b-630*h*b)/9240}function Ro(e,n,t,i){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t)||Number.isNaN(i))return NaN;if(e<0||n<0||t<0)return NaN;if(i===0||(e===0?1:0)+(n===0?1:0)+(t===0?1:0)>1)return 1/0;if(i<0){let[G,re,oe]=[e,n,t].sort((ke,Xn)=>ke-Xn),Ee=-i,ie=(oe*(G+re+Ee)-G*re)/(oe+Ee),ae=(ie-oe)*Ro(G,re,oe,ie);return ae-=3*Ki(G,re,oe),ae+=3*Math.sqrt(G*re*oe/(G*re+ie*Ee))*Zt(G*re+ie*Ee,ie*Ee),ae/(oe+Ee)}let r=(e+n+t+2*i)/5,o=(i-e)*(i-n)*(i-t),s=Math.pow(.25*cm,-1/6)*Math.max(Math.abs(r-e),Math.abs(r-n),Math.abs(r-t),Math.abs(r-i)),[a,u,l,c]=[e,n,t,i],f=r,d=1,p=0;for(let G=0;G<64;G++){let re=Math.sqrt(a),oe=Math.sqrt(u),Ee=Math.sqrt(l),ie=Math.sqrt(c),ae=re*oe+re*Ee+oe*Ee,ke=(f+ae)/4;a=(a+ae)/4,u=(u+ae)/4,l=(l+ae)/4,c=(c+ae)/4;let Xn=(ie+re)*(ie+oe)*(ie+Ee),ns=o*d*d*d/(Xn*Xn);if(d*s<Math.abs(f))break;p+=Zt(1,1+ns)*d/Xn,d/=4,f=ke}let h=d/f,b=(r-e)*h,y=(r-n)*h,v=(r-t)*h,T=(-b-y-v)/2,_=b*y+b*v+y*v-3*T*T,A=b*y*v+2*_*T+4*T*T*T,k=(2*b*y*v+_*T+3*T*T*T)*T,O=b*y*v*T*T,j=(24024-5148*_+2457*_*_+4004*A-4158*_*A-3276*k+2772*O)/24024;return d*Math.pow(f,-1.5)*j+6*p}function Ry(e,n,t){return Ro(e,n,t,t)}function qa(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(Math.abs(e)>Math.PI/2){let o=Math.round(e/Math.PI),s=La(n);return Number.isFinite(s)?2*o*s+qa(e-o*Math.PI,n):NaN}let t=Math.sin(e),i=1-n*t*t;if(i<0)return NaN;let r=Math.cos(e);return t*Ki(r*r,i,1)}function Ja(e,n){if(Number.isNaN(e)||Number.isNaN(n))return NaN;if(Math.abs(e)>Math.PI/2){let s=Math.round(e/Math.PI),a=Va(n);return Number.isFinite(a)?2*s*a+Ja(e-s*Math.PI,n):NaN}let t=Math.sin(e),i=1-n*t*t;if(i<0)return NaN;let r=Math.cos(e),o=t*t*t;return t*Ki(r*r,i,1)-n/3*o*Ry(r*r,i,1)}function za(e,n){return Number.isNaN(e)||Number.isNaN(n)?NaN:e===1||n===1?1/0:n>1?NaN:Ki(0,1-n,1)+e/3*Ro(0,1-n,1,1-e)}function ja(e,n,t){if(Number.isNaN(e)||Number.isNaN(n)||Number.isNaN(t))return NaN;if(Math.abs(n)>Math.PI/2){let u=Math.round(n/Math.PI),l=za(e,t);return Number.isFinite(l)?2*u*l+ja(e,n-u*Math.PI,t):NaN}let i=Math.sin(n),r=1-t*i*i;if(r<0)return NaN;let o=Math.cos(n),s=i*i*i,a=1-e*i*i;return a===0?1/0:i*Ki(o*o,r,1)+e/3*s*Ro(o*o,r,1,a)}function Xi(e){return Number.isInteger(e)&&e<=0}function Wi(e,n,t,i,r=1e4){let o=1,s=1;for(let a=0;a<r;a++)if(o*=(e+a)*(n+a)*i/((t+a)*(a+1)),o===0||(s+=o,a>2&&Math.abs(o)<=Number.EPSILON*Math.abs(s)))return s;return s}function Ga(e,n,t,i){if([e,n,t,i].some(Number.isNaN))return NaN;let r=Xi(e)?-e:1/0,o=Xi(n)?-n:1/0,s=Math.min(r,o);if(Xi(t)&&(s===1/0||s>-t))return NaN;if(s!==1/0)return Wi(e,n,t,i,s+1);if(i===0)return 1;if(i===1){let c=t-e-n;return c<=0?c===0?1/0:NaN:ue(t)*ue(c)/(ue(t-e)*ue(t-n))}if(i>1)return NaN;if(i<0)return Math.pow(1-i,-e)*Ga(e,t-n,t,i/(i-1));if(i<=.5)return Wi(e,n,t,i);let a=t-e-n;if(Number.isInteger(a)){if(i<1){let c=Math.ceil(17/-Math.log10(i));if(c<=4e5)return Wi(e,n,t,i,c+10)}return NaN}let u=ue(t)*ue(a)/(ue(t-e)*ue(t-n))*Wi(e,n,1-a,1-i),l=ue(t)*ue(-a)/(ue(e)*ue(n))*Math.pow(1-i,a)*Wi(t-e,t-n,1+a,1-i);return u+l}function Cp(e,n,t,i=2e4){let r=1,o=1;for(let s=0;s<i;s++)if(r*=(e+s)*t/((n+s)*(s+1)),r===0||(o+=r,s>2&&Math.abs(r)<=Number.EPSILON*Math.abs(o)))return o;return o}function Ua(e,n,t){if([e,n,t].some(Number.isNaN))return NaN;let i=Xi(e)?-e:1/0;return Xi(n)&&(i===1/0||i>-n)?NaN:i!==1/0?Cp(e,n,t,i+1):t<0?Math.exp(t)*Ua(n-e,n,-t):Cp(e,n,t)}var MM=new pe("matrix"),kM=new pe("vector");var Qi=[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1],[1,6,15,20,15,6,1],[1,7,21,35,35,21,7,1],[1,8,28,56,70,56,28,8,1]];function er(e,n){for(;e>=Qi.length;){let t=Qi.length,i=[1],r=Qi[t-1];for(let o=1;o<t;o++)i[o]=r[o-1]+r[o];i[t]=1,Qi.push(i)}return Qi[e][n]}function fm(e){let n=0,t=0;for(let i of e)n+=i,t++;return t===0?NaN:n/t}function nr(e){let n=[...e].sort((i,r)=>i-r),t=Math.floor(n.length/2);return n.length%2===0?(n[t-1]+n[t])/2:n[t]}function Ha(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/(i-1)}function Za(e){let n=0,t=0,i=0;for(let r of e)n+=r,t+=r*r,i++;return i===0?NaN:(t-n*n/i)/i}function dm(e){return Math.sqrt(Ha(e))}function pm(e){return Math.sqrt(Za(e))}function mm(e){let n=0,t=0,i=0,r=0,o=0;for(let c of e){let f=c;if(!Number.isFinite(f))return NaN;n+=f,t+=f*f,i+=f*f*f,r+=f*f*f*f,o++}if(o===0)return NaN;let s=o,a=n/s,u=(t-n*n/s)/s;return(r-4*a*i+6*a*a*t-4*a*a*a*n+s*a*a*a*a)/s/(u*u)}function hm(e){let n=0,t=0,i=0,r=0;for(let l of e){let c=l;if(!Number.isFinite(c))return NaN;n+=c,t+=c*c,i+=c*c*c,r++}if(r===0)return NaN;let o=r,s=n/o,a=(t-n*n/o)/o;return(i-3*s*t+3*s*s*n-o*s*s*s)/o/Math.pow(a,3/2)}function gm(e){let n={};for(let r of e)n[r]=(n[r]??0)+1;let t=0,i=NaN;for(let r in n){let o=n[r];o>t&&(t=o,i=+r)}return i}function Ya(e){let n=[...e].sort((u,l)=>u-l),t=n.length,i=Math.floor(t/2),r=i+t%2,o=nr(n.slice(0,i)),s=nr(n),a=nr(n.slice(r));return[o,s,a]}function bm(e,n,t){let i=[...e],r=[...n],o=i.length;if(o!==r.length||o<2)return NaN;let s=0,a=0,u=0;for(let l=0;l<o;l++)s+=i[l],a+=r[l],u+=i[l]*r[l];return(u-s*a/o)/(t?o:o-1)}function ym(e,n){return bm(e,n,!1)}function xm(e,n){return bm(e,n,!0)}function Em(e,n){let t=[...e],i=[...n],r=t.length;if(r!==i.length||r<2)return NaN;let o=0,s=0,a=0,u=0,l=0;for(let h=0;h<r;h++)o+=t[h],s+=i[h],a+=t[h]*i[h],u+=t[h]*t[h],l+=i[h]*i[h];let c=a-o*s/r,f=u-o*o/r,d=l-s*s/r,p=Math.sqrt(f*d);return p===0?NaN:c/p}function vm(e){let[n,,t]=Ya(e);return t-n}function Gy(e,n){if(n===0)return{estimate:e,error:n};let t=Math.abs(n),i=Math.floor(Math.log10(t)),r=2,o=Math.pow(10,i-(r-1)),s=Math.round(n/o)*o,a=Math.max(0,-(i-(r-1)));return{estimate:Number(e.toFixed(a)),error:s}}function Wa(e,n,t,i=1e5,r){r??=It();let o;n===-1/0&&t===1/0?o=()=>{let y=Math.random(),v=Math.tan(Math.PI*(y-.5));return e(v)*Math.PI*(1+v*v)}:n===-1/0?o=()=>{let y=Math.random();return e(t+Math.log(y))/y}:t===1/0?o=()=>{let y=Math.random();return e(n-Math.log(y))/y}:o=()=>e(n+Math.random()*(t-n));let s=0,a=0,u=0;dr(r,()=>{for(let y=0;y<i;y++){if((y&63)===0&&r!==void 0&&Date.now()>=r){y===0&&rn(r);break}let v;try{v=o()}catch(T){if(T instanceof Le&&u>0)break;throw T}s+=v,a+=v*v,u++}});let l=s/u,c=(a-u*l*l)/(u-1),f=Math.sqrt(c/u),d=isFinite(n)&&isFinite(t)?t-n:1,p=l*d,h=f*d;return Gy(p,h)}var Nm=[.9914553711208126,.9491079123427585,.8648644233597691,.7415311855993945,.5860872354676911,.4058451513773972,.2077849550078985,0],tr=[.0229353220105292,.0630920926299786,.1047900103222502,.1406532597155259,.1690047266392679,.1903505780647854,.2044329400752989,.2094821410847278],Tm=[.1294849661688697,.2797053914892767,.3818300505051189,.4179591836734694];function Xa(e,n,t){let i=.5*(n+t),r=.5*(t-n),o=Math.abs(r),s=e(i),a=Tm[3]*s,u=tr[7]*s,l=new Array(7),c=new Array(7);for(let b=0;b<3;b++){let y=2*b+1,v=r*Nm[y],T=e(i-v),_=e(i+v);l[y]=T,c[y]=_;let A=T+_;a+=Tm[b]*A,u+=tr[y]*A}for(let b=0;b<4;b++){let y=2*b,v=r*Nm[y],T=e(i-v),_=e(i+v);l[y]=T,c[y]=_,u+=tr[y]*(T+_)}let f=u*r,d=u*.5,p=tr[7]*Math.abs(s-d);for(let b=0;b<7;b++)p+=tr[b]*(Math.abs(l[b]-d)+Math.abs(c[b]-d));p*=o;let h=Math.abs((u-a)*r);return p!==0&&h!==0&&(h=p*Math.min(1,Math.pow(200*h/p,1.5))),{a:n,b:t,value:f,error:h}}function _m(e){return Number.isFinite(e)?e:Number.POSITIVE_INFINITY}function Ka(e){return!Number.isFinite(e.value)||!Number.isFinite(e.error)}function Uy(e,n,t,i,r,o){let s=Xa(e,n,t),a=[s],u=Number.isFinite(s.value)?s.value:0,l=Number.isFinite(s.error)?s.error:0,c=Ka(s)?1:0,f=!1,d=()=>Math.max(r,i*Math.abs(u)),p=y=>{Number.isFinite(y.value)&&(u+=y.value),Number.isFinite(y.error)&&(l+=y.error),Ka(y)&&(c+=1)},h=y=>{Number.isFinite(y.value)&&(u-=y.value),Number.isFinite(y.error)&&(l-=y.error),Ka(y)&&(c-=1)};for(;a.length<o&&!(c===0&&l<=d());){let y=0;for(let k=1;k<a.length;k++)_m(a[k].error)>_m(a[y].error)&&(y=k);let v=a[y],T=.5*(v.a+v.b);if(T<=v.a||T>=v.b){f=!0;break}let _=Xa(e,v.a,T),A=Xa(e,T,v.b);h(v),p(_),p(A),a[y]=_,a.push(A)}let b=!f&&c===0&&Number.isFinite(u)&&Number.isFinite(l)&&l<=d();return{estimate:u,error:l,converged:b}}function ir(e,n,t,i){let r=i?.rtol??1e-10,o=i?.atol??1e-12,s=i?.maxIntervals??1500;if(Number.isNaN(n)||Number.isNaN(t))return{estimate:NaN,error:NaN,converged:!1};if(n===t)return{estimate:0,error:0,converged:!0};if(n>t){let d=ir(e,t,n,i);return{estimate:-d.estimate,error:d.error,converged:d.converged}}let a=!Number.isFinite(n),u=!Number.isFinite(t),l,c,f;if(a&&u){let d={rtol:r,atol:o,maxIntervals:Math.ceil(s/2)},p=ir(e,n,0,d),h=ir(e,0,t,d),b=p.estimate+h.estimate,y=p.error+h.error,v=Math.abs(p.estimate)+Math.abs(h.estimate),T=p.converged&&h.converged&&Number.isFinite(b)&&y<=Math.max(o,r*v);return{estimate:b,error:y,converged:T}}else u?(l=d=>{let p=1-d;return e(n+d/p)/(p*p)},c=0,f=1):a?(l=d=>{let p=1-d;return e(t-d/p)/(p*p)},c=0,f=1):(l=e,c=n,f=t);return Uy(l,c,f,r,o,s)}var Qa={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]};function Im(e,n,t){if(n.length<2)throw new Error(`${e}: expected at least two arguments`);let i=n[0]?.engine?.tolerance??1e-10,r=l=>l.type.matches("collection")||Rm(l);if(n.some(r)){if(n.length===2)return`_SYS.${e==="Equal"?"eq":"neq"}((${t(n[0])}), (${t(n[1])}), ${i})`;throw new Error(`${e}: cannot compile \u2014 chained (n-ary) comparison over an operand that may be a collection at run time (collection-valued or possibly-collection-typed). Materialize the collection first. Fail closed (D6).`)}let o=e==="Equal"?"<=":">",s=(l,c)=>{if(!(N.isComplexValued(l)||N.isComplexValued(c)))return`Math.abs((${t(l)}) - (${t(c)}))`;let d=b=>{let y=t(b);return N.isComplexValued(b)?{re:`(${y}).re`,im:`(${y}).im`}:{re:`(${y})`,im:"0"}},p=d(l),h=d(c);return`_SYS.cabs({ re: ${p.re} - ${h.re}, im: ${p.im} - ${h.im} })`},a=(l,c)=>`(${s(l,c)} ${o} ${i})`;if(n.length===2)return a(n[0],n[1]);let u=[];for(let l=0;l<n.length-1;l++)u.push(a(n[l],n[l+1]));return`(${u.join(" && ")})`}function hn(e){let n=e.type;return n.matches("list")||n.matches("indexed_collection")}function Rm(e){let n=e.type.type;return n==="unknown"||n==="any"||n==="value"?g(e)&&(e.isCanonical||e.isStructural):typeof n!="string"&&n.kind==="broadcastable"}function eu(e,n,t){let i=t(e),r=e.type.type;return typeof r!="string"&&r.kind==="tuple"?`${i}[${n}]`:Hy(e)?`(${i}).map((_pt) => _pt[${n}])`:`${i}[${n}]`}function Hy(e){let n=le(e.type.type);if(n!==void 0&&typeof n!="string"&&n.kind==="tuple")return!0;if(e.isFiniteCollection){let t=e.at(1);if(t===void 0)return!1;let i=t.type.type;return typeof i!="string"&&i.kind==="tuple"||t.operator==="Tuple"}return!1}var nu={Equal:(e,n)=>Im("Equal",e,n),NotEqual:(e,n)=>Im("NotEqual",e,n),Abs:(e,n)=>N.isComplexValued(e[0])?`_SYS.cabs(${n(e[0])})`:N.isNonNegative(e[0])?n(e[0]):`Math.abs(${n(e[0])})`,Add:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(u=>N.isComplexValued(u))){let u=e.map(se);if(u.every(c=>c!==void 0))return String(u.reduce((c,f)=>c+f,0));let l=e.filter(c=>se(c)!==0);return l.length===0?"0":l.length===1?n(l[0]):`(${l.map(c=>n(c)).join(" + ")})`}let i=[],r=e.map(u=>{let l=n(u),c=N.isComplexValued(u);if(c&&!S(u)&&!F(u)){let f=N.tempVar();return i.push([f,l]),{code:f,isComplex:c,bound:!0}}return{code:l,isComplex:c,bound:!1}}),o=r.map(u=>u.isComplex?u.bound?`${u.code}.re`:`(${u.code}).re`:u.code),s=r.filter(u=>u.isComplex).map(u=>u.bound?`${u.code}.im`:`(${u.code}).im`),a=`({ re: ${o.join(" + ")}, im: ${s.join(" + ")} })`;return i.length===0?a:`(() => { const ${i.map(([u,l])=>`${u} = ${l}`).join(", ")}; return ${a}; })()`},Arccos:(e,n)=>N.isComplexValued(e[0])?`_SYS.cacos(${n(e[0])})`:`Math.acos(${n(e[0])})`,Arcosh:"Math.acosh",Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return N.isComplexValued(e)?`_SYS.cacot(${n(e)})`:`(Math.PI / 2 - Math.atan(${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return N.isComplexValued(e)?`_SYS.cacoth(${n(e)})`:`Math.atanh(1 / (${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return N.isComplexValued(e)?`_SYS.cacsc(${n(e)})`:`Math.asin(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return N.isComplexValued(e)?`_SYS.cacsch(${n(e)})`:`Math.asinh(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return N.isComplexValued(e)?`_SYS.casec(${n(e)})`:`Math.acos(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return N.isComplexValued(e)?`_SYS.casech(${n(e)})`:`Math.acosh(1 / (${n(e)}))`},Arcsin:(e,n)=>N.isComplexValued(e[0])?`_SYS.casin(${n(e[0])})`:`Math.asin(${n(e[0])})`,Arsinh:"Math.asinh",Arctan:(e,n)=>N.isComplexValued(e[0])?`_SYS.catan(${n(e[0])})`:`Math.atan(${n(e[0])})`,Artanh:"Math.atanh",Ceil:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`Math.ceil(${n(e[0])})`,Chop:"_SYS.chop",Cos:(e,n)=>N.isComplexValued(e[0])?`_SYS.ccos(${n(e[0])})`:`Math.cos(${n(e[0])})`,Cosh:(e,n)=>N.isComplexValued(e[0])?`_SYS.ccosh(${n(e[0])})`:`Math.cosh(${n(e[0])})`,Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return N.isComplexValued(e)?`_SYS.ccot(${n(e)})`:N.inlineExpression("Math.cos(${x}) / Math.sin(${x})",n(e))},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return N.isComplexValued(e)?`_SYS.ccoth(${n(e)})`:N.inlineExpression("(Math.cosh(${x}) / Math.sinh(${x}))",n(e))},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return N.isComplexValued(e)?`_SYS.ccsc(${n(e)})`:`1 / Math.sin(${n(e)})`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return N.isComplexValued(e)?`_SYS.ccsch(${n(e)})`:`1 / Math.sinh(${n(e)})`},Exp:(e,n)=>N.isComplexValued(e[0])?`_SYS.cexp(${n(e[0])})`:`Math.exp(${n(e[0])})`,First:(e,n)=>`${n(e[0])}[0]`,Floor:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`Math.floor(${n(e[0])})`,Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return N.inlineExpression("${x} - Math.floor(${x})",n(e))},Gamma:"_SYS.gamma",GCD:(e,n)=>Cm("GCD",e,n),Integrate:(e,n,t)=>ix(e,n,t),LCM:(e,n)=>Cm("LCM",e,n),Product:(e,n,t)=>wm("Product",e,n,t),Sum:(e,n,t)=>wm("Sum",e,n,t),Limit:(e,n)=>`_SYS.limit(${n(e[0])}, ${n(e[1])})`,Ln:(e,n)=>N.isComplexValued(e[0])?`_SYS.cln(${n(e[0])})`:`Math.log(${n(e[0])})`,List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>n(e[0]),Tuple:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Length:(e,n)=>{let t=e[0];if(t==null)throw new Error("Length: no argument");if(!hn(t))throw new Error("Length: cannot compile \u2014 operand is not an indexed collection (list/vector/range). Fail closed (D6).");return`(${n(t)}).length`},At:(e,n)=>{let t=e[0],i=e[1];if(t==null||i===null||i===void 0)throw new Error("At: missing argument");if(e.length!==2)throw new Error("At: only the single-index form compiles; multi-index (nested) access is not supported. Fail closed (D6).");if(!hn(t))throw new Error("At: cannot compile \u2014 first operand is not an indexed collection (list/vector/range). Fail closed (D6).");return`_SYS.at(${n(t)}, ${n(i)})`},Reduce:(e,n,t)=>{let i=e[0],r=e[1],o=e[2];if(i==null||r===null||r===void 0)throw new Error("Reduce: missing argument");if(!hn(i))throw new Error("Reduce: cannot compile \u2014 first operand is not an indexed collection (list/vector/range). Fail closed (D6).");let s=Mm(r);if(s===void 0&&(g(r,"Function")||S(r))){if(o==null)throw new Error("Reduce: a custom combiner compiles only with an explicit initial value. Fail closed (D6).");s=km(r,n,t)}if(s===void 0)throw new Error("Reduce: the combiner does not compile to a function \u2014 only Add/Multiply/Min/Max folds, function literals, and user-defined functions compile on the JavaScript target. Fail closed (D6).");let a=n(i);return o!=null?`(${a}).reduce(${s}, ${n(o)})`:`((_l) => _l.length === 0 ? NaN : _l.reduce(${s}))(${a})`},Last:(e,n)=>`_SYS.at(${J("Last",e[0],n)}, -1)`,Rest:(e,n)=>`(${J("Rest",e[0],n)}).slice(1)`,Take:(e,n)=>{let t=J("Take",e[0],n);if(e[1]==null)throw new Error("Take: missing count");return`(${t}).slice(0, Math.max(0, ${n(e[1])}))`},Drop:(e,n)=>{let t=J("Drop",e[0],n);if(e[1]==null)throw new Error("Drop: missing count");return`(${t}).slice(Math.max(0, ${n(e[1])}))`},Reverse:(e,n)=>`(${J("Reverse",e[0],n)}).slice().reverse()`,Sort:(e,n)=>{let t=J("Sort",e[0],n);if(e.length>1)throw new Error("Sort: a custom comparator does not compile; only the default ascending numeric sort is supported. Fail closed (D6).");return`(${t}).slice().sort((_a, _b) => _a - _b)`},Join:(e,n)=>e.length===0?"[]":`[${e.map((t,i)=>`...(${J("Join",t,n,i+1)})`).join(", ")}]`,IndexOf:(e,n)=>{let t=J("IndexOf",e[0],n);if(e[1]==null)throw new Error("IndexOf: missing value");let i=e[0]?.engine?.tolerance??1e-10;return`((_v) => (${t}).findIndex((_x) => Math.abs(_x - _v) <= ${i}) + 1)(${n(e[1])})`},Map:(e,n)=>{if(e.length>2)throw new Error("Map: multi-collection form is not compiled");let t=J("Map",e[0],n);if(e[1]==null)throw new Error("Map: missing mapping function");return`((_f) => (${t}).map((_x) => _f(_x)))(${n(e[1])})`},Filter:(e,n)=>{let t=J("Filter",e[0],n);if(e[1]==null)throw new Error("Filter: missing predicate");return`((_f) => (${t}).filter((_x) => _f(_x)))(${n(e[1])})`},CountIf:(e,n)=>{let t=J("CountIf",e[0],n);if(e[1]==null)throw new Error("CountIf: missing predicate");return`((_f) => (${t}).filter((_x) => _f(_x)).length)(${n(e[1])})`},Find:(e,n)=>{let t=J("Find",e[0],n);if(e[1]==null)throw new Error("Find: missing predicate");return`((_f) => ((${t}).find((_x) => _f(_x)) ?? NaN))(${n(e[1])})`},IndexWhere:(e,n)=>{let t=J("IndexWhere",e[0],n);if(e[1]==null)throw new Error("IndexWhere: missing predicate");return`((_f) => (${t}).findIndex((_x) => _f(_x)) + 1)(${n(e[1])})`},Position:(e,n)=>{let t=J("Position",e[0],n);if(e[1]==null)throw new Error("Position: missing predicate");return`((_f) => (${t}).flatMap((_x, _i) => _f(_x) ? [_i + 1] : []))(${n(e[1])})`},Tabulate:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Tabulate: missing argument");if(e.length>3)throw new Error("Tabulate: only the 1-D and 2-D forms compile. Fail closed (D6).");for(let o=1;o<e.length;o++){let s=se(e[o]);if(s!==void 0&&Math.round(s)<=0)throw new Error(`Tabulate: a statically non-positive dimension (${s}) is inert in the interpreter. Fail closed (D6).`)}let t=n(e[0]),i=n(e[1]);if(e.length===2)return`((_f, _n) => Array.from({ length: Math.max(0, Math.round(_n)) }, (_, _i) => _f(_i + 1)))(${t}, ${i})`;let r=n(e[2]);return`((_f, _n, _m) => Array.from({ length: Math.max(0, Math.round(_n)) }, (_, _i) => Array.from({ length: Math.max(0, Math.round(_m)) }, (_, _j) => _f(_i + 1, _j + 1))))(${t}, ${i}, ${r})`},Fill:(e,n)=>{let t=e[1];if(e[0]==null||t==null)throw new Error("Fill: missing argument");if(!g(t)||t.ops.length!==2)throw new Error("Fill: only the (function, (rows, cols)) form compiles. Fail closed (D6).");let i=n(e[0]),r=n(t.ops[0]),o=n(t.ops[1]);return`((_f, _r, _c) => Array.from({ length: Math.max(0, Math.round(_r)) }, (_, _i) => Array.from({ length: Math.max(0, Math.round(_c)) }, (_, _j) => _f(_i + 1, _j + 1))))(${i}, ${r}, ${o})`},Append:(e,n)=>{let t=J("Append",e[0],n);if(e[1]==null)throw new Error("Append: missing value");return`[...(${t}), ${n(e[1])}]`},Most:(e,n)=>`(${J("Most",e[0],n)}).slice(0, -1)`,Slice:(e,n)=>{let t=J("Slice",e[0],n);if(e[1]==null||e[2]==null)throw new Error("Slice: missing index");return`((_l, _s, _e) => { _s = Math.round(_s); if (!Number.isFinite(_s)) _s = 1; _e = Math.round(_e); if (!Number.isFinite(_e)) _e = _l.length; if (_s < 1) _s = _l.length + 1 + _s; if (_s < 1) _s = 1; if (_s > _l.length) return []; if (_e < 1) _e = _l.length + 1 + _e; if (_e < 1) _e = 1; if (_e > _l.length) _e = _l.length; return _l.slice(_s - 1, _e); })(${t}, ${n(e[1])}, ${n(e[2])})`},IsEmpty:(e,n)=>`((${J("IsEmpty",e[0],n)}).length === 0)`,Count:(e,n)=>`(${J("Count",e[0],n)}).length`,Contains:(e,n)=>{e[0]&&_t("Contains",e[0]);let t=J("Contains",e[0],n);if(e[1]==null)throw new Error("Contains: missing value");return`(${t}).includes(${n(e[1])})`},Unique:(e,n)=>(e[0]&&_t("Unique",e[0]),`[...new Set(${J("Unique",e[0],n)})]`),RotateLeft:(e,n)=>{let t=J("RotateLeft",e[0],n),i=e[1]==null?"1":n(e[1]);return`((_l, _n) => { if (_l.length === 0) return []; _n = Math.round(_n); if (!Number.isFinite(_n)) _n = 1; _n = ((_n % _l.length) + _l.length) % _l.length; return [..._l.slice(_n), ..._l.slice(0, _n)]; })(${t}, ${i})`},RotateRight:(e,n)=>{let t=J("RotateRight",e[0],n),i=e[1]==null?"1":n(e[1]);return`((_l, _n) => { if (_l.length === 0) return []; _n = Math.round(_n); if (!Number.isFinite(_n)) _n = 1; _n = ((-_n % _l.length) + _l.length) % _l.length; return [..._l.slice(_n), ..._l.slice(0, _n)]; })(${t}, ${i})`},Zip:(e,n)=>e.length===0?"[]":`((..._ls) => Array.from({ length: Math.min(..._ls.map((_l) => _l.length)) }, (_, _i) => _ls.map((_l) => _l[_i])))(${e.map((i,r)=>J("Zip",i,n,r+1)).join(", ")})`,Linspace:(e,n)=>{if(e[0]==null)throw new Error("Linspace: missing argument");let t=e[1]==null?"1":n(e[0]),i=e[1]==null?n(e[0]):n(e[1]),r=e[2]==null?"50":n(e[2]);return`((_s, _e, _c) => { _c = Math.floor(_c); if (!Number.isFinite(_c)) _c = 50; _c = Math.max(0, _c); if (_c === 1) return [_s]; return Array.from({ length: _c }, (_, _i) => _s + ((_e - _s) * _i) / (_c - 1)); })(${t}, ${i}, ${r})`},Chunk:(e,n)=>{let t=J("Chunk",e[0],n);if(e[1]==null)throw new Error("Chunk: missing count");let i=se(e[1]);if(i!==void 0&&!(Math.round(i)>0))throw new Error(`Chunk: a statically non-positive chunk count (${i}) is inert in the interpreter. Fail closed (D6).`);return`((_l, _k) => { _k = Math.round(_k); if (!(Number.isFinite(_k) && _k > 0)) return []; const _sz = Math.ceil(_l.length / _k); return Array.from({ length: _k }, (_, _i) => _l.slice(_i * _sz, (_i + 1) * _sz)); })(${t}, ${n(e[1])})`},Partition:(e,n)=>{let t=J("Partition",e[0],n),i=e[1];if(i==null)throw new Error("Partition: missing operand");if(i.type.matches("number")){let r=se(i);if(r!==void 0&&!(Math.round(r)>0))throw new Error(`Partition: a statically non-positive chunk size (${r}) is inert in the interpreter. Fail closed (D6).`);let o=e[2];if(o!==void 0){let s=se(o);if(s!==void 0&&!(Math.round(s)>0))throw new Error(`Partition: a statically non-positive step (${s}) is inert in the interpreter. Fail closed (D6).`);return`((_l, _n, _s) => { _n = Math.round(_n); _s = Math.round(_s); if (!(Number.isFinite(_n) && _n > 0 && Number.isFinite(_s) && _s > 0)) return []; const _r = []; for (let _i = 0; _i + _n <= _l.length; _i += _s) _r.push(_l.slice(_i, _i + _n)); return _r; })(${t}, ${n(i)}, ${n(o)})`}return`((_l, _n) => { _n = Math.round(_n); if (!(Number.isFinite(_n) && _n > 0)) return []; const _r = []; for (let _i = 0; _i < _l.length; _i += _n) _r.push(_l.slice(_i, _i + _n)); return _r; })(${t}, ${n(i)})`}if(g(i,"Function")||S(i)&&N.userFunctionLiteral(i.engine,i.symbol)!==void 0)return`((_f, _l) => { const _t = [], _u = []; for (const _x of _l) (_f(_x) ? _t : _u).push(_x); return [_t, _u]; })(${n(i)}, ${t})`;throw new Error("Partition: the second operand must be an integer or a function literal. Fail closed (D6).")},Ordering:(e,n)=>{let t=J("Ordering",e[0],n);if(e.length>1)throw new Error("Ordering: a custom ordering function does not compile; only the default ascending numeric order is supported. Fail closed (D6).");return`((_l) => Array.from({ length: _l.length }, (_, _i) => _i + 1).sort((_a, _b) => _l[_a - 1] - _l[_b - 1]))(${t})`},Shuffle:(e,n,t)=>{let i=J("Shuffle",e[0],n);if(e.length>1)throw new Error("Shuffle: the seeded form does not compile. Fail closed (D6).");let r=t?.randomSeed;if(r!=null){let o=t?.randomState?t.randomState.counter++:0,s=(r^Math.imul(o+1,2654435761))>>>0;return`_SYS.shuffle(${i}, ${s})`}return`_SYS.shuffle(${i})`},Any:(e,n)=>{let t=J("Any",e[0],n);if(e[1]==null)throw new Error("Any: only the predicate form compiles. Fail closed (D6).");return`((_f) => (${t}).some((_x) => _f(_x)))(${n(e[1])})`},All:(e,n)=>{let t=J("All",e[0],n);if(e[1]==null)throw new Error("All: only the predicate form compiles. Fail closed (D6).");return`((_f) => (${t}).every((_x) => _f(_x)))(${n(e[1])})`},TakeWhile:(e,n)=>{let t=J("TakeWhile",e[0],n);if(e[1]==null)throw new Error("TakeWhile: missing predicate");return`((_f, _l) => { const _i = _l.findIndex((_x) => !_f(_x)); return _i < 0 ? _l.slice() : _l.slice(0, _i); })(${n(e[1])}, ${t})`},DropWhile:(e,n)=>{let t=J("DropWhile",e[0],n);if(e[1]==null)throw new Error("DropWhile: missing predicate");return`((_f, _l) => { const _i = _l.findIndex((_x) => !_f(_x)); return _i < 0 ? [] : _l.slice(_i); })(${n(e[1])}, ${t})`},FlatMap:(e,n)=>{let t=J("FlatMap",e[0],n);if(e[1]==null)throw new Error("FlatMap: missing mapping function");return`((_f) => (${t}).flatMap((_x) => _f(_x)))(${n(e[1])})`},Scan:(e,n,t)=>{let i=e[0],r=e[1],o=e[2];if(i==null||r==null)throw new Error("Scan: missing argument");if(!hn(i))throw new Error("Scan: cannot compile \u2014 first operand is not an indexed collection (list/vector/range). Fail closed (D6).");let s=Mm(r)??(g(r,"Function")||S(r)?km(r,n,t):void 0);if(s===void 0)throw new Error("Scan: the combiner does not compile to a function \u2014 only Add/Multiply/Min/Max folds, function literals, and user-defined functions compile on the JavaScript target. Fail closed (D6).");let a=n(i);return o!=null?`((_f, _l, _a) => _l.map((_x) => (_a = _f(_a, _x))))(${s}, ${a}, ${n(o)})`:`((_f, _l) => { let _a; return _l.map((_x, _i) => (_a = _i === 0 ? _x : _f(_a, _x))); })(${s}, ${a})`},Boole:(e,n)=>{if(e[0]==null)throw new Error("Boole: missing argument");let t=n(e[0]);return N.isBooleanValued(e[0])?`((${t}) ? 1 : 0)`:`(_SYS.cond(${t}) ? 1 : 0)`},KroneckerDelta:(e,n)=>{if(e.length===0||e[0]==null)throw new Error("KroneckerDelta: missing argument");let t=e[0].engine.tolerance??1e-10;return e.length===1?`(Math.abs(${n(e[0])}) <= ${t} ? 1 : 0)`:`((..._v) => _v.every((_x) => Math.abs(_x - _v[0]) <= ${t}) ? 1 : 0)(${e.map(i=>n(i)).join(", ")})`},Element:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Element: missing argument");return _t("Element",e[1]),`(${J("Element",e[1],n)}).includes(${n(e[0])})`},Identity:(e,n)=>{if(e[0]==null)throw new Error("Identity: missing argument");return n(e[0])},Apply:(e,n)=>{if(e[0]==null)throw new Error("Apply: missing function");return`(${n(e[0])})(${e.slice(1).map(t=>n(t)).join(", ")})`},Dot:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Dot: missing argument");return`_SYS.matmul(${J("Dot",e[0],n,1)}, ${J("Dot",e[1],n,2)})`},MatrixMultiply:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("MatrixMultiply: missing argument");return`_SYS.matmul(${J("MatrixMultiply",e[0],n,1)}, ${J("MatrixMultiply",e[1],n,2)})`},Cross:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Cross: missing argument");return`_SYS.cross(${J("Cross",e[0],n,1)}, ${J("Cross",e[1],n,2)})`},Norm:(e,n)=>{if(e[0]==null)throw new Error("Norm: missing argument");if(e[1]!=null){if(ne(e[1])){if(e[1].string==="Frobenius")return`_SYS.norm(${n(e[0])})`;throw new Error(`Norm: the "${e[1].string}" norm does not compile. Fail closed (D6).`)}return`_SYS.norm(${n(e[0])}, ${n(e[1])})`}return`_SYS.norm(${n(e[0])})`},Transpose:(e,n)=>{if(e.length>1)throw new Error("Transpose: explicit axes do not compile. Fail closed (D6).");return`_SYS.transpose(${J("Transpose",e[0],n)})`},Determinant:(e,n)=>`_SYS.det(${J("Determinant",e[0],n)})`,Inverse:(e,n)=>`_SYS.inv(${J("Inverse",e[0],n)})`,Trace:(e,n)=>{if(e.length>1)throw new Error("Trace: explicit axes do not compile. Fail closed (D6).");return`_SYS.trace(${J("Trace",e[0],n)})`},ConjugateTranspose:(e,n)=>{if(e.length>1)throw new Error("ConjugateTranspose: explicit axes do not compile. Fail closed (D6).");return`_SYS.conjTranspose(${J("ConjugateTranspose",e[0],n)})`},Diagonal:(e,n)=>{if(e.length>1)throw new Error("Diagonal: the offset/banded form does not compile. Fail closed (D6).");return`_SYS.diagonal(${J("Diagonal",e[0],n)})`},MatrixPower:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("MatrixPower: missing argument");return`_SYS.matpow(${J("MatrixPower",e[0],n)}, ${n(e[1])})`},RowReduce:(e,n)=>`_SYS.rref(${J("RowReduce",e[0],n)})`,Rank:(e,n)=>{if(e[0]==null)throw new Error("Rank: missing argument");return`(_SYS.shape(${n(e[0])}).length)`},Shape:(e,n)=>{if(e[0]==null)throw new Error("Shape: missing argument");return`_SYS.shape(${n(e[0])})`},Flatten:(e,n)=>{let t=J("Flatten",e[0],n);return e[1]!=null?`(${t}).flat(${n(e[1])})`:`(${t}).flat(Infinity)`},Reshape:(e,n)=>{let t=J("Reshape",e[0],n),i=e[1];if(i==null)throw new Error("Reshape: missing shape");if(!g(i)||i.ops.length===0||i.ops.length>2)throw new Error("Reshape: only a 1-D or 2-D target shape compiles. Fail closed (D6).");return`_SYS.reshape(${t}, [${i.ops.map(r=>n(r)).join(", ")}])`},Log:(e,n)=>e.length===1?`Math.log10(${n(e[0])})`:`(Math.log(${n(e[0])}) / Math.log(${n(e[1])}))`,GammaLn:"_SYS.lngamma",Lb:"Math.log2",ElementMax:(e,n)=>`Math.max(${e.map(t=>n(t)).join(", ")})`,ElementMin:(e,n)=>`Math.min(${e.map(t=>n(t)).join(", ")})`,Clamp:(e,n)=>`Math.min(Math.max(${n(e[0])}, ${n(e[1])}), ${n(e[2])})`,Max:(e,n)=>Am("Max",e,n),Mean:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mean(${n(e[0])})`:`_SYS.mean([${e.map(t=>n(t)).join(", ")}])`,Median:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.median(${n(e[0])})`:`_SYS.median([${e.map(t=>n(t)).join(", ")}])`,Variance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.variance(${n(e[0])})`:`_SYS.variance([${e.map(t=>n(t)).join(", ")}])`,PopulationVariance:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationVariance(${n(e[0])})`:`_SYS.populationVariance([${e.map(t=>n(t)).join(", ")}])`,StandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.standardDeviation(${n(e[0])})`:`_SYS.standardDeviation([${e.map(t=>n(t)).join(", ")}])`,PopulationStandardDeviation:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.populationStandardDeviation(${n(e[0])})`:`_SYS.populationStandardDeviation([${e.map(t=>n(t)).join(", ")}])`,Kurtosis:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.kurtosis(${n(e[0])})`:`_SYS.kurtosis([${e.map(t=>n(t)).join(", ")}])`,Skewness:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.skewness(${n(e[0])})`:`_SYS.skewness([${e.map(t=>n(t)).join(", ")}])`,Mode:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.mode(${n(e[0])})`:`_SYS.mode([${e.map(t=>n(t)).join(", ")}])`,Quartiles:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.quartiles(${n(e[0])})`:`_SYS.quartiles([${e.map(t=>n(t)).join(", ")}])`,InterquartileRange:(e,n)=>e.length===0?"NaN":e.length===1?`_SYS.interquartileRange(${n(e[0])})`:`_SYS.interquartileRange([${e.map(t=>n(t)).join(", ")}])`,Covariance:(e,n)=>{if(e.length!==2)throw new Error("Covariance: expected two collection arguments to compile");return`_SYS.covariance(${n(e[0])}, ${n(e[1])})`},PopulationCovariance:(e,n)=>{if(e.length!==2)throw new Error("PopulationCovariance: expected two collection arguments to compile");return`_SYS.populationCovariance(${n(e[0])}, ${n(e[1])})`},Correlation:(e,n)=>{if(e.length!==2)throw new Error("Correlation: expected two collection arguments to compile");return`_SYS.correlation(${n(e[0])}, ${n(e[1])})`},Min:(e,n)=>Am("Min",e,n),Power:(e,n)=>{let t=e[0],i=e[1];if(t===null)throw new Error("Power: no argument");if(N.isComplexValued(t)||N.isComplexValued(i))return`_SYS.cpow(${n(t)}, ${n(i)})`;let r=se(t),o=se(i);if(r!==void 0&&o!==void 0){let s=Math.pow(r,o);if(Number.isNaN(s))throw new Error(`Power(${r}, ${o}) has no real value; cannot compile to a real target`);return String(s)}if(o===0)return"1";if(o===1)return n(t);if(o===2&&(S(t)||F(t))){let s=n(t);return`(${s} * ${s})`}return o===-1?`(1 / (${n(t)}))`:o===.5?`Math.sqrt(${n(t)})`:o===1/3?`Math.cbrt(${n(t)})`:o===-.5?`(1 / Math.sqrt(${n(t)}))`:o===void 0?`_SYS.pow(${n(t)}, ${n(i)})`:`Math.pow(${n(t)}, ${n(i)})`},Range:(e,n)=>{if(e.length===0)return"[]";if(e.length===1)return`Array.from({length: ${n(e[0])}}, (_, i) => i)`;let t=n(e[0]),i=n(e[1]),r=e[2]?n(e[2]):"1";if(t===null)throw new Error("Range: no start");if(i===null&&(i=t,t="1"),r==="0")throw new Error("Range: step cannot be zero");if(e[2]===void 0||e[2]===null){let o=parseFloat(i),s=parseFloat(t);if(!isNaN(o)&&!isNaN(s)){let a=o>=s?1:-1,u=Math.floor(Math.abs(o-s))+1;return u<50?`[${Array.from({length:u},(l,c)=>s+a*c).join(", ")}]`:`Array.from({length: ${u}}, (_e, i) => ${t} ${a===1?"+":"-"} i)`}return`((_a, _b) => Array.from({length: Math.floor(Math.abs(_b - _a)) + 1}, (_e, _i) => _b >= _a ? _a + _i : _a - _i))(${t}, ${i})`}return`Array.from({length: Math.floor((${i} - ${t}) / ${r}) + 1}, (_e, i) => ${t} + i * ${r})`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n===null)return`Math.sqrt(${t(e)})`;let i=se(e),r=se(n);if(i!==void 0&&r!==void 0&&r!==0){let o=Math.pow(i,1/r);if(Number.isNaN(o)){if(Number.isInteger(r)&&r%2!==0&&i<0)return String(-Math.pow(-i,1/r));throw new Error(`Root(${i}, ${r}) has no real value; cannot compile to a real target`)}return String(o)}return r===2?`Math.sqrt(${t(e)})`:r===3?`Math.cbrt(${t(e)})`:r!==void 0&&Number.isInteger(r)&&r%2!==0?N.inlineExpression(`(Math.sign(\${x}) * Math.pow(Math.abs(\${x}), ${1/r}))`,t(e)):r!==void 0?`Math.pow(${t(e)}, ${1/r})`:`Math.pow(${t(e)}, 1 / (${t(n)}))`},Random:(e,n,t)=>{let i=t?.randomSeed,r=e.length===1&&!N.isIntegerValued(e[0]);if(i!=null&&!r){let a=t?.randomState?t.randomState.counter++:0,u=pa((i^Math.imul(a+1,2654435761))>>>0)();if(e.length===0)return u.toString();if(e.length===2){let l=n(e[0]),c=n(e[1]);return`((${l}) + Math.floor(${u} * ((${c}) - (${l}))))`}return`Math.floor(${u} * (${n(e[0])}))`}if(e.length===0)return"Math.random()";if(e.length===2){let a=n(e[0]),u=n(e[1]);return`((${a}) + Math.floor(Math.random() * ((${u}) - (${a}))))`}let o=e[0];return N.isIntegerValued(o)?`Math.floor(Math.random() * (${n(o)}))`:`(() => { const _s = (${n(o)}) * 12.9898; const _v = Math.sin(_s) * 43758.5453; return _v - Math.floor(_v); })()`},Round:(e,n)=>{if(e.length<2)return N.isIntegerValued(e[0])?n(e[0]):N.inlineExpression("(Math.sign(${x}) * Math.round(Math.abs(${x})))",n(e[0]));let t=N.tempVar(),i=N.tempVar();return`(() => { const ${i} = Math.pow(10, ${n(e[1])}); const ${t} = ${n(e[0])} * ${i}; return (Math.sign(${t}) * Math.round(Math.abs(${t}))) / ${i}; })()`},Square:(e,n)=>{let t=e[0];if(t===null)throw new Error("Square: no argument");let i=se(t);if(i!==void 0)return String(i*i);if(S(t)){let r=n(t);return`(${r} * ${r})`}return`Math.pow(${n(t)}, 2)`},Sec:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sec: no argument");return N.isComplexValued(t)?`_SYS.csec(${n(t)})`:`1 / Math.cos(${n(t)})`},Sech:(e,n)=>{let t=e[0];if(t===null)throw new Error("Sech: no argument");return N.isComplexValued(t)?`_SYS.csech(${n(t)})`:`1 / Math.cosh(${n(t)})`},Second:(e,n)=>`${n(e[0])}[1]`,Heaviside:"_SYS.heaviside",Sign:"Math.sign",Sinc:"_SYS.sinc",FresnelS:"_SYS.fresnelS",FresnelC:"_SYS.fresnelC",Sin:(e,n)=>N.isComplexValued(e[0])?`_SYS.csin(${n(e[0])})`:`Math.sin(${n(e[0])})`,Sinh:(e,n)=>N.isComplexValued(e[0])?`_SYS.csinh(${n(e[0])})`:`Math.sinh(${n(e[0])})`,Sqrt:(e,n)=>{if(N.isComplexValued(e[0]))return`_SYS.csqrt(${n(e[0])})`;let t=se(e[0]);if(t!==void 0){let i=Math.sqrt(t);if(Number.isNaN(i))throw new Error(`Sqrt(${t}) has no real value; cannot compile to a real target`);return String(i)}return`Math.sqrt(${n(e[0])})`},Tan:(e,n)=>N.isComplexValued(e[0])?`_SYS.ctan(${n(e[0])})`:`Math.tan(${n(e[0])})`,Tanh:(e,n)=>N.isComplexValued(e[0])?`_SYS.ctanh(${n(e[0])})`:`Math.tanh(${n(e[0])})`,Third:(e,n)=>`${n(e[0])}[2]`,PointX:(e,n)=>eu(e[0],0,n),PointY:(e,n)=>eu(e[0],1,n),PointZ:(e,n)=>eu(e[0],2,n),Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");let i=t(e),r=t(n);return N.isIntegerValued(e)&&N.isIntegerValued(n)&&N.isNonNegative(e)?`(${i} % ${r})`:`(((${i} % ${r}) + ${r}) % ${r})`},Truncate:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`Math.trunc(${n(e[0])})`,Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * Math.round(${t(e)} / ${t(n)}))`},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");let i=N.isComplexValued(e),r=N.isComplexValued(n);if(!i&&!r){let o=se(e),s=se(n);return o!==void 0&&s!==void 0&&s!==0?String(o/s):s===1?t(e):`(${t(e)} / ${t(n)})`}return i&&r?`(() => { const _a = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: (_a.re * _b.re + _a.im * _b.im) / _d, im: (_a.im * _b.re - _a.re * _b.im) / _d }; })()`:i&&!r?`(() => { const _a = ${t(e)}, _r = ${t(n)}; return { re: _a.re / _r, im: _a.im / _r }; })()`:`(() => { const _r = ${t(e)}, _b = ${t(n)}, _d = _b.re * _b.re + _b.im * _b.im; return { re: _r * _b.re / _d, im: -_r * _b.im / _d }; })()`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");if(!N.isComplexValued(e)){let t=se(e);return t!==void 0?String(-t):`(-${n(e)})`}return`_SYS.cneg(${n(e)})`},Multiply:(e,n)=>{if(e.length===1)return n(e[0]);if(!e.some(s=>N.isComplexValued(s))){if(e.some(u=>se(u)===0))return"0";let s=e.map(se);if(s.every(u=>u!==void 0))return String(s.reduce((u,l)=>u*l,1));let a=e.filter(u=>se(u)!==1);return a.length===0?"1":a.length===1?n(a[0]):`(${a.map(u=>n(u)).join(" * ")})`}if(e.length===2){let s=N.isComplexValued(e[0]),a=N.isComplexValued(e[1]),u=n(e[0]),l=n(e[1]);return s&&a?`(() => { const _a = ${u}, _b = ${l}; return { re: _a.re * _b.re - _a.im * _b.im, im: _a.re * _b.im + _a.im * _b.re }; })()`:s&&!a?`(() => { const _a = ${u}, _r = ${l}; return { re: _a.re * _r, im: _a.im * _r }; })()`:`(() => { const _r = ${u}, _b = ${l}; return { re: _r * _b.re, im: _r * _b.im }; })()`}let i=[],r=[];for(let s=0;s<e.length;s++){let a=`_v${s}`;r.push(a),i.push(`const ${a} = ${n(e[s])}`)}let o=N.isComplexValued(e[0]);i.push(`let _re = ${o?`${r[0]}.re`:r[0]}`),i.push(`let _im = ${o?`${r[0]}.im`:"0"}`);for(let s=1;s<e.length;s++){let a=r[s],u=N.isComplexValued(e[s]),l=u?`${a}.re`:a,c=u?`${a}.im`:"0";i.push(`const _nre${s} = _re * ${l} - _im * ${c}`),i.push(`const _nim${s} = _re * ${c} + _im * ${l}`),i.push(`_re = _nre${s}`),i.push(`_im = _nim${s}`)}return`(() => { ${i.join("; ")}; return { re: _re, im: _im }; })()`},Factorial:"_SYS.factorial",Factorial2:"_SYS.factorial2",Exp2:([e],n)=>{if(e===null)throw new Error("Exp2: no argument");return`Math.pow(2, ${n(e)})`},Log2:"Math.log2",Log10:"Math.log10",Lg:"Math.log10",Arctan2:"Math.atan2",Hypot:"Math.hypot",Degrees:([e],n)=>{if(e===null)throw new Error("Degrees: no argument");return`(${n(e)} * Math.PI / 180)`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return N.inlineExpression("(1 - Math.cos(${x})) / 2",n(e))},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2 * Math.asin(Math.sqrt(${n(e)})))`},Erf:"_SYS.erf",Erfc:"_SYS.erfc",ErfInv:"_SYS.erfInv",Erfi:"_SYS.erfi",Beta:"_SYS.beta",GammaRegularized:"_SYS.gammaQ",BetaRegularized:"_SYS.betaRegularized",Digamma:"_SYS.digamma",Trigamma:"_SYS.trigamma",PolyGamma:(e,n)=>`_SYS.polygamma(${n(e[0])}, ${n(e[1])})`,Zeta:"_SYS.zeta",LambertW:"_SYS.lambertW",BesselJ:(e,n)=>`_SYS.besselJ(${n(e[0])}, ${n(e[1])})`,BesselY:(e,n)=>`_SYS.besselY(${n(e[0])}, ${n(e[1])})`,BesselI:(e,n)=>`_SYS.besselI(${n(e[0])}, ${n(e[1])})`,BesselK:(e,n)=>`_SYS.besselK(${n(e[0])}, ${n(e[1])})`,AiryAi:"_SYS.airyAi",AiryBi:"_SYS.airyBi",AiryAiPrime:"_SYS.airyAiPrime",AiryBiPrime:"_SYS.airyBiPrime",SinIntegral:"_SYS.sinIntegral",CosIntegral:"_SYS.cosIntegral",ExpIntegralEi:"_SYS.expIntegralEi",LogIntegral:"_SYS.logIntegral",AGM:(e,n)=>e.length===1?`_SYS.agm(1, ${n(e[0])})`:`_SYS.agm(${n(e[0])}, ${n(e[1])})`,EllipticK:"_SYS.ellipticK",EllipticE:(e,n)=>e.length===2?`_SYS.ellipticEIncomplete(${n(e[0])}, ${n(e[1])})`:`_SYS.ellipticE(${n(e[0])})`,EllipticF:(e,n)=>`_SYS.ellipticF(${n(e[0])}, ${n(e[1])})`,EllipticPi:(e,n)=>e.length===3?`_SYS.ellipticPiIncomplete(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.ellipticPiComplete(${n(e[0])}, ${n(e[1])})`,Hypergeometric2F1:(e,n)=>`_SYS.hypergeometric2F1(${n(e[0])}, ${n(e[1])}, ${n(e[2])}, ${n(e[3])})`,Hypergeometric1F1:(e,n)=>`_SYS.hypergeometric1F1(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`,Mandelbrot:([e,n],t)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");return`_SYS.mandelbrot(${t(e)}, ${t(n)})`},Julia:([e,n,t],i)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");return`_SYS.julia(${i(e)}, ${i(n)}, ${i(t)})`},Binomial:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Choose:(e,n)=>`_SYS.binomial(${n(e[0])}, ${n(e[1])})`,Fibonacci:"_SYS.fibonacci",Real:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).re`:n(e[0]),Imaginary:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).im`:"0",Argument:(e,n)=>N.isComplexValued(e[0])?`_SYS.carg(${n(e[0])})`:`(${n(e[0])} >= 0 ? 0 : Math.PI)`,Conjugate:(e,n)=>N.isComplexValued(e[0])?`_SYS.cconj(${n(e[0])})`:n(e[0]),Color:([e],n)=>{if(e===null)throw new Error("Color: no argument");return`_SYS.color(${n(e)})`},ColorToString:(e,n)=>{if(e.length===0)throw new Error("ColorToString: no argument");return e.length>=2?`_SYS.colorToString(${n(e[0])}, ${n(e[1])})`:`_SYS.colorToString(${n(e[0])})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");return e.length>=3?`_SYS.colorMix(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.colorMix(${n(e[0])}, ${n(e[1])})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_SYS.colorContrast(${t(e)}, ${t(n)})`},ContrastingColor:(e,n)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");return e.length>=3?`_SYS.contrastingColor(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`_SYS.contrastingColor(${n(e[0])})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");return`_SYS.colorToColorspace(${t(e)}, ${t(n)})`},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");return`_SYS.colorFromColorspace(${t(e)}, ${t(n)})`},Colormap:(e,n)=>{if(e.length===0)throw new Error("Colormap: no argument");return e.length>=2?`_SYS.colormap(${n(e[0])}, ${n(e[1])})`:`_SYS.colormap(${n(e[0])})`},Rgb:(e,n)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_SYS.rgb(${e.map(n).join(", ")})`},Hsv:(e,n)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_SYS.hsv(${e.map(n).join(", ")})`},Hsl:(e,n)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_SYS.hsl(${e.map(n).join(", ")})`},Oklab:(e,n)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_SYS.oklab(${e.map(n).join(", ")})`},Oklch:(e,n)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`_SYS.oklch(${e.map(n).join(", ")})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_SYS.asRgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_SYS.asHsv(${n(e)})`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_SYS.asHsl(${n(e)})`},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_SYS.asOklab(${n(e)})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},ColorDelta:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorDelta: need two colors");return`_SYS.colorDelta(${t(e)}, ${t(n)})`},Distance:([e,n],t)=>{if(e===null||n===null)throw new Error("Distance: need two points");return`_SYS.distance(${t(e)}, ${t(n)})`}};function fe(e){return{re:e.re,im:e.im}}function tn(e){if(e!==void 0&&Number.isFinite(e)&&!(Math.abs(e-1)<1e-9))return e}function mn(e){if(typeof e=="string"){let t=Cn(e),i={r:t>>>24&255,g:t>>>16&255,b:t>>>8&255},r=tn((t&255)/255);return r!==void 0&&(i.alpha=r),i}let n=Eo({L:e[0],C:e[1],H:e[2]});if(e.length>=4){let t=tn(e[3]);t!==void 0&&(n.alpha=t)}return n}function rr(e){if(typeof e=="string"){let n=Cn(e),t=n>>>24&255,i=n>>>16&255,r=n>>>8&255,o=qe({r:t,g:i,b:r}),s=tn((n&255)/255);return s!==void 0&&(o.alpha=s),o}return{L:e[0],C:e[1],H:e[2],alpha:e.length>=4?tn(e[3]):void 0}}function Po(e){let n=e>>>24&255,t=e>>>16&255,i=e>>>8&255,r=qe({r:n,g:t,b:i}),o=tn((e&255)/255);return o!==void 0?[r.L,r.C,r.H,o]:[r.L,r.C,r.H]}var Zy={color(e){return Po(Cn(e))},colorToString(e,n){let t=mn(e),i=(n??"hex").toLowerCase();switch(i){case"hex":{let r=Math.round(Math.max(0,Math.min(255,t.r))),o=Math.round(Math.max(0,Math.min(255,t.g))),s=Math.round(Math.max(0,Math.min(255,t.b))),a=`#${r.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;if(t.alpha!==void 0){let u=Math.round(Math.max(0,Math.min(255,t.alpha*255)));a+=u.toString(16).padStart(2,"0")}return a}case"rgb":{let r=Math.round(t.r),o=Math.round(t.g),s=Math.round(t.b);return t.alpha!==void 0?`rgb(${r} ${o} ${s} / ${t.alpha})`:`rgb(${r} ${o} ${s})`}case"hsl":{let r=xo(t.r,t.g,t.b),o=Math.round(r.h*10)/10,s=Math.round(r.s*1e3)/10,a=Math.round(r.l*1e3)/10;return t.alpha!==void 0?`hsl(${o} ${s}% ${a}% / ${t.alpha})`:`hsl(${o} ${s}% ${a}%)`}case"oklch":{let r=qe(t),o=Math.round(r.L*1e3)/1e3,s=Math.round(r.C*1e3)/1e3,a=Math.round(r.H*10)/10;return t.alpha!==void 0?`oklch(${o} ${s} ${a} / ${t.alpha})`:`oklch(${o} ${s} ${a})`}default:throw new Error(`Unknown color format: ${i}`)}},colorMix(e,n,t=.5){let i=rr(e),r=rr(n);t=Math.max(0,Math.min(1,t));let o=i.C<1e-6,s=r.C<1e-6,a;if(o&&s)a=i.H;else if(o)a=r.H;else if(s)a=i.H;else{let p=r.H-i.H;p>180&&(p-=360),p<-180&&(p+=360),a=i.H+p*t,a<0&&(a+=360),a>=360&&(a-=360)}let u=i.L+(r.L-i.L)*t,l=i.C+(r.C-i.C)*t,c=i.alpha??1,f=r.alpha??1,d=tn(c+(f-c)*t);return d!==void 0?[u,l,a,d]:[u,l,a]},colorContrast(e,n){return bo(mn(e),mn(n))},contrastingColor(e,n,t){let i=mn(e);return Po(n!==void 0&&t!==void 0?Ra({bg:i,fg1:mn(n),fg2:mn(t)}):Ra(i))},colorToColorspace(e,n){let t=mn(e),i=t.alpha,r;switch(n.toLowerCase()){case"rgb":r=[t.r/255,t.g/255,t.b/255];break;case"hsl":{let o=xo(t.r,t.g,t.b);r=[o.h,o.s,o.l];break}case"oklch":{let o=qe(t);r=[o.L,o.C,o.H];break}case"oklab":case"lab":{let o=$a(t);r=[o.L,o.a,o.b];break}default:throw new Error(`Unknown color space: ${n}`)}return i!==void 0&&r.push(i),r},colormap(e,n){let i={..._p,...Np,...Tp}[e];if(!i)throw new Error(`Unknown palette: ${e}`);let r=i.map(s=>Po(Cn(s)));if(n===void 0)return r;if(Number.isInteger(n)&&n>=2){let s=n,a=[];for(let u=0;u<s;u++){let l=s===1?0:u/(s-1);a.push(this._interpolatePalette(r,l))}return a}let o=Math.max(0,Math.min(1,n));return this._interpolatePalette(r,o)},_interpolatePalette(e,n){if(e.length===0)return[0,0,0];if(n<=0)return[...e[0]];if(n>=1)return[...e[e.length-1]];let t=n*(e.length-1),i=Math.floor(t),r=t-i;if(r===0||i>=e.length-1)return[...e[Math.min(i,e.length-1)]];let[o,s,a]=e[i],[u,l,c]=e[i+1],f=s<1e-6,d=l<1e-6,p;if(f&&d)p=a;else if(f)p=c;else if(d)p=a;else{let h=c-a;h>180&&(h-=360),h<-180&&(h+=360),p=a+h*r,p<0&&(p+=360),p>=360&&(p-=360)}return[o+(u-o)*r,s+(l-s)*r,p]},colorFromColorspace(e,n){let t=e[0],i=e[1],r=e[2],o=e.length>=4?e[3]:void 0,s;switch(n.toLowerCase()){case"rgb":s=qe({r:t*255,g:i*255,b:r*255});break;case"hsl":{let a=yo(t,i,r);s=qe(a);break}case"oklch":s={L:t,C:i,H:r};break;case"oklab":case"lab":s=Yi({L:t,a:i,b:r});break;default:throw new Error(`Unknown color space: ${n}`)}return o!==void 0?[s.L,s.C,s.H,o]:[s.L,s.C,s.H]},rgb(e,n,t,i){let r=qe({r:e*255,g:n*255,b:t*255}),o=tn(i);return o!==void 0?[r.L,r.C,r.H,o]:[r.L,r.C,r.H]},hsv(e,n,t,i){let r=xp(e,n,t),o=qe(r),s=tn(i);return s!==void 0?[o.L,o.C,o.H,s]:[o.L,o.C,o.H]},hsl(e,n,t,i){let r=yo(e,n,t),o=qe({r:r.r,g:r.g,b:r.b}),s=tn(i);return s!==void 0?[o.L,o.C,o.H,s]:[o.L,o.C,o.H]},oklab(e,n,t,i){let r=Yi({L:e,a:n,b:t}),o=tn(i);return o!==void 0?[r.L,r.C,r.H,o]:[r.L,r.C,r.H]},oklch(e,n,t,i){let r=tn(i);return r!==void 0?[e,n,t,r]:[e,n,t]},asRgb(e){let n=mn(e),t=n.r/255,i=n.g/255,r=n.b/255;return n.alpha!==void 0?[t,i,r,n.alpha]:[t,i,r]},asHsv(e){let n=mn(e),t=Ep(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.v,n.alpha]:[t.h,t.s,t.v]},asHsl(e){let n=mn(e),t=xo(n.r,n.g,n.b);return n.alpha!==void 0?[t.h,t.s,t.l,n.alpha]:[t.h,t.s,t.l]},asOklab(e){let n=rr(e),t=Et({L:n.L,C:n.C,H:n.H});return n.alpha!==void 0?[t.L,t.a,t.b,n.alpha]:[t.L,t.a,t.b]},colorDelta(e,n){let t=Et(rr(e)),i=Et(rr(n));return vp(t,i)},distance(e,n){if(!Array.isArray(e)||!Array.isArray(n))throw new Error("Distance: expected two arrays");if(e.length!==n.length)throw new Error("Distance: dimension mismatch");let t=0;for(let i=0;i<e.length;i++){let r=e[i]-n[i];t+=r*r}return Math.sqrt(t)}};function Do(e,...n){let t=-1;for(let r of n)Array.isArray(r)&&(t=t<0?r.length:Math.min(t,r.length));if(t<0)return e(...n);let i=new Array(t);for(let r=0;r<t;r++)i[r]=Do(e,...n.map(o=>Array.isArray(o)?o[r]:o));return i}function su(e,n){let t=Array.isArray(e?.[0]),i=Array.isArray(n?.[0]);if(!t&&!i){if(e.length!==n.length)return NaN;let u=0;for(let l=0;l<e.length;l++)u+=e[l]*n[l];return u}if(t&&!i)return e.map(u=>u.length===n.length?u.reduce((l,c,f)=>l+c*n[f],0):NaN);if(!t&&i){if(e.length!==n.length)return NaN;let u=n[0].length,l=new Array(u).fill(0);for(let c=0;c<e.length;c++)for(let f=0;f<u;f++)l[f]+=e[c]*n[c][f];return l}let r=e.length,o=e[0].length;if(n.length!==o)return NaN;let s=n[0].length,a=[];for(let u=0;u<r;u++){let l=new Array(s).fill(0);for(let c=0;c<o;c++){let f=e[u][c];for(let d=0;d<s;d++)l[d]+=f*n[c][d]}a.push(l)}return a}function Yy(...e){let n=[],t=1;for(let r of e)Array.isArray(r)?n.push(r):t*=r;if(n.length===0)return t;let i=n[0];for(let r=1;r<n.length;r++){let o=n[r],s=!Array.isArray(i[0]),a=!Array.isArray(o[0]);if(s&&a){if(i.length!==o.length)return NaN;let u=new Array(i.length);for(let l=0;l<i.length;l++)u[l]=i[l]*o[l];i=u}else{let u=su(i,o);if(typeof u=="number")return u;i=u}}return t!==1&&(i=Do(r=>r*t,i)),i}function Qt(e,n,t){let i=Array.isArray(e),r=Array.isArray(n);if(i&&r){if(e.length!==n.length)return!1;for(let u=0;u<e.length;u++)if(Qt(e[u],n[u],t)!==!0)return!1;return!0}if(i)return e.map(u=>Qt(u,n,t));if(r)return n.map(u=>Qt(e,u,t));let o=u=>typeof u=="object"&&u!==null&&"re"in u?u:{re:u,im:0},s=o(e),a=o(n);return Math.hypot(s.re-a.re,s.im-a.im)<=t}function iu(e,n,t){let i=Array.isArray(e),r=Array.isArray(n);return i&&r?Qt(e,n,t)!==!0:i?e.map(o=>iu(o,n,t)):r?n.map(o=>iu(e,o,t)):Qt(e,n,t)!==!0}function Pm(e){let n=e?.length;if(!n||e.some(i=>!Array.isArray(i)||i.length!==n))return NaN;let t=e.map((i,r)=>[...i,...Array.from({length:n},(o,s)=>r===s?1:0)]);for(let i=0;i<n;i++){let r=i;for(let s=i+1;s<n;s++)Math.abs(t[s][i])>Math.abs(t[r][i])&&(r=s);if(t[r][i]===0)return NaN;r!==i&&([t[i],t[r]]=[t[r],t[i]]);let o=t[i][i];for(let s=0;s<2*n;s++)t[i][s]/=o;for(let s=0;s<n;s++){if(s===i)continue;let a=t[s][i];if(a!==0)for(let u=0;u<2*n;u++)t[s][u]-=a*t[i][u]}}return t.map(i=>i.slice(n))}function Wy(e){let n=t=>t&&typeof t=="object"&&"im"in t?{re:t.re,im:-t.im}:t;return Array.isArray(e)?Array.isArray(e[0])?e[0].map((t,i)=>e.map(r=>n(r[i]))):e.map(n):e}function Xy(e){if(!Array.isArray(e))return NaN;if(Array.isArray(e[0])){let t=Math.min(e.length,e[0].length),i=[];for(let r=0;r<t;r++)i.push(e[r][r]);return i}let n=e.length;return Array.from({length:n},(t,i)=>Array.from({length:n},(r,o)=>i===o?e[i]:0))}function Ky(e,n){if(!Array.isArray(e)||!Array.isArray(e[0]))return NaN;let t=e.length;if(e.some(s=>!Array.isArray(s)||s.length!==t))return NaN;if(!Number.isInteger(n))return NaN;let i=e.map(s=>s.slice()),r=n;if(r<0){let s=Pm(e);if(!Array.isArray(s))return NaN;i=s,r=-r}let o=Array.from({length:t},(s,a)=>Array.from({length:t},(u,l)=>a===l?1:0));for(let s=0;s<r;s++)o=su(o,i);return o}function Qy(e){if(!Array.isArray(e)||!Array.isArray(e[0]))return NaN;let n=e.length,t=e[0].length,i=e.map(o=>o.slice()),r=0;for(let o=0;o<t&&r<n;o++){let s=r;for(let u=r+1;u<n;u++)Math.abs(i[u][o])>Math.abs(i[s][o])&&(s=u);if(i[s][o]===0)continue;s!==r&&([i[s],i[r]]=[i[r],i[s]]);let a=i[r][o];for(let u=0;u<t;u++)i[r][u]/=a;for(let u=0;u<n;u++){if(u===r)continue;let l=i[u][o];if(l!==0)for(let c=0;c<t;c++)i[u][c]-=l*i[r][c]}r++}return i}var Dm={bcast:Do,add:(e,n)=>Do((t,i)=>t+i,e,n),chop:ci,factorial:ui,factorial2:li,gamma:ue,gcd:ds,pow:(e,n)=>e===0&&n===0?NaN:Math.pow(e,n),cond:e=>{if(e===!0||e===!1)return e;throw new Error('Condition must evaluate to "True" or "False".')},heaviside:e=>e<0?0:e===0?.5:1,shuffle:(e,n)=>{let t=n===void 0?Math.random:pa(n>>>0),i=e.slice();for(let r=i.length-1;r>0;r--){let o=Math.floor(t()*(r+1));[i[r],i[o]]=[i[o],i[r]]}return i},matmul:su,mul:Yy,eq:Qt,neq:iu,cross:(e,n)=>e.length===3&&n.length===3?[e[1]*n[2]-e[2]*n[1],e[2]*n[0]-e[0]*n[2],e[0]*n[1]-e[1]*n[0]]:NaN,norm:(e,n)=>{if(typeof e=="number")return Math.abs(e);if(!Array.isArray(e))return NaN;if(Array.isArray(e[0])&&n!==void 0){let r=e;if(n===1){let o=0;for(let s=0;s<r[0].length;s++){let a=0;for(let u=0;u<r.length;u++)a+=Math.abs(r[u][s]);o=Math.max(o,a)}return o}if(n===1/0){let o=0;for(let s of r){let a=0;for(let u of s)a+=Math.abs(u);o=Math.max(o,a)}return o}return NaN}let t=e.flat(1/0);if(n===1/0){let r=0;for(let o of t)r=Math.max(r,Math.abs(o));return r}if(n===void 0||n===2){let r=0;for(let o of t)r+=o*o;return Math.sqrt(r)}let i=0;for(let r of t)i+=Math.pow(Math.abs(r),n);return Math.pow(i,1/n)},transpose:e=>!Array.isArray(e)||!Array.isArray(e[0])?e:e[0].map((n,t)=>e.map(i=>i[t])),det:e=>{let n=e?.length;if(!n||e.some(r=>!Array.isArray(r)||r.length!==n))return NaN;let t=e.map(r=>r.slice()),i=1;for(let r=0;r<n;r++){let o=r;for(let s=r+1;s<n;s++)Math.abs(t[s][r])>Math.abs(t[o][r])&&(o=s);if(t[o][r]===0)return 0;o!==r&&([t[r],t[o]]=[t[o],t[r]],i=-i),i*=t[r][r];for(let s=r+1;s<n;s++){let a=t[s][r]/t[r][r];for(let u=r;u<n;u++)t[s][u]-=a*t[r][u]}}return i},inv:Pm,conjTranspose:Wy,diagonal:Xy,matpow:Ky,rref:Qy,trace:e=>{if(!Array.isArray(e)||!Array.isArray(e[0]))return NaN;let n=0;for(let t=0;t<Math.min(e.length,e[0].length);t++){if(typeof e[t][t]!="number")return NaN;n+=e[t][t]}return n},shape:e=>{let n=[],t=e;for(;Array.isArray(t);)n.push(t.length),t=t[0];return n},reshape:(e,n)=>{let t=e.flat(1/0);if(t.length===0)return NaN;let i=r=>t[r%t.length];return n.length===1?Array.from({length:Math.max(0,n[0])},(r,o)=>i(o)):n.length===2?Array.from({length:Math.max(0,n[0])},(r,o)=>Array.from({length:Math.max(0,n[1])},(s,a)=>i(o*n[1]+a))):NaN},at:(e,n)=>{if(!Array.isArray(e))return NaN;let t=e.length,i=n>0?n-1:t+n;return n===0||i<0||i>=t?NaN:e[i]},integrate:(e,n,t)=>{let i=ir(e,n,t);return i.converged?i.estimate:Wa(e,n,t,1e7).estimate},integrateMC:(e,n,t)=>Wa(e,n,t,1e7).estimate,lcm:sc,lngamma:we,limit:Er,mean:fm,median:nr,variance:Ha,populationVariance:Za,standardDeviation:dm,populationStandardDeviation:pm,kurtosis:mm,skewness:hm,mode:gm,quartiles:Ya,interquartileRange:vm,covariance:ym,populationCovariance:xm,correlation:Em,erf:Tt,erfc:Nt,erfInv:Pp,beta:Fp,gammaQ:$p,betaRegularized:Rp,digamma:Mo,trigamma:ko,polygamma:Dp,zeta:Da,lambertW:Bp,besselJ:jn,besselY:So,besselI:vt,besselK:Vp,airyAi:Up,airyBi:Hp,airyAiPrime:Wp,airyBiPrime:Xp,sinc:rm,fresnelS:Un,fresnelC:Hn,sinIntegral:am,cosIntegral:um,expIntegralEi:Oa,logIntegral:lm,erfi:om,agm:Ba,ellipticK:La,ellipticE:Va,ellipticEIncomplete:Ja,ellipticF:qa,ellipticPiComplete:za,ellipticPiIncomplete:ja,hypergeometric2F1:Ga,hypergeometric1F1:Ua,mandelbrot:(e,n)=>{let t=0,i=0,r=typeof e=="number"?e:e.re,o=typeof e=="number"?0:e.im,s=Math.round(n);for(let a=0;a<s;a++){let u=t*t-i*i+r;i=2*t*i+o,t=u;let l=t*t+i*i;if(l>4){let c=(a-Math.log2(Math.log2(l))+4)/s;return Math.max(0,Math.min(1,c))}}return 1},julia:(e,n,t)=>{let i=typeof e=="number"?e:e.re,r=typeof e=="number"?0:e.im,o=typeof n=="number"?n:n.re,s=typeof n=="number"?0:n.im,a=Math.round(t);for(let u=0;u<a;u++){let l=i*i-r*r+o;r=2*i*r+s,i=l;let c=i*i+r*r;if(c>4){let f=(u-Math.log2(Math.log2(c))+4)/a;return Math.max(0,Math.min(1,f))}}return 1},binomial:er,fibonacci:ou,csin:e=>fe(new V(e.re,e.im).sin()),ccos:e=>fe(new V(e.re,e.im).cos()),ctan:e=>fe(new V(e.re,e.im).tan()),casin:e=>fe(new V(e.re,e.im).asin()),cacos:e=>fe(new V(e.re,e.im).acos()),catan:e=>fe(new V(e.re,e.im).atan()),csinh:e=>fe(new V(e.re,e.im).sinh()),ccosh:e=>fe(new V(e.re,e.im).cosh()),ctanh:e=>fe(new V(e.re,e.im).tanh()),csqrt:e=>fe(new V(e.re,e.im).sqrt()),cexp:e=>fe(new V(e.re,e.im).exp()),cln:e=>fe(new V(e.re,e.im).log()),cpow:(e,n)=>{let t=typeof e=="number"?new V(e,0):new V(e.re,e.im),i=typeof n=="number"?new V(n,0):new V(n.re,n.im);return fe(t.pow(i))},ccot:e=>fe(new V(e.re,e.im).cot()),csec:e=>fe(new V(e.re,e.im).sec()),ccsc:e=>fe(new V(e.re,e.im).csc()),ccoth:e=>fe(new V(e.re,e.im).coth()),csech:e=>fe(new V(e.re,e.im).sech()),ccsch:e=>fe(new V(e.re,e.im).csch()),cacot:e=>fe(new V(e.re,e.im).acot()),casec:e=>fe(new V(e.re,e.im).asec()),cacsc:e=>fe(new V(e.re,e.im).acsc()),cacoth:e=>fe(new V(e.re,e.im).acoth()),casech:e=>fe(new V(e.re,e.im).asech()),cacsch:e=>fe(new V(e.re,e.im).acsch()),cabs:e=>new V(e.re,e.im).abs(),carg:e=>new V(e.re,e.im).arg(),cconj:e=>fe(new V(e.re,e.im).conjugate()),cneg:e=>({re:-e.re,im:-e.im}),...Zy},ru=class extends Function{SYS=Dm;constructor(n,t=""){return super("_SYS","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,o)=>super.apply(r,[this.SYS,...o]),get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}},Fo=class extends Function{SYS=Dm;constructor(n,t,i=""){return super("_SYS",...t,i?`${i}return ${n}`:`return ${n}`),new Proxy(this,{apply:(r,o,s)=>super.apply(o,[this.SYS,...s]),get:(r,o)=>o==="toString"?()=>i?`(${t.join(", ")}) => { ${i}return ${n}; }`:`(${t.join(", ")}) => ${n}`:o==="isCompiled"?!0:Reflect.get(r,o)})}},Oo=class{getOperators(){return Qa}getFunctions(){return nu}createTarget(n={}){return{language:"javascript",operators:t=>Qa[t],functions:t=>nu[t],var:t=>({Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"})[t],string:t=>JSON.stringify(t),number:t=>t.toString(),complex:(t,i)=>`({ re: ${t}, im: ${i} })`,bindExpr:(t,i)=>`((${t.map(r=>r[0]).join(", ")}) => ${i})(${t.map(r=>r[1]).join(", ")})`,assertBoolean:t=>`_SYS.cond(${t})`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){try{return this.compileOrThrow(n,t)}catch(i){if(t.fallback!==!0)throw i;let r=i.message;return console.warn(`Compilation fallback for "${n.operator}" (target: javascript): ${r}`),N.buildInterpreterFallback(n,r,"javascript",this.createTarget(),t.vars?new Set(Object.keys(t.vars)):void 0)}}compileOrThrow(n,t={}){n=fn(n);let{operators:i,functions:r,vars:o,imports:s=[],preamble:a,realOnly:u,iterationBudget:l,quadrature:c}=t,f=n.unknowns,d=s.map(v=>{if(typeof v=="function")return v.toString();throw new Error(`Unsupported import \`${v}\``)}).join(`
56
56
  `),p={};if(r)for(let[v,T]of Object.entries(r))typeof T=="function"?rx(T)?(d+=`${T.toString()};
57
57
  `,p[v]=T.name):(d+=`const ${v} = ${T.toString()};
58
58
  `,p[v]=v):typeof T=="string"&&(p[v]=T);let h=v=>{if(i){let T=typeof i=="function"?i(v):i[v];if(T)return T}return Qa[v]},b=this.createTarget({operators:h,functions:v=>p?.[v]?p[v]:nu[v],var:v=>{if(o&&v in o){let _=o[v];return typeof _=="string"?_:JSON.stringify(_)}let T={Pi:"Math.PI",ExponentialE:"Math.E",NaN:"Number.NaN",ImaginaryUnit:"({ re: 0, im: 1 })",Half:"0.5",MachineEpsilon:"Number.EPSILON",GoldenRatio:"((1 + Math.sqrt(5)) / 2)",CatalanConstant:"0.91596559417721901",EulerGamma:"0.57721566490153286"}[v];if(T!==void 0)return T;if(f.includes(v))return`_.${v}`;if(n.engine._getSymbolValue(v)===void 0)return`_.${v}`},preamble:(a??"")+d,iterationBudget:l,quadrature:c,varsKeys:o?new Set(Object.keys(o)):void 0,randomSeed:n.engine._randomNumericSeed(),randomState:{counter:0},userFunctions:{defs:new Map,compiling:new Set}}),y=ex(n,b,u);return N.withReferences(y,n,b,o?new Set(Object.keys(o)):void 0)}};function tu(e){let n=e.run;return{...e,run:((...i)=>{let r=n(...i);return typeof r=="boolean"?NaN:typeof r=="object"&&r!==null&&"im"in r?r.im===0?r.re:NaN:r})}}function ex(e,n,t){if(g(e,"Function")){let u=e.ops,l=u.slice(1).map(h=>he(h)||"_"),c=N.compile(u[0].canonical,{...n,var:h=>l.includes(h)?h:n.var(h),boundVars:N.withBoundNames(n,l)}),f=N.userFunctionsPreamble(n),d=new Fo(c,l,f),p={target:"javascript",success:!0,code:f?`(${l.join(", ")}) => { ${f}return ${c}; }`:`(${l.join(", ")}) => ${c}`,calling:"lambda",run:d};return t?tu(p):p}if(S(e)){let u=n.operators?.(e.symbol);if(u){let l=new Fo(`a ${u[0]} b`,["a","b"]),c={target:"javascript",success:!0,code:`(a, b) => a ${u[0]} b`,calling:"lambda",run:l};return t?tu(c):c}}let i=N.compile(e,n),r=N.userFunctionsPreamble(n),o=r?n.preamble?`${n.preamble}
59
- ${r}`:r:n.preamble,s=new ru(i,o),a={target:"javascript",success:!0,code:i,calling:"expression",run:s};return t?tu(a):a}var nx=100;function Fm(e){e.operator;let n=e,t=S(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,o=i.re,s=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0,upperNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0}}function Sm(e,n,t){return n!==void 0?String(n):`Math.floor(${N.compile(e,t)})`}function wm(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1]){if(hn(n[0]))return $m(e,n[0],i,!1);if(Rm(n[0]))return $m(e,n[0],i,!0);throw new Error(`${e}: no indexing set`)}return Om(e,n[0],n.slice(1),i)}function J(e,n,t,i){if(!n||!hn(n))throw new Error(`${e}: ${i!==void 0?`operand ${i}`:"operand"} is not an indexed collection (list/vector/range). Fail closed (D6).`);return t(n)}function Mm(e){if(S(e))switch(e.symbol){case"Add":return"(_a, _b) => _a + _b";case"Multiply":return"(_a, _b) => _a * _b";case"Min":return"(_a, _b) => Math.min(_a, _b)";case"Max":return"(_a, _b) => Math.max(_a, _b)"}}function km(e,n,t){let i=!1;if(g(e,"Function"))i=e.nops-1===2;else if(S(e)){let r=N.userFunctionLiteral(e.engine,e.symbol);r!==void 0?i=r.nops-1===2:i=t.operators?.(e.symbol)!==void 0}if(i)return`((_f) => (_a, _b) => _f(_a, _b))(${n(e)})`}function _t(e,n){let t=le(n.type.type);if(!(t!==void 0&&(t==="number"||C(t,"real")||C(t,"boolean")||C(t,"string"))&&!N.isComplexValued(n)))throw new Error(`${e}: cannot compile \u2014 the interpreter compares elements structurally, but only real/boolean/string elements compare by value on the JavaScript target. Fail closed (D6).`)}function Am(e,n,t){let i=e==="Max"?"Math.max":"Math.min",r=e==="Max"?"-Infinity":"Infinity";return n.length===1&&n[0]&&hn(n[0])?`(${t(n[0])}).reduce((_a, _b) => ${i}(_a, _b), ${r})`:n.some(o=>o&&hn(o))?`[${n.map(s=>hn(s)?`...(${t(s)})`:t(s)).join(", ")}].reduce((_a, _b) => ${i}(_a, _b), ${r})`:`${i}(${n.map(o=>t(o)).join(", ")})`}function Cm(e,n,t){let i=e==="GCD"?"_SYS.gcd":"_SYS.lcm",r=e==="GCD"?"0":"1",o=n.map(s=>{if(hn(s))return`...(${t(s)})`;if(s.isCollection||s.type.matches("collection"))throw new Error(`${e}: cannot compile \u2014 operand is a collection but not an indexed collection (list/vector/range). Fail closed (D6).`);return t(s)});return`((_a) => _a.length ? _a.reduce((_x, _y) => ${i}(_x, _y)) : ${r})([${o.join(", ")}])`}function $m(e,n,t,i){let r=N.compile(n,t);return i?`((_c) => Array.isArray(_c) ? _c.reduce((_a, _b) => ${e==="Sum"?"_SYS.add":"_SYS.mul"}(_a, _b), ${e==="Sum"?"0":"1"}) : _c)(${r})`:`(${r}).reduce((_a, _b) => _a ${e==="Sum"?"+":"*"} _b, ${e==="Sum"?"0":"1"})`}function Om(e,n,t,i){N.assertScalarBigOpBody(e,n);let{index:r,lowerExpr:o,upperExpr:s,lowerNum:a,upperNum:u}=Fm(t[0]),l=t.slice(1),c=e==="Sum",f=c?"+":"*",d=c?"0":"1",p=N.isComplexValued(n),h=O=>l.length>0?Om(e,n,l,O):N.compile(n,O),b=a!==void 0&&u!==void 0;if(b&&a>u)return d;if(b&&u-a+1<=nx){let j=[];for(let ie=a;ie<=u;ie++){let ae={...i,var:ke=>ke===r?String(ie):i.var(ke),boundVars:N.withBoundNames(i,[r])};j.push(`(${h(ae)})`)}if(!p)return`(${j.join(` ${f} `)})`;let G=j.map((ie,ae)=>`_t${ae}`),re=j.map((ie,ae)=>`const ${G[ae]} = ${ie}`).join("; ");if(c){let ie=G.map(ke=>`${ke}.re`).join(" + "),ae=G.map(ke=>`${ke}.im`).join(" + ");return`(() => { ${re}; return { re: ${ie}, im: ${ae} }; })()`}let oe=G[0],Ee=[re];for(let ie=1;ie<G.length;ie++){let ae=oe;oe=`_p${ie}`,Ee.push(`const ${oe} = { re: ${ae}.re * ${G[ie]}.re - ${ae}.im * ${G[ie]}.im, im: ${ae}.re * ${G[ie]}.im + ${ae}.im * ${G[ie]}.re }`)}return`(() => { ${Ee.join("; ")}; return ${oe}; })()`}let y=Sm(o,a,i),v=Sm(s,u,i),T=h({...i,var:O=>O===r?r:i.var(O),boundVars:N.withBoundNames(i,[r])}),_=N.tempVar(),A=i.iterationBudget,k=O=>A!==void 0?`if (!(_upper - ${r} < ${A})) return ${O}; `:"";if(p){let O=N.tempVar(),j=k("{ re: NaN, im: NaN }");return c?`(() => { let ${_} = { re: 0, im: 0 }; let ${r} = ${y}; const _upper = ${v}; ${j}while (${r} <= _upper) { const ${O} = ${T}; ${_} = { re: ${_}.re + ${O}.re, im: ${_}.im + ${O}.im }; ${r}++; } return ${_}; })()`:`(() => { let ${_} = { re: 1, im: 0 }; let ${r} = ${y}; const _upper = ${v}; ${j}while (${r} <= _upper) { const ${O} = ${T}; ${_} = { re: ${_}.re * ${O}.re - ${_}.im * ${O}.im, im: ${_}.re * ${O}.im + ${_}.im * ${O}.re }; ${r}++; } return ${_}; })()`}return`(() => { let ${_} = ${d}; let ${r} = ${y}; const _upper = ${v}; ${k("NaN")}while (${r} <= _upper) { ${_} ${f}= ${T}; ${r}++; } return ${_}; })()`}function tx(e,n){let t=n.varsKeys;if(!t||t.size===0)return!1;for(let i of t)if(e.some(r=>r.has(i)))return!0;return!1}function ix(e,n,t){if(!tx(e,t))try{let d=e[0].engine._fn("Integrate",[...e]).evaluate();if(!d.has("Integrate")&&d.isValid&&d.isNaN!==!0)return`(${n(d)})`}catch{}let{index:i,lowerExpr:r,upperExpr:o}=Fm(e[1]),s=i,a=e[0];if(g(e[0],"Function")){let d=he(e[0].ops[1]);d&&(s=d),a=e[0].ops[0]}let u=N.compile(a,{...t,var:d=>d===s?d:t.var(d),boundVars:N.withBoundNames(t,[s])}),l=N.compile(r,t),c=N.compile(o,t);return`${t.quadrature==="monte-carlo"?"_SYS.integrateMC":"_SYS.integrate"}((${s}) => (${u}), ${l}, ${c})`}function rx(e){let n=e.toString();return n.includes("=>")?!1:n.startsWith("function ")&&n.includes(e.name)}function ou(e){if(!Number.isInteger(e))return NaN;if(e<0)return e%2===0?-ou(-e):ou(-e);if(e<=1)return e;let n=0,t=1;for(let i=2;i<=e;i++){let r=n+t;n=t,t=r}return t}var Bm={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["==",8],NotEqual:["!=",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},ox=new Set(["attribute","const","uniform","varying","buffer","shared","coherent","volatile","restrict","readonly","writeonly","layout","centroid","flat","smooth","noperspective","patch","sample","in","out","inout","precision","invariant","precise","subroutine","break","continue","do","for","while","switch","case","default","if","else","discard","return","void","bool","int","uint","float","double","vec2","vec3","vec4","dvec2","dvec3","dvec4","bvec2","bvec3","bvec4","ivec2","ivec3","ivec4","uvec2","uvec3","uvec4","mat2","mat3","mat4","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","dmat2","dmat3","dmat4","sampler2D","sampler3D","samplerCube","sampler2DArray","sampler2DShadow","samplerCubeShadow","isampler2D","usampler2D","atomic_uint","image2D","true","false","filter","texture","asm","union","enum","typedef","template","this","packed","goto","inline","noinline","public","static","extern","external","interface","long","short","half","fixed","unsigned","superp","input","output","hvec2","hvec3","hvec4","fvec2","fvec3","fvec4","sizeof","cast","namespace","using"]),sx=new Set(["alias","break","case","const","const_assert","continue","continuing","default","diagnostic","discard","else","enable","false","fn","for","if","let","loop","override","requires","return","struct","switch","true","var","while","bool","f16","f32","i32","u32","vec2","vec3","vec4","vec2f","vec3f","vec4f","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","array","atomic","ptr","sampler","sampler_comparison","texture_1d","texture_2d","texture_2d_array","texture_3d","texture_cube","texture_cube_array","texture_multisampled_2d","function","private","workgroup","uniform","storage","read","write","read_write","texture","sample","filter","as","async","attribute","auto","binding","cast","compile","do","enum","extern","external","inline","instance","interface","match","namespace","new","null","of","operator","public","reference","self","set","shared","static","super","template","this","typedef","union","unless","using","virtual","where"]);function ax(e){return e==="wgsl"?sx:e==="glsl"?ox:new Set}function du(e,n){if(ax(n).has(e))throw new Error(`"${e}" is a reserved word in ${n??"this shader language"} and cannot be used as a variable name. Rename it before compiling to a GPU target (fail closed, D6).`);return e}function Ze(e){return e?.language==="wgsl"?"vec2f":"vec2"}function ei(e){return e?.language==="wgsl"?"vec3f":"vec3"}function fu(e){return e?.language==="wgsl"?"bitcast<f32>(0x7fc00000u)":"_gpu_nan()"}function qm(e){if(e===null)return;if(g(e,"Tuple")||g(e,"List")){let t=e.nops;return t>=2&&t<=4?t:void 0}if(N.isComplexValued(e))return 2;let n=e.type.type;if(typeof n!="string"){if(n.kind==="tuple"){let t=n.elements.length;return t>=2&&t<=4?t:void 0}if(n.kind==="list"&&n.dimensions?.length===1){let t=n.dimensions[0];return t>=2&&t<=4?t:void 0}}}function au(e,n){let t=qm(e);return t===void 0?fu(n):`${n?.language==="wgsl"?`vec${t}f`:`vec${t}`}(${fu(n)})`}function or(e,n,t,i){return i?.language==="wgsl"?`select(${t}, ${n}, ${e})`:`((${e}) ? (${n}) : (${t}))`}function Bo(e,n,t){if(n.length===0)throw new Error(`${e}: needs at least one argument`);if(n.length===1)return t(n[0]);let i=`${e}(${t(n[0])}, ${t(n[1])})`;for(let r=2;r<n.length;r++)i=`${e}(${i}, ${t(n[r])})`;return i}function uu(e,n,t){let i=e.type.type;if(!(typeof i!="string"&&i.kind==="tuple")&&e.type.matches("indexed_collection"))throw new Error(`Point${n.toUpperCase()}: a list of points has no GPU lowering (a point must be a single vec2/vec3/vec4). Fail closed.`);return`${t(e)}.${n}`}function lu(e){return ne(e)?e.string?.toLowerCase()??null:null}function Lm(e,n,t){let i=se(e);return i!==void 0&&Number.isInteger(i)?i.toString():`${t?.language==="wgsl"?"i32":"int"}(${n(e)})`}var ux=100,lx=4;function Vm(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);if(N.assertScalarBigOpBody(e,n[0]),N.isComplexValued(n[0]))throw new Error(`${e}: complex-valued body not supported in GPU targets`);if(n.length>2)throw new Error(`${e}: multi-index (${n.length-1} indexing sets) is not supported in GPU targets`);let r=n[1];if(!g(r,"Limits"))throw new Error(`${e}: expected Limits indexing set`);let o=r.ops,s=S(o[0])?o[0].symbol:"_",a=o[1].re,u=o[2].re,l=!isNaN(a)&&Number.isFinite(a)?Math.floor(a):void 0,c=!isNaN(u)&&Number.isFinite(u)?Math.floor(u):void 0,f=e==="Sum",d=f?"+":"*",p=f?"0.0":"1.0",h=i.language==="wgsl",b=l!==void 0&&c!==void 0;if(b&&l>c)return p;if(b&&c-l+1<=ux){let oe=[];for(let Ee=l;Ee<=c;Ee++){let ie=Zn(Ee),ae={...i,var:ke=>ke===s?ie:i.var(ke)};oe.push(`(${N.compile(n[0],ae)})`)}return`(${oe.join(` ${d} `)})`}let y=N.tempVar(),v=h?"f32":"float",T=h?"i32":"int",_={...i,var:oe=>oe===s?h?`f32(${s})`:`float(${s})`:i.var(oe)},A=N.compile(n[0],_),k=l!==void 0?String(l):N.compile(o[1],i),O=c!==void 0?String(c):N.compile(o[2],i);du(s,i.language);let j=h?`var ${y}: ${v}`:`${v} ${y}`,G=h?`var ${s}: ${T}`:`${T} ${s}`;return[`${j} = ${p};`,`for (${G} = ${k}; ${s} <= ${O}; ${s}++) {`,` ${y} ${d}= ${A};`,"}",`return ${y};`].join(`
60
- `)}var cx={Add:(e,n,t)=>{if(e.length===0)return"0.0";if(e.length===1)return n(e[0]);if(!e.some(l=>N.isComplexValued(l)))return zn(e.map(l=>n(l)),"0.0","+");let r=e.map(l=>np(l,n));if(r.some(l=>l===null)){let l=Ze(t);return e.map(c=>{let f=n(c);return N.isComplexValued(c)?f:`${l}(${f}, 0.0)`}).join(" + ")}let o=[],s=[];for(let l of r)l.re!==null&&o.push(l.re),l.im!==null&&s.push(l.im);let a=zn(o,"0.0","+"),u=zn(s,"0.0","+");return`${Ze(t)}(${a}, ${u})`},Multiply:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);if(!e.some(l=>N.isComplexValued(l)))return zn(e.map(l=>n(l)),"1.0","*");let r=e.findIndex(l=>S(l,"ImaginaryUnit")||F(l)&&l.re===0&&l.im!==0);if(r>=0){let l=e[r],c=S(l,"ImaginaryUnit")?1:l.im,f=e.filter((b,y)=>y!==r),d=Ze(t);if(f.length===0)return`${d}(0.0, ${ge(c)})`;let p=f.map(b=>fo(b,n(b)));c!==1&&p.unshift(ge(c));let h=zn(p,"1.0","*");return`${d}(0.0, ${h})`}let o=[],s=[];for(let l of e)N.isComplexValued(l)?s.push(n(l)):o.push(fo(l,n(l)));let a=zn(o,"1.0","*"),u=s[0];for(let l=1;l<s.length;l++)u=`_gpu_cmul(${u}, ${s[l]})`;return a!=="1.0"&&(u=`(${a} * ${u})`),u},Divide:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);let i=N.isComplexValued(e[0]),r=e.length>=2&&N.isComplexValued(e[1]);if(!i&&!r){if(e.length===2){let a=se(e[0]),u=se(e[1]);return a!==void 0&&u!==void 0&&u!==0?ge(a/u):u===1?n(e[0]):`${n(e[0])} / ${n(e[1])}`}let s=n(e[0]);for(let a=1;a<e.length;a++)s=`${s} / ${n(e[a])}`;return s}return i&&r?`_gpu_cdiv(${n(e[0])}, ${n(e[1])})`:i&&!r?`(${n(e[0])} / ${n(e[1])})`:`_gpu_cdiv(${Ze(t)}(${n(e[0])}, 0.0), ${n(e[1])})`},Negate:([e],n,t)=>{if(e===null)throw new Error("Negate: no argument");let i=se(e);return i!==void 0?ge(-i):F(e)&&e.im!==0?`${Ze(t)}(${ge(-e.re)}, ${ge(-e.im)})`:S(e,"ImaginaryUnit")?`${Ze(t)}(0.0, -1.0)`:`(-${n(e)})`},Abs:(e,n)=>N.isComplexValued(e[0])?`length(${n(e[0])})`:N.isNonNegative(e[0])?n(e[0]):`abs(${n(e[0])})`,Arccos:(e,n)=>N.isComplexValued(e[0])?`_gpu_cacos(${n(e[0])})`:`acos(${n(e[0])})`,Arcsin:(e,n)=>N.isComplexValued(e[0])?`_gpu_casin(${n(e[0])})`:`asin(${n(e[0])})`,Arctan:(e,n)=>N.isComplexValued(e[0])?`_gpu_catan(${n(e[0])})`:`atan(${n(e[0])})`,Ceil:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`ceil(${n(e[0])})`,Clamp:"clamp",Cos:(e,n)=>N.isComplexValued(e[0])?`_gpu_ccos(${n(e[0])})`:`cos(${n(e[0])})`,Degrees:"radians",Exp:(e,n)=>N.isComplexValued(e[0])?`_gpu_cexp(${n(e[0])})`:`exp(${n(e[0])})`,Exp2:"exp2",First:(e,n)=>`${n(e[0])}.x`,Second:(e,n)=>`${n(e[0])}.y`,Third:(e,n)=>`${n(e[0])}.z`,PointX:(e,n)=>uu(e[0],"x",n),PointY:(e,n)=>uu(e[0],"y",n),PointZ:(e,n)=>uu(e[0],"z",n),Floor:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`floor(${n(e[0])})`,Fract:"fract",Ln:(e,n)=>N.isComplexValued(e[0])?`_gpu_cln(${n(e[0])})`:`log(${n(e[0])})`,Log2:"log2",Max:(e,n)=>Bo("max",e,n),Min:(e,n)=>Bo("min",e,n),ElementMax:(e,n)=>Bo("max",e,n),ElementMin:(e,n)=>Bo("min",e,n),Mix:"mix",If:(e,n,t)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return or(n(e[0]),n(e[1]),n(e[2]),t)},When:(e,n,t)=>{if(e.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");return S(e[1],"True")?`(${n(e[0])})`:S(e[1],"False")?au(e[0],t):or(n(e[1]),n(e[0]),au(e[0],t),t)},Which:(e,n,t)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected condition/value pairs");let i=e.filter((o,s)=>s%2===1).find(o=>qm(o))??null,r=o=>{if(o>=e.length)return au(i,t);let s=e[o],a=e[o+1];return S(s,"True")?`(${n(a)})`:or(n(s),n(a),r(o+2),t)};return r(0)},Match:(e,n,t)=>N.compileMatchTernary(e[0].engine,e,t,{ternary:(i,r,o)=>or(i,r,o,t),eq:"==",noMatch:fu(t),allowStrings:!1}),Power:(e,n,t)=>{let i=e[0],r=e[1];if(i===null)throw new Error("Power: no argument");if(N.isComplexValued(i)||N.isComplexValued(r)){if(S(i,"ExponentialE"))return`_gpu_cexp(${n(r)})`;let a=Ze(t),u=N.isComplexValued(i)?n(i):`${a}(${n(i)}, 0.0)`,l=N.isComplexValued(r)?n(r):`${a}(${n(r)}, 0.0)`;return`_gpu_cpow(${u}, ${l})`}let o=se(i),s=se(r);if(o!==void 0&&s!==void 0)return ge(Math.pow(o,s));if(s===0)return"1.0";if(s===1)return n(i);if(s===.5)return`sqrt(${n(i)})`;if(s!==void 0&&Number.isInteger(s)){let a=s,u=Math.abs(a),l;if(u===1)l=`(${n(i)})`;else if((S(i)||F(i))&&u<=lx){let c=n(i);l=`(${Array(u).fill(c).join(" * ")})`}else l=`_gpu_powi(${n(i)}, ${Zn(u)})`;return a<0?`(1.0 / ${l})`:l}return`pow(${n(i)}, ${n(r)})`},Radians:"radians",Round:(e,n)=>{if(N.isIntegerValued(e[0]))return n(e[0]);let t=n(e[0]);return`(sign(${t}) * floor(abs(${t}) + 0.5))`},Sign:"sign",Sin:(e,n)=>N.isComplexValued(e[0])?`_gpu_csin(${n(e[0])})`:`sin(${n(e[0])})`,Smoothstep:"smoothstep",Sqrt:(e,n)=>{if(N.isComplexValued(e[0]))return`_gpu_csqrt(${n(e[0])})`;let t=se(e[0]);return t!==void 0?ge(Math.sqrt(t)):`sqrt(${n(e[0])})`},Step:"step",Tan:(e,n)=>N.isComplexValued(e[0])?`_gpu_ctan(${n(e[0])})`:`tan(${n(e[0])})`,Truncate:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`trunc(${n(e[0])})`,Real:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).x`:n(e[0]),Imaginary:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).y`:"0.0",Argument:(e,n,t)=>{if(N.isComplexValued(e[0])){let i=n(e[0]);return`atan(${i}.y, ${i}.x)`}return or(`${n(e[0])} >= 0.0`,"0.0","3.14159265359",t)},Conjugate:(e,n,t)=>{if(N.isComplexValued(e[0])){let i=Ze(t),r=n(e[0]);return`${i}(${r}.x, -${r}.y)`}return n(e[0])},Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * round(${t(e)} / ${t(n)}))`},Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");if(N.isComplexValued(e))return`_gpu_cdiv(_gpu_ccos(${n(e)}), _gpu_csin(${n(e)}))`;let t=n(e);return`(cos(${t}) / sin(${t}))`},Csc:([e],n,t)=>{if(e===null)throw new Error("Csc: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_csin(${n(e)}))`:`(1.0 / sin(${n(e)}))`},Sec:([e],n,t)=>{if(e===null)throw new Error("Sec: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_ccos(${n(e)}))`:`(1.0 / cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`(1.5707963267948966 - atan(${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`asin(1.0 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`acos(1.0 / (${n(e)}))`},Sinh:(e,n)=>N.isComplexValued(e[0])?`_gpu_csinh(${n(e[0])})`:`sinh(${n(e[0])})`,Cosh:(e,n)=>N.isComplexValued(e[0])?`_gpu_ccosh(${n(e[0])})`:`cosh(${n(e[0])})`,Tanh:(e,n)=>N.isComplexValued(e[0])?`_gpu_ctanh(${n(e[0])})`:`tanh(${n(e[0])})`,Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");if(N.isComplexValued(e))return`_gpu_cdiv(_gpu_ccosh(${n(e)}), _gpu_csinh(${n(e)}))`;let t=n(e);return`(cosh(${t}) / sinh(${t}))`},Csch:([e],n,t)=>{if(e===null)throw new Error("Csch: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_csinh(${n(e)}))`:`(1.0 / sinh(${n(e)}))`},Sech:([e],n,t)=>{if(e===null)throw new Error("Sech: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_ccosh(${n(e)}))`:`(1.0 / cosh(${n(e)}))`},Arcosh:(e,n)=>N.isComplexValued(e[0])?`_gpu_cacosh(${n(e[0])})`:`acosh(${n(e[0])})`,Arsinh:(e,n)=>N.isComplexValued(e[0])?`_gpu_casinh(${n(e[0])})`:`asinh(${n(e[0])})`,Artanh:(e,n)=>N.isComplexValued(e[0])?`_gpu_catanh(${n(e[0])})`:`atanh(${n(e[0])})`,Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`atanh(1.0 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`asinh(1.0 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`acosh(1.0 / (${n(e)}))`},Arctan2:(e,n)=>{if(e.length<2)throw new Error("Arctan2: need two arguments");return`atan(${n(e[0])}, ${n(e[1])})`},Hypot:([e,n],t)=>{if(e===null||n===null)throw new Error("Hypot: need two arguments");return`length(vec2(${t(e)}, ${t(n)}))`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return`((1.0 - cos(${n(e)})) * 0.5)`},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2.0 * asin(sqrt(${n(e)})))`},Gamma:([e],n)=>{if(e===null)throw new Error("Gamma: no argument");return`_gpu_gamma(${n(e)})`},GammaLn:([e],n)=>{if(e===null)throw new Error("GammaLn: no argument");return`_gpu_gammaln(${n(e)})`},Factorial:([e],n)=>{if(e===null)throw new Error("Factorial: no argument");return`_gpu_gamma(${n(e)} + 1.0)`},Beta:([e,n],t)=>{if(e===null||n===null)throw new Error("Beta: need two arguments");let i=t(e),r=t(n);return`(_gpu_gamma(${i}) * _gpu_gamma(${r}) / _gpu_gamma(${i} + ${r}))`},Erf:([e],n)=>{if(e===null)throw new Error("Erf: no argument");return`_gpu_erf(${n(e)})`},Erfc:([e],n)=>{if(e===null)throw new Error("Erfc: no argument");return`(1.0 - _gpu_erf(${n(e)}))`},ErfInv:([e],n)=>{if(e===null)throw new Error("ErfInv: no argument");return`_gpu_erfinv(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_gpu_heaviside(${n(e)})`},Sinc:([e],n)=>{if(e===null)throw new Error("Sinc: no argument");return`_gpu_sinc(${n(e)})`},FresnelC:([e],n)=>{if(e===null)throw new Error("FresnelC: no argument");return`_gpu_fresnelC(${n(e)})`},FresnelS:([e],n)=>{if(e===null)throw new Error("FresnelS: no argument");return`_gpu_fresnelS(${n(e)})`},BesselJ:([e,n],t,i)=>{if(e===null||n===null)throw new Error("BesselJ: need two arguments");return`_gpu_besselJ(${i?.language==="wgsl"?"i32":"int"}(${t(e)}), ${t(n)})`},Lb:"log2",Log:(e,n)=>{if(e.length===0)throw new Error("Log: no argument");return e.length===1?`(log(${n(e[0])}) / log(10.0))`:`(log(${n(e[0])}) / log(${n(e[1])}))`},Log10:([e],n)=>{if(e===null)throw new Error("Log10: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Lg:([e],n)=>{if(e===null)throw new Error("Lg: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");if(S(e)||F(e)){let t=n(e);return`(${t} * ${t})`}return`_gpu_powi(${n(e)}, 2.0)`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n==null)return`sqrt(${t(e)})`;let i=se(n);if(i===2)return`sqrt(${t(e)})`;let r=se(e);if(r!==void 0&&i!==void 0){let o=Math.pow(r,1/i);return Number.isNaN(o)&&Number.isInteger(i)&&i%2!==0&&r<0?ge(-Math.pow(-r,1/i)):ge(o)}if(i!==void 0&&Number.isInteger(i)&&i%2!==0){let o=t(e);return`(sign(${o}) * pow(abs(${o}), ${ge(1/i)}))`}return`pow(${t(e)}, 1.0 / ${t(n)})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");let t=n(e[0]),i=n(e[1]),r=e.length>=3?n(e[2]):"0.5";return`_gpu_color_mix(${t}, ${i}, ${r})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_gpu_apca(${t(e)}, ${t(n)})`},ContrastingColor:(e,n,t)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");let i=n(e[0]);if(e.length>=3){let u=n(e[1]),l=n(e[2]);return`(abs(_gpu_apca(${i}, ${u})) >= abs(_gpu_apca(${i}, ${l})) ? ${u} : ${l})`}let o=t?.language==="wgsl"?"vec3f":"vec3",s=`${o}(0.0)`,a=`${o}(1.0, 0.0, 0.0)`;return`((_gpu_apca(${i}, ${s}) > 50.0) ? ${s} : ${a})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");let i=lu(n);if(i===null)throw new Error("ColorToColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklch_to_oklab(${r})`;case"rgb":return`_gpu_oklch_to_srgb(${r})`;case"hsl":return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${r}))`;case"hsv":return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${r}))`;default:throw new Error(`ColorToColorspace: unsupported space "${i}" on GPU target`)}},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");let i=lu(n);if(i===null)throw new Error("ColorFromColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklab_to_oklch(${r})`;case"rgb":return`_gpu_srgb_to_oklch(${r})`;case"hsl":return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${r}))`;case"hsv":return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${r}))`;default:throw new Error(`ColorFromColorspace: unsupported space "${i}" on GPU target`)}},Color:([e],n,t)=>{if(e===null)throw new Error("Color: no argument");let i=lu(e);if(i===null)throw new Error("Color: argument must be a string literal on GPU target");let r=Cn(i);if(r===0&&i.trim().toLowerCase()!=="transparent")throw new Error(`Color: invalid color string "${i}"`);let o=r>>>24&255,s=r>>>16&255,a=r>>>8&255,u=qe({r:o,g:s,b:a});return`${ei(t)}(${ge(u.L)}, ${ge(u.C)}, ${ge(u.H)})`},Rgb:(e,n,t)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_gpu_srgb_to_oklch(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Hsv:(e,n,t)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Hsl:(e,n,t)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Oklab:(e,n,t)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_gpu_oklab_to_oklch(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Oklch:(e,n,t)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_gpu_oklch_to_oklab(${n(e)})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_gpu_oklch_to_srgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${n(e)}))`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${n(e)}))`},Mandelbrot:([e,n],t,i)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");let r=Lm(n,t,i);return`_fractal_mandelbrot(${t(e)}, ${r})`},Julia:([e,n,t],i,r)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");let o=Lm(t,i,r);return`_fractal_julia(${i(e)}, ${i(n)}, ${o})`},Cross:"cross",Distance:"distance",Dot:"dot",Norm:"length",Length:(e,n,t)=>{throw new Error(`Length (collection element count) is not supported on the ${t.language??"GPU"} target: the '${t.language??"GPU"}' 'length()' builtin is the Euclidean norm (CE 'Norm'), not a count. Fail closed (D6).`)},Normalize:"normalize",Reflect:"reflect",Refract:"refract",Sum:(e,n,t)=>Vm("Sum",e,n,t),Product:(e,n,t)=>Vm("Product",e,n,t),Range:(e,n,t)=>{if(e.length<2||e.length>3)throw new Error("Range: GPU compile expects 2 or 3 arguments (lo, hi, step?)");let i=e[0].re,r=e[1].re,o=e.length===3?e[2].re:1;if(!Number.isFinite(i)||!Number.isFinite(r)||!Number.isFinite(o))throw new Error("Range: GPU compile requires constant numeric bounds (non-constant ranges must be materialized at JS host then uploaded as a uniform)");if(o===0)throw new Error("Range: step cannot be zero");let s=Math.max(0,Math.floor((r-i)/o)+1);if(s===0)throw new Error("Range: empty range (lo > hi for positive step, or lo < hi for negative step)");if(s>256)throw new Error(`Range: GPU compile inlines ranges up to 256 elements (got ${s})`);let a=[];for(let c=0;c<s;c++)a.push(i+c*o);return`${t.language==="wgsl"?`array<f32, ${s}>`:`float[${s}]`}(${a.map(Zn).join(", ")})`},Loop:(e,n,t)=>{if(!e[0])throw new Error("Loop: no body");if(!e[1])throw new Error("Loop: no indexing set");let i=e[1];if(!g(i,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let r=i.ops[0],o=i.ops[1];if(!S(r))throw new Error("Loop: index must be a symbol");if(!g(o,"Range"))throw new Error("Loop: expected Range(lo, hi)");let s=r.symbol;du(s,t.language);let a=Math.floor(o.ops[0].re),u=Math.floor(o.ops[1].re);if(!Number.isFinite(a)||!Number.isFinite(u))throw new Error("Loop: bounds must be finite numbers");let l=t.language==="wgsl",c=l?"i32":"int",f=l?`f32(${s})`:`float(${s})`,d=N.compile(e[0],{...t,var:h=>h===s?f:t.var(h)});return`for (${l?`var ${s}: ${c}`:`${c} ${s}`} = ${a}; ${s} <= ${u}; ${s}++) {
59
+ ${r}`:r:n.preamble,s=new ru(i,o),a={target:"javascript",success:!0,code:i,calling:"expression",run:s};return t?tu(a):a}var nx=100;function Fm(e){e.operator;let n=e,t=S(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,o=i.re,s=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0,upperNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0}}function Sm(e,n,t){return n!==void 0?String(n):`Math.floor(${N.compile(e,t)})`}function wm(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1]){if(hn(n[0]))return $m(e,n[0],i,!1);if(Rm(n[0]))return $m(e,n[0],i,!0);throw new Error(`${e}: no indexing set`)}return Om(e,n[0],n.slice(1),i)}function J(e,n,t,i){if(!n||!hn(n))throw new Error(`${e}: ${i!==void 0?`operand ${i}`:"operand"} is not an indexed collection (list/vector/range). Fail closed (D6).`);return t(n)}function Mm(e){if(S(e))switch(e.symbol){case"Add":return"(_a, _b) => _a + _b";case"Multiply":return"(_a, _b) => _a * _b";case"Min":return"(_a, _b) => Math.min(_a, _b)";case"Max":return"(_a, _b) => Math.max(_a, _b)"}}function km(e,n,t){let i=!1;if(g(e,"Function"))i=e.nops-1===2;else if(S(e)){let r=N.userFunctionLiteral(e.engine,e.symbol);r!==void 0?i=r.nops-1===2:i=t.operators?.(e.symbol)!==void 0}if(i)return`((_f) => (_a, _b) => _f(_a, _b))(${n(e)})`}function _t(e,n){let t=le(n.type.type);if(!(t!==void 0&&(t==="number"||C(t,"real")||C(t,"boolean")||C(t,"string"))&&!N.isComplexValued(n)))throw new Error(`${e}: cannot compile \u2014 the interpreter compares elements structurally, but only real/boolean/string elements compare by value on the JavaScript target. Fail closed (D6).`)}function Am(e,n,t){let i=e==="Max"?"Math.max":"Math.min",r=e==="Max"?"-Infinity":"Infinity";return n.length===1&&n[0]&&hn(n[0])?`(${t(n[0])}).reduce((_a, _b) => ${i}(_a, _b), ${r})`:n.some(o=>o&&hn(o))?`[${n.map(s=>hn(s)?`...(${t(s)})`:t(s)).join(", ")}].reduce((_a, _b) => ${i}(_a, _b), ${r})`:`${i}(${n.map(o=>t(o)).join(", ")})`}function Cm(e,n,t){let i=e==="GCD"?"_SYS.gcd":"_SYS.lcm",r=e==="GCD"?"0":"1",o=n.map(s=>{if(hn(s))return`...(${t(s)})`;if(s.isCollection||s.type.matches("collection"))throw new Error(`${e}: cannot compile \u2014 operand is a collection but not an indexed collection (list/vector/range). Fail closed (D6).`);return t(s)});return`((_a) => _a.length ? _a.reduce((_x, _y) => ${i}(_x, _y)) : ${r})([${o.join(", ")}])`}function $m(e,n,t,i){let r=N.compile(n,t);return i?`((_c) => Array.isArray(_c) ? _c.reduce((_a, _b) => ${e==="Sum"?"_SYS.add":"_SYS.mul"}(_a, _b), ${e==="Sum"?"0":"1"}) : _c)(${r})`:`(${r}).reduce((_a, _b) => _a ${e==="Sum"?"+":"*"} _b, ${e==="Sum"?"0":"1"})`}function Om(e,n,t,i){N.assertScalarBigOpBody(e,n);let{index:r,lowerExpr:o,upperExpr:s,lowerNum:a,upperNum:u}=Fm(t[0]),l=t.slice(1),c=e==="Sum",f=c?"+":"*",d=c?"0":"1",p=N.isComplexValued(n),h=O=>l.length>0?Om(e,n,l,O):N.compile(n,O),b=a!==void 0&&u!==void 0;if(b&&a>u)return d;if(b&&u-a+1<=nx){let j=[];for(let ie=a;ie<=u;ie++){let ae={...i,var:ke=>ke===r?String(ie):i.var(ke),boundVars:N.withBoundNames(i,[r])};j.push(`(${h(ae)})`)}if(!p)return`(${j.join(` ${f} `)})`;let G=j.map((ie,ae)=>`_t${ae}`),re=j.map((ie,ae)=>`const ${G[ae]} = ${ie}`).join("; ");if(c){let ie=G.map(ke=>`${ke}.re`).join(" + "),ae=G.map(ke=>`${ke}.im`).join(" + ");return`(() => { ${re}; return { re: ${ie}, im: ${ae} }; })()`}let oe=G[0],Ee=[re];for(let ie=1;ie<G.length;ie++){let ae=oe;oe=`_p${ie}`,Ee.push(`const ${oe} = { re: ${ae}.re * ${G[ie]}.re - ${ae}.im * ${G[ie]}.im, im: ${ae}.re * ${G[ie]}.im + ${ae}.im * ${G[ie]}.re }`)}return`(() => { ${Ee.join("; ")}; return ${oe}; })()`}let y=Sm(o,a,i),v=Sm(s,u,i),T=h({...i,var:O=>O===r?r:i.var(O),boundVars:N.withBoundNames(i,[r])}),_=N.tempVar(),A=i.iterationBudget,k=O=>A!==void 0?`if (!(_upper - ${r} < ${A})) return ${O}; `:"";if(p){let O=N.tempVar(),j=k("{ re: NaN, im: NaN }");return c?`(() => { let ${_} = { re: 0, im: 0 }; let ${r} = ${y}; const _upper = ${v}; ${j}while (${r} <= _upper) { const ${O} = ${T}; ${_} = { re: ${_}.re + ${O}.re, im: ${_}.im + ${O}.im }; ${r}++; } return ${_}; })()`:`(() => { let ${_} = { re: 1, im: 0 }; let ${r} = ${y}; const _upper = ${v}; ${j}while (${r} <= _upper) { const ${O} = ${T}; ${_} = { re: ${_}.re * ${O}.re - ${_}.im * ${O}.im, im: ${_}.re * ${O}.im + ${_}.im * ${O}.re }; ${r}++; } return ${_}; })()`}return`(() => { let ${_} = ${d}; let ${r} = ${y}; const _upper = ${v}; ${k("NaN")}while (${r} <= _upper) { ${_} ${f}= ${T}; ${r}++; } return ${_}; })()`}function tx(e,n){let t=n.varsKeys;if(!t||t.size===0)return!1;for(let i of t)if(e.some(r=>r.has(i)))return!0;return!1}function ix(e,n,t){if(!tx(e,t))try{let d=e[0].engine._fn("Integrate",[...e]).evaluate();if(!d.has("Integrate")&&d.isValid&&d.isNaN!==!0)return`(${n(d)})`}catch{}let{index:i,lowerExpr:r,upperExpr:o}=Fm(e[1]),s=i,a=e[0];if(g(e[0],"Function")){let d=he(e[0].ops[1]);d&&(s=d),a=e[0].ops[0]}let u=N.compile(a,{...t,var:d=>d===s?d:t.var(d),boundVars:N.withBoundNames(t,[s])}),l=N.compile(r,t),c=N.compile(o,t);return`${t.quadrature==="monte-carlo"?"_SYS.integrateMC":"_SYS.integrate"}((${s}) => (${u}), ${l}, ${c})`}function rx(e){let n=e.toString();return n.includes("=>")?!1:n.startsWith("function ")&&n.includes(e.name)}function ou(e){if(!Number.isInteger(e))return NaN;if(e<0)return e%2===0?-ou(-e):ou(-e);if(e<=1)return e;let n=0,t=1;for(let i=2;i<=e;i++){let r=n+t;n=t,t=r}return t}var Bm={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Equal:["==",8],NotEqual:["!=",8],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["&&",4],Or:["||",3],Not:["!",14]},ox=new Set(["attribute","const","uniform","varying","buffer","shared","coherent","volatile","restrict","readonly","writeonly","layout","centroid","flat","smooth","noperspective","patch","sample","in","out","inout","precision","invariant","precise","subroutine","break","continue","do","for","while","switch","case","default","if","else","discard","return","void","bool","int","uint","float","double","vec2","vec3","vec4","dvec2","dvec3","dvec4","bvec2","bvec3","bvec4","ivec2","ivec3","ivec4","uvec2","uvec3","uvec4","mat2","mat3","mat4","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","dmat2","dmat3","dmat4","sampler2D","sampler3D","samplerCube","sampler2DArray","sampler2DShadow","samplerCubeShadow","isampler2D","usampler2D","atomic_uint","image2D","true","false","filter","texture","asm","union","enum","typedef","template","this","packed","goto","inline","noinline","public","static","extern","external","interface","long","short","half","fixed","unsigned","superp","input","output","hvec2","hvec3","hvec4","fvec2","fvec3","fvec4","sizeof","cast","namespace","using"]),sx=new Set(["alias","break","case","const","const_assert","continue","continuing","default","diagnostic","discard","else","enable","false","fn","for","if","let","loop","override","requires","return","struct","switch","true","var","while","bool","f16","f32","i32","u32","vec2","vec3","vec4","vec2f","vec3f","vec4f","vec2i","vec3i","vec4i","vec2u","vec3u","vec4u","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","array","atomic","ptr","sampler","sampler_comparison","texture_1d","texture_2d","texture_2d_array","texture_3d","texture_cube","texture_cube_array","texture_multisampled_2d","function","private","workgroup","uniform","storage","read","write","read_write","texture","sample","filter","as","async","attribute","auto","binding","cast","compile","do","enum","extern","external","inline","instance","interface","match","namespace","new","null","of","operator","public","reference","self","set","shared","static","super","template","this","typedef","union","unless","using","virtual","where"]);function ax(e){return e==="wgsl"?sx:e==="glsl"?ox:new Set}function du(e,n){if(ax(n).has(e))throw new Error(`"${e}" is a reserved word in ${n??"this shader language"} and cannot be used as a variable name. Rename it before compiling to a GPU target (fail closed, D6).`);return e}function Ze(e){return e?.language==="wgsl"?"vec2f":"vec2"}function ei(e){return e?.language==="wgsl"?"vec3f":"vec3"}function fu(e){return e?.language==="wgsl"?"bitcast<f32>(0x7fc00000u)":"_gpu_nan()"}function qm(e){if(e===null)return;if(g(e,"Tuple")||g(e,"List")){let t=e.nops;return t>=2&&t<=4?t:void 0}if(N.isComplexValued(e))return 2;let n=e.type.type;if(typeof n!="string"){if(n.kind==="tuple"){let t=n.elements.length;return t>=2&&t<=4?t:void 0}if(n.kind==="list"&&n.dimensions?.length===1){let t=n.dimensions[0];return t>=2&&t<=4?t:void 0}}}function au(e,n){let t=qm(e);return t===void 0?fu(n):`${n?.language==="wgsl"?`vec${t}f`:`vec${t}`}(${fu(n)})`}function or(e,n,t,i){return i?.language==="wgsl"?`select(${t}, ${n}, ${e})`:`((${e}) ? (${n}) : (${t}))`}function Bo(e,n,t){if(n.length===0)throw new Error(`${e}: needs at least one argument`);if(n.length===1)return t(n[0]);let i=`${e}(${t(n[0])}, ${t(n[1])})`;for(let r=2;r<n.length;r++)i=`${e}(${i}, ${t(n[r])})`;return i}function uu(e,n,t){let i=e.type.type;if(!(typeof i!="string"&&i.kind==="tuple")&&e.type.matches("indexed_collection"))throw new Error(`Point${n.toUpperCase()}: a list of points has no GPU lowering (a point must be a single vec2/vec3/vec4). Fail closed.`);return`${t(e)}.${n}`}function lu(e){return ne(e)?e.string?.toLowerCase()??null:null}function Lm(e,n,t){let i=se(e);return i!==void 0&&Number.isInteger(i)?i.toString():`${t?.language==="wgsl"?"i32":"int"}(${n(e)})`}var ux=100,lx=4;function Vm(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);if(N.assertScalarBigOpBody(e,n[0]),N.isComplexValued(n[0]))throw new Error(`${e}: complex-valued body not supported in GPU targets`);if(n.length>2)throw new Error(`${e}: multi-index (${n.length-1} indexing sets) is not supported in GPU targets`);let r=n[1];if(!g(r,"Limits"))throw new Error(`${e}: expected Limits indexing set`);let o=r.ops,s=S(o[0])?o[0].symbol:"_",a=o[1].re,u=o[2].re,l=!isNaN(a)&&Number.isFinite(a)?Math.floor(a):void 0,c=!isNaN(u)&&Number.isFinite(u)?Math.floor(u):void 0,f=e==="Sum",d=f?"+":"*",p=f?"0.0":"1.0",h=i.language==="wgsl",b=l!==void 0&&c!==void 0;if(b&&l>c)return p;if(b&&c-l+1<=ux){let oe=[];for(let Ee=l;Ee<=c;Ee++){let ie=Zn(Ee),ae={...i,var:ke=>ke===s?ie:i.var(ke),boundVars:N.withBoundNames(i,[s])};oe.push(`(${N.compile(n[0],ae)})`)}return`(${oe.join(` ${d} `)})`}let y=N.tempVar(),v=h?"f32":"float",T=h?"i32":"int",_={...i,var:oe=>oe===s?h?`f32(${s})`:`float(${s})`:i.var(oe),boundVars:N.withBoundNames(i,[s])},A=N.compile(n[0],_),k=l!==void 0?String(l):N.compile(o[1],i),O=c!==void 0?String(c):N.compile(o[2],i);du(s,i.language);let j=h?`var ${y}: ${v}`:`${v} ${y}`,G=h?`var ${s}: ${T}`:`${T} ${s}`;return[`${j} = ${p};`,`for (${G} = ${k}; ${s} <= ${O}; ${s}++) {`,` ${y} ${d}= ${A};`,"}",`return ${y};`].join(`
60
+ `)}var cx={Add:(e,n,t)=>{if(e.length===0)return"0.0";if(e.length===1)return n(e[0]);if(!e.some(l=>N.isComplexValued(l)))return zn(e.map(l=>n(l)),"0.0","+");let r=e.map(l=>np(l,n));if(r.some(l=>l===null)){let l=Ze(t);return e.map(c=>{let f=n(c);return N.isComplexValued(c)?f:`${l}(${f}, 0.0)`}).join(" + ")}let o=[],s=[];for(let l of r)l.re!==null&&o.push(l.re),l.im!==null&&s.push(l.im);let a=zn(o,"0.0","+"),u=zn(s,"0.0","+");return`${Ze(t)}(${a}, ${u})`},Multiply:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);if(!e.some(l=>N.isComplexValued(l)))return zn(e.map(l=>n(l)),"1.0","*");let r=e.findIndex(l=>S(l,"ImaginaryUnit")||F(l)&&l.re===0&&l.im!==0);if(r>=0){let l=e[r],c=S(l,"ImaginaryUnit")?1:l.im,f=e.filter((b,y)=>y!==r),d=Ze(t);if(f.length===0)return`${d}(0.0, ${ge(c)})`;let p=f.map(b=>fo(b,n(b)));c!==1&&p.unshift(ge(c));let h=zn(p,"1.0","*");return`${d}(0.0, ${h})`}let o=[],s=[];for(let l of e)N.isComplexValued(l)?s.push(n(l)):o.push(fo(l,n(l)));let a=zn(o,"1.0","*"),u=s[0];for(let l=1;l<s.length;l++)u=`_gpu_cmul(${u}, ${s[l]})`;return a!=="1.0"&&(u=`(${a} * ${u})`),u},Divide:(e,n,t)=>{if(e.length===0)return"1.0";if(e.length===1)return n(e[0]);let i=N.isComplexValued(e[0]),r=e.length>=2&&N.isComplexValued(e[1]);if(!i&&!r){if(e.length===2){let a=se(e[0]),u=se(e[1]);return a!==void 0&&u!==void 0&&u!==0?ge(a/u):u===1?n(e[0]):`${n(e[0])} / ${n(e[1])}`}let s=n(e[0]);for(let a=1;a<e.length;a++)s=`${s} / ${n(e[a])}`;return s}return i&&r?`_gpu_cdiv(${n(e[0])}, ${n(e[1])})`:i&&!r?`(${n(e[0])} / ${n(e[1])})`:`_gpu_cdiv(${Ze(t)}(${n(e[0])}, 0.0), ${n(e[1])})`},Negate:([e],n,t)=>{if(e===null)throw new Error("Negate: no argument");let i=se(e);return i!==void 0?ge(-i):F(e)&&e.im!==0?`${Ze(t)}(${ge(-e.re)}, ${ge(-e.im)})`:S(e,"ImaginaryUnit")?`${Ze(t)}(0.0, -1.0)`:`(-${n(e)})`},Abs:(e,n)=>N.isComplexValued(e[0])?`length(${n(e[0])})`:N.isNonNegative(e[0])?n(e[0]):`abs(${n(e[0])})`,Arccos:(e,n)=>N.isComplexValued(e[0])?`_gpu_cacos(${n(e[0])})`:`acos(${n(e[0])})`,Arcsin:(e,n)=>N.isComplexValued(e[0])?`_gpu_casin(${n(e[0])})`:`asin(${n(e[0])})`,Arctan:(e,n)=>N.isComplexValued(e[0])?`_gpu_catan(${n(e[0])})`:`atan(${n(e[0])})`,Ceil:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`ceil(${n(e[0])})`,Clamp:"clamp",Cos:(e,n)=>N.isComplexValued(e[0])?`_gpu_ccos(${n(e[0])})`:`cos(${n(e[0])})`,Degrees:"radians",Exp:(e,n)=>N.isComplexValued(e[0])?`_gpu_cexp(${n(e[0])})`:`exp(${n(e[0])})`,Exp2:"exp2",First:(e,n)=>`${n(e[0])}.x`,Second:(e,n)=>`${n(e[0])}.y`,Third:(e,n)=>`${n(e[0])}.z`,PointX:(e,n)=>uu(e[0],"x",n),PointY:(e,n)=>uu(e[0],"y",n),PointZ:(e,n)=>uu(e[0],"z",n),Floor:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`floor(${n(e[0])})`,Fract:"fract",Ln:(e,n)=>N.isComplexValued(e[0])?`_gpu_cln(${n(e[0])})`:`log(${n(e[0])})`,Log2:"log2",Max:(e,n)=>Bo("max",e,n),Min:(e,n)=>Bo("min",e,n),ElementMax:(e,n)=>Bo("max",e,n),ElementMin:(e,n)=>Bo("min",e,n),Mix:"mix",If:(e,n,t)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return or(n(e[0]),n(e[1]),n(e[2]),t)},When:(e,n,t)=>{if(e.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");return S(e[1],"True")?`(${n(e[0])})`:S(e[1],"False")?au(e[0],t):or(n(e[1]),n(e[0]),au(e[0],t),t)},Which:(e,n,t)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected condition/value pairs");let i=e.filter((o,s)=>s%2===1).find(o=>qm(o))??null,r=o=>{if(o>=e.length)return au(i,t);let s=e[o],a=e[o+1];return S(s,"True")?`(${n(a)})`:or(n(s),n(a),r(o+2),t)};return r(0)},Match:(e,n,t)=>N.compileMatchTernary(e[0].engine,e,t,{ternary:(i,r,o)=>or(i,r,o,t),eq:"==",noMatch:fu(t),allowStrings:!1}),Power:(e,n,t)=>{let i=e[0],r=e[1];if(i===null)throw new Error("Power: no argument");if(N.isComplexValued(i)||N.isComplexValued(r)){if(S(i,"ExponentialE"))return`_gpu_cexp(${n(r)})`;let a=Ze(t),u=N.isComplexValued(i)?n(i):`${a}(${n(i)}, 0.0)`,l=N.isComplexValued(r)?n(r):`${a}(${n(r)}, 0.0)`;return`_gpu_cpow(${u}, ${l})`}let o=se(i),s=se(r);if(o!==void 0&&s!==void 0)return ge(Math.pow(o,s));if(s===0)return"1.0";if(s===1)return n(i);if(s===.5)return`sqrt(${n(i)})`;if(s!==void 0&&Number.isInteger(s)){let a=s,u=Math.abs(a),l;if(u===1)l=`(${n(i)})`;else if((S(i)||F(i))&&u<=lx){let c=n(i);l=`(${Array(u).fill(c).join(" * ")})`}else l=`_gpu_powi(${n(i)}, ${Zn(u)})`;return a<0?`(1.0 / ${l})`:l}return`pow(${n(i)}, ${n(r)})`},Radians:"radians",Round:(e,n)=>{if(N.isIntegerValued(e[0]))return n(e[0]);let t=n(e[0]);return`(sign(${t}) * floor(abs(${t}) + 0.5))`},Sign:"sign",Sin:(e,n)=>N.isComplexValued(e[0])?`_gpu_csin(${n(e[0])})`:`sin(${n(e[0])})`,Smoothstep:"smoothstep",Sqrt:(e,n)=>{if(N.isComplexValued(e[0]))return`_gpu_csqrt(${n(e[0])})`;let t=se(e[0]);return t!==void 0?ge(Math.sqrt(t)):`sqrt(${n(e[0])})`},Step:"step",Tan:(e,n)=>N.isComplexValued(e[0])?`_gpu_ctan(${n(e[0])})`:`tan(${n(e[0])})`,Truncate:(e,n)=>N.isIntegerValued(e[0])?n(e[0]):`trunc(${n(e[0])})`,Real:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).x`:n(e[0]),Imaginary:(e,n)=>N.isComplexValued(e[0])?`(${n(e[0])}).y`:"0.0",Argument:(e,n,t)=>{if(N.isComplexValued(e[0])){let i=n(e[0]);return`atan(${i}.y, ${i}.x)`}return or(`${n(e[0])} >= 0.0`,"0.0","3.14159265359",t)},Conjugate:(e,n,t)=>{if(N.isComplexValued(e[0])){let i=Ze(t),r=n(e[0]);return`${i}(${r}.x, -${r}.y)`}return n(e[0])},Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");return`(${t(e)} - ${t(n)} * round(${t(e)} / ${t(n)}))`},Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");if(N.isComplexValued(e))return`_gpu_cdiv(_gpu_ccos(${n(e)}), _gpu_csin(${n(e)}))`;let t=n(e);return`(cos(${t}) / sin(${t}))`},Csc:([e],n,t)=>{if(e===null)throw new Error("Csc: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_csin(${n(e)}))`:`(1.0 / sin(${n(e)}))`},Sec:([e],n,t)=>{if(e===null)throw new Error("Sec: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_ccos(${n(e)}))`:`(1.0 / cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`(1.5707963267948966 - atan(${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`asin(1.0 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`acos(1.0 / (${n(e)}))`},Sinh:(e,n)=>N.isComplexValued(e[0])?`_gpu_csinh(${n(e[0])})`:`sinh(${n(e[0])})`,Cosh:(e,n)=>N.isComplexValued(e[0])?`_gpu_ccosh(${n(e[0])})`:`cosh(${n(e[0])})`,Tanh:(e,n)=>N.isComplexValued(e[0])?`_gpu_ctanh(${n(e[0])})`:`tanh(${n(e[0])})`,Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");if(N.isComplexValued(e))return`_gpu_cdiv(_gpu_ccosh(${n(e)}), _gpu_csinh(${n(e)}))`;let t=n(e);return`(cosh(${t}) / sinh(${t}))`},Csch:([e],n,t)=>{if(e===null)throw new Error("Csch: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_csinh(${n(e)}))`:`(1.0 / sinh(${n(e)}))`},Sech:([e],n,t)=>{if(e===null)throw new Error("Sech: no argument");return N.isComplexValued(e)?`_gpu_cdiv(${Ze(t)}(1.0, 0.0), _gpu_ccosh(${n(e)}))`:`(1.0 / cosh(${n(e)}))`},Arcosh:(e,n)=>N.isComplexValued(e[0])?`_gpu_cacosh(${n(e[0])})`:`acosh(${n(e[0])})`,Arsinh:(e,n)=>N.isComplexValued(e[0])?`_gpu_casinh(${n(e[0])})`:`asinh(${n(e[0])})`,Artanh:(e,n)=>N.isComplexValued(e[0])?`_gpu_catanh(${n(e[0])})`:`atanh(${n(e[0])})`,Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`atanh(1.0 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`asinh(1.0 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`acosh(1.0 / (${n(e)}))`},Arctan2:(e,n)=>{if(e.length<2)throw new Error("Arctan2: need two arguments");return`atan(${n(e[0])}, ${n(e[1])})`},Hypot:([e,n],t)=>{if(e===null||n===null)throw new Error("Hypot: need two arguments");return`length(vec2(${t(e)}, ${t(n)}))`},Haversine:([e],n)=>{if(e===null)throw new Error("Haversine: no argument");return`((1.0 - cos(${n(e)})) * 0.5)`},InverseHaversine:([e],n)=>{if(e===null)throw new Error("InverseHaversine: no argument");return`(2.0 * asin(sqrt(${n(e)})))`},Gamma:([e],n)=>{if(e===null)throw new Error("Gamma: no argument");return`_gpu_gamma(${n(e)})`},GammaLn:([e],n)=>{if(e===null)throw new Error("GammaLn: no argument");return`_gpu_gammaln(${n(e)})`},Factorial:([e],n)=>{if(e===null)throw new Error("Factorial: no argument");return`_gpu_gamma(${n(e)} + 1.0)`},Beta:([e,n],t)=>{if(e===null||n===null)throw new Error("Beta: need two arguments");let i=t(e),r=t(n);return`(_gpu_gamma(${i}) * _gpu_gamma(${r}) / _gpu_gamma(${i} + ${r}))`},Erf:([e],n)=>{if(e===null)throw new Error("Erf: no argument");return`_gpu_erf(${n(e)})`},Erfc:([e],n)=>{if(e===null)throw new Error("Erfc: no argument");return`(1.0 - _gpu_erf(${n(e)}))`},ErfInv:([e],n)=>{if(e===null)throw new Error("ErfInv: no argument");return`_gpu_erfinv(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_gpu_heaviside(${n(e)})`},Sinc:([e],n)=>{if(e===null)throw new Error("Sinc: no argument");return`_gpu_sinc(${n(e)})`},FresnelC:([e],n)=>{if(e===null)throw new Error("FresnelC: no argument");return`_gpu_fresnelC(${n(e)})`},FresnelS:([e],n)=>{if(e===null)throw new Error("FresnelS: no argument");return`_gpu_fresnelS(${n(e)})`},BesselJ:([e,n],t,i)=>{if(e===null||n===null)throw new Error("BesselJ: need two arguments");return`_gpu_besselJ(${i?.language==="wgsl"?"i32":"int"}(${t(e)}), ${t(n)})`},Lb:"log2",Log:(e,n)=>{if(e.length===0)throw new Error("Log: no argument");return e.length===1?`(log(${n(e[0])}) / log(10.0))`:`(log(${n(e[0])}) / log(${n(e[1])}))`},Log10:([e],n)=>{if(e===null)throw new Error("Log10: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Lg:([e],n)=>{if(e===null)throw new Error("Lg: no argument");return`(log(${n(e)}) * 0.4342944819032518)`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");if(S(e)||F(e)){let t=n(e);return`(${t} * ${t})`}return`_gpu_powi(${n(e)}, 2.0)`},Root:([e,n],t)=>{if(e===null)throw new Error("Root: no argument");if(n==null)return`sqrt(${t(e)})`;let i=se(n);if(i===2)return`sqrt(${t(e)})`;let r=se(e);if(r!==void 0&&i!==void 0){let o=Math.pow(r,1/i);return Number.isNaN(o)&&Number.isInteger(i)&&i%2!==0&&r<0?ge(-Math.pow(-r,1/i)):ge(o)}if(i!==void 0&&Number.isInteger(i)&&i%2!==0){let o=t(e);return`(sign(${o}) * pow(abs(${o}), ${ge(1/i)}))`}return`pow(${t(e)}, 1.0 / ${t(n)})`},ColorMix:(e,n)=>{if(e.length<2)throw new Error("ColorMix: need two colors");let t=n(e[0]),i=n(e[1]),r=e.length>=3?n(e[2]):"0.5";return`_gpu_color_mix(${t}, ${i}, ${r})`},ColorContrast:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorContrast: need two colors");return`_gpu_apca(${t(e)}, ${t(n)})`},ContrastingColor:(e,n,t)=>{if(e.length===0)throw new Error("ContrastingColor: no argument");let i=n(e[0]);if(e.length>=3){let u=n(e[1]),l=n(e[2]);return`(abs(_gpu_apca(${i}, ${u})) >= abs(_gpu_apca(${i}, ${l})) ? ${u} : ${l})`}let o=t?.language==="wgsl"?"vec3f":"vec3",s=`${o}(0.0)`,a=`${o}(1.0, 0.0, 0.0)`;return`((_gpu_apca(${i}, ${s}) > 50.0) ? ${s} : ${a})`},ColorToColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorToColorspace: need color and space");let i=lu(n);if(i===null)throw new Error("ColorToColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklch_to_oklab(${r})`;case"rgb":return`_gpu_oklch_to_srgb(${r})`;case"hsl":return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${r}))`;case"hsv":return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${r}))`;default:throw new Error(`ColorToColorspace: unsupported space "${i}" on GPU target`)}},ColorFromColorspace:([e,n],t)=>{if(e===null||n===null)throw new Error("ColorFromColorspace: need components and space");let i=lu(n);if(i===null)throw new Error("ColorFromColorspace: space must be a string literal");let r=t(e);switch(i){case"oklch":return r;case"oklab":case"lab":return`_gpu_oklab_to_oklch(${r})`;case"rgb":return`_gpu_srgb_to_oklch(${r})`;case"hsl":return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${r}))`;case"hsv":return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${r}))`;default:throw new Error(`ColorFromColorspace: unsupported space "${i}" on GPU target`)}},Color:([e],n,t)=>{if(e===null)throw new Error("Color: no argument");let i=lu(e);if(i===null)throw new Error("Color: argument must be a string literal on GPU target");let r=Cn(i);if(r===0&&i.trim().toLowerCase()!=="transparent")throw new Error(`Color: invalid color string "${i}"`);let o=r>>>24&255,s=r>>>16&255,a=r>>>8&255,u=qe({r:o,g:s,b:a});return`${ei(t)}(${ge(u.L)}, ${ge(u.C)}, ${ge(u.H)})`},Rgb:(e,n,t)=>{if(e.length<3)throw new Error("Rgb: need 3 components");return`_gpu_srgb_to_oklch(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Hsv:(e,n,t)=>{if(e.length<3)throw new Error("Hsv: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsv_to_rgb(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Hsl:(e,n,t)=>{if(e.length<3)throw new Error("Hsl: need 3 components");return`_gpu_srgb_to_oklch(_gpu_hsl_to_rgb(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})))`},Oklab:(e,n,t)=>{if(e.length<3)throw new Error("Oklab: need 3 components");return`_gpu_oklab_to_oklch(${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])}))`},Oklch:(e,n,t)=>{if(e.length<3)throw new Error("Oklch: need 3 components");return`${ei(t)}(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`},AsOklch:([e],n)=>{if(e===null)throw new Error("AsOklch: no argument");return n(e)},AsOklab:([e],n)=>{if(e===null)throw new Error("AsOklab: no argument");return`_gpu_oklch_to_oklab(${n(e)})`},AsRgb:([e],n)=>{if(e===null)throw new Error("AsRgb: no argument");return`_gpu_oklch_to_srgb(${n(e)})`},AsHsv:([e],n)=>{if(e===null)throw new Error("AsHsv: no argument");return`_gpu_rgb_to_hsv(_gpu_oklch_to_srgb(${n(e)}))`},AsHsl:([e],n)=>{if(e===null)throw new Error("AsHsl: no argument");return`_gpu_rgb_to_hsl(_gpu_oklch_to_srgb(${n(e)}))`},Mandelbrot:([e,n],t,i)=>{if(e===null||n===null)throw new Error("Mandelbrot: missing arguments");let r=Lm(n,t,i);return`_fractal_mandelbrot(${t(e)}, ${r})`},Julia:([e,n,t],i,r)=>{if(e===null||n===null||t===null)throw new Error("Julia: missing arguments");let o=Lm(t,i,r);return`_fractal_julia(${i(e)}, ${i(n)}, ${o})`},Cross:"cross",Distance:"distance",Dot:"dot",Norm:"length",Length:(e,n,t)=>{throw new Error(`Length (collection element count) is not supported on the ${t.language??"GPU"} target: the '${t.language??"GPU"}' 'length()' builtin is the Euclidean norm (CE 'Norm'), not a count. Fail closed (D6).`)},Normalize:"normalize",Reflect:"reflect",Refract:"refract",Sum:(e,n,t)=>Vm("Sum",e,n,t),Product:(e,n,t)=>Vm("Product",e,n,t),Range:(e,n,t)=>{if(e.length<2||e.length>3)throw new Error("Range: GPU compile expects 2 or 3 arguments (lo, hi, step?)");let i=e[0].re,r=e[1].re,o=e.length===3?e[2].re:1;if(!Number.isFinite(i)||!Number.isFinite(r)||!Number.isFinite(o))throw new Error("Range: GPU compile requires constant numeric bounds (non-constant ranges must be materialized at JS host then uploaded as a uniform)");if(o===0)throw new Error("Range: step cannot be zero");let s=Math.max(0,Math.floor((r-i)/o)+1);if(s===0)throw new Error("Range: empty range (lo > hi for positive step, or lo < hi for negative step)");if(s>256)throw new Error(`Range: GPU compile inlines ranges up to 256 elements (got ${s})`);let a=[];for(let c=0;c<s;c++)a.push(i+c*o);return`${t.language==="wgsl"?`array<f32, ${s}>`:`float[${s}]`}(${a.map(Zn).join(", ")})`},Loop:(e,n,t)=>{if(!e[0])throw new Error("Loop: no body");if(!e[1])throw new Error("Loop: no indexing set");let i=e[1];if(!g(i,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let r=i.ops[0],o=i.ops[1];if(!S(r))throw new Error("Loop: index must be a symbol");if(!g(o,"Range"))throw new Error("Loop: expected Range(lo, hi)");let s=r.symbol;du(s,t.language);let a=Math.floor(o.ops[0].re),u=Math.floor(o.ops[1].re);if(!Number.isFinite(a)||!Number.isFinite(u))throw new Error("Loop: bounds must be finite numbers");let l=t.language==="wgsl",c=l?"i32":"int",f=l?`f32(${s})`:`float(${s})`,d=N.compile(e[0],{...t,var:h=>h===s?f:t.var(h),boundVars:N.withBoundNames(t,[s])});return`for (${l?`var ${s}: ${c}`:`${c} ${s}`} = ${a}; ${s} <= ${u}; ${s}++) {
61
61
  ${d};
62
62
  }`},GCD:(e,n)=>{if(e.length<2)throw new Error("GCD: need at least two arguments");if(e.length>2)throw new Error("GCD: GPU target supports only two-argument GCD");let t=e[0],i=e[1];if(t===null||i===null)throw new Error("GCD: missing argument");return`_gpu_gcd(${n(t)}, ${n(i)})`},Variance:(e,n)=>{let t;if(e.length===1&&g(e[0],"List"))t=e[0].ops;else if(e.length>=2)t=e;else throw new Error("Variance: GPU target requires a List argument or at least 2 scalar arguments");let i=t.length;if(i<2)throw new Error("Variance: need at least 2 elements");let r=t.map(u=>n(u)),s=`((${r.join(" + ")}) / ${Zn(i)})`;return`((${r.map(u=>`(${u} - ${s}) * (${u} - ${s})`).join(" + ")}) / ${Zn(i-1)})`},Median:(e,n)=>{let t;if(e.length===1&&g(e[0],"List"))t=e[0].ops;else if(e.length>=1)t=e;else throw new Error("Median: GPU target requires a List argument or at least 1 scalar argument");let i=t.length;if(i===0)throw new Error("Median: empty list");if(i>8)throw new Error(`Median: GPU target supports up to 8 elements via inline sorting network (got ${i}). For larger lists, compute on the CPU and pass the result as a uniform.`);let r=t.map(o=>n(o));return i===1?r[0]:`_gpu_median_${i}(${r.join(", ")})`},Random:(e,n,t)=>{if(e.length===0){if(t.language==="wgsl")throw new Error("Random(): WGSL compile requires an explicit seed argument. WGSL has no gl_FragCoord built-in outside fragment entry points, so the no-arg fallback used in GLSL is unavailable. Use Random(seed) where seed is a deterministic per-invocation value.");return"_gpu_random(gl_FragCoord.x + gl_FragCoord.y * 1024.0)"}if(e.length===1){let i=e[0];if(N.isIntegerValued(i)){let r=n(i);return`floor(_gpu_random(float(${r})) * float(${r}))`}return`_gpu_random(${n(i)})`}if(e.length===2){if(t.language==="wgsl")throw new Error("Random(m, n): WGSL compile requires explicit seeding. Use a seeded variant or compute the integer range manually.");let i=n(e[0]),r=n(e[1]);return`(float(${i}) + floor(_gpu_random(gl_FragCoord.x + gl_FragCoord.y * 1024.0) * float((${r}) - (${i}))))`}throw new Error("Random: GPU compile expects 0, 1, or 2 arguments")},Function:()=>{throw new Error("Anonymous functions (Function) are not supported in GPU targets")}};function Lo(e,n,t,i,r){let o=e[0];if(!g(o))return n(o);let s=o.ops;if(s.length===0)return n(o);let a=s.length,u=s[0],l=g(u)?u.nops:0;if(l===1&&s.every(c=>g(c)&&c.nops===1)){let c=s.map(f=>n(g(f)?f.ops[0]:f));return a>=2&&a<=4?`${t(a)}(${c.join(", ")})`:`${r(a)}(${c.join(", ")})`}if(a===l&&a>=2&&a<=4&&s.every(c=>g(c)&&c.nops===l)){let c=[];for(let f=0;f<l;f++){let d=s.map(p=>n(g(p)?p.ops[f]:p));c.push(`${t(a)}(${d.join(", ")})`)}return`${i(a)}(${c.join(", ")})`}return n(o)}var fx=`
63
63
  float _gpu_gamma(float z) {
@@ -1420,13 +1420,13 @@ ${c}fn main(${h})${b} {
1420
1420
  `);for(let y of a){let v=this.compileToSource(y.expression);u+=` ${y.variable} = ${v};
1421
1421
  `}return d&&(u+=` return output;
1422
1422
  `),u+=`}
1423
- `,u}};var jm={Pi:"np.pi",ExponentialE:"np.e",ImaginaryUnit:"1j",Infinity:"np.inf",NaN:"np.nan",GoldenRatio:"((1 + np.sqrt(5)) / 2)",CatalanConstant:"0.915965594177219015054603514932384110774",EulerGamma:"0.5772156649015328606065120900824024310421"};function Gm(e,n,t){if(n.length<2)throw new Error(`${e}: expected at least two arguments`);let i=n[0]?.engine?.tolerance??1e-10,r=e==="Equal"?"<=":">",o=(a,u)=>`(abs((${t(a)}) - (${t(u)})) ${r} ${i})`;if(n.length===2)return o(n[0],n[1]);let s=[];for(let a=0;a<n.length-1;a++)s.push(o(n[a],n[a+1]));return`(${s.join(" and ")})`}function Xm(e,n){return F(e)&&e.im===0&&Number.isFinite(e.re)?String(Math.floor(e.re)):N.compile(e,n)}function Km(e,n){return F(e)&&e.im===0&&Number.isFinite(e.re)?String(Math.floor(e.re)+1):`${N.compile(e,n)} + 1`}function Um(e,n,t){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);N.assertScalarBigOpBody(e,n[0]);let i=n[0],r=n.slice(1),o=[],s=t;for(let l of r){if(!g(l,"Limits"))throw new Error(`${e}: expected a Limits indexing set`);let c=l.ops,f=c[0];if(!S(f))throw new Error(`${e}: index must be a symbol`);let d=f.symbol,p=c[1],h=c[2];if(p===void 0||h===void 0||S(h,"Nothing")||h.isInfinity||p.isInfinity)throw new Error(`${e}: an unbounded range is not supported`);let b=Xm(p,s),y=Km(h,s);o.push(`for ${d} in range(${b}, ${y})`);let v=s;s={...v,var:T=>T===d?d:v.var(T)}}let u=`${N.compile(i,s)} ${o.join(" ")}`;return e==="Sum"?`sum(${u})`:`math.prod(${u})`}function pu(e){return(e.trim()===""?"pass":e).split(`
1423
+ `,u}};var jm={Pi:"np.pi",ExponentialE:"np.e",ImaginaryUnit:"1j",Infinity:"np.inf",NaN:"np.nan",GoldenRatio:"((1 + np.sqrt(5)) / 2)",CatalanConstant:"0.915965594177219015054603514932384110774",EulerGamma:"0.5772156649015328606065120900824024310421"};function Gm(e,n,t){if(n.length<2)throw new Error(`${e}: expected at least two arguments`);let i=n[0]?.engine?.tolerance??1e-10,r=e==="Equal"?"<=":">",o=(a,u)=>`(abs((${t(a)}) - (${t(u)})) ${r} ${i})`;if(n.length===2)return o(n[0],n[1]);let s=[];for(let a=0;a<n.length-1;a++)s.push(o(n[a],n[a+1]));return`(${s.join(" and ")})`}function Xm(e,n){return F(e)&&e.im===0&&Number.isFinite(e.re)?String(Math.floor(e.re)):N.compile(e,n)}function Km(e,n){return F(e)&&e.im===0&&Number.isFinite(e.re)?String(Math.floor(e.re)+1):`${N.compile(e,n)} + 1`}function Um(e,n,t){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);N.assertScalarBigOpBody(e,n[0]);let i=n[0],r=n.slice(1),o=[],s=t;for(let l of r){if(!g(l,"Limits"))throw new Error(`${e}: expected a Limits indexing set`);let c=l.ops,f=c[0];if(!S(f))throw new Error(`${e}: index must be a symbol`);let d=f.symbol,p=c[1],h=c[2];if(p===void 0||h===void 0||S(h,"Nothing")||h.isInfinity||p.isInfinity)throw new Error(`${e}: an unbounded range is not supported`);let b=Xm(p,s),y=Km(h,s);o.push(`for ${d} in range(${b}, ${y})`);let v=s;s={...v,var:T=>T===d?d:v.var(T),boundVars:N.withBoundNames(v,[d])}}let u=`${N.compile(i,s)} ${o.join(" ")}`;return e==="Sum"?`sum(${u})`:`math.prod(${u})`}function pu(e){return(e.trim()===""?"pass":e).split(`
1424
1424
  `).map(t=>` ${t}`).join(`
1425
1425
  `)}function Jo(e,n){if(S(e,"Nothing"))return"";if(!g(e))return N.compile(e,n);let t=e.operator;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Return")return`return ${N.compile(e.ops[0],n)}`;if(t==="If"){let r=`if ${N.compile(e.ops[0],n)}:
1426
1426
  ${pu(Jo(e.ops[1],n))}`;return e.ops.length>2&&(r+=`
1427
1427
  else:
1428
1428
  ${pu(Jo(e.ops[2],n))}`),r}return t==="Block"?e.ops.map(i=>Jo(i,n)).filter(i=>i!=="").join(`
1429
- `):t==="Loop"?Qm(e.ops,n):N.compile(e,n)}function Qm(e,n){if(!e[0])throw new Error("Loop: no body");let t=e[0],i=e.slice(1),r,o=n;if(i.length===0)r="while True:";else{if(i.length>1)throw new Error("Loop: multiple Element clauses are not supported by the Python target");let a=i[0];if(!g(a,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let u=a.ops[0],l=a.ops[1];if(!S(u))throw new Error("Loop: index must be a symbol");if(!g(l,"Range")||l.ops.length>2)throw new Error("Loop: only a single ascending step-1 Range(lo, hi) is supported by the Python target");let c=u.symbol,f=Xm(l.ops[0],n),d=Km(l.ops[1],n);r=`for ${c} in range(${f}, ${d}):`;let p=n;o={...p,var:h=>h===c?c:p.var(h)}}let s=pu(Jo(t,o));return`${r}
1429
+ `):t==="Loop"?Qm(e.ops,n):N.compile(e,n)}function Qm(e,n){if(!e[0])throw new Error("Loop: no body");let t=e[0],i=e.slice(1),r,o=n;if(i.length===0)r="while True:";else{if(i.length>1)throw new Error("Loop: multiple Element clauses are not supported by the Python target");let a=i[0];if(!g(a,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let u=a.ops[0],l=a.ops[1];if(!S(u))throw new Error("Loop: index must be a symbol");if(!g(l,"Range")||l.ops.length>2)throw new Error("Loop: only a single ascending step-1 Range(lo, hi) is supported by the Python target");let c=u.symbol,f=Xm(l.ops[0],n),d=Km(l.ops[1],n);r=`for ${c} in range(${f}, ${d}):`;let p=n;o={...p,var:h=>h===c?c:p.var(h),boundVars:N.withBoundNames(p,[c])}}let s=pu(Jo(t,o));return`${r}
1430
1430
  ${s}`}var Hm={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],Divide:["/",13],Power:["**",15],LessEqual:["<=",9],GreaterEqual:[">=",9],Less:["<",9],Greater:[">",9],And:["and",4],Or:["or",3],Not:["not",14]};function zo(e){let n=e.type;return n.matches("list")||n.matches("indexed_collection")}var eh=`def _ce_bcast(_op, *args):
1431
1431
  _arrs = [np.asarray(a) for a in args]
1432
1432
  _lens = [a.shape[0] for a in _arrs if a.ndim > 0]
@@ -1460,7 +1460,7 @@ ${s}`}var Hm={Add:["+",11],Negate:["-",14],Subtract:["-",11],Multiply:["*",12],D
1460
1460
  return _a
1461
1461
  `;function Zm(e){let n=e;return n.includes("_ce_rref(")&&(n=`${nh}
1462
1462
  ${n}`),n.includes("_ce_bcast(")&&(n=`${eh}
1463
- ${n}`),n}function Ym(e,n,t,i){let r=t.map(s=>zo(s)?`${e}(${i(s)})`:i(s));if(r.length===0)return e==="np.max"?"-np.inf":"np.inf";let o=r[0];for(let s=1;s<r.length;s++)o=`${n}(${o}, ${r[s]})`;return o}function Z(e,n,t,i){if(!n||!(n.type.matches("list")||n.type.matches("indexed_collection")))throw new Error(`${e}: ${i!==void 0?`operand ${i}`:"operand"} is not an indexed collection (list/vector/range). Fail closed (D6).`);return t(n)}function Pe(e,n,t){if(n&&g(n,"Function"))return t(n);if(n&&S(n)){let i={Add:"+",Subtract:"-",Multiply:"*",Divide:"/"}[n.symbol];if(i!==void 0)return`(lambda _a, _b: _a ${i} _b)`}throw new Error(`${e}: the function operand does not compile on the Python target (only function literals and binary arithmetic operator symbols lower to a Python lambda). Fail closed (D6).`)}var Wm={Add:(e,n)=>e.length===0?"0":e.length===1?n(e[0]):e.map(t=>n(t)).join(" + "),Multiply:(e,n)=>e.length===0?"1":e.length===1?n(e[0]):e.map(t=>n(t)).join(" * "),Divide:(e,n)=>{if(e.length===0)return"1";if(e.length===1)return n(e[0]);if(e.length===2)return`${n(e[0])} / ${n(e[1])}`;let t=n(e[0]);for(let i=1;i<e.length;i++)t=`${t} / ${n(e[i])}`;return t},Sin:(e,n)=>N.isComplexValued(e[0])?`cmath.sin(${n(e[0])})`:`np.sin(${n(e[0])})`,Cos:(e,n)=>N.isComplexValued(e[0])?`cmath.cos(${n(e[0])})`:`np.cos(${n(e[0])})`,Tan:(e,n)=>N.isComplexValued(e[0])?`cmath.tan(${n(e[0])})`:`np.tan(${n(e[0])})`,Arcsin:(e,n)=>N.isComplexValued(e[0])?`cmath.asin(${n(e[0])})`:`np.arcsin(${n(e[0])})`,Arccos:(e,n)=>N.isComplexValued(e[0])?`cmath.acos(${n(e[0])})`:`np.arccos(${n(e[0])})`,Arctan:(e,n)=>N.isComplexValued(e[0])?`cmath.atan(${n(e[0])})`:`np.arctan(${n(e[0])})`,Arctan2:"np.arctan2",Sinh:(e,n)=>N.isComplexValued(e[0])?`cmath.sinh(${n(e[0])})`:`np.sinh(${n(e[0])})`,Cosh:(e,n)=>N.isComplexValued(e[0])?`cmath.cosh(${n(e[0])})`:`np.cosh(${n(e[0])})`,Tanh:(e,n)=>N.isComplexValued(e[0])?`cmath.tanh(${n(e[0])})`:`np.tanh(${n(e[0])})`,Arsinh:"np.arcsinh",Arcosh:"np.arccosh",Artanh:"np.arctanh",Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return`(np.cos(${n(e)}) / np.sin(${n(e)}))`},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return`(1 / np.sin(${n(e)}))`},Sec:([e],n)=>{if(e===null)throw new Error("Sec: no argument");return`(1 / np.cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`(np.pi / 2 - np.arctan(${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`np.arcsin(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`np.arccos(1 / (${n(e)}))`},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return`(np.cosh(${n(e)}) / np.sinh(${n(e)}))`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return`(1 / np.sinh(${n(e)}))`},Sech:([e],n)=>{if(e===null)throw new Error("Sech: no argument");return`(1 / np.cosh(${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`np.arctanh(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`np.arcsinh(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`np.arccosh(1 / (${n(e)}))`},Lb:"np.log2",Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`np.square(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`np.modf(${n(e)})[0]`},Exp:(e,n)=>N.isComplexValued(e[0])?`cmath.exp(${n(e[0])})`:`np.exp(${n(e[0])})`,Ln:(e,n)=>N.isComplexValued(e[0])?`cmath.log(${n(e[0])})`:`np.log(${n(e[0])})`,Log:(e,n)=>e.length===1?`np.log10(${n(e[0])})`:e.length===2?`(np.log(${n(e[0])}) / np.log(${n(e[1])}))`:"np.log10",Log10:"np.log10",Log2:"np.log2",Exp2:"np.exp2",Power:(e,n)=>e.length!==2?"np.power":N.isComplexValued(e[0])||N.isComplexValued(e[1])?`(${n(e[0])} ** ${n(e[1])})`:`np.power(${n(e[0])}, ${n(e[1])})`,Sqrt:(e,n)=>N.isComplexValued(e[0])?`cmath.sqrt(${n(e[0])})`:`np.sqrt(${n(e[0])})`,Root:(e,n)=>{if(e.length!==2)return"np.power";let[t,i]=e,r=se(i);if(r!==void 0&&Number.isInteger(r)&&r%2!==0){let o=n(t);return`(np.sign(${o}) * np.power(np.abs(${o}), 1.0 / ${n(i)}))`}return`np.power(${n(t)}, 1.0 / ${n(i)})`},Abs:(e,n)=>N.isComplexValued(e[0])?`abs(${n(e[0])})`:`np.abs(${n(e[0])})`,Sign:"np.sign",Floor:"np.floor",Ceil:"np.ceil",Round:([e],n)=>{if(e===null)throw new Error("Round: no argument");let t=n(e);return`(np.sign(${t}) * np.floor(np.abs(${t}) + 0.5))`},Truncate:"np.trunc",Min:(e,n)=>Ym("np.min","np.minimum",e,n),Max:(e,n)=>Ym("np.max","np.maximum",e,n),ElementMax:(e,n)=>{if(!e.some(zo)){let t=n(e[0]);for(let i=1;i<e.length;i++)t=`np.maximum(${t}, ${n(e[i])})`;return t}return`_ce_bcast('max', ${e.map(t=>n(t)).join(", ")})`},ElementMin:(e,n)=>{if(!e.some(zo)){let t=n(e[0]);for(let i=1;i<e.length;i++)t=`np.minimum(${t}, ${n(e[i])})`;return t}return`_ce_bcast('min', ${e.map(t=>n(t)).join(", ")})`},Clamp:(e,n)=>e.some(zo)?`_ce_bcast('clip', ${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`np.clip(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`,Mod:"np.mod",Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");let i=t(e),r=t(n);return`(${i} - ${r} * np.round(${i} / ${r}))`},Real:"np.real",Imaginary:"np.imag",Argument:"np.angle",Conjugate:"np.conj",Sum:(e,n,t)=>Um("Sum",e,t),Product:(e,n,t)=>Um("Product",e,t),Mean:"np.mean",Median:"np.median",Variance:"np.var",StandardDeviation:"np.std",Covariance:([e,n],t)=>{if(e===null||n===null)throw new Error("Covariance: expected two collection arguments");return`np.cov(${t(e)}, ${t(n)})[0][1]`},PopulationCovariance:([e,n],t)=>{if(e===null||n===null)throw new Error("PopulationCovariance: expected two collection arguments");return`np.cov(${t(e)}, ${t(n)}, ddof=0)[0][1]`},Correlation:([e,n],t)=>{if(e===null||n===null)throw new Error("Correlation: expected two collection arguments");return`np.corrcoef(${t(e)}, ${t(n)})[0][1]`},Dot:"np.dot",Cross:"np.cross",Norm:"np.linalg.norm",Determinant:"np.linalg.det",Inverse:"np.linalg.inv",Transpose:"np.transpose",MatrixMultiply:"np.matmul",ConjugateTranspose:(e,n)=>`np.transpose(np.conjugate(${n(e[0])}))`,Diagonal:"np.diag",MatrixPower:"np.linalg.matrix_power",Rank:"np.ndim",RowReduce:(e,n)=>`_ce_rref(${n(e[0])})`,Equal:(e,n)=>Gm("Equal",e,n),NotEqual:(e,n)=>Gm("NotEqual",e,n),Less:"np.less",LessEqual:"np.less_equal",Greater:"np.greater",GreaterEqual:"np.greater_equal",And:"np.logical_and",Or:"np.logical_or",Not:"np.logical_not",If:(e,n)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return`((${n(e[1])}) if (${n(e[0])}) else (${n(e[2])}))`},When:(e,n)=>{if(e.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");return S(e[1],"True")?`(${n(e[0])})`:S(e[1],"False")?"float('nan')":`((${n(e[0])}) if (${n(e[1])}) else float('nan'))`},Which:(e,n)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected condition/value pairs");let t=i=>{if(i>=e.length)return"float('nan')";let r=e[i],o=e[i+1];return S(r,"True")?`(${n(o)})`:`((${n(o)}) if (${n(r)}) else ${t(i+2)})`};return t(0)},Match:()=>{throw new Error("Match: pattern matching is not supported by the Python compile target in v1. Fail closed (D6).")},Loop:(e,n,t)=>Qm(e,t),Erf:"scipy.special.erf",Erfc:"scipy.special.erfc",Gamma:"scipy.special.gamma",GammaLn:"scipy.special.loggamma",Factorial:"scipy.special.factorial",GammaRegularized:"scipy.special.gammaincc",BetaRegularized:([e,n,t],i)=>{if(e===null||n===null||t===null)throw new Error("BetaRegularized: missing argument");return`scipy.special.betainc(${i(n)}, ${i(t)}, ${i(e)})`},List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>`np.array(${n(e[0])})`,Tuple:(e,n)=>`(${e.map(t=>n(t)).join(", ")})`,Sequence:(e,n)=>`np.array([${e.map(t=>n(t)).join(", ")}])`,Range:(e,n)=>{if(e.length===0)return"[]";let t=e.length===1?"1":n(e[0]),i=e.length===1?n(e[0]):n(e[1]);return e.length<=2?`(lambda _a, _b: [float(_a + (1 if _b >= _a else -1) * _i) for _i in range(int(np.floor(abs(_b - _a))) + 1)])(${t}, ${i})`:`(lambda _a, _b, _s: [] if _s == 0 else [float(_a + _s * _i) for _i in range(max(0, int(np.floor((_b - _a) / _s)) + 1))])(${t}, ${i}, ${n(e[2])})`},Function:(e,n,t)=>{if(e[0]==null)throw new Error("Function: missing body");let i=e[0];for(;g(i,"Block")&&i.nops===1;)i=i.ops[0];if(g(i,"Block"))throw new Error("Function: a multi-statement (Block) body cannot compile to a Python lambda. Fail closed (D6).");let r=e.slice(1).map(s=>he(s)||"_"),o=N.compile(i.canonical,{...t,var:s=>r.includes(s)?s:t.var(s)});return`(lambda ${r.join(", ")}: ${o})`},Length:(e,n)=>`len(${Z("Length",e[0],n)})`,Count:(e,n)=>`len(${Z("Count",e[0],n)})`,IsEmpty:(e,n)=>`(len(${Z("IsEmpty",e[0],n)}) == 0)`,At:(e,n)=>{let t=Z("At",e[0],n);if(e[1]==null||e.length!==2)throw new Error("At: only the single-index form compiles. Fail closed (D6).");return`(lambda _l, _i: _l[int(_i) - 1] if 1 <= _i <= len(_l) else (_l[int(_i)] if -len(_l) <= _i <= -1 else float('nan')))(${t}, ${n(e[1])})`},First:(e,n)=>`(lambda _l: _l[0] if len(_l) > 0 else float('nan'))(${Z("First",e[0],n)})`,Second:(e,n)=>`(lambda _l: _l[1] if len(_l) > 1 else float('nan'))(${Z("Second",e[0],n)})`,Third:(e,n)=>`(lambda _l: _l[2] if len(_l) > 2 else float('nan'))(${Z("Third",e[0],n)})`,Last:(e,n)=>`(lambda _l: _l[-1] if len(_l) > 0 else float('nan'))(${Z("Last",e[0],n)})`,Rest:(e,n)=>`${Z("Rest",e[0],n)}[1:]`,Most:(e,n)=>`${Z("Most",e[0],n)}[:-1]`,Take:(e,n)=>{let t=Z("Take",e[0],n);if(e[1]==null)throw new Error("Take: missing count");return`${t}[:max(0, int(${n(e[1])}))]`},Drop:(e,n)=>{let t=Z("Drop",e[0],n);if(e[1]==null)throw new Error("Drop: missing count");return`${t}[max(0, int(${n(e[1])})):]`},Reverse:(e,n)=>`${Z("Reverse",e[0],n)}[::-1]`,Sort:(e,n)=>{if(e.length>1)throw new Error("Sort: a custom comparator does not compile; only the default ascending numeric sort is supported. Fail closed (D6).");return`sorted(${Z("Sort",e[0],n)})`},Ordering:(e,n)=>{if(e.length>1)throw new Error("Ordering: a custom ordering function does not compile. Fail closed (D6).");return`(lambda _l: [_i + 1 for _i in sorted(range(len(_l)), key=lambda _j: _l[_j])])(${Z("Ordering",e[0],n)})`},Join:(e,n)=>e.length===0?"[]":`[${e.map((t,i)=>`*${Z("Join",t,n,i+1)}`).join(", ")}]`,Append:(e,n)=>{let t=Z("Append",e[0],n);if(e[1]==null)throw new Error("Append: missing value");return`[*${t}, ${n(e[1])}]`},IndexOf:(e,n)=>{let t=Z("IndexOf",e[0],n);if(e[1]==null)throw new Error("IndexOf: missing value");return`(lambda _l, _v: _l.index(_v) + 1 if _v in _l else 0)(${t}, ${n(e[1])})`},Contains:(e,n)=>{e[0]&&_t("Contains",e[0]);let t=Z("Contains",e[0],n);if(e[1]==null)throw new Error("Contains: missing value");return`(${n(e[1])} in ${t})`},Unique:(e,n)=>(e[0]&&_t("Unique",e[0]),`list(dict.fromkeys(${Z("Unique",e[0],n)}))`),Zip:(e,n)=>e.length===0?"[]":`[list(_t) for _t in zip(${e.map((i,r)=>Z("Zip",i,n,r+1)).join(", ")})]`,Linspace:(e,n)=>{if(e[0]==null)throw new Error("Linspace: missing argument");let t=e[1]==null?"1":n(e[0]),i=e[1]==null?n(e[0]):n(e[1]),r=e[2]==null?"50":n(e[2]);return`[float(_v) for _v in np.linspace(${t}, ${i}, max(0, int(${r})))]`},Map:(e,n)=>{let t=Z("Map",e[0],n);if(e.length>2)throw new Error("Map: multi-collection form is not compiled");if(e[1]==null)throw new Error("Map: missing mapping function");return`(lambda _f: [_f(_x) for _x in ${t}])(${Pe("Map",e[1],n)})`},Filter:(e,n)=>{let t=Z("Filter",e[0],n);if(e[1]==null)throw new Error("Filter: missing predicate");return`(lambda _f: [_x for _x in ${t} if _f(_x)])(${Pe("Filter",e[1],n)})`},CountIf:(e,n)=>{let t=Z("CountIf",e[0],n);if(e[1]==null)throw new Error("CountIf: missing predicate");return`(lambda _f: sum(1 for _x in ${t} if _f(_x)))(${Pe("CountIf",e[1],n)})`},Find:(e,n)=>{let t=Z("Find",e[0],n);if(e[1]==null)throw new Error("Find: missing predicate");return`(lambda _f: next((_x for _x in ${t} if _f(_x)), float('nan')))(${Pe("Find",e[1],n)})`},IndexWhere:(e,n)=>{let t=Z("IndexWhere",e[0],n);if(e[1]==null)throw new Error("IndexWhere: missing predicate");return`(lambda _f: next((_i + 1 for _i, _x in enumerate(${t}) if _f(_x)), 0))(${Pe("IndexWhere",e[1],n)})`},Position:(e,n)=>{let t=Z("Position",e[0],n);if(e[1]==null)throw new Error("Position: missing predicate");return`(lambda _f: [_i + 1 for _i, _x in enumerate(${t}) if _f(_x)])(${Pe("Position",e[1],n)})`},Any:(e,n)=>{let t=Z("Any",e[0],n);if(e[1]==null)throw new Error("Any: only the predicate form compiles. Fail closed (D6).");return`(lambda _f: any(_f(_x) for _x in ${t}))(${Pe("Any",e[1],n)})`},All:(e,n)=>{let t=Z("All",e[0],n);if(e[1]==null)throw new Error("All: only the predicate form compiles. Fail closed (D6).");return`(lambda _f: all(_f(_x) for _x in ${t}))(${Pe("All",e[1],n)})`},TakeWhile:(e,n)=>{let t=Z("TakeWhile",e[0],n);if(e[1]==null)throw new Error("TakeWhile: missing predicate");return`(lambda _f, _l: _l[:next((_i for _i, _x in enumerate(_l) if not _f(_x)), len(_l))])(${Pe("TakeWhile",e[1],n)}, ${t})`},DropWhile:(e,n)=>{let t=Z("DropWhile",e[0],n);if(e[1]==null)throw new Error("DropWhile: missing predicate");return`(lambda _f, _l: _l[next((_i for _i, _x in enumerate(_l) if not _f(_x)), len(_l)):])(${Pe("DropWhile",e[1],n)}, ${t})`},FlatMap:(e,n)=>{let t=Z("FlatMap",e[0],n);if(e[1]==null)throw new Error("FlatMap: missing mapping function");return`(lambda _f, _l: [_y for _x in _l for _y in (lambda _r: _r if isinstance(_r, list) else [_r])(_f(_x))])(${Pe("FlatMap",e[1],n)}, ${t})`},Reduce:(e,n)=>{let t=Z("Reduce",e[0],n),i=e[1],r=e[2];if(i==null)throw new Error("Reduce: missing combiner");let o=S(i)?{Add:"sum(_l)",Multiply:'__import__("math").prod(_l)',Min:"min(_l)",Max:"max(_l)"}[i.symbol]:void 0;if(o!==void 0)return r!=null?`(lambda _l: ${{"sum(_l)":`sum(_l, ${n(r)})`,'__import__("math").prod(_l)':`__import__("math").prod(_l, start=${n(r)})`,"min(_l)":`min([${n(r)}, *_l])`,"max(_l)":`max([${n(r)}, *_l])`}[o]})(${t})`:`(lambda _l: float('nan') if len(_l) == 0 else ${o})(${t})`;if(g(i,"Function")&&i.nops-1===2||S(i)){if(r==null)throw new Error("Reduce: a custom combiner compiles only with an explicit initial value. Fail closed (D6).");return`__import__('functools').reduce(${Pe("Reduce",i,n)}, ${t}, ${n(r)})`}throw new Error("Reduce: the combiner does not compile to a function on the Python target. Fail closed (D6).")},Scan:(e,n)=>{let t=Z("Scan",e[0],n),i=e[1],r=e[2];if(i==null)throw new Error("Scan: missing combiner");let s=(S(i)?{Add:"(lambda _a, _b: _a + _b)",Multiply:"(lambda _a, _b: _a * _b)",Min:"(lambda _a, _b: min(_a, _b))",Max:"(lambda _a, _b: max(_a, _b))"}[i.symbol]:void 0)??(g(i,"Function")&&i.nops-1===2||S(i)?Pe("Scan",i,n):void 0);if(s===void 0)throw new Error("Scan: the combiner does not compile to a function on the Python target. Fail closed (D6).");return r!=null?`list(__import__('itertools').accumulate(${t}, ${s}, initial=${n(r)}))[1:]`:`list(__import__('itertools').accumulate(${t}, ${s}))`},Tabulate:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Tabulate: missing argument");if(e.length>3)throw new Error("Tabulate: only the 1-D and 2-D forms compile. Fail closed (D6).");for(let o=1;o<e.length;o++){let s=se(e[o]);if(s!==void 0&&Math.round(s)<=0)throw new Error(`Tabulate: a statically non-positive dimension (${s}) is inert in the interpreter. Fail closed (D6).`)}let t=Pe("Tabulate",e[0],n),i=n(e[1]);return e.length===2?`(lambda _f: [_f(_i + 1) for _i in range(max(0, round(${i})))])(${t})`:`(lambda _f: [[_f(_i + 1, _j + 1) for _j in range(max(0, round(${n(e[2])})))] for _i in range(max(0, round(${i})))])(${t})`},Fill:(e,n)=>{let t=e[1];if(e[0]==null||t==null)throw new Error("Fill: missing argument");if(!g(t)||t.ops.length!==2)throw new Error("Fill: only the (function, (rows, cols)) form compiles. Fail closed (D6).");let i=Pe("Fill",e[0],n),r=n(t.ops[0]);return`(lambda _f: [[_f(_i + 1, _j + 1) for _j in range(max(0, round(${n(t.ops[1])})))] for _i in range(max(0, round(${r})))])(${i})`},Boole:(e,n)=>{if(e[0]==null)throw new Error("Boole: missing argument");if(!N.isBooleanValued(e[0]))throw new Error("Boole: the argument is not provably boolean. Fail closed (D6).");return`(1 if ${n(e[0])} else 0)`},KroneckerDelta:(e,n)=>{if(e.length===0||e[0]==null)throw new Error("KroneckerDelta: missing argument");let t=e[0].engine.tolerance??1e-10;return e.length===1?`(1 if abs(${n(e[0])}) <= ${t} else 0)`:`(lambda *_v: 1 if all(abs(_x - _v[0]) <= ${t} for _x in _v) else 0)(${e.map(i=>n(i)).join(", ")})`},Element:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Element: missing argument");return _t("Element",e[1]),`(${n(e[0])} in ${Z("Element",e[1],n)})`},Identity:(e,n)=>{if(e[0]==null)throw new Error("Identity: missing argument");return n(e[0])},Apply:(e,n)=>{if(e[0]==null)throw new Error("Apply: missing function");return`(${n(e[0])})(${e.slice(1).map(t=>n(t)).join(", ")})`},Flatten:(e,n)=>{if(e[1]!=null)throw new Error("Flatten: an explicit depth does not compile on the Python target. Fail closed (D6).");return`(lambda _l: (lambda _f: _f(_f, _l))(lambda _f, _x: [_y for _e in _x for _y in (_f(_f, _e) if isinstance(_e, list) else [_e])]))(${Z("Flatten",e[0],n)})`},Shape:(e,n)=>{if(e[0]==null)throw new Error("Shape: missing argument");return`list(np.shape(${n(e[0])}))`},Reshape:(e,n)=>{let t=Z("Reshape",e[0],n),i=e[1];if(i==null)throw new Error("Reshape: missing shape");if(!g(i)||i.ops.length===0||i.ops.length>2)throw new Error("Reshape: only a 1-D or 2-D target shape compiles. Fail closed (D6).");return`np.resize(np.asarray(${t}), (${i.ops.map(r=>n(r)).join(", ")},)).tolist()`},Trace:(e,n)=>{if(e.length>1)throw new Error("Trace: explicit axes do not compile. Fail closed (D6).");return`float(np.trace(np.asarray(${Z("Trace",e[0],n)})))`}},jo=class{includeImports;useScipy;constructor(n={}){this.includeImports=n.includeImports??!1,this.useScipy=n.useScipy??!1}getOperators(){return Hm}getFunctions(){return Wm}createTarget(n={}){return{language:"python",chainOp:"and",bindExpr:(t,i)=>`(lambda ${t.map(r=>r[0]).join(", ")}: ${i})(${t.map(r=>r[1]).join(", ")})`,operators:t=>Hm[t],functions:t=>Wm[t],var:t=>jm[t],complex:(t,i)=>`complex(${t}, ${i})`,string:t=>JSON.stringify(t),number:t=>isFinite(t)?t.toString():t===1/0?"np.inf":t===-1/0?"-np.inf":"np.nan",indent:0,ws:t=>t??"",preamble:"",bareStatementBlocks:!0,declare:t=>"",block:t=>{if(t.length===0)return"";let i=t.length-1;return/^(for|while)\b/.test(t[i])?t.push("return None"):t[i]=`return ${t[i]}`,t.join(`
1463
+ ${n}`),n}function Ym(e,n,t,i){let r=t.map(s=>zo(s)?`${e}(${i(s)})`:i(s));if(r.length===0)return e==="np.max"?"-np.inf":"np.inf";let o=r[0];for(let s=1;s<r.length;s++)o=`${n}(${o}, ${r[s]})`;return o}function Z(e,n,t,i){if(!n||!(n.type.matches("list")||n.type.matches("indexed_collection")))throw new Error(`${e}: ${i!==void 0?`operand ${i}`:"operand"} is not an indexed collection (list/vector/range). Fail closed (D6).`);return t(n)}function Pe(e,n,t){if(n&&g(n,"Function"))return t(n);if(n&&S(n)){let i={Add:"+",Subtract:"-",Multiply:"*",Divide:"/"}[n.symbol];if(i!==void 0)return`(lambda _a, _b: _a ${i} _b)`}throw new Error(`${e}: the function operand does not compile on the Python target (only function literals and binary arithmetic operator symbols lower to a Python lambda). Fail closed (D6).`)}var Wm={Add:(e,n)=>e.length===0?"0":e.length===1?n(e[0]):e.map(t=>n(t)).join(" + "),Multiply:(e,n)=>e.length===0?"1":e.length===1?n(e[0]):e.map(t=>n(t)).join(" * "),Divide:(e,n)=>{if(e.length===0)return"1";if(e.length===1)return n(e[0]);if(e.length===2)return`${n(e[0])} / ${n(e[1])}`;let t=n(e[0]);for(let i=1;i<e.length;i++)t=`${t} / ${n(e[i])}`;return t},Sin:(e,n)=>N.isComplexValued(e[0])?`cmath.sin(${n(e[0])})`:`np.sin(${n(e[0])})`,Cos:(e,n)=>N.isComplexValued(e[0])?`cmath.cos(${n(e[0])})`:`np.cos(${n(e[0])})`,Tan:(e,n)=>N.isComplexValued(e[0])?`cmath.tan(${n(e[0])})`:`np.tan(${n(e[0])})`,Arcsin:(e,n)=>N.isComplexValued(e[0])?`cmath.asin(${n(e[0])})`:`np.arcsin(${n(e[0])})`,Arccos:(e,n)=>N.isComplexValued(e[0])?`cmath.acos(${n(e[0])})`:`np.arccos(${n(e[0])})`,Arctan:(e,n)=>N.isComplexValued(e[0])?`cmath.atan(${n(e[0])})`:`np.arctan(${n(e[0])})`,Arctan2:"np.arctan2",Sinh:(e,n)=>N.isComplexValued(e[0])?`cmath.sinh(${n(e[0])})`:`np.sinh(${n(e[0])})`,Cosh:(e,n)=>N.isComplexValued(e[0])?`cmath.cosh(${n(e[0])})`:`np.cosh(${n(e[0])})`,Tanh:(e,n)=>N.isComplexValued(e[0])?`cmath.tanh(${n(e[0])})`:`np.tanh(${n(e[0])})`,Arsinh:"np.arcsinh",Arcosh:"np.arccosh",Artanh:"np.arctanh",Cot:([e],n)=>{if(e===null)throw new Error("Cot: no argument");return`(np.cos(${n(e)}) / np.sin(${n(e)}))`},Csc:([e],n)=>{if(e===null)throw new Error("Csc: no argument");return`(1 / np.sin(${n(e)}))`},Sec:([e],n)=>{if(e===null)throw new Error("Sec: no argument");return`(1 / np.cos(${n(e)}))`},Arccot:([e],n)=>{if(e===null)throw new Error("Arccot: no argument");return`(np.pi / 2 - np.arctan(${n(e)}))`},Arccsc:([e],n)=>{if(e===null)throw new Error("Arccsc: no argument");return`np.arcsin(1 / (${n(e)}))`},Arcsec:([e],n)=>{if(e===null)throw new Error("Arcsec: no argument");return`np.arccos(1 / (${n(e)}))`},Coth:([e],n)=>{if(e===null)throw new Error("Coth: no argument");return`(np.cosh(${n(e)}) / np.sinh(${n(e)}))`},Csch:([e],n)=>{if(e===null)throw new Error("Csch: no argument");return`(1 / np.sinh(${n(e)}))`},Sech:([e],n)=>{if(e===null)throw new Error("Sech: no argument");return`(1 / np.cosh(${n(e)}))`},Arcoth:([e],n)=>{if(e===null)throw new Error("Arcoth: no argument");return`np.arctanh(1 / (${n(e)}))`},Arcsch:([e],n)=>{if(e===null)throw new Error("Arcsch: no argument");return`np.arcsinh(1 / (${n(e)}))`},Arsech:([e],n)=>{if(e===null)throw new Error("Arsech: no argument");return`np.arccosh(1 / (${n(e)}))`},Lb:"np.log2",Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`np.square(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`np.modf(${n(e)})[0]`},Exp:(e,n)=>N.isComplexValued(e[0])?`cmath.exp(${n(e[0])})`:`np.exp(${n(e[0])})`,Ln:(e,n)=>N.isComplexValued(e[0])?`cmath.log(${n(e[0])})`:`np.log(${n(e[0])})`,Log:(e,n)=>e.length===1?`np.log10(${n(e[0])})`:e.length===2?`(np.log(${n(e[0])}) / np.log(${n(e[1])}))`:"np.log10",Log10:"np.log10",Log2:"np.log2",Exp2:"np.exp2",Power:(e,n)=>e.length!==2?"np.power":N.isComplexValued(e[0])||N.isComplexValued(e[1])?`(${n(e[0])} ** ${n(e[1])})`:`np.power(${n(e[0])}, ${n(e[1])})`,Sqrt:(e,n)=>N.isComplexValued(e[0])?`cmath.sqrt(${n(e[0])})`:`np.sqrt(${n(e[0])})`,Root:(e,n)=>{if(e.length!==2)return"np.power";let[t,i]=e,r=se(i);if(r!==void 0&&Number.isInteger(r)&&r%2!==0){let o=n(t);return`(np.sign(${o}) * np.power(np.abs(${o}), 1.0 / ${n(i)}))`}return`np.power(${n(t)}, 1.0 / ${n(i)})`},Abs:(e,n)=>N.isComplexValued(e[0])?`abs(${n(e[0])})`:`np.abs(${n(e[0])})`,Sign:"np.sign",Floor:"np.floor",Ceil:"np.ceil",Round:([e],n)=>{if(e===null)throw new Error("Round: no argument");let t=n(e);return`(np.sign(${t}) * np.floor(np.abs(${t}) + 0.5))`},Truncate:"np.trunc",Min:(e,n)=>Ym("np.min","np.minimum",e,n),Max:(e,n)=>Ym("np.max","np.maximum",e,n),ElementMax:(e,n)=>{if(!e.some(zo)){let t=n(e[0]);for(let i=1;i<e.length;i++)t=`np.maximum(${t}, ${n(e[i])})`;return t}return`_ce_bcast('max', ${e.map(t=>n(t)).join(", ")})`},ElementMin:(e,n)=>{if(!e.some(zo)){let t=n(e[0]);for(let i=1;i<e.length;i++)t=`np.minimum(${t}, ${n(e[i])})`;return t}return`_ce_bcast('min', ${e.map(t=>n(t)).join(", ")})`},Clamp:(e,n)=>e.some(zo)?`_ce_bcast('clip', ${n(e[0])}, ${n(e[1])}, ${n(e[2])})`:`np.clip(${n(e[0])}, ${n(e[1])}, ${n(e[2])})`,Mod:"np.mod",Remainder:([e,n],t)=>{if(e===null||n===null)throw new Error("Remainder: missing argument");let i=t(e),r=t(n);return`(${i} - ${r} * np.round(${i} / ${r}))`},Real:"np.real",Imaginary:"np.imag",Argument:"np.angle",Conjugate:"np.conj",Sum:(e,n,t)=>Um("Sum",e,t),Product:(e,n,t)=>Um("Product",e,t),Mean:"np.mean",Median:"np.median",Variance:"np.var",StandardDeviation:"np.std",Covariance:([e,n],t)=>{if(e===null||n===null)throw new Error("Covariance: expected two collection arguments");return`np.cov(${t(e)}, ${t(n)})[0][1]`},PopulationCovariance:([e,n],t)=>{if(e===null||n===null)throw new Error("PopulationCovariance: expected two collection arguments");return`np.cov(${t(e)}, ${t(n)}, ddof=0)[0][1]`},Correlation:([e,n],t)=>{if(e===null||n===null)throw new Error("Correlation: expected two collection arguments");return`np.corrcoef(${t(e)}, ${t(n)})[0][1]`},Dot:"np.dot",Cross:"np.cross",Norm:"np.linalg.norm",Determinant:"np.linalg.det",Inverse:"np.linalg.inv",Transpose:"np.transpose",MatrixMultiply:"np.matmul",ConjugateTranspose:(e,n)=>`np.transpose(np.conjugate(${n(e[0])}))`,Diagonal:"np.diag",MatrixPower:"np.linalg.matrix_power",Rank:"np.ndim",RowReduce:(e,n)=>`_ce_rref(${n(e[0])})`,Equal:(e,n)=>Gm("Equal",e,n),NotEqual:(e,n)=>Gm("NotEqual",e,n),Less:"np.less",LessEqual:"np.less_equal",Greater:"np.greater",GreaterEqual:"np.greater_equal",And:"np.logical_and",Or:"np.logical_or",Not:"np.logical_not",If:(e,n)=>{if(e.length!==3)throw new Error("If: wrong number of arguments");return`((${n(e[1])}) if (${n(e[0])}) else (${n(e[2])}))`},When:(e,n)=>{if(e.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");return S(e[1],"True")?`(${n(e[0])})`:S(e[1],"False")?"float('nan')":`((${n(e[0])}) if (${n(e[1])}) else float('nan'))`},Which:(e,n)=>{if(e.length<2||e.length%2!==0)throw new Error("Which: expected condition/value pairs");let t=i=>{if(i>=e.length)return"float('nan')";let r=e[i],o=e[i+1];return S(r,"True")?`(${n(o)})`:`((${n(o)}) if (${n(r)}) else ${t(i+2)})`};return t(0)},Match:()=>{throw new Error("Match: pattern matching is not supported by the Python compile target in v1. Fail closed (D6).")},Loop:(e,n,t)=>Qm(e,t),Erf:"scipy.special.erf",Erfc:"scipy.special.erfc",Gamma:"scipy.special.gamma",GammaLn:"scipy.special.loggamma",Factorial:"scipy.special.factorial",GammaRegularized:"scipy.special.gammaincc",BetaRegularized:([e,n,t],i)=>{if(e===null||n===null||t===null)throw new Error("BetaRegularized: missing argument");return`scipy.special.betainc(${i(n)}, ${i(t)}, ${i(e)})`},List:(e,n)=>`[${e.map(t=>n(t)).join(", ")}]`,Matrix:(e,n)=>`np.array(${n(e[0])})`,Tuple:(e,n)=>`(${e.map(t=>n(t)).join(", ")})`,Sequence:(e,n)=>`np.array([${e.map(t=>n(t)).join(", ")}])`,Range:(e,n)=>{if(e.length===0)return"[]";let t=e.length===1?"1":n(e[0]),i=e.length===1?n(e[0]):n(e[1]);return e.length<=2?`(lambda _a, _b: [float(_a + (1 if _b >= _a else -1) * _i) for _i in range(int(np.floor(abs(_b - _a))) + 1)])(${t}, ${i})`:`(lambda _a, _b, _s: [] if _s == 0 else [float(_a + _s * _i) for _i in range(max(0, int(np.floor((_b - _a) / _s)) + 1))])(${t}, ${i}, ${n(e[2])})`},Function:(e,n,t)=>{if(e[0]==null)throw new Error("Function: missing body");let i=e[0];for(;g(i,"Block")&&i.nops===1;)i=i.ops[0];if(g(i,"Block"))throw new Error("Function: a multi-statement (Block) body cannot compile to a Python lambda. Fail closed (D6).");let r=e.slice(1).map(s=>he(s)||"_"),o=N.compile(i.canonical,{...t,var:s=>r.includes(s)?s:t.var(s),boundVars:N.withBoundNames(t,r)});return`(lambda ${r.join(", ")}: ${o})`},Length:(e,n)=>`len(${Z("Length",e[0],n)})`,Count:(e,n)=>`len(${Z("Count",e[0],n)})`,IsEmpty:(e,n)=>`(len(${Z("IsEmpty",e[0],n)}) == 0)`,At:(e,n)=>{let t=Z("At",e[0],n);if(e[1]==null||e.length!==2)throw new Error("At: only the single-index form compiles. Fail closed (D6).");return`(lambda _l, _i: _l[int(_i) - 1] if 1 <= _i <= len(_l) else (_l[int(_i)] if -len(_l) <= _i <= -1 else float('nan')))(${t}, ${n(e[1])})`},First:(e,n)=>`(lambda _l: _l[0] if len(_l) > 0 else float('nan'))(${Z("First",e[0],n)})`,Second:(e,n)=>`(lambda _l: _l[1] if len(_l) > 1 else float('nan'))(${Z("Second",e[0],n)})`,Third:(e,n)=>`(lambda _l: _l[2] if len(_l) > 2 else float('nan'))(${Z("Third",e[0],n)})`,Last:(e,n)=>`(lambda _l: _l[-1] if len(_l) > 0 else float('nan'))(${Z("Last",e[0],n)})`,Rest:(e,n)=>`${Z("Rest",e[0],n)}[1:]`,Most:(e,n)=>`${Z("Most",e[0],n)}[:-1]`,Take:(e,n)=>{let t=Z("Take",e[0],n);if(e[1]==null)throw new Error("Take: missing count");return`${t}[:max(0, int(${n(e[1])}))]`},Drop:(e,n)=>{let t=Z("Drop",e[0],n);if(e[1]==null)throw new Error("Drop: missing count");return`${t}[max(0, int(${n(e[1])})):]`},Reverse:(e,n)=>`${Z("Reverse",e[0],n)}[::-1]`,Sort:(e,n)=>{if(e.length>1)throw new Error("Sort: a custom comparator does not compile; only the default ascending numeric sort is supported. Fail closed (D6).");return`sorted(${Z("Sort",e[0],n)})`},Ordering:(e,n)=>{if(e.length>1)throw new Error("Ordering: a custom ordering function does not compile. Fail closed (D6).");return`(lambda _l: [_i + 1 for _i in sorted(range(len(_l)), key=lambda _j: _l[_j])])(${Z("Ordering",e[0],n)})`},Join:(e,n)=>e.length===0?"[]":`[${e.map((t,i)=>`*${Z("Join",t,n,i+1)}`).join(", ")}]`,Append:(e,n)=>{let t=Z("Append",e[0],n);if(e[1]==null)throw new Error("Append: missing value");return`[*${t}, ${n(e[1])}]`},IndexOf:(e,n)=>{let t=Z("IndexOf",e[0],n);if(e[1]==null)throw new Error("IndexOf: missing value");return`(lambda _l, _v: _l.index(_v) + 1 if _v in _l else 0)(${t}, ${n(e[1])})`},Contains:(e,n)=>{e[0]&&_t("Contains",e[0]);let t=Z("Contains",e[0],n);if(e[1]==null)throw new Error("Contains: missing value");return`(${n(e[1])} in ${t})`},Unique:(e,n)=>(e[0]&&_t("Unique",e[0]),`list(dict.fromkeys(${Z("Unique",e[0],n)}))`),Zip:(e,n)=>e.length===0?"[]":`[list(_t) for _t in zip(${e.map((i,r)=>Z("Zip",i,n,r+1)).join(", ")})]`,Linspace:(e,n)=>{if(e[0]==null)throw new Error("Linspace: missing argument");let t=e[1]==null?"1":n(e[0]),i=e[1]==null?n(e[0]):n(e[1]),r=e[2]==null?"50":n(e[2]);return`[float(_v) for _v in np.linspace(${t}, ${i}, max(0, int(${r})))]`},Map:(e,n)=>{let t=Z("Map",e[0],n);if(e.length>2)throw new Error("Map: multi-collection form is not compiled");if(e[1]==null)throw new Error("Map: missing mapping function");return`(lambda _f: [_f(_x) for _x in ${t}])(${Pe("Map",e[1],n)})`},Filter:(e,n)=>{let t=Z("Filter",e[0],n);if(e[1]==null)throw new Error("Filter: missing predicate");return`(lambda _f: [_x for _x in ${t} if _f(_x)])(${Pe("Filter",e[1],n)})`},CountIf:(e,n)=>{let t=Z("CountIf",e[0],n);if(e[1]==null)throw new Error("CountIf: missing predicate");return`(lambda _f: sum(1 for _x in ${t} if _f(_x)))(${Pe("CountIf",e[1],n)})`},Find:(e,n)=>{let t=Z("Find",e[0],n);if(e[1]==null)throw new Error("Find: missing predicate");return`(lambda _f: next((_x for _x in ${t} if _f(_x)), float('nan')))(${Pe("Find",e[1],n)})`},IndexWhere:(e,n)=>{let t=Z("IndexWhere",e[0],n);if(e[1]==null)throw new Error("IndexWhere: missing predicate");return`(lambda _f: next((_i + 1 for _i, _x in enumerate(${t}) if _f(_x)), 0))(${Pe("IndexWhere",e[1],n)})`},Position:(e,n)=>{let t=Z("Position",e[0],n);if(e[1]==null)throw new Error("Position: missing predicate");return`(lambda _f: [_i + 1 for _i, _x in enumerate(${t}) if _f(_x)])(${Pe("Position",e[1],n)})`},Any:(e,n)=>{let t=Z("Any",e[0],n);if(e[1]==null)throw new Error("Any: only the predicate form compiles. Fail closed (D6).");return`(lambda _f: any(_f(_x) for _x in ${t}))(${Pe("Any",e[1],n)})`},All:(e,n)=>{let t=Z("All",e[0],n);if(e[1]==null)throw new Error("All: only the predicate form compiles. Fail closed (D6).");return`(lambda _f: all(_f(_x) for _x in ${t}))(${Pe("All",e[1],n)})`},TakeWhile:(e,n)=>{let t=Z("TakeWhile",e[0],n);if(e[1]==null)throw new Error("TakeWhile: missing predicate");return`(lambda _f, _l: _l[:next((_i for _i, _x in enumerate(_l) if not _f(_x)), len(_l))])(${Pe("TakeWhile",e[1],n)}, ${t})`},DropWhile:(e,n)=>{let t=Z("DropWhile",e[0],n);if(e[1]==null)throw new Error("DropWhile: missing predicate");return`(lambda _f, _l: _l[next((_i for _i, _x in enumerate(_l) if not _f(_x)), len(_l)):])(${Pe("DropWhile",e[1],n)}, ${t})`},FlatMap:(e,n)=>{let t=Z("FlatMap",e[0],n);if(e[1]==null)throw new Error("FlatMap: missing mapping function");return`(lambda _f, _l: [_y for _x in _l for _y in (lambda _r: _r if isinstance(_r, list) else [_r])(_f(_x))])(${Pe("FlatMap",e[1],n)}, ${t})`},Reduce:(e,n)=>{let t=Z("Reduce",e[0],n),i=e[1],r=e[2];if(i==null)throw new Error("Reduce: missing combiner");let o=S(i)?{Add:"sum(_l)",Multiply:'__import__("math").prod(_l)',Min:"min(_l)",Max:"max(_l)"}[i.symbol]:void 0;if(o!==void 0)return r!=null?`(lambda _l: ${{"sum(_l)":`sum(_l, ${n(r)})`,'__import__("math").prod(_l)':`__import__("math").prod(_l, start=${n(r)})`,"min(_l)":`min([${n(r)}, *_l])`,"max(_l)":`max([${n(r)}, *_l])`}[o]})(${t})`:`(lambda _l: float('nan') if len(_l) == 0 else ${o})(${t})`;if(g(i,"Function")&&i.nops-1===2||S(i)){if(r==null)throw new Error("Reduce: a custom combiner compiles only with an explicit initial value. Fail closed (D6).");return`__import__('functools').reduce(${Pe("Reduce",i,n)}, ${t}, ${n(r)})`}throw new Error("Reduce: the combiner does not compile to a function on the Python target. Fail closed (D6).")},Scan:(e,n)=>{let t=Z("Scan",e[0],n),i=e[1],r=e[2];if(i==null)throw new Error("Scan: missing combiner");let s=(S(i)?{Add:"(lambda _a, _b: _a + _b)",Multiply:"(lambda _a, _b: _a * _b)",Min:"(lambda _a, _b: min(_a, _b))",Max:"(lambda _a, _b: max(_a, _b))"}[i.symbol]:void 0)??(g(i,"Function")&&i.nops-1===2||S(i)?Pe("Scan",i,n):void 0);if(s===void 0)throw new Error("Scan: the combiner does not compile to a function on the Python target. Fail closed (D6).");return r!=null?`list(__import__('itertools').accumulate(${t}, ${s}, initial=${n(r)}))[1:]`:`list(__import__('itertools').accumulate(${t}, ${s}))`},Tabulate:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Tabulate: missing argument");if(e.length>3)throw new Error("Tabulate: only the 1-D and 2-D forms compile. Fail closed (D6).");for(let o=1;o<e.length;o++){let s=se(e[o]);if(s!==void 0&&Math.round(s)<=0)throw new Error(`Tabulate: a statically non-positive dimension (${s}) is inert in the interpreter. Fail closed (D6).`)}let t=Pe("Tabulate",e[0],n),i=n(e[1]);return e.length===2?`(lambda _f: [_f(_i + 1) for _i in range(max(0, round(${i})))])(${t})`:`(lambda _f: [[_f(_i + 1, _j + 1) for _j in range(max(0, round(${n(e[2])})))] for _i in range(max(0, round(${i})))])(${t})`},Fill:(e,n)=>{let t=e[1];if(e[0]==null||t==null)throw new Error("Fill: missing argument");if(!g(t)||t.ops.length!==2)throw new Error("Fill: only the (function, (rows, cols)) form compiles. Fail closed (D6).");let i=Pe("Fill",e[0],n),r=n(t.ops[0]);return`(lambda _f: [[_f(_i + 1, _j + 1) for _j in range(max(0, round(${n(t.ops[1])})))] for _i in range(max(0, round(${r})))])(${i})`},Boole:(e,n)=>{if(e[0]==null)throw new Error("Boole: missing argument");if(!N.isBooleanValued(e[0]))throw new Error("Boole: the argument is not provably boolean. Fail closed (D6).");return`(1 if ${n(e[0])} else 0)`},KroneckerDelta:(e,n)=>{if(e.length===0||e[0]==null)throw new Error("KroneckerDelta: missing argument");let t=e[0].engine.tolerance??1e-10;return e.length===1?`(1 if abs(${n(e[0])}) <= ${t} else 0)`:`(lambda *_v: 1 if all(abs(_x - _v[0]) <= ${t} for _x in _v) else 0)(${e.map(i=>n(i)).join(", ")})`},Element:(e,n)=>{if(e[0]==null||e[1]==null)throw new Error("Element: missing argument");return _t("Element",e[1]),`(${n(e[0])} in ${Z("Element",e[1],n)})`},Identity:(e,n)=>{if(e[0]==null)throw new Error("Identity: missing argument");return n(e[0])},Apply:(e,n)=>{if(e[0]==null)throw new Error("Apply: missing function");return`(${n(e[0])})(${e.slice(1).map(t=>n(t)).join(", ")})`},Flatten:(e,n)=>{if(e[1]!=null)throw new Error("Flatten: an explicit depth does not compile on the Python target. Fail closed (D6).");return`(lambda _l: (lambda _f: _f(_f, _l))(lambda _f, _x: [_y for _e in _x for _y in (_f(_f, _e) if isinstance(_e, list) else [_e])]))(${Z("Flatten",e[0],n)})`},Shape:(e,n)=>{if(e[0]==null)throw new Error("Shape: missing argument");return`list(np.shape(${n(e[0])}))`},Reshape:(e,n)=>{let t=Z("Reshape",e[0],n),i=e[1];if(i==null)throw new Error("Reshape: missing shape");if(!g(i)||i.ops.length===0||i.ops.length>2)throw new Error("Reshape: only a 1-D or 2-D target shape compiles. Fail closed (D6).");return`np.resize(np.asarray(${t}), (${i.ops.map(r=>n(r)).join(", ")},)).tolist()`},Trace:(e,n)=>{if(e.length>1)throw new Error("Trace: explicit axes do not compile. Fail closed (D6).");return`float(np.trace(np.asarray(${Z("Trace",e[0],n)})))`}},jo=class{includeImports;useScipy;constructor(n={}){this.includeImports=n.includeImports??!1,this.useScipy=n.useScipy??!1}getOperators(){return Hm}getFunctions(){return Wm}createTarget(n={}){return{language:"python",chainOp:"and",bindExpr:(t,i)=>`(lambda ${t.map(r=>r[0]).join(", ")}: ${i})(${t.map(r=>r[1]).join(", ")})`,operators:t=>Hm[t],functions:t=>Wm[t],var:t=>jm[t],complex:(t,i)=>`complex(${t}, ${i})`,string:t=>JSON.stringify(t),number:t=>isFinite(t)?t.toString():t===1/0?"np.inf":t===-1/0?"-np.inf":"np.nan",indent:0,ws:t=>t??"",preamble:"",bareStatementBlocks:!0,declare:t=>"",block:t=>{if(t.length===0)return"";let i=t.length-1;return/^(for|while)\b/.test(t[i])?t.push("return None"):t[i]=`return ${t[i]}`,t.join(`
1464
1464
  `)},...n}}makeVarResolver(n,t){return i=>{if(t?.includes(i))return i;if(n&&i in n){let r=n[i];return typeof r=="string"?r:JSON.stringify(r)}return jm[i]}}compile(n,t={}){try{return this.compileOrThrow(n,t)}catch(i){if(t.fallback!==!0)throw i;let r=i.message;return console.warn(`Compilation fallback for "${n.operator}" (target: python): ${r}`),N.buildInterpreterFallback(n,r,"python",this.createTarget(),t.vars?new Set(Object.keys(t.vars)):void 0)}}compileOrThrow(n,t={}){n=fn(n);let i=t.vars,r=this.createTarget({var:this.makeVarResolver(i)}),o=Zm(N.compile(n,r));this.includeImports&&(o=this.withImports(o));let s={target:"python",success:!0,code:o};return N.withReferences(s,n,r,i?new Set(Object.keys(i)):void 0)}withImports(n){let t=`import numpy as np
1465
1465
  `;return t+=`import cmath
1466
1466
  `,this.useScipy&&(t+=`import scipy.special
@@ -1494,7 +1494,7 @@ ${n}`}compileToSource(n,t={}){let i=t.vars,r=this.createTarget({var:this.makeVar
1494
1494
  () => ${t(i+2)}
1495
1495
  )`};return t(0)},Match:()=>{throw new Error("Match: pattern matching is not supported by the interval-js compile target in v1. Fail closed (D6).")},Equal:(e,n)=>ii("_IA.equal",e,n),NotEqual:(e,n)=>ii("_IA.notEqual",e,n),LessEqual:(e,n)=>ii("_IA.lessEqual",e,n),GreaterEqual:(e,n)=>ii("_IA.greaterEqual",e,n),Less:(e,n)=>ii("_IA.less",e,n),Greater:(e,n)=>ii("_IA.greater",e,n),And:(e,n)=>gh("_IA.and",e,n),Or:(e,n)=>gh("_IA.or",e,n),Not:(e,n)=>`_IA.not(${n(e[0])})`},Qx=100;function eE(e){e.operator;let n=e,t=S(n.op1)?n.op1.symbol:"_",i=n.op2,r=n.op3,o=i.re,s=r.re;return{index:t,lowerExpr:i,upperExpr:r,lowerNum:!isNaN(o)&&Number.isFinite(o)?Math.floor(o):void 0,upperNum:!isNaN(s)&&Number.isFinite(s)?Math.floor(s):void 0}}function bh(e,n,t){return n!==void 0?String(n):`Math.floor(((_b) => (_b && _b.value ? _b.value.hi : _b.hi))(${N.compile(e,t)}))`}function yh(e,n,t,i){if(!n[0])throw new Error(`${e}: no body`);if(!n[1])throw new Error(`${e}: no indexing set`);if(N.assertScalarBigOpBody(e,n[0]),n.length>2)throw new Error(`${e}: multi-index (${n.length-1} indexing sets) is not supported in the interval target`);let{index:r,lowerExpr:o,upperExpr:s,lowerNum:a,upperNum:u}=eE(n[1]),l=e==="Sum",c=l?"_IA.add":"_IA.mul",f=l?"_IA.point(0)":"_IA.point(1)",d=a!==void 0&&u!==void 0;if(d&&a>u)return f;if(d&&u-a+1<=Qx){let T=[];for(let A=a;A<=u;A++){let k={...i,var:O=>O===r?`_IA.point(${A})`:i.var(O),boundVars:N.withBoundNames(i,[r])};T.push(N.compile(n[0],k))}let _=T[T.length-1];for(let A=T.length-2;A>=0;A--)_=`${c}(${T[A]}, ${_})`;return _}let p=bh(o,a,i),h=bh(s,u,i),b=N.tempVar(),y=N.compile(n[0],{...i,var:v=>v===r?`_IA.point(${r})`:i.var(v),boundVars:N.withBoundNames(i,[r])});return`(() => { let ${b} = ${f}; const _upper = ${h}; for (let ${r} = ${p}; ${r} <= _upper; ${r}++) { ${b} = ${c}(${b}, ${y}); } return ${b}; })()`}var Ol=class extends Function{IA=hh;constructor(n,t=""){return super("_IA","_",t?`${t};return ${n}`:`return ${n}`),new Proxy(this,{apply:(i,r,o)=>{try{let s=o.map(vh);return super.apply(r,[this.IA,...s])}catch{return{kind:"entire"}}},get:(i,r)=>r==="toString"?()=>n:r==="isCompiled"?!0:Reflect.get(i,r)})}};function Bl(e){return e!==null&&typeof e=="object"}function xh(e){return Bl(e)&&"lo"in e&&"hi"in e}function nE(e){return typeof e=="number"?{lo:e,hi:e}:{kind:"entire"}}function Eh(e){if(xh(e))return(Number(e.lo)+Number(e.hi))/2;if(Bl(e)){let n={};for(let[t,i]of Object.entries(e))n[t]=Eh(i);return n}return e}function vh(e){if(e==null||xh(e))return e;if(Bl(e)){let n={};for(let[t,i]of Object.entries(e))n[t]=vh(i);return n}return typeof e=="number"?{lo:e,hi:e}:e}var es=class{getOperators(){return Kx}getFunctions(){return Fl}createTarget(n={}){return{language:"interval-javascript",operators:()=>{},functions:t=>Fl[t],var:t=>({Pi:"_IA.point(Math.PI)",ExponentialE:"_IA.point(Math.E)",NaN:"{ lo: NaN, hi: NaN }",ImaginaryUnit:"{ lo: NaN, hi: NaN }",Half:"_IA.point(0.5)",MachineEpsilon:"_IA.point(Number.EPSILON)",GoldenRatio:"_IA.point((1 + Math.sqrt(5)) / 2)",CatalanConstant:"_IA.point(0.91596559417721901)",EulerGamma:"_IA.point(0.57721566490153286)"})[t],string:t=>JSON.stringify(t),number:t=>`_IA.point(${t})`,indent:0,ws:t=>t??"",preamble:"",...n}}compile(n,t={}){let i;try{i=this.compileOrThrow(n,t)}catch(r){if(t.fallback!==!0)throw r;return this.buildIntervalFallback(n,r.message,t)}if(!i.success&&t.fallback===!0){let r=i.error??`Cannot compile \`${n.operator}\` to the interval-js target`;return this.buildIntervalFallback(n,r,t)}return i}buildIntervalFallback(n,t,i){console.warn(`Compilation fallback for "${n.operator}" (target: interval-js): ${t}`);let r=N.buildInterpreterFallback(n,t,"interval-js",this.createTarget(),i.vars?new Set(Object.keys(i.vars)):void 0),o=r.run;return{...r,run:(...a)=>nE(o(...a.map(Eh)))}}compileOrThrow(n,t={}){n=fn(n);let{functions:i,vars:r,preamble:o}=t,s=n.unknowns,a={},u="";if(i)for(let[f,d]of Object.entries(i))typeof d=="function"?(u+=`const ${f} = ${d.toString()};
1496
1496
  `,a[f]=f):typeof d=="string"&&(a[f]=d);let l=this.createTarget({functions:f=>a?.[f]?a[f]:Fl[f],var:f=>{if(r&&f in r)return r[f];let d={Pi:"_IA.point(Math.PI)",ExponentialE:"_IA.point(Math.E)",NaN:"{ lo: NaN, hi: NaN }",ImaginaryUnit:"{ lo: NaN, hi: NaN }",Half:"_IA.point(0.5)",MachineEpsilon:"_IA.point(Number.EPSILON)",GoldenRatio:"_IA.point((1 + Math.sqrt(5)) / 2)",CatalanConstant:"_IA.point(0.91596559417721901)",EulerGamma:"_IA.point(0.57721566490153286)"};if(f in d)return d[f];if(s.includes(f))return`_.${f}`;if(n.engine._getSymbolValue(f)===void 0)return`_.${f}`},preamble:(o??"")+u,userFunctions:{defs:new Map,compiling:new Set}}),c=tE(n,l);return N.withReferences(c,n,l,r?new Set(Object.keys(r)):void 0)}};function tE(e,n){let t;try{t=N.compile(e,n)}catch(s){return{target:"interval-js",success:!1,code:"",error:s.message}}let i=N.userFunctionsPreamble(n),r=i?n.preamble?`${n.preamble}
1497
- ${i}`:i:n.preamble,o=new Ol(t,r);return{target:"interval-js",success:!0,code:t,calling:"expression",run:o}}var iE="0.86.1";return Mh(rE);})();
1497
+ ${i}`:i:n.preamble,o=new Ol(t,r);return{target:"interval-js",success:!0,code:t,calling:"expression",run:o}}var iE="0.86.2";return Mh(rE);})();
1498
1498
  /*! Bundled license information:
1499
1499
 
1500
1500
  complex-esm/dist/src/complex.js: