@cortex-js/compute-engine 0.4.3 → 0.6.0
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.
- package/README.md +2 -3
- package/dist/compute-engine.esm.js +18900 -18332
- package/dist/compute-engine.min.esm.js +2 -2
- package/dist/compute-engine.min.js +2 -2
- package/dist/math-json.esm.js +44 -6141
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.js +2 -2
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +8 -7
- package/dist/types/compute-engine/boxed-expression/box.d.ts +3 -5
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-domain.d.ts +32 -6
- package/dist/types/compute-engine/boxed-expression/boxed-function-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +7 -3
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-symbol-definition.d.ts +6 -6
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +5 -5
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +2 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +3 -3
- package/dist/types/compute-engine/compute-engine.d.ts +101 -50
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/arithmetic-add.d.ts +2 -2
- package/dist/types/compute-engine/dictionary/arithmetic-divide.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/arithmetic-multiply.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/collections.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/core.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/dictionary.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/logic.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/sets.d.ts +1 -1
- package/dist/types/compute-engine/dictionary/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/domain-utils.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-inequalities.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -2
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +3 -3
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +14 -13
- package/dist/types/compute-engine/latex-syntax/public.d.ts +69 -44
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +3 -3
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +3 -5
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-decimal.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +2 -2
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/public.d.ts +551 -228
- package/dist/types/compute-engine/rules.d.ts +1 -1
- package/dist/types/compute-engine/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/expand.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/flatten.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/negate.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/utils.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +3 -2
- package/dist/types/math-json/math-json-format.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +3 -4
- package/dist/types/math-json.d.ts +3 -4
- package/package.json +17 -18
- package/dist/compute-engine.js +0 -23523
- package/dist/math-json.js +0 -6339
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/** CortexJS Compute Engine 0.
|
|
2
|
-
const e=1e5,i=!0;function t(e){return 8205===e||(65038===e||65039===e||(e>=127995&&e<=128e3||(e>=129456&&e<=129460||e>=917536&&e<=917632)))}function n(e){return e>=127462&&e<=127487}class r{constructor(e){this.obeyspaces=!1,this.s=function(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;const i=[],r=function(e){const i=[];for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n>=55296&&n<=56319){const i=e.charCodeAt(t+1);i>=56320&&i<=57343&&(n=65536+1024*(n-55296)+(i-56320),t++)}i.push(n)}return i}(e);let s=0;for(;s<r.length;){const e=r[s++],a=r[s];if(8205===a){const e=s-1;for(s+=2;8205===r[s];)s+=2;i.push(String.fromCodePoint(...r.slice(e,2*s-e+1)))}else if(t(a)){const e=s-1;for(;t(r[s]);)s+=8205===r[s]?2:1;i.push(String.fromCodePoint(...r.slice(e,2*s-e-1)))}else n(e)?(s+=1,i.push(String.fromCodePoint(...r.slice(s-2,2)))):i.push(String.fromCodePoint(e))}return i}(e),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(e){let i;return i="string"==typeof this.s?e.exec(this.s.slice(this.pos)):e.exec(this.s.slice(this.pos).join("")),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>";const e=this.get();if("\\"===e){if(!this.end()){let e=this.match(/^[a-zA-Z*]+/);if(e)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(e=this.get()," "===e)return"<space>";return"\\"+e}}else{if("{"===e)return"<{>";if("}"===e)return"<}>";if("^"===e){if("^"===this.peek()){this.get();const e=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(e)return String.fromCodePoint(parseInt(e.slice(e.lastIndexOf("^")+1),16))}return e}if("#"===e){if(!this.end()){let e=!1;if(/[0-9?]/.test(this.peek())&&(e=!0,this.pos+1<this.s.length)){const i=this.s[this.pos+1];e=/[^0-9A-Za-z]/.test(i)}return e?"#"+this.get():"#"}}else if("$"===e)return"$"===this.peek()?(this.get(),"<$$>"):"<$>"}return e}}function s(e,i){let t=[],n=e.next();if(n)if("\\relax"===n);else if("\\noexpand"===n)n=e.next(),n&&t.push(n);else if("\\obeyspaces"===n)e.obeyspaces=!0;else if("\\space"===n||"~"===n)t.push("<space>");else if("\\bgroup"===n)t.push("<{>");else if("\\egroup"===n)t.push("<}>");else if("\\string"===n)n=e.next(),n&&("\\"===n[0]?Array.from(n).forEach((e=>t.push("\\"===e?"\\backslash":e))):"<{>"===n?t.push("\\{"):"<space>"===n?t.push("~"):"<}>"===n&&t.push("\\}"));else if("\\csname"===n){for(;"<space>"===e.peek();)e.next();let r="",s=!1,o=[];do{if(0===o.length)if(/^#[0-9?]$/.test(e.peek())){o=a(i?.[e.get().slice(1)]??i?.["?"]??"\\placeholder{}",i),n=o[0]}else n=e.next(),o=n?[n]:[];s=0===o.length,s||"\\endcsname"!==n||(s=!0,o.shift()),s||(s="<$>"===n||"<$$>"===n||"<{>"===n||"<}>"===n||!!n&&n.length>1&&"\\"===n[0]),s||(r+=o.shift())}while(!s);r&&t.push("\\"+r),t=t.concat(o)}else if("\\endcsname"===n);else if(n.length>1&&"#"===n[0]){const e=n.slice(1);t=t.concat(a(i?.[e]??i?.["?"]??"\\placeholder{}",i))}else t.push(n);return t}function a(e,i){const t=e.toString().split(/\r?\n/);let n="",a="";for(const e of t){n+=a,a=" ";const i=e.match(/((?:\\%)|[^%])*/);null!==i&&(n+=i[0])}const o=new r(n);let l=[];do{l=l.concat(s(o,i))}while(!o.end());return l}function o(e){let i="",t="";for(const n of e)n&&(/[a-zA-Z*]/.test(n[0])&&(t+=i),i=/\\[a-zA-Z]+\*?$/.test(n)?" ":"",t+=n);return t}function l(e){let i=[];if(Array.isArray(e))for(const t of e)Array.isArray(t)?i=[...i,...t]:i.push(t);else i=[e];return o(i.map((e=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"}[e]??e))))}function u(e){return!("kind"in e)||"symbol"===e.kind}function c(e){return"kind"in e&&"matchfix"===e.kind}function h(e){return"kind"in e&&"infix"===e.kind}function m(e){return"kind"in e&&"prefix"===e.kind}function f(e){return"kind"in e&&"postfix"===e.kind}function g(e){return null!==e&&"object"==typeof e&&"num"in e}function p(e){return null!==e&&"object"==typeof e&&"sym"in e}function d(e){return null!==e&&"object"==typeof e&&"fn"in e}function v(e){return null===e?null:"object"==typeof e&&"str"in e?e.str:"string"!=typeof e||e.length<2||"'"!==e[0]||"'"!==e[e.length-1]?null:e.substring(1,e.length-1)}function b(e){return null===e?null:Array.isArray(e)?e[0]:d(e)?e.fn[0]:null}function y(e){const i=b(e);return"string"==typeof i?i:""}function N(e,i){return null===e?null:Array.isArray(e)?e[i]??null:d(e)?e.fn[i]??null:null}function x(e){return Array.isArray(e)?Math.max(0,e.length-1):d(e)?Math.max(0,e.fn.length-1):0}function _(e){return null===e?null:"string"==typeof e?e.length>=2&&"'"===e[0]&&"'"===e[e.length-1]?null:e:p(e)?e.sym:null}function w(e){if(null===e)return null;if("number"==typeof e)return e;if(g(e))return parseFloat(e.num);const i=_(e);return"NaN"===i?NaN:"+Infinity"===i?1/0:"-Infinity"===i?-1/0:null}function S(e){if(function(e){return null===e||!Array.isArray(e)&&("object"!=typeof e||!("fn"in e||"dic"in e))}(e))return[null,null];const i=b(e);if(!i)return[null,null];let t=null,n=null;if("Negate"===i&&([t,n]=S(N(e,1)??"Missing"),null!==t&&null!==n))return[-t,n];if("Rational"===i)return[w(N(e,1)??NaN)??NaN,w(N(e,2)??NaN)??NaN];if("Power"===i){const i=w(N(e,2));1===i?(t=w(N(e,1))??null,n=1):-1===i&&(t=1,n=w(N(e,1))??null)}return"Divide"===i&&(t=w(N(e,1))??null,n=w(N(e,2))??null),"Multiply"===i&&"Power"===b(N(e,2))&&-1===w(N(N(e,2),2))&&(t=w(N(e,1))??null,n=w(N(N(e,2),1))??null),null===t||null===n?[null,null]:Number.isInteger(t)&&Number.isInteger(n)?[t,n]:[null,null]}function E(e){return Array.isArray(e)?e.slice(1):d(e)?e.fn.slice(1):[]}function I(e,i){let t=null;if(Array.isArray(e)&&(t=e),d(e)&&(t=e.fn),null===t)return[];let n=1;const r=[];for(;n<t.length;)r.push(i(t[n])),n+=1;return r}function k(e,i,t,n="both"){if("non"===n)return[e,i,t];const r=b(i),s=b(t);return"left"===n?r===e?[e,...E(i)??[],t]:[e,i,t]:"right"===n?s===e?[e,i,...E(t)??[]]:[e,i,t]:r===e&&s===e?[e,...E(i)??[],...E(t)??[]]:r===e?[e,...E(i)??[],t]:s===e?[e,i,...E(t)??[]]:[e,i,t]}function M(e){const i=b(e);return null===e?null:("Delimiter"===i&&(e=N(e,1)??null),null===e?null:"Sequence"===i?E(e)??[]:null)}function A(e,i){return i>2?"solidus":"radical"}function D(e,i){return i>3?"inline-solidus":"quotient"}function q(e,i,t,n){if(null===t)return"\\sqrt{}";if(n=n??2,"solidus"===i)return e.wrapShort(t)+"^{1\\/"+e.serialize(n)+"}";if("quotient"===i)return e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(n)+"}}";return 2===w(n)?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(n)+"]{"+e.serialize(t)+"}"}function C(e,i){if(null===i)return"";const t=N(i,1)??"Missing",n=N(i,2)??"Missing";if(1===x(i))return e.serialize(t);const r=D(0,e.level);if("inline-solidus"===r||"nice-solidus"===r){const i=e.wrapShort(t),s=e.wrapShort(n);return"inline-solidus"===r?`${i}\\/${s}`:`^{${i}}\\!\\!/\\!_{${s}}`}if("reciprocal"===r)return e.wrap(t)+e.wrap(n)+"^{-1}";if("factor"===r)return"\\frac{1}{"+e.serialize(n)+"}"+e.wrap(t);return`\\frac{${e.serialize(t)}}{${e.serialize(n)}}`}function O(e,i){const t=b(i),n=N(i,1)??"Missing",r=N(i,2)??"Missing";if("Sqrt"===t)return q(e,A(0,e.level),n,2);if("Root"===t)return q(e,A(0,e.level),n,r);const s=w(r)??1;if(-1===s)return e.serialize(["Divide","1",n]);if(s<0)return e.serialize(["Divide","1",["Power",n,-s]]);if("Divide"===b(r)||"Rational"===b(r)){if(1===w(N(r,1))){return q(e,A(0,e.level),n,N(r,2))}}else if("Power"===b(r)&&-1===w(N(r,2))){return q(e,A(0,e.level),n,N(r,1))}return e.wrapShort(n)+"^{"+e.serialize(r)+"}"}const V=[{name:"CatalanConstant",serialize:"G"},{name:"GoldenRatio",serialize:"\\varphi"},{name:"EulerGamma",serialize:"\\gamma"},{name:"Degrees",serialize:"\\frac{\\pi}{180}"},{trigger:["\\infty"],parse:{num:"+Infinity"}},{name:"ComplexInfinity",trigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{trigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",trigger:["\\pi"]},{trigger:["\u03c0"],parse:"Pi"},{name:"ExponentialE",trigger:["e"],serialize:"e"},{trigger:["\\mathrm","<{>","e","<}>"],parse:"ExponentialE"},{trigger:["\\exponentialE"],parse:"ExponentialE"},{name:"ImaginaryUnit",trigger:["\\imaginaryI"]},{trigger:["i"],parse:"ImaginaryUnit"},{trigger:["\\mathrm","<{>","i","<}>"],parse:"ImaginaryUnit"},{name:"Add",trigger:["+"],kind:"infix",associativity:"both",precedence:275,parse:(e,i,t)=>{if(275<i.minPrec)return null;const n=e.matchExpression({...i,minPrec:275});return null===n?null:k("Add",t,n)},serialize:function(e,i){e.level-=1;const t=b(i);let n="",r=N(i,1),s=!Number.isNaN(w(r)??NaN);if("Negate"===t)n="-"+e.wrap(r,276);else if("Add"===t){n=e.serialize(r);const t=x(i)+1;for(let a=2;a<t;a++){r=N(i,a);const t=w(r)??NaN,o=!Number.isNaN(t);let l=!1;if(null!==r&&s){const[i,t]=S(r);null!==i&&null!==t&&isFinite(i)&&isFinite(t)&&1!==t&&(n+=e.options.invisiblePlus+e.serialize(r),l=!0)}if(!l)if(t<0)n+=e.serialize(r);else if("Negate"===b(r))n+=e.wrap(r,275);else{const i=e.wrap(r,275);"-"===i[0]||"+"===i[0]?n+=i:n=n+"+"+i}s=o}}else if("Subtract"===t){const t=N(i,2);n=null!==t?e.wrap(r,275)+"-"+e.wrap(t,275):e.wrap(r,275)}return e.level+=1,n}},{kind:"prefix",trigger:["+"],precedence:275,parse:(e,i)=>275<i.minPrec?null:e.matchExpression({...i,minPrec:400})},{name:"Complex",precedence:274,serialize:(e,i)=>{const t=w(N(i,1)),n=w(N(i,2));if(0===n)return e.serialize(N(i,1));const r=1===n?"\\imaginaryI":-1===n?"-\\imaginaryI":o([e.serialize(N(i,2)),"\\imaginaryI"]);return 0===t?r:o(null!==n&&n<0?[e.serialize(N(i,1)),r]:[e.serialize(N(i,1)),"+",r])}},{name:"Divide",trigger:["\\frac"],requiredLatexArg:2,precedence:660,parse:function(e){const i=e.matchRequiredLatexArgument()??"Missing",t=e.matchRequiredLatexArgument()??"Missing";if("PartialDerivative"===b(i)&&("PartialDerivative"===b(t)||"Multiply"===b(t)&&"PartialDerivative"===b(N(t,1)))){const n=N(i,3)??"Nothing";let r=N(i,1);null!==r&&"Missing"!==r||(r=e.matchExpression()??"Nothing");let s=[];if("Multiply"===b(t)){for(const e of E(t))if("PartialDerivative"===b(e)){const i=N(e,2);i&&s.push(i)}}else{const e=N(t,2);e&&s.push(e)}return s.length>1&&(s=["List",...s]),["PartialDerivative",r,...s,"Missing"===n?1:n]}return["Divide",i,t]},serialize:C},{trigger:["\\/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{trigger:["/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{trigger:["\\div"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{name:"Exp",serialize:(e,i)=>o(["\\exponentialE^{",e.serialize(N(i,1)??"Nothing"),"}"])},{name:"Factorial",trigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",trigger:["!","!"],kind:"postfix",precedence:810},{trigger:"\\operatorname{floor}",parse:e=>{const i=e.matchArguments("group");return null===i?null:["Floor",...i]}},{name:"Gcd",trigger:"\\operatorname{gcd}",parse:e=>{const i=e.matchArguments("group");return null===i?null:["Gcd",...i]},serialize:(e,i)=>o(["\\operatorname{gcd}","\\left(",e.serialize(i),"\\right)"])},{name:"Half",serialize:"\\frac12"},{name:"Lcm",trigger:"\\operatorname{lcm}"},{name:"MinusPlus",trigger:["\\mp"],kind:"infix",associativity:"both",precedence:270},{name:"Multiply",trigger:["\\times"],kind:"infix",associativity:"both",precedence:390,serialize:function e(i,t){if(null===t)return"";i.level-=1;let n="";const[r,s]=function(e){if("Multiply"!==b(e))return[[],[]];const i=[],t=[],n=E(e);for(const e of n)if("Power"===b(e))if("Negate"===b(N(e,2))){const i=N(e,1)??"Nothing",n=N(N(e,2),1)??"Nothing";t.push(["Power",i,n])}else{const n=w(N(e,2))??NaN;-1===n?t.push(N(e,1)??"Nothing"):n<0?t.push(["Power",N(e,1)??"Nothing",-n]):i.push(e)}else i.push(e);return[i,t]}(t);if(s.length>0&&(n=1===s.length&&1===s[0]?0===r.length?"1":1===r.length?i.serialize(r[0]):e(i,["Multiply",...r]):i.serialize(["Divide",1===r.length?r[0]:["Multiply",...r],1===s.length?s[0]:["Multiply",...s]])),n)return i.level+=1,n;let a=!1,l=null;const u=x(t)+1;let c=!1;for(let e=1;e<u;e++){if(l=N(t,e),null===l)continue;let r;if("number"==typeof l||g(l))r=i.serialize(l),"-1"!==r||n?("-"===r[0]&&(r=r.slice(1),a=!a),n=n?o([n,i.options.multiply,r]):r):n="-",c=!0;else{if("Power"===b(l)){const[e,t]=S(N(l,2)??NaN);if(1===e&&null!==t){n+=q(i,A(0,i.level),N(l,1),t),c=!1;continue}}if("Power"!==b(l)||isNaN(w(N(l,1))??NaN)){if("Negate"===b(l)&&(l=N(l,1),a=!a),r=i.wrap(l,390),n){const e=b(l);n=!c||"Divide"!==e&&"Rational"!==e?i.options.invisibleMultiply?o([n,i.options.invisibleMultiply,r]):o([n,r]):o([n,i.options.multiply,r])}else n=r;c=!1}else r=i.serialize(l),n=n?o([n,i.options.multiply,r]):r,c=!0}}return i.level+=1,a?"-"+n:n}},{trigger:["\\cdot"],kind:"infix",associativity:"both",precedence:390,parse:(e,i,t)=>{if(391<i.minPrec)return null;const n=e.matchExpression({...i,minPrec:392});return null===n?null:k("Multiply",t,n)}},{trigger:["*"],kind:"infix",associativity:"both",precedence:390,parse:(e,i,t)=>{if(391<i.minPrec)return null;const n=e.matchExpression({...i,minPrec:392});return null===n?null:["Multiply",t,n]}},{name:"Negate",trigger:["-"],kind:"prefix",parse:(e,i)=>{if(276<i.minPrec)return null;const t=e.matchExpression({...i,minPrec:400});return null===t?null:["Negate",t]},precedence:275},{name:"PlusMinus",trigger:["\\pm"],kind:"infix",associativity:"both",precedence:270},{name:"Power",trigger:["^"],kind:"infix",serialize:O},{name:"Rational",precedence:660,serialize:C},{name:"Root",serialize:O},{name:"Round",trigger:"\\operatorname{round}"},{name:"Square",precedence:720,serialize:(e,i)=>e.wrapShort(N(i,1))+"^2"},{name:"Sign",trigger:"\\operatorname{sgn}"},{name:"Sqrt",trigger:["\\sqrt"],optionalLatexArg:1,requiredLatexArg:1,parse:function(e){const i=e.matchOptionalLatexArgument(),t=e.matchRequiredLatexArgument();return null===t?null!==i?["Root","Nothing",i]:["Sqrt","Nothing"]:null!==i?["Root",t,i]:["Sqrt",t]},serialize:O},{name:"Subtract",trigger:["-"],kind:"infix",associativity:"both",precedence:275,parse:(e,i,t)=>{if(276<i.minPrec)return null;const n=e.matchExpression({...i,minPrec:277});return null===n?null:["Subtract",t,n]}}];function P(e=""){return(i,t)=>E(t).map((e=>i.serialize(e))).join(e)}function F(e,i){if(null===i)return"";const t=b(i);if("LatexString"===t)return $(e,i);if("LatexTokens"===t)return R(e,i);const n=v(i);if(null!==n)return`\\text{${n}}`;const r=w(i);return null!==r?r.toString():`\\text{${JSON.stringify(i)}}`}const L=[{name:"Missing",trigger:["\\placeholder"],requiredLatexArg:1,serialize:e=>e.options.missingSymbol??"\\placeholder{}"},{name:"BaseForm",serialize:(e,i)=>{const t=w(N(i,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){const e=w(N(i,1))??NaN;if(isFinite(e)){let i=Number(e).toString(t),n=0;if(2===t||10===t?n=4:16===t?n=2:t>16&&(n=4),n>0){const e=i;i="";for(let t=0;t<e.length;t++)t>0&&t%n==0&&(i="\\, "+i),i=e[e.length-t-1]+i}return`(\\text{${i}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(N(i,1))+", "+e.serialize(N(i,2))+")"}},{name:"Delimiter",serialize:(e,i)=>{const t=x(i);if(0===t)return"";if(1===t)return`\\left( ${e.serialize(N(i,1))} \\right)`;let n="",r="\\left(",s="\\left)";2===t?n=F(e,N(i,2))??"":3===t?(r=F(e,N(i,2))??"",s=F(e,N(i,3))??""):(r=F(e,N(i,2))??"",n=F(e,N(i,3))??"",s=F(e,N(i,4))??"");const a=N(i,1);return n&&"Sequence"===b(a)?`${r} ${P(n)(e,a)} ${s}`:`${r} ${e.serialize(a)} ${s}`}},{name:"Error",serialize:(e,i)=>{const t=N(i,1),n="Nothing"===_(t)?"":e.serialize(t);if(x(i)>=3){const e=N(i,3);if(e&&"LatexForm"===b(e)){const i=Z(v(N(e,1)));if(i)return`${n??""}\\texttt{\\textcolor{red}{${i}}}`}}return n??""}},{name:"FromLatex",serialize:(e,i)=>`\\texttt{${Z(v(N(i,1)))}}`},{name:"LatexForm",serialize:$},{name:"LatexTokens",serialize:R},{kind:"matchfix",openDelimiter:"(",closeDelimiter:")",parse:(e,i)=>null===i?null:"Sequence"===b(i)?0===x(i)?["Delimiter","Nothing"]:["Delimiter",...E(i)]:["Delimiter",i]},{name:"Sequence",trigger:[","],kind:"infix",precedence:20,parse:(T=20,(e,i,t)=>{if(i.minPrec>=T)return null;"Missing"===t&&(t="Nothing");const n=["Sequence",t];let r=!1;for(;!r;){for(r=!0,e.skipSpace();e.match(",");)n.push("Nothing"),e.skipSpace();if(e.atTerminator(i))n.push("Nothing");else{const t=e.matchExpression({...i,minPrec:T});n.push(t??"Nothing"),r=null===t}r||(e.skipSpace(),r=!e.match(","))}return n}),serialize:P()},{trigger:[";"],kind:"infix",precedence:19,parse:function(e){return(i,t,n)=>{if(t.minPrec>=e)return null;"Missing"===n&&(n="Nothing");const r=["Sequence",...M(n)??["Sequence",n]];for(;;){for(i.skipSpace();i.match(",");)r.push("Nothing"),i.skipSpace();if(i.atEnd){r.push("Nothing");break}const n=i.matchExpression({...t,minPrec:e});if(null===n){r.push("Nothing");break}if(r.push(...M(n)??["Sequence",n]),i.skipSpace(),!i.match(","))break}return r}}(19)},{name:"String",trigger:["\\text"],parse:e=>z(e),serialize:(e,i)=>{const t=E(i);return null===t||0===t.length?"\\text{}":"\\text{"+t.map((i=>e.serialize(i))).join("")+"}"}},{name:"Subscript",trigger:["_"],kind:"infix",serialize:(e,i)=>2===x(i)?e.serialize(N(i,1))+"_{"+e.serialize(N(i,2))+"}":"_{"+e.serialize(N(i,1))+"}"},{name:"Superplus",trigger:["^","+"],kind:"postfix"},{name:"Subplus",trigger:["_","+"],kind:"postfix"},{name:"Superminus",trigger:["^","-"],kind:"postfix"},{name:"Subminus",trigger:["_","-"],kind:"postfix"},{trigger:["^","*"],kind:"postfix",parse:(e,i)=>["Superstar",i]},{name:"Superstar",trigger:["^","\\star"],kind:"postfix"},{trigger:["_","*"],kind:"postfix",parse:(e,i)=>["Substar",i]},{name:"Substar",trigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",trigger:["^","\\dagger"],kind:"postfix"},{trigger:["^","\\dag"],kind:"postfix",parse:(e,i)=>["Superdagger",i]},{name:"Prime",trigger:["^","\\prime"],kind:"postfix"},{trigger:["^","\\doubleprime"],kind:"postfix",parse:(e,i)=>["Prime",i??"Nothing",2]},{name:"Derivative",serialize:(e,i)=>{const t=w(N(i,1))??NaN;if(!isFinite(t))return"";const n=e.serialize(N(i,2));return 1===t?n+"^{\\prime}":2===t?n+"^{\\doubleprime}":n+"^{("+Number(t).toString()+")}"}},{name:"Piecewise",trigger:"cases",kind:"environment",parse:e=>["Piecewise",e.matchTabular("cases")??"Nothing"],serialize:(e,i)=>{if("List"!==b(N(i,1)))return"";const t=E(N(i,1));let n="",r="";for(const i of t){n+=r;const t=N(i,1);if(null!==t){n+=e.serialize(t);const r=N(i,2);null!==r&&(n+="&"+e.serialize(r))}r="\\\\"}return"\\begin{cases}"+n+"\\end{cases}"}}];var T;function z(e,i){if(!e.match("<{>"))return"Nothing";const t=[];let n="",r=null;for(;!e.atEnd&&!e.match("<}>");)if("<{>"===e.peek)t.push(z(e));else if(e.match("\\textbf")&&e.match("<{>"))t.push(z(e,{"font-weight":"bold"}));else if(e.match("\\color")&&e.match("<{>")){const i=e.matchColor();i&&e.match("<}>")&&(null!==r&&n?t.push(["Style",n,{dict:r}]):n&&t.push(["String",n]),n="",r={color:i})}else if(e.match("<space>"))n+=" ";else if(e.match("<$>")){const i=e.index,r=e.matchExpression()??"Nothing";e.skipSpace(),e.match("<$>")?t.push(r):(n+="$",e.index=i)}else if(e.match("<$$>")){const i=e.index,r=e.matchExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?t.push(r):(n+="$$",e.index=i)}else n+=e.matchChar()??"";return null!==r&&n?t.push(["Style",n,{dict:r}]):n&&t.push(["String",n]),i?["Style",["String",...t],{dict:i}]:["String",...t]}function R(e,i){return null===i?"":o(I(i,(i=>{const t=v(i);return null===t?e.serialize(i):"<{>"===t?"{":"<}>"===t?"}":"<$>"===t?"$":"<$$>"===t?"$$":"<space>"===t?" ":t})))}function $(e,i){return null===i?"":o(I(i,(i=>v(i)??e.serialize(i))))}function Z(e){return null===e?"":e.replace(/[{}\[\]\\:\-\$%]/g,(e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "}[e]??"\\"+e)))}const j=[{name:"Overscript",trigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",trigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",trigger:["+","+"],kind:"postfix",precedence:880},{name:"Decrement",trigger:["-","-"],kind:"postfix",precedence:880},{name:"PreIncrement",trigger:["+","+"],kind:"prefix",precedence:880},{name:"PreDecrement",trigger:["-","-"],kind:"prefix",precedence:880},{name:"Ring",trigger:["\\circ"],kind:"infix",precedence:265},{name:"Transpose",trigger:["^","T"],kind:"infix"},{name:"ConjugateTranspose",trigger:["^","H"],kind:"infix"},{name:"StringJoin",trigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",trigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",trigger:["\\partial"],kind:"prefix",parse:e=>{let i=!1,t="Nothing",n="Nothing";for(;!i;)e.skipSpace(),e.match("_")?n=e.matchRequiredLatexArgument():e.match("^")?t=e.matchRequiredLatexArgument():i=!0;const r=M(n);if(r&&(n=["List",...r]),!n||!t)return null;let s=e.matchRequiredLatexArgument()??"Nothing";if("Nothing"!==s){s=[s,...e.matchArguments("group")??"Nothing"]}return["PartialDerivative",s,n,t]},serialize:(e,i)=>{let t="\\partial";const n=N(i,1),r=N(i,2),s=N(i,3);return null!==r&&"Nothing"!==r&&("List"===b(r)?t+="_{"+e.serialize(["Sequence",...E(r)])+"}":t+="_{"+e.serialize(r)+"}"),null!==s&&"Nothing"!==s&&(t+="^{"+e.serialize(s)+"}"),null!==n&&"Nothing"!==n&&(t+=e.serialize(n)),t},precedence:740},{name:"OverBar",trigger:["\\overline"],requiredLatexArg:1},{name:"UnderBar",trigger:["\\underline"],requiredLatexArg:1},{name:"OverVector",trigger:["\\vec"],requiredLatexArg:1},{name:"OverTilde",trigger:["\\tilde"],requiredLatexArg:1},{name:"OverHat",trigger:["\\hat"],requiredLatexArg:1},{name:"OverRightArrow",trigger:["\\overrightarrow"],requiredLatexArg:1},{name:"OverLeftArrow",trigger:["\\overleftarrow"],requiredLatexArg:1},{name:"OverRightDoubleArrow",trigger:["\\Overrightarrow"],requiredLatexArg:1},{name:"OverLeftHarpoon",trigger:["\\overleftharpoon"],requiredLatexArg:1},{name:"OverRightHarpoon",trigger:["\\overrightharpoon"],requiredLatexArg:1},{name:"OverLeftRightArrow",trigger:["\\overleftrightarrow"],requiredLatexArg:1},{name:"OverBrace",trigger:["\\overbrace"],requiredLatexArg:1},{name:"OverLineSegment",trigger:["\\overlinesegment"],requiredLatexArg:1},{name:"OverGroup",trigger:["\\overgroup"],requiredLatexArg:1}];function B(e){return i=>{let t=!1,n=0;if(i.skipSpace(),i.match("^")){if(i.skipSpace(),i.match("<{>")){i.skipSpace(),i.match("-")&&i.match("1")&&(t=!0);do{i.match("\\doubleprime")&&(n+=2),i.match("\\prime")&&(n+=1),i.match("'")&&(n+=1)}while(!i.match("<}>")&&!i.atEnd)}let e=!1;for(;!e;)i.skipSpace(),i.match("\\doubleprime")?n+=2:i.match("\\prime")||i.match("'")?n+=1:e=!0}let r={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arctan","\\arcsec":"Arcsec","\\arccsc":" Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arcosh","\\artanh":"Artanh","\\arcsech":"Arcsech","\\arccsch":"Arcsch","\\ch":"Cosh","\\cos":"Cos","\\cosec":"Csc","\\cosh":"Csch","\\cot":"Cot","\\cotg":"Cot","\\coth":"Coth","\\csc":"Csc","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"}[e??""]??e??"";t&&(r=["InverseFunction",r]),n>=1&&(r=["Derivative",n,r]);const s=i.matchArguments("implicit");return null===s?[r,"Nothing"]:[r,...s]}}const G=[{name:"Arcsin",trigger:["\\arcsin"],arguments:"implicit",parse:B("Arcsin")},{name:"Arccos",trigger:["\\arccos"],arguments:"implicit",parse:B("Arccos")},{name:"Arctan",trigger:["\\arctan"],arguments:"implicit",parse:B("Arctan")},{trigger:["\\arctg"],arguments:"implicit",parse:B("Arctan")},{name:"Arccot",trigger:["\\arcctg"],arguments:"implicit",parse:B("Arccot")},{name:"Arcsec",trigger:["\\arcsec"],arguments:"implicit",parse:B("Arcsec")},{name:"Arccsc",trigger:["\\arccsc"],arguments:"implicit",parse:B("Arccsc")},{name:"Arsinh",trigger:["\\arsinh"],arguments:"implicit",parse:B("Arsinh")},{name:"Arcosh",trigger:["\\arcosh"],arguments:"implicit",parse:B("Arcosh")},{name:"Artanh",trigger:["\\artanh"],arguments:"implicit",parse:B("Artanh")},{name:"Arsech",trigger:["\\arsech"],arguments:"implicit",parse:B("Arsech")},{name:"Arcsch",trigger:["\\arcsch"],arguments:"implicit",parse:B("Arcsch")},{trigger:["\\ch"],arguments:"implicit",parse:B("Cosh")},{name:"Cosec",trigger:["\\cosec"],arguments:"implicit",parse:B("Cosec")},{name:"Cosh",trigger:["\\cosh"],arguments:"implicit",parse:B("Cosh")},{name:"Cot",trigger:["\\cot"],arguments:"implicit",parse:B("Cot")},{trigger:["\\cotg"],arguments:"implicit",parse:B("Cot")},{name:"Coth",trigger:["\\coth"],arguments:"implicit",parse:B("Coth")},{name:"Csc",trigger:["\\csc"],arguments:"implicit",parse:B("Csc")},{trigger:["\\ctg"],arguments:"implicit",parse:B("Cot")},{trigger:["\\cth"],arguments:"implicit",parse:B("Cotanh")},{name:"Sec",trigger:["\\sec"],arguments:"implicit",parse:B("Sec")},{name:"Sinh",trigger:["\\sinh"],arguments:"implicit",parse:B("Sinh")},{trigger:["\\sh"],arguments:"implicit",parse:B("Sinh")},{name:"Tan",trigger:["\\tan"],arguments:"implicit",parse:B("Tan")},{trigger:["\\tg"],arguments:"implicit",parse:B("Tan")},{name:"Tanh",trigger:["\\tanh"],arguments:"implicit",parse:B("Tanh")},{trigger:["\\th"],arguments:"implicit",parse:B("Tanh")},{name:"Cos",trigger:["\\cos"],arguments:"implicit",parse:B("Cos")},{name:"Sin",trigger:["\\sin"],arguments:"implicit",parse:B("Sin")}],H=[{name:"AlgebraicNumber",trigger:"\\bar\\Q"},{name:"ComplexNumber",trigger:["\\C"]},{trigger:"\\mathbb{C}",parse:"ComplexNumber"},{name:"ImaginaryNumber",trigger:["\\imaginaryI\\R"]},{name:"ExtendedComplexNumber",trigger:["\\bar\\C"]},{name:"EmptySet",trigger:["\\emptyset"]},{trigger:["\\varnothing"],parse:"EmptySet"},{name:"Integer",trigger:["\\Z"]},{trigger:"\\mathbb{Z}",parse:"Integer"},{name:"RationalNumber",trigger:["\\Q"]},{name:"RealNumber",trigger:["\\R"]},{name:"ExtendedRealNumber",trigger:["\\bar\\R"]},{name:"TranscendentalNumber",trigger:"\\R-\\bar\\Q"},{trigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumber"},{name:"NegativeNumber",trigger:"\\R^-"},{trigger:"\\R^{-}",parse:"NegativeNumber"},{trigger:"\\R_-",parse:"NegativeNumber"},{trigger:"\\R_{-}",parse:"NegativeNumber"},{trigger:"\\R^{\\lt}",parse:"NegativeNumber"},{name:"PositiveNumber",trigger:"\\R^+"},{trigger:"\\R^{+}",parse:"PositiveNumber"},{trigger:"\\R_+",parse:"PositiveNumber"},{trigger:"\\R_{+}",parse:"PositiveNumber"},{trigger:"\\R^{\\gt}",parse:"PositiveNumber"},{name:"NonPositiveNumber",trigger:"\\R^{0-}"},{trigger:"\\R^{-0}",parse:"NonPositiveNumber"},{trigger:"\\R^{\\leq}",parse:"NonPositiveNumber"},{name:"NegativeInteger",trigger:"\\Z^-"},{trigger:"\\Z^-",parse:"NegativeInteger"},{trigger:"\\Z^{-}",parse:"NegativeInteger"},{trigger:"\\Z_-",parse:"NegativeInteger"},{trigger:"\\Z_{-}",parse:"NegativeInteger"},{trigger:"\\Z^{\\lt}",parse:"NegativeInteger"},{name:"PositiveInteger",trigger:"\\Z^+"},{trigger:"\\Z^{+}",parse:"PositiveInteger"},{trigger:"\\Z_+",parse:"PositiveInteger"},{trigger:"\\Z_{+}",parse:"PositiveInteger"},{trigger:"\\Z^{\\gt}",parse:"PositiveInteger"},{trigger:"\\Z^{\\gt0}",parse:"PositiveInteger"},{trigger:"\\N^+",parse:"PositiveInteger"},{trigger:"\\N^{+}",parse:"PositiveInteger"},{trigger:"\\N^*",parse:"PositiveInteger"},{trigger:"\\N^{*}",parse:"PositiveInteger"},{trigger:"\\N^\\star",parse:"PositiveInteger"},{trigger:"\\N^{\\star}",parse:"PositiveInteger"},{trigger:"\\N_1",parse:"PositiveInteger"},{trigger:"\\N_{1}",parse:"PositiveInteger"},{name:"NonNegativeInteger",trigger:["\\N"]},{trigger:"\\Z^{+0}",parse:"NonNegativeInteger"},{trigger:"\\Z^{\\geq}",parse:"NonNegativeInteger"},{trigger:"\\Z^{\\geq0}",parse:"NonNegativeInteger"},{trigger:"\\Z^{0+}",parse:"NonNegativeInteger"},{trigger:"\\mathbb{N}",parse:"NonNegativeInteger"},{trigger:"\\N_0",parse:"NonNegativeInteger"},{trigger:"\\N_{0}",parse:"NonNegativeInteger"},{name:"CartesianProduct",trigger:["\\times"],kind:"infix",associativity:"right",precedence:390,parse:(e,i,t)=>{if(390<i.minPrec)return null;const n=e.computeEngine;if(!n||!n.box(t).domain.isSubsetOf("Set"))return null;const r=e.index,s=e.matchExpression({...i,minPrec:390});return null===s||!0!==n.box(t).domain.isSubsetOf("Set")?(e.index=r,null):["CartesianProduct",t,s]}},{name:"Complement",trigger:["^","\\complement"],kind:"infix"},{name:"Intersection",trigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:W},{name:"Multiple",serialize:W},{name:"Union",trigger:["\\cup"],kind:"infix",precedence:350},{name:"Range",serialize:W},{name:"SetMinus",trigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",trigger:["\\triangle"],kind:"infix",precedence:260},{trigger:["\\ni"],kind:"infix",associativity:"right",precedence:160,parse:(e,i,t)=>{const n=e.matchExpression(i);return null===n?null:["Element",n,t]}},{name:"Element",trigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",trigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",trigger:["\\nsubset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSuperset",trigger:["\\nsupset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSubsetNotEqual",trigger:["\\nsubseteq"],kind:"infix",associativity:"right",precedence:240},{name:"NotSupersetNotEqual",trigger:["\\nsupseteq"],kind:"infix",associativity:"right",precedence:240},{name:"SquareSubset",trigger:["\\sqsubset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSubsetEqual",trigger:["\\sqsubseteq"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSuperset",trigger:["\\sqsupset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSupersetEqual",trigger:["\\sqsupseteq"],kind:"infix",associativity:"right",precedence:265},{name:"Subset",trigger:["\\subset"],kind:"infix",associativity:"right",precedence:240},{trigger:["\\subsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{trigger:["\\varsubsetneqq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{name:"SubsetEqual",trigger:["\\subseteq"],kind:"infix",precedence:240},{name:"Superset",trigger:["\\supset"],kind:"infix",associativity:"right",precedence:240},{trigger:["\\supsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{trigger:["\\varsupsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{name:"SupersetEqual",trigger:["\\supseteq"],kind:"infix",associativity:"right",precedence:240}];function W(e,i){if(null===i)return"";const t=b(i);return null===t?"":"Set"===t?0===x(i)?"\\emptyset":2===x(i)&&"Condition"===b(N(i,2))?o(["\\left\\lbrace",e.serialize(N(i,1)),"\\middle\\mid",e.serialize(N(i,2)),"\\right\\rbrace"]):o(["\\left\\lbrace",...E(i).map((i=>e.serialize(i)+" ,")),"\\right\\rbrace"]):(e.numericSetStyle(i,e.level),"")}const U=[{name:"Integral",trigger:["\\int"],parse:function(e){let i="Nothing",t="Nothing",n=!1;for(;!n;)e.skipSpace(),e.match("_")?t=e.matchRequiredLatexArgument():e.match("^")?i=e.matchRequiredLatexArgument():n=!0;return["Integral",e.matchExpression({tokens:["d"]})??"",i??"Nothing",t??"Nothing"]},serialize:function(e,i){return""}}],Q=[["Alpha","\\alpha",945],["Beta","\\beta",946],["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],["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],["CapitalAlpha","\\Alpha",913],["CapitalBeta","\\Beta",914],["CapitalGamma","\\Gamma",915],["CapitalDelta","\\Delta",916],["CapitalEpsilon","\\Epsilon",917],["CapitalZeta","\\Zeta",918],["CapitalEta","\\Eta",919],["CapitalTheta","\\Theta",920],["CapitaIota","\\Iota",921],["CapitalKappa","\\Kappa",922],["CapitalLambda","\\Lambda",923],["CapitalMu","\\Mu",924],["CapitalNu","\\Nu",925],["CapitalXi","\\Xi",926],["CapitalOmicron","\\Omicron",927],["CapitalPi","\\Pi",928],["CapitalRho","\\Rho",929],["CapitalSigma","\\Sigma",931],["CapitalTau","\\Tau",932],["CapitalPhi","\\Phi",934],["CapitalUpsilon","\\Upsilon",933],["CapitalChi","\\Chi",935],["CapitalPsi","\\Psi",936],["CapitalOmega","\\Omega",937],["Digamma","\\digamma",989],["Alef","\\aleph",8501],["Bet","\\beth",8502],["Gimel","\\gimel",8503],["Dalet","\\daleth",8504],["TurnedCapitalF","\\Finv",8498],["TurnedCapitalG","\\Game",8513],["Weierstrass","\\wp",8472],["Eth","\\eth",240],["InvertedOhm","\\mho",8487],["BlackClubSuit","\\clubsuit",9827],["WhiteHeartSuit","\\heartsuit",9825],["BlackSpadeSuit","\\spadesuit",9824],["WhiteDiamondSuit","\\diamondsuit",9826],["Sharp","\\sharp",9839],["Flat","\\flat",9837],["Natural","\\natural",9838]],Y=[...Q.map((([e,i,t])=>({name:e,trigger:[i],parse:e}))),...Q.map((([e,i,t])=>({trigger:[String.fromCodePoint(t)],parse:e})))],K={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function J(e){return Array.isArray(e)?e.length:1}function X(e,i){if(!function(e,i){const t=e.name??e.trigger??e.openDelimiter;if(void 0!==e.serialize&&!e.name)return i({severity:"warning",message:["invalid-dictionary-entry",t,"Unexpected serialize property without a name property"]}),!1;if(c(e)){if(e.trigger)return i({severity:"warning",message:["invalid-dictionary-entry",t,`Unexpected 'trigger' "${e.trigger}". 'matchfix' operators use a 'openDelimiter' and 'closeDelimiter' instead of a trigger. `]}),!1;if(!e.openDelimiter||!e.closeDelimiter)return i({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openDelimiter` and a `closeDelimiter` for matchfix operator"]}),!1;if(typeof e.openDelimiter!=typeof e.closeDelimiter)return i({severity:"warning",message:["invalid-dictionary-entry",t,"Expected `openDelimiter` and `closeDelimiter` to both be strings or array of LatexToken"]}),!1}if(h(e)||f(e)||m(e)){if(Array.isArray(e.trigger)&&("_"===e.trigger[0]||"^"===e.trigger[0])||"string"==typeof e.trigger&&(e.trigger.startsWith("^")||e.trigger.startsWith("_"))){if(void 0!==e.precedence||void 0!==e.associativity)return i({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(void 0===e.precedence)return i({severity:"warning",message:["invalid-dictionary-entry",t,`Expected a "precedence" for ${e.kind} operator`]}),!1}else if(void 0!==e.associativity)return i({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "associativity" operator']}),!1;if(!u(e)&&(void 0!==e.optionalLatexArg||void 0!==e.requiredLatexArg))return i({severity:"warning",message:["invalid-dictionary-entry",t,'Unexpected "optionalLatexArg" or "requiredLatexArg" for non-symbol']}),!1;if(!c(e)&&!e.trigger&&!e.name)return i({severity:"warning",message:["invalid-dictionary-entry",t,"Expected at least a 'trigger' or a 'name'"]}),!1;if(void 0===e.parse&&void 0===e.name)return i({severity:"warning",message:["invalid-dictionary-entry",t,"Expected a 'parse' or 'name'"]}),!1;return!0}(e,i))return[null,null];const t={name:e.name,kind:"kind"in e?e.kind:"symbol"};if("matchfix"===t.kind&&c(e)){if(t.openDelimiter=e.openDelimiter,t.closeDelimiter=e.closeDelimiter,"function"==typeof e.serialize)t.serialize=e.serialize;else{const e="string"==typeof t.openDelimiter?K[t.openDelimiter]:l(t.openDelimiter),i="string"==typeof t.closeDelimiter?K[t.closeDelimiter]:l(t.closeDelimiter);t.serialize=(t,n)=>o([e,t.serialize(n),i])}if("function"==typeof e.parse)t.parse=e.parse;else{const i=e.parse??e.name;t.parse=(e,t)=>[i,t]}return[null,t]}if("environment"===t.kind&&function(e){return"kind"in e&&"environment"===e.kind}(e)){const i=e.trigger;return t.serialize=(e,t)=>`\\begin{${i}${e.serialize(N(t,1))}\\end{${i}`,t.parse=e.parse??(()=>null),[i,t]}const n="string"==typeof e.trigger?a(e.trigger,[]):e.trigger,r=n?l(n):"";if(e.trigger,"symbol"===t.kind&&u(e)&&(t.arguments=e.arguments??"",t.precedence=e.precedence??0,t.optionalLatexArg=e.optionalLatexArg??0,t.requiredLatexArg=e.requiredLatexArg??0),"infix"!==t.kind&&"prefix"!==t.kind&&"postfix"!==t.kind||!(h(e)||m(e)||f(e))||(!n||"^"!==n[0]&&"_"!==n[0]?t.precedence=e.precedence??0:t.precedence=720),"infix"===t.kind&&h(e))if(t.associativity=e.associativity??"non","function"==typeof e.parse)t.parse=e.parse;else if(!n||"^"!==n[0]&&"_"!==n[0]){const i=e.parse??e.name,n=t.precedence,r=t.associativity;t.parse=(e,t,s)=>{if(n<t.minPrec)return null;const a=e.matchExpression({...t,minPrec:n});return"string"!=typeof i?[i,s,a??"Missing"]:k(i,s,a??"Missing",r)}}else{const i=e.parse??e.name;t.parse=(e,t,n)=>[i,N(n,1)??"Missing",N(n,2)??"Missing"]}else if("function"==typeof e.parse)t.parse=e.parse;else if(void 0!==e.parse)t.parse=()=>e.parse;else if(void 0===e.parse&&void 0!==e.name)if("postfix"===t.kind)t.parse=(i,t)=>t?[e.name,t]:null;else if("prefix"===t.kind){const i=t.precedence,n=e.name;t.parse=(e,t)=>{if(i<t.minPrec)return null;const r=e.matchExpression({...t,minPrec:i});return null===r?null:[n,r]}}else t.parse=()=>e.name;return"function"==typeof e.serialize||"string"==typeof e.serialize?t.serialize=e.serialize:n&&("postfix"===t.kind?t.serialize="#1"+r:"prefix"===t.kind?t.serialize=r+"#1":"infix"===t.kind?t.serialize="#1"+r+"#2":"symbol"===t.kind?t.serialize=r:t.serialize=""),[n??null,t]}const ee={algebra:[{name:"To",trigger:["\\to"],kind:"infix",precedence:270}],arithmetic:V,calculus:U,core:L,logic:[{name:"True",trigger:["\\mathrm","<{>","T","r","u","e","<}>"],serialize:"\\mathrm{True}"},{name:"False",trigger:["\\mathrm","<{>","F","a","l","s","e","<}>"],serialize:"\\mathrm{False}"},{name:"Maybe",trigger:["\\mathrm","<{>","M","a","y","b","e","<}>"],serialize:"\\mathrm{Maybe}"}],relop:[{trigger:["!","<"],kind:"infix",associativity:"right",precedence:246,parse:"NotLess"},{name:"NotLess",trigger:["\\nless"],kind:"infix",associativity:"right",precedence:246},{trigger:["<"],kind:"infix",associativity:"right",precedence:245,parse:"Less"},{name:"Less",trigger:["\\lt"],kind:"infix",associativity:"right",precedence:245},{trigger:["<","="],kind:"infix",associativity:"right",precedence:241,parse:"LessEqual"},{name:"LessEqual",trigger:["\\le"],kind:"infix",associativity:"right",precedence:241},{trigger:["\\leq"],kind:"infix",associativity:"right",precedence:241,parse:"Equal"},{trigger:["\\leqslant"],kind:"infix",associativity:"right",precedence:265,parse:"LessEqual"},{name:"LessNotEqual",trigger:["\\lneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotLessNotEqual",trigger:["\\nleqq"],kind:"infix",associativity:"right",precedence:260},{name:"LessOverEqual",trigger:["\\leqq"],kind:"infix",associativity:"right",precedence:265},{name:"GreaterOverEqual",trigger:["\\geqq"],kind:"infix",associativity:"right",precedence:265,parse:"GreaterEqual"},{name:"Equal",trigger:["="],kind:"infix",associativity:"right",precedence:260},{trigger:["*","="],kind:"infix",associativity:"right",precedence:260,parse:"StarEqual"},{name:"StarEqual",trigger:["\\star","="],kind:"infix",associativity:"right",precedence:260},{name:"PlusEqual",trigger:["+","="],kind:"infix",associativity:"right",precedence:260},{name:"MinusEqual",trigger:["-","="],kind:"infix",associativity:"right",precedence:260},{name:"SlashEqual",trigger:["/","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqual",trigger:["=","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqualEqual",trigger:["=","=","="],kind:"infix",associativity:"right",precedence:265},{name:"TildeFullEqual",trigger:["\\cong"],kind:"infix",associativity:"right",precedence:260},{name:"NotTildeFullEqual",trigger:["\\ncong"],kind:"infix",associativity:"right",precedence:260},{trigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:"Assign"},{name:"Assign",trigger:["\\coloneq"],kind:"infix",associativity:"right",precedence:260},{name:"Approx",trigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",trigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",trigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:260},{name:"NotApproxEqual",trigger:["!","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",trigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",trigger:["!","="],kind:"infix",associativity:"right",precedence:260},{name:"GreaterEqual",trigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{trigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{trigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{trigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:265,parse:"GreaterEqual"},{name:"GreaterNotEqual",trigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotGreaterNotEqual",trigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:260},{trigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",trigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",trigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{trigger:["!",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",trigger:["\\circeq"],kind:"infix",associativity:"right",precedence:260},{name:"TriangleEqual",trigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:260},{name:"DotEqual",trigger:["\\doteq"],kind:"infix",associativity:"right",precedence:265},{name:"DotEqualDot",trigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:265},{name:"FallingDotEqual",trigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"RisingDotEqual",trigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"QuestionEqual",trigger:["\\questeq"],kind:"infix",associativity:"right",precedence:260},{name:"Equivalent",trigger:["\\equiv"],kind:"infix",associativity:"right",precedence:260},{name:"MuchLess",trigger:["\\ll"],kind:"infix",associativity:"right",precedence:260},{name:"MuchGreater",trigger:["\\gg"],kind:"infix",associativity:"right",precedence:260},{name:"Precedes",trigger:["\\prec"],kind:"infix",associativity:"right",precedence:260},{name:"Succeeds",trigger:["\\succ"],kind:"infix",associativity:"right",precedence:260},{name:"PrecedesEqual",trigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:260},{name:"SucceedsEqual",trigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotPrecedes",trigger:["\\nprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotSucceeds",trigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:260},{name:"Between",trigger:["\\between"],kind:"infix",associativity:"right",precedence:265}],other:j,physics:[{name:"mu-0",trigger:"\\mu_0"}],sets:H,symbols:Y,trigonometry:G},ie={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack"],"]":["\\rbrack"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"],"\\lfloor":["\\lfloor"],"\\rfloor":["\\rfloor"],"\\lceil":["\\lceil"],"\\rceil":["\\rceil"],"\\ulcorner":["\\ulcorner"],"\\urcorner":["\\urcorner"],"\\llcorner":["\\llcorner"],"\\lrcorner":["\\lrcorner"],"\\lgroup":["\\lgroup"],"\\rgroup":["\\rgroup"],"\\lmoustache":["\\lmoustache"],"\\rmoustache":["\\rmoustache"]},te={":":[":","\\colon"],"|":["|","\\|","\\mid","\\mvert"]},ne={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},re=["\\middle","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],se={"(":")","[":"]","\\{":"\\}","\\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"},ae={precision:6,positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalMarker:".",groupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",notation:"auto",truncationMarker:"\\ldots",beginRepeatingDigits:"\\overline{",endRepeatingDigits:"}",imaginaryNumber:"\\imaginaryI",avoidExponentsInRange:[-7,20]},oe={applyInvisibleOperator:"auto",skipSpace:!0,parseArgumentsOfUnknownLatexCommands:!0,parseNumbers:!0,parseUnknownToken:e=>["\\displaystyle","\\!","\\:","\\enskip","\\quad","\\,","\\;","\\enspace","\\qquad","\\selectfont","\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"].includes(e)?"skip":/^[fg]$/.test(e)?"function":/^[a-zA-Z]$/.test(e)?"symbol":"error",preserveLatex:!0};class le{constructor(e,i,t,n,r){this.index=0,this._lastPeek="",this._peekCounter=0,this.options={...ae,...oe,...i},this.engine=n,this._tokens=e,this.onError=r,this._dictionary=t}updateOptions(e){for(const[i,t]of Object.entries(e))this.options[i]=t}clone(e,i){return new le(this._tokens.slice(e,i),this.options,this._dictionary,this.engine,this.onError)}get atEnd(){return this.index>=this._tokens.length}get peek(){if(this._tokens[this.index]===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024)throw Error("Infinite loop");return this._lastPeek=this._tokens[this.index],this._tokens[this.index]}atTerminator(e){const i=this.index;return!!this.atEnd||!!e&&(!(!e.condition||!e.condition(this))||!!(e.tokens&&e.tokens.length>0&&this.matchAll(e.tokens))&&(this.index=i,!0))}latex(e,i){return l(this._tokens.slice(e,i))}latexAhead(e){return l(this._tokens.slice(this.index,this.index+e))}latexBefore(){return this.latex(0,this.index)}latexAfter(){return this.latex(this.index)}lookAhead(){let e=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);const i=[];for(;e>0;)i[e]=this.latexAhead(e--);return i}peekDefinitions(e){let i;i="operator"===e?this.lookAhead().map(((e,i)=>this._dictionary.infix[i]?.get(e)??this._dictionary.postfix[i]?.get(e)??this._dictionary.prefix[i]?.get(e))):this.lookAhead().map(((i,t)=>this._dictionary[e][t]?.get(i)));const t=[];for(let e=i.length;e>0;e--)if(void 0!==i[e])for(const n of i[e])t.push([n,e]);return 0===t.length?null:t}next(){return this._tokens[this.index++]}skipSpace(){if(!this.atEnd&&"<{>"===this.peek&&"<}>"===this._tokens[this.index+1])return this.index+=2,this.skipSpace(),!0;let e=!1;for(;!this.atEnd&&"skip"===this.options.parseUnknownToken?.(this.peek,this);)this.index+=1,this.skipSpace(),e=!0;if(!this.options.skipSpace)return!1;for(;this.match("<space>");)e=!0;return e&&this.skipSpace(),e}matchChar(){const e=this.index;let i=0;for(;this.match("^");)i+=1;if(i>=2){let e="",t=0;for(;t!=i;){const i=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!i)break;e+=i,t+=1}if(e.length===i)return String.fromCodePoint(Number.parseInt(e,16))}else{if(this.match("\\char")){let e=Math.floor(this.matchLatexNumber()??NaN);return(!Number.isFinite(e)||e<0||e>1114111)&&(e=10067),String.fromCodePoint(e)}if(this.match("\\unicode"))if("<{>"===this.peek){const e=this.matchLatexNumber();if(this.match("<}>")&&null!==e&&e>=0&&e<=1114111)return String.fromCodePoint(e)}else{const e=this.matchLatexNumber();if(null!==e&&e>=0&&e<=1114111)return String.fromCodePoint(e)}}this.index=e;return this.next()}matchColor(e=!1){let i="";for(;!this.atEnd&&"}"!==this.peek;)i+=this.next();return i}matchLatexDimension(){return null}match(e){return this._tokens[this.index]===e&&(this.index++,!0)}matchAll(e){"string"==typeof e&&(e=[e]);let i=!0,t=0;do{i=this._tokens[this.index+t]===e[t++]}while(i&&t<e.length);return i&&(this.index+=t),i}matchAny(e){return e.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchWhile(e){const i=[];for(;e.includes(this._tokens[this.index]);)i.push(this._tokens[this.index++]);return i}matchSign(){let e=!1,i=!1;for(;!i;)this.skipSpace()?i=!1:this.matchAny(["-","\u2212"])?(e=!e,i=!1):i=!this.matchAny(["+","\ufe62"]);return e?"-":"+"}matchDecimalDigits(){let e="",i=!1;for(;!i;)if(e+=this.matchWhile(["0","1","2","3","4","5","6","7","8","9"]).join(""),i=!0,this.options.groupSeparator){const e=this.index;this.skipSpace(),this.match(this.options.groupSeparator)&&(this.skipSpace(),/[0-9]/.test(this.peek)?i=!1:this.index=e)}return e}matchSignedInteger(){const e=this.index,i=this.matchSign(),t=this.matchDecimalDigits();return t?("-"===i?"-":"")+t:(this.index=e,"")}matchExponent(){const e=this.index;let i="";if(this.matchAny(["e","E"])){const e=this.matchSignedInteger();e&&(i="e"+e)}if(i)return i;if(this.match("\\times")&&(this.skipSpace(),this.match("1")&&this.match("0")&&this.match("^"))){if(/[0-9]/.test(this.peek))return"e"+this.next();if(this.match("<{>")){this.skipSpace();const e=this.matchSignedInteger();if(this.skipSpace(),this.match("<}>")&&e)return"e"+e}}return this.index=e,""}matchNumber(){if(!this.options.parseNumbers)return"";const e=this.index;this.skipSpace(),this.match("+");let i=!1;if(this.match(this.options.decimalMarker)){const t=this.index;if(!this.matchAny(["0","1","2","3","4","5","6","7","8","9"]))return this.index=e,"";this.index=t,i=!0}let t=this.matchDecimalDigits();return t?(!i&&this.match(this.options.decimalMarker??"")&&(t+="."+(this.matchDecimalDigits()??"0")),(i?"0.":"")+t+this.matchExponent()):(this.index=e,"")}matchLatexNumber(e=!0){let i=!1,t=this.peek;for(;"<space>"===t||"+"===t||"-"===t;)"-"===t&&(i=!i),this.next(),t=this.peek;let n=10,r=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))n=8,r=["0","1","2","3","4","5","6","7"],e=!0;else if(this.match('"')||this.match("x"))n=16,r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],e=!0;else if(this.match("`"))return t=this.next(),t?t.startsWith("\\")&&2===t.length?(i?-1:1)*(t.codePointAt(1)??0):(i?-1:1)*(t.codePointAt(0)??0):null;let s="";for(;r.includes(this.peek);)s+=this.next();if(!e&&this.match("."))for(s+=".";r.includes(this.peek);)s+=this.next();const a=e?Number.parseInt(s,n):Number.parseFloat(s);return Number.isNaN(a)?null:i?-a:a}matchPrefixOperator(e){e||(e={minPrec:0}),e.minPrec||(e={...e,minPrec:0});const i=this.peekDefinitions("prefix");if(null===i)return null;const t=this.index;for(const[n,r]of i){this.index=t+r;const i=n.parse(this,e);if(i)return i}return this.index=t,null}matchInfixOperator(e,i){i||(i={minPrec:0}),i.minPrec||(i={...i,minPrec:0});const t=this.peekDefinitions("infix");if(null===t)return null;const n=this.index;for(const[r,s]of t)if(r.precedence>=i.minPrec){this.index=n+s;const t=r.parse(this,i,e);if(t)return t}return this.index=n,null}matchArguments(e){if(!e)return null;const i=this.index;let t=null;const n=this.matchEnclosure();if("group"===e&&"Delimiter"===b(n))t=E(n);else if("implicit"===e)if("Delimiter"===b(n))t=E(n);else if(null!==n)t=[n];else{const e=this.matchPrimary();null!==e&&(t=[e])}else this.index=i;return t}matchOpenDelimiter(e,i){const t=this.index,n=ne[this.peek];n&&this.next();const r=ie[e]??[e],s=n?[n]:[];return r.includes("||")&&this.matchAll(["|","|"])?(s.push("|"),s.push("|"),s):r.includes(this.peek)?(se[e]===i?s.push(se[this.peek]):s.push(i),this.next(),s):(this.index=t,null)}matchMiddleDelimiter(e){const i=te[e]??[e];if(re.includes(this.peek)){const e=this.index;return this.next(),i.includes(this.peek)?(this.next(),!0):(this.index=e,!1)}return!!i.include(this.peek)&&(this.next(),!0)}matchEnclosure(){const e=this._dictionary.matchfix;if(0===e.length)return null;const i=this.index;for(const t of e){if(this.index=i,Array.isArray(t.openDelimiter)){if(!this.matchAll(t.openDelimiter))continue;const e=this.matchExpression({tokens:t.closeDelimiter,minPrec:0});if(this.skipSpace(),!this.matchAll(t.closeDelimiter))continue;if("function"==typeof t.parse){const i=t.parse(this,e??"Nothing");if(null===i)continue;return i}return[t.name,e??"Nothing"]}const e=this.matchOpenDelimiter(t.openDelimiter,t.closeDelimiter);if(null===e)continue;const n=this.matchExpression({minPrec:0,tokens:e});if(n&&this.matchAll(e)){if("function"==typeof t.parse){const e=t.parse(this,n??"Nothing");if(null===e)continue;return e}return[t.name,n]}}return this.index=i,null}matchSymbol(){const e=this.index,i=this.peekDefinitions("symbol");if(i)for(const[t,n]of i){let i=null;if(this.index=e+n,"function"!=typeof t.parse)return t.name;if(i=t.parse(this),i)return i}this.index=e;const t=this.options.parseUnknownToken?.(this.peek,this);if("function"===t){const e=this.next(),i=this.matchEnclosure();return null===i?e:"Delimiter"!==b(i)?null:[e,...E(i)]}return"symbol"===t?this.next():this.matchUnknownLatexCommand()}matchOptionalLatexArgument(){const e=this.index;if(this.skipSpace(),this.match("[")){const e=this.matchExpression();if(this.skipSpace(),this.match("]"))return e}return this.index=e,null}matchRequiredLatexArgument(){const e=this.index;if(this.skipSpace(),this.match("<{>")){const i=this.matchExpression({tokens:["<}>"]});return this.skipSpace(),this.match("<}>")?i:(this.index=e,null)}if(/^[0-9]$/.test(this.peek))return parseInt(this.next());if(/^[^\\#]$/.test(this.peek))return this.next();const i=this.matchSymbol();return i||(this.index=e,null)}matchSupsub(e){if(null===e)return null;const i=this.index;this.skipSpace();const t=[],n=[];for(;"_"===this.peek||"^"===this.peek;){if(this.match("_")){let e=this.matchRequiredLatexArgument();!e&&this.match("<{>")&&(e=this.matchString({tokens:["<}>"]}),e&&this.match("<}>")),n.push(e??"Nothing")}else this.match("^")&&t.push(this.matchRequiredLatexArgument()??"Nothing");this.skipSpace()}if(0===t.length&&0===n.length)return this.index=i,e;let r=e;if(n.length>0){const e=this._dictionary.infix[1]?.get("_");if(e){const i=["Subscript",r,1===n.length?n[0]:["Sequence",...n]];for(const t of e)if(r="function"==typeof t.parse?t.parse(this,{minPrec:0},i):i,r)break}}if(t.length>0){const e=this._dictionary.infix[1]?.get("^");if(e){const i=["Superscript",r,1===t.length?t[0]:["Sequence",...t]];for(const t of e)if(r="function"==typeof t.parse?t.parse(this,{minPrec:0},i):i,r)break}}return null===r&&(this.index=i),r}matchPostfix(e){if(null===e)return null;const i=this.peekDefinitions("postfix");if(null===i)return null;const t=this.index;for(const[n,r]of i){this.index=t+r;const i=n.parse(this,e);if(null!==i)return i}return this.index=t,null}matchString(e){e.minPrec||(e={...e,minPrec:0});let i="",t=this.atEnd;for(;!t;){const n=this.peek;"<space>"===n?i+=" ":"\\"===n[0]?(this.onError([{severity:"warning",message:"unexpected-command"}]),i+=this.next()):/^<(\$|\$\$)>$/.test(n)?t=!0:i+=this.next(),t=t||this.atTerminator(e)}return i}matchEnvironmentName(e,i){if(!this.match(e))return!1;const t=this.index;if(this.match("<{>")){const e=this.matchString({tokens:["<}>"]});if(this.match("<}>")&&e===i)return!0}return this.index=t,!1}matchTabular(e){const i=["List"],t={minPrec:0,tokens:["\\end","<{>",...e.split(""),"<}>"]};let n=["List"],r=null;for(;!this.atTerminator(t);)this.match("&")?(n.push(r??"Nothing"),r=null):(this.match("\\\\")||this.match("\\cr"))&&(this.skipSpace(),this.matchOptionalLatexArgument(),null!==r&&n.push(r),i.push(n),n=["List"],r=null);return n.length>1&&i.push(n),i}matchEnvironment(){if(!this.match("\\begin"))return null;const e=this.index;if(this.match("<{>")){const e=this.matchString({tokens:["<}>"]});if(this.match("<}>")){const i=this._dictionary.environment.get(e);if(i)return i.parse(this,[],[]);const t=this.matchTabular(e);if(null!==t)return t}}return this.index=e,null}applyInvisibleOperator(e,i){if(null===i||this.atTerminator(e))return null;if(null===this.options.applyInvisibleOperator)return null;const t=this.index,n=this.matchExpression({...e,minPrec:390});if(null===n)return this.index=t,null;if("function"==typeof this.options.applyInvisibleOperator)return this.options.applyInvisibleOperator(this,i,n);const r=this.engine.box(n),s=_(i);if(s){if(this.engine.getFunctionDefinition(s)){let e=[];return e="Delimiter"===r.head?"Sequence"===r.op1.head?[...r.op1.ops]:[r.op1]:[r],[s,...e.map((e=>e.json))]}}const a=this.engine.box(i);if(a.isLiteral&&a.isInteger&&r.isLiteral){const[e,t]=r.rationalValue;if(null!==e&&null!==t)return["Add",i,n]}return a.isNumber&&r.isNumber?k("Multiply",i,n):(this.index=t,null)}matchUnknownLatexCommand(){const e=this.peek;if(!e||"\\"!==e[0])return null;this.next();const i=[];if("\\operatorname"===e){if(this.match("<{>")){for(;!this.atEnd&&"<}>"!==this.peek;)i.push(this.next());this.match("<}>")}else i.push(this.next());return 0===i.length?["Error","Nothing",{str:"syntax-error"},["LatexForm",{str:e}]]:["Error","Nothing",{str:"unknown-command"},["LatexForm",{str:`${e}{${l(i)}}`}]]}for(;this.match("[");){i.push("[");let e=0;for(;!this.atEnd&&0===e&&"]"!==this.peek;)"["===this.peek&&(e+=1),"]"===this.peek&&(e-=1),i.push(this.next());this.match("]")&&i.push("]")}for(;this.match("<{>");){i.push("<{>");let e=0;for(;!this.atEnd&&0===e&&"<}>"!==this.peek;)"<{>"===this.peek&&(e+=1),"<}>"===this.peek&&(e-=1),i.push(this.next());this.match("<}>")&&i.push("<}>")}return["Error","Nothing",{str:"unknown-command"},["LatexForm",{str:`${e}${l(i)}`}]]}matchPrimary(){let e=null;const i=this.index,t=this.matchNumber();if(t&&(e={num:t}),null===e&&(e=this.matchEnclosure()),null===e&&(e=this.matchEnvironment()),null===e&&(e=this.matchSymbol()),null!==e){e=this.decorate(e,i);let t=null,n=this.index;do{if(t=this.matchPostfix(e),e=t??e,this.index===n&&null!==t)break;n=this.index}while(null!==t)}return null!==e&&(e=this.matchSupsub(e)),this.decorate(e,i)}matchExpression(e){const i=this.index;e||(e={minPrec:0}),e.minPrec||(e={...e,minPrec:0}),this.skipSpace();let t=this.matchPrefixOperator({...e,minPrec:0});if(null===t&&(t=this.matchPrimary()),t){let i=!1;for(;!this.atTerminator(e)&&!i;){this.skipSpace();let n=this.matchInfixOperator(t,e);if(null===n){null===this.peekDefinitions("operator")&&(n=this.applyInvisibleOperator(e,t))}null!==n?t=n:i=!0}}return this.decorate(t,i)}decorate(e,i){if(null===e)return null;if(!this.options.preserveLatex)return e;const t=this.latex(i,this.index);return Array.isArray(e)?e={latex:t,fn:e}:"number"==typeof e?e={latex:t,num:Number(e).toString()}:"string"==typeof e?e={latex:t,sym:e}:"object"==typeof e&&null!==e&&(e.latex=t),e}}function ue(e,i){const t=e.length,n=e;e=e.slice(0,-1);for(let t=0;t<e.length-16;t++){const n=e.substring(0,t);for(let r=0;r<17;r++){const s=e.substring(t,t+r+1),a=Math.floor((e.length-n.length)/s.length);if(a>1&&(n+s.repeat(a+1)).startsWith(e))return"0"===s?n.replace(/(\d{3})/g,"$1"+i.groupSeparator):n.replace(/(\d{3})/g,"$1"+i.groupSeparator)+i.beginRepeatingDigits+s+i.endRepeatingDigits}}const r=t>i.precision-1;return e=n,r&&(e=e.substring(0,i.precision-1)),i.groupSeparator&&(e=e.replace(/(\d{3})/g,"$1"+i.groupSeparator)).endsWith(i.groupSeparator)&&(e=e.slice(0,-i.groupSeparator.length)),r?e+i.truncationMarker:e}function ce(e,i){return e?i.beginExponentMarker?i.beginExponentMarker+e+(i.endExponentMarker??""):"10^{"+e+"}":""}function he(e,i){if(null===e)return"";let t;if("number"==typeof e)t=e;else{if("object"!=typeof e||!("num"in e))return"";t=e.num}if(t===1/0||"Infinity"===t||"+Infinity"===t)return i.positiveInfinity;if(t===-1/0||"-Infinity"===t)return i.negativeInfinity;if("NaN"===t||"number"==typeof t&&Number.isNaN(t))return i.notANumber;if("number"==typeof t)return"engineering"===i.notation?function(e,i){if(0===e)return"0";const t=Math.abs(e);let n=Math.round(Math.log10(t));n-=n%3,t>Math.pow(10,i.avoidExponentsInRange[0])&&t<Math.pow(10,i.avoidExponentsInRange[1])&&(n=0);const r=t/Math.pow(10,n);let s="";const a=r.toString().match(/^(.*)\.(.*)$/);a?.[1]&&a[2]&&(s=a[1]+i.decimalMarker+a[2]);i.groupSeparator&&(s=ue(r.toExponential(),i));let o="";0!==n&&(o=ce(n.toString(),i));return(e<0?"-":"")+s+o}(t,i):function(e,i){let t,n=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i);n?.[1]&&n[2]&&(t=ce(n[2],i));let r=n?.[1]??e,s="";n=(t?n[1]:e).match(/^(.*)\.(.*)$/),n?.[1]&&n[2]&&(r=n[1],s=n[2]);i.groupSeparator&&(r=r.replace(/\B(?=(\d{3})+(?!\d))/g,i.groupSeparator),s=ue(s,i));s&&(s=i.decimalMarker+s);return t?"1"!==r||s?r+s+i.exponentProduct+t:t:r+s}(t.toString(),i);/[0-9][nd]$/.test(t)&&(t=t.slice(0,-1));let n="";for("-"===t[0]?(n="-",t=t.substring(1)):"+"===t[0]&&(t=t.substring(1));"0"===t[0];)t=t.substring(1);if(0===t.length)return n+"0";"."===t[0]&&(t="0"+t);let r="";if(t.indexOf(".")>=0){const e=t.match(/(\d*)\.(\d*)([e|E]([-+]?[0-9]*))?/);if(!e)return"";const s=e[1],a=e[2];if(r=e[4]??"","0"===s){let e=0;for(;"0"===a[e]&&e<a.length;)e+=1;let r="";if(e<=4)r="0"+i.decimalMarker,r+=a.substring(0,e),r+=ue(t.substring(r.length),i);else if(e+1>=i.precision)r="0",n="";else{r=t[e];const n=ue(t.substring(e+1),i);n&&(r+=i.decimalMarker+n)}"0"!==r&&(!(t.length-1>i.precision)||i.endRepeatingDigits&&r.endsWith(i.endRepeatingDigits)||!i.truncationMarker||r.endsWith(i.truncationMarker)||(r+=i.truncationMarker),e>4&&(r+=i.exponentProduct+ce(""+(1-e),i))),t=r}else{t=s.replace(/\B(?=(\d{3})+(?!\d))/g,i.groupSeparator);const e=ue(a,i);e&&(t+=i.decimalMarker+e)}}else if(t.length>i.precision){const e=t.length;if(e>i.avoidExponentsInRange[1]){let n=t[0];const r=ue(t.substring(1),i);r&&(n+=i.decimalMarker+r,i.truncationMarker&&!n.endsWith(i.truncationMarker)&&i.endRepeatingDigits&&!n.endsWith(i.endRepeatingDigits)&&(n+=i.truncationMarker)),"1"!==n?n+=i.exponentProduct:n="",t=n+ce(""+(e-1),i)}}else{const e=t.match(/([0-9]*)\.?([0-9]*)([e|E]([-+]?[0-9]+))?/);e&&(t=e[1],e[2]&&(t+=i.decimalMarker+e[2]),r=e[4]??""),t=t.replace(/\B(?=(\d{3})+(?!\d))/g,i.groupSeparator)}const s=ce(r,i);return"1"===t&&s?n+s:(s&&(t=t+i.exponentProduct+s),n+t)}class me{constructor(e,i,t,n){this.level=-1,this.options=e,this.computeEngine=t,e.invisibleMultiply&&(/#1/.test(e.invisibleMultiply)&&/#2/.test(e.invisibleMultiply)||n([{severity:"warning",message:["expected-argument","invisibleMultiply"]}])),this.onError=n,this.dictionary=i}updateOptions(e){for(const i of Object.keys(this.options))i in e&&(this.options[i]=e[i])}wrap(e,i){if(null===e)return"";if(void 0===i)return"("+this.serialize(e)+")";if("number"==typeof e||g(e)||"string"==typeof e||p(e))return this.serialize(e);const t=b(e);if("string"==typeof t&&"Delimiter"!==t){const n=this.dictionary.name.get(t);if(n&&("symbol"===n.kind||"prefix"===n.kind||"infix"===n.kind||"postfix"===n.kind)&&n.precedence<i)return this.wrapString(this.serialize(e),this.options.applyFunctionStyle(e,this.level))}return this.serialize(e)}wrapShort(e){if(null===e)return"";const i=this.serialize(e);return"Delimiter"===b(e)||"number"==typeof e||g(e)||/(^(.|\\[a-zA-Z*]+))$/.test(i)?i:this.wrapString(i,this.options.groupStyle(e,this.level+1))}wrapString(e,i){return"none"===i?e:"("+e+")"}serializeSymbol(e,i){const t=b(e);if(!t)return"string"==typeof i?.serialize?i.serialize:"function"==typeof i?.serialize?i.serialize(this,e):pe(_(e),"upright.")??"";const n=E(e);if(!i){if("string"==typeof t&&t.length>0&&"\\"===t[0]){let e=t;for(const i of n)e+="{"+this.serialize(i)+"}";return e}return"string"==typeof t?`${pe(t,"upright.")}(${n.map((e=>this.serialize(e))).join(", ")})`:`\\operatorname{Apply}(${this.serialize(t)}, ${this.serialize(["List",...n])})`}if(i.requiredLatexArg>0){let e="",t="",r=0;for(;r<i.requiredLatexArg;)t+="{"+this.serialize(n[r++])+"}";for(;r<Math.min(n.length,i.optionalLatexArg+i.requiredLatexArg);){const i=this.serialize(n[1+r++]);i&&(e+="["+i+"]")}return i.serialize+(e+t)}if("function"==typeof i.serialize)return i.serialize(this,e);return"none"===this.options.applyFunctionStyle(e,this.level)?i.serialize+o(n.map((e=>this.serialize(e)))):i.serialize+this.serialize(["Delimiter",...n])}serializeDictionary(e){return`\\left[\\begin{array}{lll}${Object.keys(e).map((i=>`\\textbf{${i}} & \\rightarrow & ${this.serialize(e[i])}`)).join("\\\\")}\\end{array}\\right]`}serialize(e){if(null===e)return"";this.level+=1;const i=(()=>{const i=he(e,this.options);if(i)return i;const t=v(e);if(null!==t)return`\\text{${t}}`;const n=_(e);if(null!==n){const i=this.dictionary.name.get(n);if("symbol"===i?.kind)return this.serializeSymbol(e,i)}const r=function(e){return"object"==typeof e&&"dict"in e?e.dict:null}(e);if(null!==r)return this.serializeDictionary(r);const s=y(e);if(s){if("\\"===s[0]){const i=E(e);return 0===i.length?s:s+"{"+i.map((e=>this.serialize(e))).filter((e=>!!e)).join("}{")+"}"}const i=this.dictionary.name.get(s);if(i){let t="";return"function"==typeof i.serialize&&(t=i.serialize(this,e)),t||"infix"!==i.kind&&"postfix"!==i.kind&&"prefix"!==i.kind||(t=function(e,i,t){let n="";const r=x(i),s=y(i);if("postfix"===t.kind)return 1!==r&&e.onError([{severity:"warning",message:["postfix-operator-requires-one-operand",e.serializeSymbol(s)]}]),fe(t.serialize,[e.wrap(N(i,1),t.precedence)]);if("prefix"===t.kind)return 1!==r&&e.onError([{severity:"warning",message:["prefix-operator-requires-one-operand",e.serializeSymbol(s)]}]),fe(t.serialize,[e.wrap(N(i,1),t.precedence+1)]);if("infix"===t.kind){n=e.wrap(N(i,1),t.precedence);for(let s=2;s<r+1;s++){const r=N(i,s);null!==r&&(n=fe(t.serialize,[n,e.wrap(r,t.precedence)]))}}return n}(this,e,i)),t||"matchfix"!==i.kind||(t=function(e,i,t){return fe(t.serialize,[e.serialize(N(i,1)??"Nothing")])}(this,e,i)),t||"symbol"!==i.kind||(t=this.serializeSymbol(e,i)),t}}if(Array.isArray(e)||d(e)||null!==_(e))return this.serializeSymbol(e);this.onError([{severity:"warning",message:["syntax-error",JSON.stringify(e)]}])})();return this.level-=1,i??""}applyFunctionStyle(e,i){return this.options.applyFunctionStyle(e,i)}groupStyle(e,i){return this.options.groupStyle(e,i)}rootStyle(e,i){return this.options.rootStyle(e,i)}fractionStyle(e,i){return this.options.fractionStyle(e,i)}logicStyle(e,i){return this.options.logicStyle(e,i)}powerStyle(e,i){return this.options.powerStyle(e,i)}numericSetStyle(e,i){return this.options.numericSetStyle(e,i)}}function fe(e,i){let t=e;for(let e=0;e<i.length;e++){let n=i[e]??"";if(/[a-zA-Z*]/.test(n[0])){const i=t.match(RegExp("(.*)#"+Number(e+1).toString()));i&&/\\[a-zA-Z*]+/.test(i[1])&&(n=" "+n)}t=t.replace("#"+Number(e+1).toString(),n)}return t}const ge=["alpha","beta","gamma","Gamma","delta","Delta","epsilon","zeta","eta","theta","Theta","iota","kappa","lambda","Lambda","mu","nu","xi","Xi","pi","Pi","rho","sigma","Sigma","tau","upsilon","phi","Phi","varphi","chi","psi","Psi","omega","Omega","aleph","ast","blacksquare","bot","bullet","circ","diamond","times","top","square","star"];function pe(e,i="italic."){if(null===e)return null;const t=e.match(/^(_+)(.*)/);if(t)return`\\text{${"\\_".repeat(t[1].length)+de(t[2])}}`;let n;[n,e]=function(e){const i=e.match(/^([a-zA-Z-]+\.)(.*)/);return i?[i[1],i[2]]:["",e]}(e);const r=de(e);if(1===r.length&&!n)return r;n||(n=i);return({"upright.":"\\mathrm{_}","italic.":"\\mathit{_}","bold-italic.":"\\mathbf{\\mathit{_}}","script.":"\\mathscr{_}","calligraphic.":"\\mathcal{_}","bold-script.":"\\mathbf{\\mathscr{_}}","bold-calligraphic.":"\\mathbf{\\mathcal{_}}","fraktur.":"\\mathfrak{_}","gothic.":"\\mathfrak{_}","bold-gothic.":"\\mathbf{\\mathfrak{_}}","bold-fraktur.":"\\mathbf{\\mathfrak{_}}","sans-serif.":"\\mathsf{_}","bold-sans-serif.":"\\mathbf{\\mathsf{_}}","italic-sans-serif.":"\\mathit{\\mathsf{_}}","monospace.":"\\mathtt{_}","blackboard.":"\\mathbb{_}","double-struck.":"\\mathbb{_}"}[n]??"\\mathit{_}").replace("_",r)}function de(e){const i=e.indexOf("_");if(i>0){const t=e.substring(0,i),n=e.substring(i+1);return n?n.startsWith('"')&&n.endsWith('"')?`${de(t)}_\\mathrm{${de(n.substring(1,-1))}}`:`${de(t)}_{${de(n)}}`:pe(t)+"\\_"}const t=e.match(/([^0-9]+?)([0-9]+)$/);return t?0===t[1].length?e:`${de(t[1])}_{${t[2]}}`:ge.includes(e)?"\\"+e:e=e.replace(/[{}\[\]\\:\-\$%]/g,(e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash ","-":'\\unicode{"2013}'}[e]??"\\"+e)))}const ve={invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\placeholder{}",applyFunctionStyle:function(e,i){return"paren"},groupStyle:function(e,i){return"paren"},rootStyle:A,fractionStyle:D,logicStyle:function(e,i){return"boolean"},powerStyle:function(e,i){return"solidus"},numericSetStyle:function(e,i){return"compact"}};class be{constructor(e){this.onError=e.onError??(e=>{if("undefined"!=typeof window)for(const i of e);}),this.computeEngine=e.computeEngine;const i={...e};delete i.dictionary,delete i.onError,this.options={...ae,...ve,...oe,...i},this.dictionary=function(e,i){const t={lookahead:1,name:new Map,symbol:[],infix:[],prefix:[],postfix:[],environment:new Map,matchfix:[]};for(const n of e){const[e,r]=X(n,i);if(null!==r)if(void 0!==r.name&&(t.name.has(r.name)&&i({severity:"warning",message:["invalid-dictionary-entry",r.name,"Duplicate definition"]}),t.name.set(r.name,r)),"matchfix"===r.kind)t.matchfix.push(r);else if("environment"===r.kind){const e=l(n.trigger??"");t.environment.has(e)&&i({severity:"warning",message:["invalid-dictionary-entry",e,"Duplicate environment definition"]}),t.environment.set(e,r)}else if(e){const i=l(n.trigger??""),s=J(e);if(t.lookahead=Math.max(t.lookahead,s),"symbol"===r.kind){void 0===t.symbol[s]&&(t.symbol[s]=new Map);const e=t.symbol[s];e.has(i)?e.get(i).push(r):e.set(i,[r])}else if("prefix"===r.kind){void 0===t.prefix[s]&&(t.prefix[s]=new Map);const e=t.prefix[s];e.has(i)?e.get(i).push(r):e.set(i,[r])}else if("infix"===r.kind){void 0===t.infix[s]&&(t.infix[s]=new Map);const e=t.infix[s];e.has(i)?e.get(i).push(r):e.set(i,[r])}else if("postfix"===r.kind){void 0===t.postfix[s]&&(t.postfix[s]=new Map);const e=t.postfix[s];e.has(i)?e.get(i).push(r):e.set(i,[r])}}}return t}(e.dictionary??be.getDictionary(),(e=>this.onError([e])))}updateOptions(e){for(const i of Object.keys(this.options))i in e&&(this.options[i]=e[i]);this.serializer.updateOptions(e)}static getDictionary(e="all"){if("all"===e){let e=[];for(const i of Object.keys(ee))ee[i]&&(e=[...e,...ee[i]]);return e}return ee[e]?[...ee[e]]:[]}parse(e){const i=new le(a(e,[]),this.options,this.dictionary,this.computeEngine,this.onError);let t=i.matchExpression();if(!i.atEnd){const e=[];for(;!i.atEnd;)e.push(i.next());t=["Error",t??"Nothing",{str:"syntax-error"},["LatexForm",{str:l(e)}]]}return t??"Nothing"}serialize(e){return this.serializer.serialize(e)}get serializer(){return this._serializer||(this._serializer=new me(this.options,this.dictionary,this.computeEngine,this.onError)),this._serializer}}const ye=Math.log10(Math.pow(2,53)),Ne=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]);function xe(e,i){const t=function(e){if(e<=3)return{[e]:1};const i={};let t=!1;for(;!t;){if(e%2==0){i[2]?i[2]+=1:i[2]=1,e/=2;continue}if(e%3==0){i[3]?i[3]+=1:i[3]=1,e/=3;continue}if(1===e)return i;const n=Math.sqrt(e);t=!0;for(let r=6;r<=n+6;r+=6){if(e%(r-1)==0){i[r-1]?i[r-1]+=1:i[r-1]=1,e/=r-1,t=!1;break}if(e%(r+1)==0){i[r+1]?i[r+1]+=1:i[r+1]=1,e/=r+1,t=!1;break}}}return i[e]=1,i}(e);let n=1,r=1;for(const e of Object.keys(t)){const s=parseFloat(e);n*=Math.pow(s,Math.floor(t[e]/i)),r*=Math.pow(s,t[e]%i)}return[n,r]}function _e(e,i){if(0===e)return i;if(0===i)return e;if(e===i)return e;if(!Number.isInteger(e)||!Number.isInteger(i))return NaN;for(;0!==i;)[e,i]=[i,e%i];return e<0?-e:e}function we([e,i]){if(1===e||1===i)return[e,i];i<0&&([e,i]=[-e,-i]);const t=_e(e,i);return t<=1?[e,i]:[e/t,i/t]}const Se=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],Ee=[.999999999999997,57.15623566586292,-59.59796035547549,14.13609797474174,-.4919138160976202,3399464998481188e-20,4652362892704857e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.0002174396181152126,-.0001643181065367639,8441822398385274e-20,-261908384015814e-19,3689918265953162e-21];function Ie(e){if(e<0)return NaN;let i=Ee[0];for(let t=14;t>0;--t)i+=Ee[t]/(e+t);const t=e+4.7421875+.5;return.9189385332046727+(e+.5)*Math.log(t)-t+Math.log(i)-Math.log(e)}function ke(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*ke(1-e));if(e>100)return Math.exp(Ie(e));e-=1;let i=Se[0];for(let t=1;t<9;t++)i+=Se[t]/(e+t);const t=e+7+.5;return 2.5066282746310002*Math.pow(t,e+.5)*Math.exp(-t)*i}function Me(e,i=10){let t=0;for(let n=0;n<e.length;n++){const r={" ":-1,"\xa0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200a":-1,"\u200b":-1,"\u202f":-1,"\u205f":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[e[n]];if(-1!==r){if(void 0===r)return[t,e.substring(n)];if(r>=i)return[t,e.substring(n)];t=t*i+r}}return[t,""]}var Ae,De="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},qe={exports:{}};Ae=qe,function(e){var i,t,n,r,s=9e15,a=1e9,o="0123456789abcdef",l="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",u="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",c={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-s,maxE:s,crypto:!1},h=!0,m="[DecimalError] ",f=m+"Invalid argument: ",g=m+"Precision limit exceeded",p=m+"crypto unavailable",d="[object Decimal]",v=Math.floor,b=Math.pow,y=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,N=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,x=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,_=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,w=1e7,S=l.length-1,E=u.length-1,I={toStringTag:d};function k(e){var i,t,n,r=e.length-1,s="",a=e[0];if(r>0){for(s+=a,i=1;i<r;i++)(t=7-(n=e[i]+"").length)&&(s+=T(t)),s+=n;(t=7-(n=(a=e[i])+"").length)&&(s+=T(t))}else if(0===a)return"0";for(;a%10==0;)a/=10;return s+a}function M(e,i,t){if(e!==~~e||e<i||e>t)throw Error(f+e)}function A(e,i,t,n){var r,s,a,o;for(s=e[0];s>=10;s/=10)--i;return--i<0?(i+=7,r=0):(r=Math.ceil((i+1)/7),i%=7),s=b(10,7-i),o=e[r]%s|0,null==n?i<3?(0==i?o=o/100|0:1==i&&(o=o/10|0),a=t<4&&99999==o||t>3&&49999==o||5e4==o||0==o):a=(t<4&&o+1==s||t>3&&o+1==s/2)&&(e[r+1]/s/100|0)==b(10,i-2)-1||(o==s/2||0==o)&&0==(e[r+1]/s/100|0):i<4?(0==i?o=o/1e3|0:1==i?o=o/100|0:2==i&&(o=o/10|0),a=(n||t<4)&&9999==o||!n&&t>3&&4999==o):a=((n||t<4)&&o+1==s||!n&&t>3&&o+1==s/2)&&(e[r+1]/s/1e3|0)==b(10,i-3)-1,a}function D(e,i,t){for(var n,r,s=[0],a=0,l=e.length;a<l;){for(r=s.length;r--;)s[r]*=i;for(s[0]+=o.indexOf(e.charAt(a++)),n=0;n<s.length;n++)s[n]>t-1&&(void 0===s[n+1]&&(s[n+1]=0),s[n+1]+=s[n]/t|0,s[n]%=t)}return s.reverse()}I.absoluteValue=I.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),C(e)},I.ceil=function(){return C(new this.constructor(this),this.e+1,2)},I.clampedTo=I.clamp=function(e,i){var t=this,n=t.constructor;if(e=new n(e),i=new n(i),!e.s||!i.s)return new n(NaN);if(e.gt(i))throw Error(f+i);return t.cmp(e)<0?e:t.cmp(i)>0?i:new n(t)},I.comparedTo=I.cmp=function(e){var i,t,n,r,s=this,a=s.d,o=(e=new s.constructor(e)).d,l=s.s,u=e.s;if(!a||!o)return l&&u?l!==u?l:a===o?0:!a^l<0?1:-1:NaN;if(!a[0]||!o[0])return a[0]?l:o[0]?-u:0;if(l!==u)return l;if(s.e!==e.e)return s.e>e.e^l<0?1:-1;for(i=0,t=(n=a.length)<(r=o.length)?n:r;i<t;++i)if(a[i]!==o[i])return a[i]>o[i]^l<0?1:-1;return n===r?0:n>r^l<0?1:-1},I.cosine=I.cos=function(){var e,i,t=this,n=t.constructor;return t.d?t.d[0]?(e=n.precision,i=n.rounding,n.precision=e+Math.max(t.e,t.sd())+7,n.rounding=1,t=function(e,i){var t,n,r;if(i.isZero())return i;(n=i.d.length)<32?r=""+1/U(4,t=Math.ceil(n/3)):(t=16,r="2.3283064365386962890625e-10"),e.precision+=t,i=W(e,1,i.times(r),new e(1));for(var s=t;s--;){var a=i.times(i);i=a.times(a).minus(a).times(8).plus(1)}return e.precision-=t,i}(n,Q(n,t)),n.precision=e,n.rounding=i,C(2==r||3==r?t.neg():t,e,i,!0)):new n(1):new n(NaN)},I.cubeRoot=I.cbrt=function(){var e,i,t,n,r,s,a,o,l,u,c=this,m=c.constructor;if(!c.isFinite()||c.isZero())return new m(c);for(h=!1,(s=c.s*b(c.s*c,1/3))&&Math.abs(s)!=1/0?n=new m(s.toString()):(t=k(c.d),(s=((e=c.e)-t.length+1)%3)&&(t+=1==s||-2==s?"0":"00"),s=b(t,1/3),e=v((e+1)/3)-(e%3==(e<0?-1:2)),(n=new m(t=s==1/0?"5e"+e:(t=s.toExponential()).slice(0,t.indexOf("e")+1)+e)).s=c.s),a=(e=m.precision)+3;;)if(u=(l=(o=n).times(o).times(o)).plus(c),n=q(u.plus(c).times(o),u.plus(l),a+2,1),k(o.d).slice(0,a)===(t=k(n.d)).slice(0,a)){if("9999"!=(t=t.slice(a-3,a+1))&&(r||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(C(n,e+1,1),i=!n.times(n).times(n).eq(c));break}if(!r&&(C(o,e+1,0),o.times(o).times(o).eq(c))){n=o;break}a+=4,r=1}return h=!0,C(n,e,m.rounding,i)},I.decimalPlaces=I.dp=function(){var e,i=this.d,t=NaN;if(i){if(t=7*((e=i.length-1)-v(this.e/7)),e=i[e])for(;e%10==0;e/=10)t--;t<0&&(t=0)}return t},I.dividedBy=I.div=function(e){return q(this,new this.constructor(e))},I.dividedToIntegerBy=I.divToInt=function(e){var i=this.constructor;return C(q(this,new i(e),0,1,1),i.precision,i.rounding)},I.equals=I.eq=function(e){return 0===this.cmp(e)},I.floor=function(){return C(new this.constructor(this),this.e+1,3)},I.greaterThan=I.gt=function(e){return this.cmp(e)>0},I.greaterThanOrEqualTo=I.gte=function(e){var i=this.cmp(e);return 1==i||0===i},I.hyperbolicCosine=I.cosh=function(){var e,i,t,n,r,s=this,a=s.constructor,o=new a(1);if(!s.isFinite())return new a(s.s?1/0:NaN);if(s.isZero())return o;t=a.precision,n=a.rounding,a.precision=t+Math.max(s.e,s.sd())+4,a.rounding=1,(r=s.d.length)<32?i=""+1/U(4,e=Math.ceil(r/3)):(e=16,i="2.3283064365386962890625e-10"),s=W(a,1,s.times(i),new a(1),!0);for(var l,u=e,c=new a(8);u--;)l=s.times(s),s=o.minus(l.times(c.minus(l.times(c))));return C(s,a.precision=t,a.rounding=n,!0)},I.hyperbolicSine=I.sinh=function(){var e,i,t,n,r=this,s=r.constructor;if(!r.isFinite()||r.isZero())return new s(r);if(i=s.precision,t=s.rounding,s.precision=i+Math.max(r.e,r.sd())+4,s.rounding=1,(n=r.d.length)<3)r=W(s,2,r,r,!0);else{e=(e=1.4*Math.sqrt(n))>16?16:0|e,r=W(s,2,r=r.times(1/U(5,e)),r,!0);for(var a,o=new s(5),l=new s(16),u=new s(20);e--;)a=r.times(r),r=r.times(o.plus(a.times(l.times(a).plus(u))))}return s.precision=i,s.rounding=t,C(r,i,t,!0)},I.hyperbolicTangent=I.tanh=function(){var e,i,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(e=n.precision,i=n.rounding,n.precision=e+7,n.rounding=1,q(t.sinh(),t.cosh(),n.precision=e,n.rounding=i)):new n(t.s)},I.inverseCosine=I.acos=function(){var e,i=this,t=i.constructor,n=i.abs().cmp(1),r=t.precision,s=t.rounding;return-1!==n?0===n?i.isNeg()?F(t,r,s):new t(0):new t(NaN):i.isZero()?F(t,r+4,s).times(.5):(t.precision=r+6,t.rounding=1,i=i.asin(),e=F(t,r+4,s).times(.5),t.precision=r,t.rounding=s,e.minus(i))},I.inverseHyperbolicCosine=I.acosh=function(){var e,i,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(e=n.precision,i=n.rounding,n.precision=e+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,h=!1,t=t.times(t).minus(1).sqrt().plus(t),h=!0,n.precision=e,n.rounding=i,t.ln()):new n(t)},I.inverseHyperbolicSine=I.asinh=function(){var e,i,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(e=n.precision,i=n.rounding,n.precision=e+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,h=!1,t=t.times(t).plus(1).sqrt().plus(t),h=!0,n.precision=e,n.rounding=i,t.ln())},I.inverseHyperbolicTangent=I.atanh=function(){var e,i,t,n,r=this,s=r.constructor;return r.isFinite()?r.e>=0?new s(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=s.precision,i=s.rounding,n=r.sd(),Math.max(n,e)<2*-r.e-1?C(new s(r),e,i,!0):(s.precision=t=n-r.e,r=q(r.plus(1),new s(1).minus(r),t+e,1),s.precision=e+4,s.rounding=1,r=r.ln(),s.precision=e,s.rounding=i,r.times(.5))):new s(NaN)},I.inverseSine=I.asin=function(){var e,i,t,n,r=this,s=r.constructor;return r.isZero()?new s(r):(i=r.abs().cmp(1),t=s.precision,n=s.rounding,-1!==i?0===i?((e=F(s,t+4,n).times(.5)).s=r.s,e):new s(NaN):(s.precision=t+6,s.rounding=1,r=r.div(new s(1).minus(r.times(r)).sqrt().plus(1)).atan(),s.precision=t,s.rounding=n,r.times(2)))},I.inverseTangent=I.atan=function(){var e,i,t,n,r,s,a,o,l,u=this,c=u.constructor,m=c.precision,f=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&m+4<=E)return(a=F(c,m+4,f).times(.25)).s=u.s,a}else{if(!u.s)return new c(NaN);if(m+4<=E)return(a=F(c,m+4,f).times(.5)).s=u.s,a}for(c.precision=o=m+10,c.rounding=1,e=t=Math.min(28,o/7+2|0);e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(h=!1,i=Math.ceil(o/7),n=1,l=u.times(u),a=new c(u),r=u;-1!==e;)if(r=r.times(l),s=a.minus(r.div(n+=2)),r=r.times(l),void 0!==(a=s.plus(r.div(n+=2))).d[i])for(e=i;a.d[e]===s.d[e]&&e--;);return t&&(a=a.times(2<<t-1)),h=!0,C(a,c.precision=m,c.rounding=f,!0)},I.isFinite=function(){return!!this.d},I.isInteger=I.isInt=function(){return!!this.d&&v(this.e/7)>this.d.length-2},I.isNaN=function(){return!this.s},I.isNegative=I.isNeg=function(){return this.s<0},I.isPositive=I.isPos=function(){return this.s>0},I.isZero=function(){return!!this.d&&0===this.d[0]},I.lessThan=I.lt=function(e){return this.cmp(e)<0},I.lessThanOrEqualTo=I.lte=function(e){return this.cmp(e)<1},I.logarithm=I.log=function(e){var i,t,n,r,s,a,o,l,u=this,c=u.constructor,m=c.precision,f=c.rounding;if(null==e)e=new c(10),i=!0;else{if(t=(e=new c(e)).d,e.s<0||!t||!t[0]||e.eq(1))return new c(NaN);i=e.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new c(t&&!t[0]?-1/0:1!=u.s?NaN:t?0:1/0);if(i)if(t.length>1)s=!0;else{for(r=t[0];r%10==0;)r/=10;s=1!==r}if(h=!1,a=j(u,o=m+5),n=i?P(c,o+10):j(e,o),A((l=q(a,n,o,1)).d,r=m,f))do{if(a=j(u,o+=10),n=i?P(c,o+10):j(e,o),l=q(a,n,o,1),!s){+k(l.d).slice(r+1,r+15)+1==1e14&&(l=C(l,m+1,0));break}}while(A(l.d,r+=10,f));return h=!0,C(l,m,f)},I.minus=I.sub=function(e){var i,t,n,r,s,a,o,l,u,c,m,f,g=this,p=g.constructor;if(e=new p(e),!g.d||!e.d)return g.s&&e.s?g.d?e.s=-e.s:e=new p(e.d||g.s!==e.s?g:NaN):e=new p(NaN),e;if(g.s!=e.s)return e.s=-e.s,g.plus(e);if(u=g.d,f=e.d,o=p.precision,l=p.rounding,!u[0]||!f[0]){if(f[0])e.s=-e.s;else{if(!u[0])return new p(3===l?-0:0);e=new p(g)}return h?C(e,o,l):e}if(t=v(e.e/7),c=v(g.e/7),u=u.slice(),s=c-t){for((m=s<0)?(i=u,s=-s,a=f.length):(i=f,t=c,a=u.length),s>(n=Math.max(Math.ceil(o/7),a)+2)&&(s=n,i.length=1),i.reverse(),n=s;n--;)i.push(0);i.reverse()}else{for((m=(n=u.length)<(a=f.length))&&(a=n),n=0;n<a;n++)if(u[n]!=f[n]){m=u[n]<f[n];break}s=0}for(m&&(i=u,u=f,f=i,e.s=-e.s),a=u.length,n=f.length-a;n>0;--n)u[a++]=0;for(n=f.length;n>s;){if(u[--n]<f[n]){for(r=n;r&&0===u[--r];)u[r]=w-1;--u[r],u[n]+=w}u[n]-=f[n]}for(;0===u[--a];)u.pop();for(;0===u[0];u.shift())--t;return u[0]?(e.d=u,e.e=V(u,t),h?C(e,o,l):e):new p(3===l?-0:0)},I.modulo=I.mod=function(e){var i,t=this,n=t.constructor;return e=new n(e),!t.d||!e.s||e.d&&!e.d[0]?new n(NaN):!e.d||t.d&&!t.d[0]?C(new n(t),n.precision,n.rounding):(h=!1,9==n.modulo?(i=q(t,e.abs(),0,3,1)).s*=e.s:i=q(t,e,0,n.modulo,1),i=i.times(e),h=!0,t.minus(i))},I.naturalExponential=I.exp=function(){return Z(this)},I.naturalLogarithm=I.ln=function(){return j(this)},I.negated=I.neg=function(){var e=new this.constructor(this);return e.s=-e.s,C(e)},I.plus=I.add=function(e){var i,t,n,r,s,a,o,l,u,c,m=this,f=m.constructor;if(e=new f(e),!m.d||!e.d)return m.s&&e.s?m.d||(e=new f(e.d||m.s===e.s?m:NaN)):e=new f(NaN),e;if(m.s!=e.s)return e.s=-e.s,m.minus(e);if(u=m.d,c=e.d,o=f.precision,l=f.rounding,!u[0]||!c[0])return c[0]||(e=new f(m)),h?C(e,o,l):e;if(s=v(m.e/7),n=v(e.e/7),u=u.slice(),r=s-n){for(r<0?(t=u,r=-r,a=c.length):(t=c,n=s,a=u.length),r>(a=(s=Math.ceil(o/7))>a?s+1:a+1)&&(r=a,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for((a=u.length)-(r=c.length)<0&&(r=a,t=c,c=u,u=t),i=0;r;)i=(u[--r]=u[r]+c[r]+i)/w|0,u[r]%=w;for(i&&(u.unshift(i),++n),a=u.length;0==u[--a];)u.pop();return e.d=u,e.e=V(u,n),h?C(e,o,l):e},I.precision=I.sd=function(e){var i,t=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(f+e);return t.d?(i=L(t.d),e&&t.e+1>i&&(i=t.e+1)):i=NaN,i},I.round=function(){var e=this,i=e.constructor;return C(new i(e),e.e+1,i.rounding)},I.sine=I.sin=function(){var e,i,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(e=n.precision,i=n.rounding,n.precision=e+Math.max(t.e,t.sd())+7,n.rounding=1,t=function(e,i){var t,n=i.d.length;if(n<3)return i.isZero()?i:W(e,2,i,i);t=(t=1.4*Math.sqrt(n))>16?16:0|t,i=i.times(1/U(5,t)),i=W(e,2,i,i);for(var r,s=new e(5),a=new e(16),o=new e(20);t--;)r=i.times(i),i=i.times(s.plus(r.times(a.times(r).minus(o))));return i}(n,Q(n,t)),n.precision=e,n.rounding=i,C(r>2?t.neg():t,e,i,!0)):new n(NaN)},I.squareRoot=I.sqrt=function(){var e,i,t,n,r,s,a=this,o=a.d,l=a.e,u=a.s,c=a.constructor;if(1!==u||!o||!o[0])return new c(!u||u<0&&(!o||o[0])?NaN:o?a:1/0);for(h=!1,0==(u=Math.sqrt(+a))||u==1/0?(((i=k(o)).length+l)%2==0&&(i+="0"),u=Math.sqrt(i),l=v((l+1)/2)-(l<0||l%2),n=new c(i=u==1/0?"5e"+l:(i=u.toExponential()).slice(0,i.indexOf("e")+1)+l)):n=new c(u.toString()),t=(l=c.precision)+3;;)if(n=(s=n).plus(q(a,s,t+2,1)).times(.5),k(s.d).slice(0,t)===(i=k(n.d)).slice(0,t)){if("9999"!=(i=i.slice(t-3,t+1))&&(r||"4999"!=i)){+i&&(+i.slice(1)||"5"!=i.charAt(0))||(C(n,l+1,1),e=!n.times(n).eq(a));break}if(!r&&(C(s,l+1,0),s.times(s).eq(a))){n=s;break}t+=4,r=1}return h=!0,C(n,l,c.rounding,e)},I.tangent=I.tan=function(){var e,i,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(e=n.precision,i=n.rounding,n.precision=e+10,n.rounding=1,(t=t.sin()).s=1,t=q(t,new n(1).minus(t.times(t)).sqrt(),e+10,0),n.precision=e,n.rounding=i,C(2==r||4==r?t.neg():t,e,i,!0)):new n(NaN)},I.times=I.mul=function(e){var i,t,n,r,s,a,o,l,u,c=this,m=c.constructor,f=c.d,g=(e=new m(e)).d;if(e.s*=c.s,!(f&&f[0]&&g&&g[0]))return new m(!e.s||f&&!f[0]&&!g||g&&!g[0]&&!f?NaN:f&&g?0*e.s:e.s/0);for(t=v(c.e/7)+v(e.e/7),(l=f.length)<(u=g.length)&&(s=f,f=g,g=s,a=l,l=u,u=a),s=[],n=a=l+u;n--;)s.push(0);for(n=u;--n>=0;){for(i=0,r=l+n;r>n;)o=s[r]+g[n]*f[r-n-1]+i,s[r--]=o%w|0,i=o/w|0;s[r]=(s[r]+i)%w|0}for(;!s[--a];)s.pop();return i?++t:s.shift(),e.d=s,e.e=V(s,t),h?C(e,m.precision,m.rounding):e},I.toBinary=function(e,i){return Y(this,2,e,i)},I.toDecimalPlaces=I.toDP=function(e,i){var t=this,n=t.constructor;return t=new n(t),void 0===e?t:(M(e,0,a),void 0===i?i=n.rounding:M(i,0,8),C(t,e+t.e+1,i))},I.toExponential=function(e,i){var t,n=this,r=n.constructor;return void 0===e?t=O(n,!0):(M(e,0,a),void 0===i?i=r.rounding:M(i,0,8),t=O(n=C(new r(n),e+1,i),!0,e+1)),n.isNeg()&&!n.isZero()?"-"+t:t},I.toFixed=function(e,i){var t,n,r=this,s=r.constructor;return void 0===e?t=O(r):(M(e,0,a),void 0===i?i=s.rounding:M(i,0,8),t=O(n=C(new s(r),e+r.e+1,i),!1,e+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t},I.toFraction=function(e){var i,t,n,r,s,a,o,l,u,c,m,g,p=this,d=p.d,v=p.constructor;if(!d)return new v(p);if(u=t=new v(1),n=l=new v(0),a=(s=(i=new v(n)).e=L(d)-p.e-1)%7,i.d[0]=b(10,a<0?7+a:a),null==e)e=s>0?i:u;else{if(!(o=new v(e)).isInt()||o.lt(u))throw Error(f+o);e=o.gt(i)?s>0?i:u:o}for(h=!1,o=new v(k(d)),c=v.precision,v.precision=s=7*d.length*2;m=q(o,i,0,1,1),1!=(r=t.plus(m.times(n))).cmp(e);)t=n,n=r,r=u,u=l.plus(m.times(r)),l=r,r=i,i=o.minus(m.times(r)),o=r;return r=q(e.minus(t),n,0,1,1),l=l.plus(r.times(u)),t=t.plus(r.times(n)),l.s=u.s=p.s,g=q(u,n,s,1).minus(p).abs().cmp(q(l,t,s,1).minus(p).abs())<1?[u,n]:[l,t],v.precision=c,h=!0,g},I.toHexadecimal=I.toHex=function(e,i){return Y(this,16,e,i)},I.toNearest=function(e,i){var t=this,n=t.constructor;if(t=new n(t),null==e){if(!t.d)return t;e=new n(1),i=n.rounding}else{if(e=new n(e),void 0===i?i=n.rounding:M(i,0,8),!t.d)return e.s?t:e;if(!e.d)return e.s&&(e.s=t.s),e}return e.d[0]?(h=!1,t=q(t,e,0,i,1).times(e),h=!0,C(t)):(e.s=t.s,t=e),t},I.toNumber=function(){return+this},I.toOctal=function(e,i){return Y(this,8,e,i)},I.toPower=I.pow=function(e){var i,t,n,r,s,a,o=this,l=o.constructor,u=+(e=new l(e));if(!(o.d&&e.d&&o.d[0]&&e.d[0]))return new l(b(+o,u));if((o=new l(o)).eq(1))return o;if(n=l.precision,s=l.rounding,e.eq(1))return C(o,n,s);if((i=v(e.e/7))>=e.d.length-1&&(t=u<0?-u:u)<=9007199254740991)return r=z(l,o,t,n),e.s<0?new l(1).div(r):C(r,n,s);if((a=o.s)<0){if(i<e.d.length-1)return new l(NaN);if(0==(1&e.d[i])&&(a=1),0==o.e&&1==o.d[0]&&1==o.d.length)return o.s=a,o}return(i=0!=(t=b(+o,u))&&isFinite(t)?new l(t+"").e:v(u*(Math.log("0."+k(o.d))/Math.LN10+o.e+1)))>l.maxE+1||i<l.minE-1?new l(i>0?a/0:0):(h=!1,l.rounding=o.s=1,t=Math.min(12,(i+"").length),(r=Z(e.times(j(o,n+t)),n)).d&&A((r=C(r,n+5,1)).d,n,s)&&(i=n+10,+k((r=C(Z(e.times(j(o,i+t)),i),i+5,1)).d).slice(n+1,n+15)+1==1e14&&(r=C(r,n+1,0))),r.s=a,h=!0,l.rounding=s,C(r,n,s))},I.toPrecision=function(e,i){var t,n=this,r=n.constructor;return void 0===e?t=O(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(M(e,1,a),void 0===i?i=r.rounding:M(i,0,8),t=O(n=C(new r(n),e,i),e<=n.e||n.e<=r.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+t:t},I.toSignificantDigits=I.toSD=function(e,i){var t=this.constructor;return void 0===e?(e=t.precision,i=t.rounding):(M(e,1,a),void 0===i?i=t.rounding:M(i,0,8)),C(new t(this),e,i)},I.toString=function(){var e=this,i=e.constructor,t=O(e,e.e<=i.toExpNeg||e.e>=i.toExpPos);return e.isNeg()&&!e.isZero()?"-"+t:t},I.truncated=I.trunc=function(){return C(new this.constructor(this),this.e+1,1)},I.valueOf=I.toJSON=function(){var e=this,i=e.constructor,t=O(e,e.e<=i.toExpNeg||e.e>=i.toExpPos);return e.isNeg()?"-"+t:t};var q=function(){function e(e,i,t){var n,r=0,s=e.length;for(e=e.slice();s--;)n=e[s]*i+r,e[s]=n%t|0,r=n/t|0;return r&&e.unshift(r),e}function i(e,i,t,n){var r,s;if(t!=n)s=t>n?1:-1;else for(r=s=0;r<t;r++)if(e[r]!=i[r]){s=e[r]>i[r]?1:-1;break}return s}function n(e,i,t,n){for(var r=0;t--;)e[t]-=r,r=e[t]<i[t]?1:0,e[t]=r*n+e[t]-i[t];for(;!e[0]&&e.length>1;)e.shift()}return function(r,s,a,o,l,u){var c,h,m,f,g,p,d,b,y,N,x,_,S,E,I,k,M,A,D,q,O=r.constructor,V=r.s==s.s?1:-1,P=r.d,F=s.d;if(!(P&&P[0]&&F&&F[0]))return new O(r.s&&s.s&&(P?!F||P[0]!=F[0]:F)?P&&0==P[0]||!F?0*V:V/0:NaN);for(u?(g=1,h=r.e-s.e):(u=w,g=7,h=v(r.e/g)-v(s.e/g)),D=F.length,M=P.length,N=(y=new O(V)).d=[],m=0;F[m]==(P[m]||0);m++);if(F[m]>(P[m]||0)&&h--,null==a?(E=a=O.precision,o=O.rounding):E=l?a+(r.e-s.e)+1:a,E<0)N.push(1),p=!0;else{if(E=E/g+2|0,m=0,1==D){for(f=0,F=F[0],E++;(m<M||f)&&E--;m++)I=f*u+(P[m]||0),N[m]=I/F|0,f=I%F|0;p=f||m<M}else{for((f=u/(F[0]+1)|0)>1&&(F=e(F,f,u),P=e(P,f,u),D=F.length,M=P.length),k=D,_=(x=P.slice(0,D)).length;_<D;)x[_++]=0;(q=F.slice()).unshift(0),A=F[0],F[1]>=u/2&&++A;do{f=0,(c=i(F,x,D,_))<0?(S=x[0],D!=_&&(S=S*u+(x[1]||0)),(f=S/A|0)>1?(f>=u&&(f=u-1),1==(c=i(d=e(F,f,u),x,b=d.length,_=x.length))&&(f--,n(d,D<b?q:F,b,u))):(0==f&&(c=f=1),d=F.slice()),(b=d.length)<_&&d.unshift(0),n(x,d,_,u),-1==c&&(c=i(F,x,D,_=x.length))<1&&(f++,n(x,D<_?q:F,_,u)),_=x.length):0===c&&(f++,x=[0]),N[m++]=f,c&&x[0]?x[_++]=P[k]||0:(x=[P[k]],_=1)}while((k++<M||void 0!==x[0])&&E--);p=void 0!==x[0]}N[0]||N.shift()}if(1==g)y.e=h,t=p;else{for(m=1,f=N[0];f>=10;f/=10)m++;y.e=m+h*g-1,C(y,l?a+y.e+1:a,o,p)}return y}}();function C(e,i,t,n){var r,s,a,o,l,u,c,m,f,g=e.constructor;e:if(null!=i){if(!(m=e.d))return e;for(r=1,o=m[0];o>=10;o/=10)r++;if((s=i-r)<0)s+=7,a=i,l=(c=m[f=0])/b(10,r-a-1)%10|0;else if((f=Math.ceil((s+1)/7))>=(o=m.length)){if(!n)break e;for(;o++<=f;)m.push(0);c=l=0,r=1,a=(s%=7)-7+1}else{for(c=o=m[f],r=1;o>=10;o/=10)r++;l=(a=(s%=7)-7+r)<0?0:c/b(10,r-a-1)%10|0}if(n=n||i<0||void 0!==m[f+1]||(a<0?c:c%b(10,r-a-1)),u=t<4?(l||n)&&(0==t||t==(e.s<0?3:2)):l>5||5==l&&(4==t||n||6==t&&(s>0?a>0?c/b(10,r-a):0:m[f-1])%10&1||t==(e.s<0?8:7)),i<1||!m[0])return m.length=0,u?(i-=e.e+1,m[0]=b(10,(7-i%7)%7),e.e=-i||0):m[0]=e.e=0,e;if(0==s?(m.length=f,o=1,f--):(m.length=f+1,o=b(10,7-s),m[f]=a>0?(c/b(10,r-a)%b(10,a)|0)*o:0),u)for(;;){if(0==f){for(s=1,a=m[0];a>=10;a/=10)s++;for(a=m[0]+=o,o=1;a>=10;a/=10)o++;s!=o&&(e.e++,m[0]==w&&(m[0]=1));break}if(m[f]+=o,m[f]!=w)break;m[f--]=0,o=1}for(s=m.length;0===m[--s];)m.pop()}return h&&(e.e>g.maxE?(e.d=null,e.e=NaN):e.e<g.minE&&(e.e=0,e.d=[0])),e}function O(e,i,t){if(!e.isFinite())return B(e);var n,r=e.e,s=k(e.d),a=s.length;return i?(t&&(n=t-a)>0?s=s.charAt(0)+"."+s.slice(1)+T(n):a>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(e.e<0?"e":"e+")+e.e):r<0?(s="0."+T(-r-1)+s,t&&(n=t-a)>0&&(s+=T(n))):r>=a?(s+=T(r+1-a),t&&(n=t-r-1)>0&&(s=s+"."+T(n))):((n=r+1)<a&&(s=s.slice(0,n)+"."+s.slice(n)),t&&(n=t-a)>0&&(r+1===a&&(s+="."),s+=T(n))),s}function V(e,i){var t=e[0];for(i*=7;t>=10;t/=10)i++;return i}function P(e,i,t){if(i>S)throw h=!0,t&&(e.precision=t),Error(g);return C(new e(l),i,1,!0)}function F(e,i,t){if(i>E)throw Error(g);return C(new e(u),i,t,!0)}function L(e){var i=e.length-1,t=7*i+1;if(i=e[i]){for(;i%10==0;i/=10)t--;for(i=e[0];i>=10;i/=10)t++}return t}function T(e){for(var i="";e--;)i+="0";return i}function z(e,i,t,n){var r,s=new e(1),a=Math.ceil(n/7+4);for(h=!1;;){if(t%2&&K((s=s.times(i)).d,a)&&(r=!0),0===(t=v(t/2))){t=s.d.length-1,r&&0===s.d[t]&&++s.d[t];break}K((i=i.times(i)).d,a)}return h=!0,s}function R(e){return 1&e.d[e.d.length-1]}function $(e,i,t){for(var n,r=new e(i[0]),s=0;++s<i.length;){if(!(n=new e(i[s])).s){r=n;break}r[t](n)&&(r=n)}return r}function Z(e,i){var t,n,r,s,a,o,l,u=0,c=0,m=0,f=e.constructor,g=f.rounding,p=f.precision;if(!e.d||!e.d[0]||e.e>17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==i?(h=!1,l=p):l=i,o=new f(.03125);e.e>-2;)e=e.times(o),m+=5;for(l+=n=Math.log(b(2,m))/Math.LN10*2+5|0,t=s=a=new f(1),f.precision=l;;){if(s=C(s.times(e),l,1),t=t.times(++c),k((o=a.plus(q(s,t,l,1))).d).slice(0,l)===k(a.d).slice(0,l)){for(r=m;r--;)a=C(a.times(a),l,1);if(null!=i)return f.precision=p,a;if(!(u<3&&A(a.d,l-n,g,u)))return C(a,f.precision=p,g,h=!0);f.precision=l+=10,t=s=o=new f(1),c=0,u++}a=o}}function j(e,i){var t,n,r,s,a,o,l,u,c,m,f,g=1,p=e,d=p.d,v=p.constructor,b=v.rounding,y=v.precision;if(p.s<0||!d||!d[0]||!p.e&&1==d[0]&&1==d.length)return new v(d&&!d[0]?-1/0:1!=p.s?NaN:d?0:p);if(null==i?(h=!1,c=y):c=i,v.precision=c+=10,n=(t=k(d)).charAt(0),!(Math.abs(s=p.e)<15e14))return u=P(v,c+2,y).times(s+""),p=j(new v(n+"."+t.slice(1)),c-10).plus(u),v.precision=y,null==i?C(p,y,b,h=!0):p;for(;n<7&&1!=n||1==n&&t.charAt(1)>3;)n=(t=k((p=p.times(e)).d)).charAt(0),g++;for(s=p.e,n>1?(p=new v("0."+t),s++):p=new v(n+"."+t.slice(1)),m=p,l=a=p=q(p.minus(1),p.plus(1),c,1),f=C(p.times(p),c,1),r=3;;){if(a=C(a.times(f),c,1),k((u=l.plus(q(a,new v(r),c,1))).d).slice(0,c)===k(l.d).slice(0,c)){if(l=l.times(2),0!==s&&(l=l.plus(P(v,c+2,y).times(s+""))),l=q(l,new v(g),c,1),null!=i)return v.precision=y,l;if(!A(l.d,c-10,b,o))return C(l,v.precision=y,b,h=!0);v.precision=c+=10,u=a=p=q(m.minus(1),m.plus(1),c,1),f=C(p.times(p),c,1),r=o=1}l=u,r+=2}}function B(e){return e.s*e.s/0+""}function G(e,i){var t,n,r;for((t=i.indexOf("."))>-1&&(i=i.replace(".","")),(n=i.search(/e/i))>0?(t<0&&(t=n),t+=+i.slice(n+1),i=i.substring(0,n)):t<0&&(t=i.length),n=0;48===i.charCodeAt(n);n++);for(r=i.length;48===i.charCodeAt(r-1);--r);if(i=i.slice(n,r)){if(r-=n,e.e=t=t-n-1,e.d=[],n=(t+1)%7,t<0&&(n+=7),n<r){for(n&&e.d.push(+i.slice(0,n)),r-=7;n<r;)e.d.push(+i.slice(n,n+=7));n=7-(i=i.slice(n)).length}else n-=r;for(;n--;)i+="0";e.d.push(+i),h&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function H(e,t){var n,r,s,a,o,l,u,c,m;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),_.test(t))return G(e,t)}else if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(N.test(t))n=16,t=t.toLowerCase();else if(y.test(t))n=2;else{if(!x.test(t))throw Error(f+t);n=8}for((a=t.search(/p/i))>0?(u=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),o=(a=t.indexOf("."))>=0,r=e.constructor,o&&(a=(l=(t=t.replace(".","")).length)-a,s=z(r,new r(n),a,2*a)),a=m=(c=D(t,n,w)).length-1;0===c[a];--a)c.pop();return a<0?new r(0*e.s):(e.e=V(c,m),e.d=c,h=!1,o&&(e=q(e,s,4*l)),u&&(e=e.times(Math.abs(u)<54?b(2,u):i.pow(2,u))),h=!0,e)}function W(e,i,t,n,r){var s,a,o,l,u=e.precision,c=Math.ceil(u/7);for(h=!1,l=t.times(t),o=new e(n);;){if(a=q(o.times(l),new e(i++*i++),u,1),o=r?n.plus(a):n.minus(a),n=q(a.times(l),new e(i++*i++),u,1),void 0!==(a=o.plus(n)).d[c]){for(s=c;a.d[s]===o.d[s]&&s--;);if(-1==s)break}s=o,o=n,n=a,a=s}return h=!0,a.d.length=c+1,a}function U(e,i){for(var t=e;--i;)t*=e;return t}function Q(e,i){var t,n=i.s<0,s=F(e,e.precision,1),a=s.times(.5);if((i=i.abs()).lte(a))return r=n?4:1,i;if((t=i.divToInt(s)).isZero())r=n?3:2;else{if((i=i.minus(t.times(s))).lte(a))return r=R(t)?n?2:3:n?4:1,i;r=R(t)?n?1:4:n?3:2}return i.minus(s).abs()}function Y(e,i,n,r){var s,l,u,c,h,m,f,g,p,d=e.constructor,v=void 0!==n;if(v?(M(n,1,a),void 0===r?r=d.rounding:M(r,0,8)):(n=d.precision,r=d.rounding),e.isFinite()){for(v?(s=2,16==i?n=4*n-3:8==i&&(n=3*n-2)):s=i,(u=(f=O(e)).indexOf("."))>=0&&(f=f.replace(".",""),(p=new d(1)).e=f.length-u,p.d=D(O(p),10,s),p.e=p.d.length),l=h=(g=D(f,10,s)).length;0==g[--h];)g.pop();if(g[0]){if(u<0?l--:((e=new d(e)).d=g,e.e=l,g=(e=q(e,p,n,r,0,s)).d,l=e.e,m=t),u=g[n],c=s/2,m=m||void 0!==g[n+1],m=r<4?(void 0!==u||m)&&(0===r||r===(e.s<0?3:2)):u>c||u===c&&(4===r||m||6===r&&1&g[n-1]||r===(e.s<0?8:7)),g.length=n,m)for(;++g[--n]>s-1;)g[n]=0,n||(++l,g.unshift(1));for(h=g.length;!g[h-1];--h);for(u=0,f="";u<h;u++)f+=o.charAt(g[u]);if(v){if(h>1)if(16==i||8==i){for(u=16==i?4:3,--h;h%u;h++)f+="0";for(h=(g=D(f,s,i)).length;!g[h-1];--h);for(u=1,f="1.";u<h;u++)f+=o.charAt(g[u])}else f=f.charAt(0)+"."+f.slice(1);f=f+(l<0?"p":"p+")+l}else if(l<0){for(;++l;)f="0"+f;f="0."+f}else if(++l>h)for(l-=h;l--;)f+="0";else l<h&&(f=f.slice(0,l)+"."+f.slice(l))}else f=v?"0p+0":"0";f=(16==i?"0x":2==i?"0b":8==i?"0o":"")+f}else f=B(e);return e.s<0?"-"+f:f}function K(e,i){if(e.length>i)return e.length=i,!0}function J(e){return new this(e).abs()}function X(e){return new this(e).acos()}function ee(e){return new this(e).acosh()}function ie(e,i){return new this(e).plus(i)}function te(e){return new this(e).asin()}function ne(e){return new this(e).asinh()}function re(e){return new this(e).atan()}function se(e){return new this(e).atanh()}function ae(e,i){e=new this(e),i=new this(i);var t,n=this.precision,r=this.rounding,s=n+4;return e.s&&i.s?e.d||i.d?!i.d||e.isZero()?(t=i.s<0?F(this,n,r):new this(0)).s=e.s:!e.d||i.isZero()?(t=F(this,s,1).times(.5)).s=e.s:i.s<0?(this.precision=s,this.rounding=1,t=this.atan(q(e,i,s,1)),i=F(this,s,1),this.precision=n,this.rounding=r,t=e.s<0?t.minus(i):t.plus(i)):t=this.atan(q(e,i,s,1)):(t=F(this,s,1).times(i.s>0?.25:.75)).s=e.s:t=new this(NaN),t}function oe(e){return new this(e).cbrt()}function le(e){return C(e=new this(e),e.e+1,2)}function ue(e,i,t){return new this(e).clamp(i,t)}function ce(e){if(!e||"object"!=typeof e)throw Error(m+"Object expected");var i,t,n,r=!0===e.defaults,o=["precision",1,a,"rounding",0,8,"toExpNeg",-s,0,"toExpPos",0,s,"maxE",0,s,"minE",-s,0,"modulo",0,9];for(i=0;i<o.length;i+=3)if(t=o[i],r&&(this[t]=c[t]),void 0!==(n=e[t])){if(!(v(n)===n&&n>=o[i+1]&&n<=o[i+2]))throw Error(f+t+": "+n);this[t]=n}if(t="crypto",r&&(this[t]=c[t]),void 0!==(n=e[t])){if(!0!==n&&!1!==n&&0!==n&&1!==n)throw Error(f+t+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(p);this[t]=!0}else this[t]=!1}return this}function he(e){return new this(e).cos()}function me(e){return new this(e).cosh()}function fe(e,i){return new this(e).div(i)}function ge(e){return new this(e).exp()}function pe(e){return C(e=new this(e),e.e+1,3)}function de(){var e,i,t=new this(0);for(h=!1,e=0;e<arguments.length;)if((i=new this(arguments[e++])).d)t.d&&(t=t.plus(i.times(i)));else{if(i.s)return h=!0,new this(1/0);t=i}return h=!0,t.sqrt()}function ve(e){return e instanceof i||e&&e.toStringTag===d||!1}function be(e){return new this(e).ln()}function ye(e,i){return new this(e).log(i)}function Ne(e){return new this(e).log(2)}function xe(e){return new this(e).log(10)}function _e(){return $(this,arguments,"lt")}function we(){return $(this,arguments,"gt")}function Se(e,i){return new this(e).mod(i)}function Ee(e,i){return new this(e).mul(i)}function Ie(e,i){return new this(e).pow(i)}function ke(e){var i,t,n,r,s=0,o=new this(1),l=[];if(void 0===e?e=this.precision:M(e,1,a),n=Math.ceil(e/7),this.crypto)if(crypto.getRandomValues)for(i=crypto.getRandomValues(new Uint32Array(n));s<n;)(r=i[s])>=429e7?i[s]=crypto.getRandomValues(new Uint32Array(1))[0]:l[s++]=r%1e7;else{if(!crypto.randomBytes)throw Error(p);for(i=crypto.randomBytes(n*=4);s<n;)(r=i[s]+(i[s+1]<<8)+(i[s+2]<<16)+((127&i[s+3])<<24))>=214e7?crypto.randomBytes(4).copy(i,s):(l.push(r%1e7),s+=4);s=n/4}else for(;s<n;)l[s++]=1e7*Math.random()|0;for(e%=7,(n=l[--s])&&e&&(r=b(10,7-e),l[s]=(n/r|0)*r);0===l[s];s--)l.pop();if(s<0)t=0,l=[0];else{for(t=-1;0===l[0];t-=7)l.shift();for(n=1,r=l[0];r>=10;r/=10)n++;n<7&&(t-=7-n)}return o.e=t,o.d=l,o}function Me(e){return C(e=new this(e),e.e+1,this.rounding)}function De(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function qe(e){return new this(e).sin()}function Ce(e){return new this(e).sinh()}function Oe(e){return new this(e).sqrt()}function Ve(e,i){return new this(e).sub(i)}function Pe(){var e=0,i=arguments,t=new this(i[e]);for(h=!1;t.s&&++e<i.length;)t=t.plus(i[e]);return h=!0,C(t,this.precision,this.rounding)}function Fe(e){return new this(e).tan()}function Le(e){return new this(e).tanh()}function Te(e){return C(e=new this(e),e.e+1,1)}i=function e(i){var t,n,r;function s(e){var i,t,n,r=this;if(!(r instanceof s))return new s(e);if(r.constructor=s,ve(e))return r.s=e.s,void(h?!e.d||e.e>s.maxE?(r.e=NaN,r.d=null):e.e<s.minE?(r.e=0,r.d=[0]):(r.e=e.e,r.d=e.d.slice()):(r.e=e.e,r.d=e.d?e.d.slice():e.d));if("number"==(n=typeof e)){if(0===e)return r.s=1/e<0?-1:1,r.e=0,void(r.d=[0]);if(e<0?(e=-e,r.s=-1):r.s=1,e===~~e&&e<1e7){for(i=0,t=e;t>=10;t/=10)i++;return void(h?i>s.maxE?(r.e=NaN,r.d=null):i<s.minE?(r.e=0,r.d=[0]):(r.e=i,r.d=[e]):(r.e=i,r.d=[e]))}return 0*e!=0?(e||(r.s=NaN),r.e=NaN,void(r.d=null)):G(r,e.toString())}if("string"!==n)throw Error(f+e);return 45===(t=e.charCodeAt(0))?(e=e.slice(1),r.s=-1):(43===t&&(e=e.slice(1)),r.s=1),_.test(e)?G(r,e):H(r,e)}if(s.prototype=I,s.ROUND_UP=0,s.ROUND_DOWN=1,s.ROUND_CEIL=2,s.ROUND_FLOOR=3,s.ROUND_HALF_UP=4,s.ROUND_HALF_DOWN=5,s.ROUND_HALF_EVEN=6,s.ROUND_HALF_CEIL=7,s.ROUND_HALF_FLOOR=8,s.EUCLID=9,s.config=s.set=ce,s.clone=e,s.isDecimal=ve,s.abs=J,s.acos=X,s.acosh=ee,s.add=ie,s.asin=te,s.asinh=ne,s.atan=re,s.atanh=se,s.atan2=ae,s.cbrt=oe,s.ceil=le,s.clamp=ue,s.cos=he,s.cosh=me,s.div=fe,s.exp=ge,s.floor=pe,s.hypot=de,s.ln=be,s.log=ye,s.log10=xe,s.log2=Ne,s.max=_e,s.min=we,s.mod=Se,s.mul=Ee,s.pow=Ie,s.random=ke,s.round=Me,s.sign=De,s.sin=qe,s.sinh=Ce,s.sqrt=Oe,s.sub=Ve,s.sum=Pe,s.tan=Fe,s.tanh=Le,s.trunc=Te,void 0===i&&(i={}),i&&!0!==i.defaults)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<r.length;)i.hasOwnProperty(n=r[t++])||(i[n]=this[n]);return s.config(i),s}(c),i.prototype.constructor=i,i.default=i.Decimal=i,l=new i(l),u=new i(u),Ae.exports?("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator&&(I[Symbol.for("nodejs.util.inspect.custom")]=I.toString,I[Symbol.toStringTag]="Decimal"),Ae.exports=i):(e||(e="undefined"!=typeof self&&self&&self.self==self?self:window),n=e.Decimal,i.noConflict=function(){return e.Decimal=n,i},e.Decimal=i)}(De);var Ce=qe.exports,Oe={exports:{}};!function(e,i){!function(i){var t=function(e){return.5*(Math.exp(e)+Math.exp(-e))},n=function(e){return.5*(Math.exp(e)-Math.exp(-e))},r=function(){throw SyntaxError("Invalid Param")};function s(e,i){var t=Math.abs(e),n=Math.abs(i);return 0===e?Math.log(n):0===i?Math.log(t):t<3e3&&n<3e3?.5*Math.log(e*e+i*i):Math.log(e/Math.cos(Math.atan2(i,e)))}function a(e,i){if(!(this instanceof a))return new a(e,i);var t=function(e,i){var t={re:0,im:0};if(null==e)t.re=t.im=0;else if(void 0!==i)t.re=e,t.im=i;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 a.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 a.INFINITY;t.re=e.r*Math.cos(e.phi),t.im=e.r*Math.sin(e.phi)}else 2===e.length?(t.re=e[0],t.im=e[1]):r();break;case"string":t.im=t.re=0;var n=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),s=1,o=0;null===n&&r();for(var l=0;l<n.length;l++){var u=n[l];" "===u||"\t"===u||"\n"===u||("+"===u?s++:"-"===u?o++:"i"===u||"I"===u?(s+o===0&&r()," "===n[l+1]||isNaN(n[l+1])?t.im+=parseFloat((o%2?"-":"")+"1"):(t.im+=parseFloat((o%2?"-":"")+n[l+1]),l++),s=o=0):((s+o===0||isNaN(u))&&r(),"i"===n[l+1]||"I"===n[l+1]?(t.im+=parseFloat((o%2?"-":"")+u),l++):t.re+=parseFloat((o%2?"-":"")+u),s=o=0))}s+o>0&&r();break;case"number":t.im=0,t.re=e;break;default:r()}return isNaN(t.re)||t.im,t}(e,i);this.re=t.re,this.im=t.im}a.prototype={re:0,im:0,sign:function(){var e=this.abs();return new a(this.re/e,this.im/e)},add:function(e,i){var t=new a(e,i);return this.isInfinite()&&t.isInfinite()?a.NAN:this.isInfinite()||t.isInfinite()?a.INFINITY:new a(this.re+t.re,this.im+t.im)},sub:function(e,i){var t=new a(e,i);return this.isInfinite()&&t.isInfinite()?a.NAN:this.isInfinite()||t.isInfinite()?a.INFINITY:new a(this.re-t.re,this.im-t.im)},mul:function(e,i){var t=new a(e,i);return this.isInfinite()&&t.isZero()||this.isZero()&&t.isInfinite()?a.NAN:this.isInfinite()||t.isInfinite()?a.INFINITY:0===t.im&&0===this.im?new a(this.re*t.re,0):new a(this.re*t.re-this.im*t.im,this.re*t.im+this.im*t.re)},div:function(e,i){var t=new a(e,i);if(this.isZero()&&t.isZero()||this.isInfinite()&&t.isInfinite())return a.NAN;if(this.isInfinite()||t.isZero())return a.INFINITY;if(this.isZero()||t.isInfinite())return a.ZERO;e=this.re,i=this.im;var n,r,s=t.re,o=t.im;return 0===o?new a(e/s,i/s):Math.abs(s)<Math.abs(o)?new a((e*(r=s/o)+i)/(n=s*r+o),(i*r-e)/n):new a((e+i*(r=o/s))/(n=o*r+s),(i-e*r)/n)},pow:function(e,i){var t=new a(e,i);if(e=this.re,i=this.im,t.isZero())return a.ONE;if(0===t.im){if(0===i&&e>0)return new a(Math.pow(e,t.re),0);if(0===e)switch((t.re%4+4)%4){case 0:return new a(Math.pow(i,t.re),0);case 1:return new a(0,Math.pow(i,t.re));case 2:return new a(-Math.pow(i,t.re),0);case 3:return new a(0,-Math.pow(i,t.re))}}if(0===e&&0===i&&t.re>0&&t.im>=0)return a.ZERO;var n=Math.atan2(i,e),r=s(e,i);return e=Math.exp(t.re*r-t.im*n),i=t.im*r+t.re*n,new a(e*Math.cos(i),e*Math.sin(i))},sqrt:function(){var e,i,t=this.re,n=this.im,r=this.abs();if(t>=0){if(0===n)return new a(Math.sqrt(t),0);e=.5*Math.sqrt(2*(r+t))}else e=Math.abs(n)/Math.sqrt(2*(r-t));return i=t<=0?.5*Math.sqrt(2*(r-t)):Math.abs(n)/Math.sqrt(2*(r+t)),new a(e,n<0?-i:i)},exp:function(){var e=Math.exp(this.re);return this.im,new a(e*Math.cos(this.im),e*Math.sin(this.im))},expm1:function(){var e=this.re,i=this.im;return new a(Math.expm1(e)*Math.cos(i)+function(e){var i=Math.PI/4;if(-i>e||e>i)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)-.5)}(i),Math.exp(e)*Math.sin(i))},log:function(){var e=this.re,i=this.im;return new a(s(e,i),Math.atan2(i,e))},abs:function(){return e=this.re,i=this.im,t=Math.abs(e),n=Math.abs(i),t<3e3&&n<3e3?Math.sqrt(t*t+n*n):(t<n?(t=n,n=e/i):n=i/e,t*Math.sqrt(1+n*n));var e,i,t,n},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var e=this.re,i=this.im;return new a(Math.sin(e)*t(i),Math.cos(e)*n(i))},cos:function(){var e=this.re,i=this.im;return new a(Math.cos(e)*t(i),-Math.sin(e)*n(i))},tan:function(){var e=2*this.re,i=2*this.im,r=Math.cos(e)+t(i);return new a(Math.sin(e)/r,n(i)/r)},cot:function(){var e=2*this.re,i=2*this.im,r=Math.cos(e)-t(i);return new a(-Math.sin(e)/r,n(i)/r)},sec:function(){var e=this.re,i=this.im,r=.5*t(2*i)+.5*Math.cos(2*e);return new a(Math.cos(e)*t(i)/r,Math.sin(e)*n(i)/r)},csc:function(){var e=this.re,i=this.im,r=.5*t(2*i)-.5*Math.cos(2*e);return new a(Math.sin(e)*t(i)/r,-Math.cos(e)*n(i)/r)},asin:function(){var e=this.re,i=this.im,t=new a(i*i-e*e+1,-2*e*i).sqrt(),n=new a(t.re-i,t.im+e).log();return new a(n.im,-n.re)},acos:function(){var e=this.re,i=this.im,t=new a(i*i-e*e+1,-2*e*i).sqrt(),n=new a(t.re-i,t.im+e).log();return new a(Math.PI/2-n.im,n.re)},atan:function(){var e=this.re,i=this.im;if(0===e){if(1===i)return new a(0,1/0);if(-1===i)return new a(0,-1/0)}var t=e*e+(1-i)*(1-i),n=new a((1-i*i-e*e)/t,-2*e/t).log();return new a(-.5*n.im,.5*n.re)},acot:function(){var e=this.re,i=this.im;if(0===i)return new a(Math.atan2(1,e),0);var t=e*e+i*i;return 0!==t?new a(e/t,-i/t).atan():new a(0!==e?e/0:0,0!==i?-i/0:0).atan()},asec:function(){var e=this.re,i=this.im;if(0===e&&0===i)return new a(0,1/0);var t=e*e+i*i;return 0!==t?new a(e/t,-i/t).acos():new a(0!==e?e/0:0,0!==i?-i/0:0).acos()},acsc:function(){var e=this.re,i=this.im;if(0===e&&0===i)return new a(Math.PI/2,1/0);var t=e*e+i*i;return 0!==t?new a(e/t,-i/t).asin():new a(0!==e?e/0:0,0!==i?-i/0:0).asin()},sinh:function(){var e=this.re,i=this.im;return new a(n(e)*Math.cos(i),t(e)*Math.sin(i))},cosh:function(){var e=this.re,i=this.im;return new a(t(e)*Math.cos(i),n(e)*Math.sin(i))},tanh:function(){var e=2*this.re,i=2*this.im,r=t(e)+Math.cos(i);return new a(n(e)/r,Math.sin(i)/r)},coth:function(){var e=2*this.re,i=2*this.im,r=t(e)-Math.cos(i);return new a(n(e)/r,-Math.sin(i)/r)},csch:function(){var e=this.re,i=this.im,r=Math.cos(2*i)-t(2*e);return new a(-2*n(e)*Math.cos(i)/r,2*t(e)*Math.sin(i)/r)},sech:function(){var e=this.re,i=this.im,r=Math.cos(2*i)+t(2*e);return new a(2*t(e)*Math.cos(i)/r,-2*n(e)*Math.sin(i)/r)},asinh:function(){var e=this.im;this.im=-this.re,this.re=e;var i=this.asin();return this.re=-this.im,this.im=e,e=i.re,i.re=-i.im,i.im=e,i},acosh:function(){var e=this.acos();if(e.im<=0){var i=e.re;e.re=-e.im,e.im=i}else{i=e.im;e.im=-e.re,e.re=i}return e},atanh:function(){var e=this.re,i=this.im,t=e>1&&0===i,n=1-e,r=1+e,o=n*n+i*i,l=0!==o?new a((r*n-i*i)/o,(i*n+r*i)/o):new a(-1!==e?e/0:0,0!==i?i/0:0),u=l.re;return l.re=s(l.re,l.im)/2,l.im=Math.atan2(l.im,u)/2,t&&(l.im=-l.im),l},acoth:function(){var e=this.re,i=this.im;if(0===e&&0===i)return new a(0,Math.PI/2);var t=e*e+i*i;return 0!==t?new a(e/t,-i/t).atanh():new a(0!==e?e/0:0,0!==i?-i/0:0).atanh()},acsch:function(){var e=this.re,i=this.im;if(0===i)return new a(0!==e?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var t=e*e+i*i;return 0!==t?new a(e/t,-i/t).asinh():new a(0!==e?e/0:0,0!==i?-i/0:0).asinh()},asech:function(){var e=this.re,i=this.im;if(this.isZero())return a.INFINITY;var t=e*e+i*i;return 0!==t?new a(e/t,-i/t).acosh():new a(0!==e?e/0:0,0!==i?-i/0:0).acosh()},inverse:function(){if(this.isZero())return a.INFINITY;if(this.isInfinite())return a.ZERO;var e=this.re,i=this.im,t=e*e+i*i;return new a(e/t,-i/t)},conjugate:function(){return new a(this.re,-this.im)},neg:function(){return new a(-this.re,-this.im)},ceil:function(e){return e=Math.pow(10,e||0),new a(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=Math.pow(10,e||0),new a(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=Math.pow(10,e||0),new a(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,i){var t=new a(e,i);return Math.abs(t.re-this.re)<=a.EPSILON&&Math.abs(t.im-this.im)<=a.EPSILON},clone:function(){return new a(this.re,this.im)},toString:function(){var e=this.re,i=this.im,t="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)<a.EPSILON&&(e=0),Math.abs(i)<a.EPSILON&&(i=0),0===i?t+e:(0!==e?(t+=e,t+=" ",i<0?(i=-i,t+="-"):t+="+",t+=" "):i<0&&(i=-i,t+="-"),1!==i&&(t+=i),t+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return 0===this.im?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return 0===this.im&&0===this.re},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!(this.isNaN()||this.isFinite())}},a.ZERO=new a(0,0),a.ONE=new a(1,0),a.I=new a(0,1),a.PI=new a(Math.PI,0),a.E=new a(Math.E,0),a.INFINITY=new a(1/0,1/0),a.NAN=new a(NaN,NaN),a.EPSILON=1e-15,Object.defineProperty(a,"__esModule",{value:!0}),a.default=a,a.Complex=a,e.exports=a}()}(Oe);class Ve{constructor(e,i){this.engine=e,i?.latex&&(this._latex=i.latex),i?.wikidata&&(this._wikidata=i.wikidata)}toJSON(){return JSON.stringify(this.json)}toString(){return this.latex}valueOf(){return this.asFloat??this.string??this.symbol??this.toString()}is(e){return this.isSame(this.engine.box(e))}has(e){return!1}get description(){return[]}get url(){return""}_purge(){}get isPure(){return!1}get isLiteral(){return!1}get latex(){return this._latex??this.engine.serialize(this)}set latex(e){this._latex=e}get wikidata(){return this._wikidata??""}set wikidata(e){this._wikidata=e}get complexity(){return 1}get ops(){return null}get nops(){return 0}get op1(){return this.engine.symbol("Missing")}get op2(){return this.engine.symbol("Missing")}get op3(){return this.engine.symbol("Missing")}get symbolDefinition(){}get functionDefinition(){}_repairDefinition(){}get keys(){return null}get keysCount(){return 0}getKey(e){}hasKey(e){return!1}get machineValue(){return this.numericValue?.machineValue??null}get rationalValue(){return this.numericValue?.rationalValue??[null,null]}get decimalValue(){return this.numericValue?.decimalValue??null}get complexValue(){return this.numericValue?.complexValue??null}get asFloat(){return this.numericValue?.asFloat??null}get asSmallInteger(){return this.numericValue?.asSmallInteger??null}get asRational(){return this.numericValue?.asRational??[null,null]}get sgn(){return this.numericValue?.sgn??null}get symbol(){return null}get isMissing(){return!1}get value(){return this}set value(e){throw Error(`Can't change the value of \\(${this.latex}\\)`)}get numericValue(){}isSubsetOf(e){}get domain(){return this.engine.domain("Nothing")}set domain(e){throw Error(`Can't change the domain of \\(${this.latex}\\)`)}get string(){return null}isLess(e){}isLessEqual(e){}isGreater(e){}isGreaterEqual(e){}get isZero(){}get isNotZero(){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}get isInfinity(){}get isNaN(){}get isFinite(){}get isNumber(){}get isInteger(){}get isRational(){}get isAlgebraic(){return!1}get isReal(){}get isExtendedReal(){}get isComplex(){}get isImaginary(){}get isExtendedComplex(){}get isOne(){}get isNegativeOne(){}get isEven(){}get isOdd(){}get isPrime(){}get isComposite(){}get canonical(){return this}apply(e,i){return this}evaluate(e){return this.simplify(e)}simplify(e){return this}N(e){return this}replace(e){return null}subs(e){return this}solve(e){return null}}function Pe(e,i){if(!i.isInteger()||i.isNegative())return e.DECIMAL_NAN;if(i.lessThan(10))return e.decimal([1,1,2,6,24,120,720,5040,40320,362880,3628800][i.toNumber()]);if(i.gt(Number.MAX_SAFE_INTEGER)){let t=e.DECIMAL_ONE,n=e.DECIMAL_TWO;for(;n.lessThan(i);)t=t.mul(n),n=n.add(1);return t}if(i.modulo(2).eq(1))return i.times(Pe(e,i.minus(1)));let t=i.toNumber(),n=i,r=i;for(;t>2;)t-=2,n=n.add(t),r=r.mul(n);return r}function Fe(e,i){if(i.isNegative())return e.DECIMAL_NAN;const t=e.cache("gamma-p-ln",(()=>["0.99999999999999709182","57.156235665862923517","-59.597960355475491248","14.136097974741747174","-0.49191381609762019978","0.33994649984811888699e-4","0.46523628927048575665e-4","-0.98374475304879564677e-4","0.15808870322491248884e-3","-0.21026444172410488319e-3","0.2174396181152126432e-3","-0.16431810653676389022e-3","0.84418223983852743293e-4","-0.2619083840158140867e-4","0.36899182659531622704e-5"].map((i=>e.decimal(i)))));let n=t[0];for(let e=t.length-1;e>0;--e)n=n.add(t[e].div(i.add(e)));const r=e.cache("gamma-g-ln",(()=>e.decimal(607).div(128))),s=i.add(r).add(e.DECIMAL_HALF);return e.DECIMAL_NEGATIVE_ONE.acos().mul(e.DECIMAL_TWO).log().mul(e.DECIMAL_HALF).add(s.log().mul(i.add(e.DECIMAL_HALF)).minus(s).add(n.log()).minus(i.log()))}function Le(e,i){if(i.lessThan(e.DECIMAL_HALF)){const t=e.DECIMAL_NEGATIVE_ONE.acos();return t.div(t.mul(i).sin().mul(Le(e,e.DECIMAL_ONE.sub(i))))}if(i.greaterThan(100))return Fe(e,i).exp();i=i.sub(1);const t=e.cache("lanczos-7-c",(()=>["0.99999999999980993227684700473478","676.520368121885098567009190444019","-1259.13921672240287047156078755283","771.3234287776530788486528258894","-176.61502916214059906584551354","12.507343278686904814458936853","-0.13857109526572011689554707","9.984369578019570859563e-6","1.50563273514931155834e-7"].map(e.decimal)));let n=t[0];for(let e=1;e<9;e++)n=n.add(t[e].div(i.add(e)));const r=i.add(7).add(e.DECIMAL_HALF);return e.DECIMAL_NEGATIVE_ONE.acos().times(e.DECIMAL_TWO).sqrt().mul(n.mul(r.neg().exp()).mul(r.pow(i.add(e.DECIMAL_HALF))))}function Te(e){return e.e<308&&e.e>-306}function ze(e,i){const t=[];for(const n of e)n.ops&&n.head===i?t.push(...ze(n.ops,i)??n.ops):t.push(n);return t.length===e.length?null:t}function Re(e){if("Power"===e.head&&e.op2.isLiteral){const i=e.op2.asSmallInteger;return null!==i&&i>0?i:1}if("Multiply"===e.head){let i=1;for(const t of e.ops){const e=Re(t);e>1&&(i+=e)}return i}return 1}function $e(e){if("Power"===e.head&&e.op2.isLiteral){const i=e.op2.asSmallInteger;return null!==i&&i>0?i:1}if("Multiply"===e.head){let i=1;for(const t of e.ops)i=Math.max(i,Re(t));return i}return 1}function Ze(e){return e.symbol?e.symbol:e.ops?e.ops.map((e=>Ze(e))).filter((e=>e.length>0)).join('"'):""}function je(e){return"string"==typeof e&&(e.startsWith("$")&&e.endsWith("$"))}function Be(e){return"string"==typeof e&&e.startsWith("$")&&e.endsWith("$")?e.slice(1,-1):null}function Ge(e){if("ImaginaryUnit"===e.symbol)return 1;const i=e.complexValue;if(i&&0===i.re)return i.im;if("Negate"===e.head)return-Ge(e.op1);let t=0;if("Multiply"===e.head&&2===e.nops){let i;"ImaginaryUnit"===e.op1.symbol?i=e.op2:"ImaginaryUnit"===e.op2.symbol&&(i=e.op1),i&&i.isLiteral&&(t=i.asFloat??0)}return t}function He(e){if(e.symbol){return e.symbolDefinition?.constant?[]:[e.symbol]}if(!e.ops&&!e.keys)return[];const i=[];if(e.ops)for(const t of e.ops)i.push(...He(t));if(e.keys)for(const t of e.keys)i.push(...He(e.getKey(t)));return i}function We(e){return"decimal"===e.numericMode||"auto"===e.numericMode&&e.precision>Math.floor(ye)}function Ue(e){return"auto"===e.numericMode||"complex"===e.numericMode}function Qe(e){let i=0;for(let t=0;t<e.length;t++)i=Math.imul(31,i)+e.charCodeAt(t)|0;return Math.abs(i)}function Ye(e,i){if(e.isLiteral&&null!==e.asFloat)return i.isLiteral&&null!==i.asFloat?e.asFloat-i.asFloat:-1;if(e.isLiteral&&e.complexValue)return i.isLiteral&&i.complexValue?e.complexValue.re===i.complexValue.re?Math.abs(e.complexValue.im)===Math.abs(i.complexValue.im)?e.complexValue.im-i.complexValue.im:Math.abs(e.complexValue.im)-Math.abs(i.complexValue.im):e.complexValue.re-i.complexValue.re:i.isLiteral&&i.isNumber?1:-1;if(e.symbol)return i.symbol?e.symbol===i.symbol?0:e.symbol>i.symbol?1:-1:i.isLiteral&&i.isNumber?1:-1;if(e.ops){if(i.ops){const t=e.functionDefinition?.complexity??1e5,n=i.functionDefinition?.complexity??1e5;return t===n?"string"==typeof e.head&&"string"==typeof i.head?e.head===i.head?Ke(e)-Ke(i):e.head<i.head?1:-1:Ke(e)-Ke(i):t-n}return i.isLiteral&&i.isNumber||i.symbol?1:-1}if(e.string)return i.string?e.string.length!==i.string.length?i.string.length-e.string.length:i.string<e.string?-1:e.string>i.string?1:0:i.keys?-1:1;if(e.keys&&i.keys){if(e.keysCount!==i.keysCount)return i.keysCount-e.keysCount;let t=0,n=0;for(const e of i.keys)t+=i.getKey(e).complexity;for(const i of e.keys)n+=e.getKey(i).complexity;return n-t}return e.complexity-i.complexity}function Ke(e){return null!==e.keys?1+e.keysCount:e.ops?("string"==typeof e.head?1:Ke(e.head))+[...e.ops].reduce(((e,i)=>e+Ke(i)),0):1}function Je(e){const i=e.engine;let t=1,n=1;if("Multiply"===e.head){const r=[];for(const i of e.ops)if(i.isLiteral){const[e,s]=i.asRational;null!==e&&null!==s?(t*=e,n*=s):r.push(i)}else r.push(i);return[t,n]=we([t,n]),t===n?[[1,1],e]:0===r.length?[[t,n],i.ONE]:1===r.length?[[t,n],r[0]]:[[t,n],i.mul(r)]}if("Divide"===e.head){let[[t,n],r]=Je(e.op1);const[[s,a],o]=Je(e.op2),[l,u]=we([t*a,s*n]);return r.isOne&&o.isOne?[[l,u],i.ONE]:o.isOne?[[l,u],r]:[[l,u],i.fn("Divide",[r,o]).canonical]}if("Power"===e.head){if(!e.op2.isLiteral)return[[1,1],e];let[[t,n],r]=Je(e.op1);if(1===t&&1===n)return[[1,1],e];const s=e.op2,a=s.asSmallInteger;if(null!==a){if(-1===a)return[[n,t],i.inverse(r)];if(Math.log10(Math.abs(t))*Math.abs(a)<15&&Math.log10(Math.abs(n))*Math.abs(a)<15)return a>0?[[Math.pow(t,a),Math.pow(n,a)],i.power(r,s)]:[[Math.pow(n,-a),Math.pow(t,-a)],i.power(r,s)]}const[o,l]=s.rationalValue;if(null!==o&&null!==l&&t>0&&1===Math.abs(o)){const[a,u]=xe(t,l),[c,h]=xe(n,l);return 1===a&&1===c?[[1,1],e]:[1===o?[a,c]:[c,a],i.power(i.mul([i.number([u,h]),r]),s)]}return[[1,1],e]}if("Negate"===e.head){const[i,t]=Je(e.op1);return[[-i[0],i[1]],t]}if(e.isLiteral){if(e.decimalValue){if(e.decimalValue.isInteger()&&Te(e.decimalValue))return[[e.decimalValue.toNumber(),1],i.ONE];if(e.decimalValue?.isNegative())return[[-1,1],i.number(e.decimalValue.neg())]}if(null!==e.machineValue){if(Number.isInteger(e.machineValue))return[[e.machineValue,1],i.ONE];if(e.machineValue<0)return[[-1,1],i.number(-e.machineValue)]}const[t,n]=e.rationalValue;if(null!==t&&null!==n)return[[t,n],i.ONE];if(null!==e.complexValue){const t=e.complexValue;if(t.re<0)return[[-1,1],i.number(i.complex(-t.re,-t.im))]}}return[[1,1],e]}function Xe(e){if("Negate"===e.head)return[-1,e.op1];const i=e.engine;if(null!==e.machineValue&&e.machineValue<0)return[-1,i.number(-e.machineValue)];if(e.decimalValue?.isNegative())return[-1,i.number(e.decimalValue.neg())];if(null!==e.complexValue){const t=e.complexValue;if(t.re<0)return[-1,i.number(i.complex(-t.re,-t.im))]}const[t,n]=e.rationalValue;return null!==t&&null!==n&&t<0?[-1,i.number([-t,n])]:[1,e]}class ei{constructor(e,i){if(this._terms=[],this._literal=[1,1],this._hasInfinity=!1,this._hasZero=!1,this.engine=e,i)for(const e of i)this.addTerm(e)}get isEmpty(){return!1===this._hasInfinity&&!1===this._hasZero&&this._literal[0]===this._literal[1]&&0===this._terms.length}addTerm(e){if("Nothing"===e.symbol)return;if(e.isLiteral){if(e.isOne)return;if(e.isZero)return void(this._hasZero=!0);if(e.isNegativeOne)return void(this._literal[0]*=-1);if(e.isInfinity)return this._hasInfinity=!0,void(e.isNegative&&(this._literal[0]*=-1))}let[i,t]=Je(e);if(this._literal=[this._literal[0]*i[0],this._literal[1]*i[1]],t.isLiteral&&t.isOne)return;let n=[1,1];if("Power"===t.head&&t.op2.isLiteral){const[e,i]=t.op2.asRational;null!==e&&null!==i&&(n=[e,i],t=t.op1)}let r=!1;if(1===n[1]||t.isNonNegative)for(const e of this._terms)if(e.term.isSame(t)){const[i,t]=e.exponent,[s,a]=n;e.exponent=[i*a+t*s,t*a],r=!0;break}r||this._terms.push({exponent:n,term:t})}groupedByDegrees(e){const i=this.engine,t=[],n=[];this._hasInfinity&&n.push(i.POSITIVE_INFINITY),this._literal=we(this._literal),1===this._literal[0]&&1===this._literal[1]||(e?.splitRational?(1!==this._literal[0]&&n.push(i.number(this._literal[0])),1!==this._literal[1]&&t.push({exponent:[-1,1],terms:[i.number(this._literal[1])]})):n.push(i.number(this._literal))),n.length>0&&t.push({exponent:[1,1],terms:n});for(const e of this._terms){if(0===e.exponent[0])continue;let i=!1;for(const n of t)if(e.exponent[0]===n.exponent[0]&&e.exponent[1]===n.exponent[1]){n.terms.push(e.term),i=!0;break}i||t.push({exponent:we(e.exponent),terms:[e.term]})}return t}terms(){return ni(this.engine,this.groupedByDegrees())}asNumeratorDenominator(){const e=this.groupedByDegrees(),i=[],t=[];for(const n of e)n.exponent[0]>=0?i.push(n):t.push({exponent:[-n.exponent[0],n.exponent[1]],terms:n.terms});const n=this.engine;let r=ni(n,i);r=ze(r,"Multiply")??r;let s=n.ONE;1===r.length?s=r[0]:r.length>0&&(s=n._fn("Multiply",r));let a=ni(n,t);a=ze(a,"Multiply")??a;let o=n.ONE;return 1===a.length?o=a[0]:a.length>0&&(o=n._fn("Multiply",a)),[s,o]}asExpression(){const e=this.engine;if(this._hasInfinity){if(this._hasZero)return e.NAN;if(0===this._terms.length)return this._literal[0]>0?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}if(this._hasZero)return e.ZERO;if(0===this._terms.length)return e.number(this._literal);let i=ni(e,this.groupedByDegrees({splitRational:!1}));return this._hasInfinity&&i.push(e.POSITIVE_INFINITY),i=ze(i,"Multiply")??i,0===i.length?e.ONE:1===i.length?i[0]:this.engine._fn("Multiply",i)}asRationalExpression(){const[e,i]=this.asNumeratorDenominator();return i.isOne?e:i.isNegativeOne?this.engine.negate(e):this.engine._fn("Divide",[e,i])}}function ii(e){const[i,t]=e;return i===t?0:i>0&&Number.isInteger(i/t)?1:i>0?2:Number.isInteger(i/t)?3:4}function ti(e,i){const t=ii(e.exponent),n=ii(i.exponent);return t!==n?t-n:e.exponent[0]/e.exponent[1]-i.exponent[0]/i.exponent[1]}function ni(e,i){const t=(i=i.sort(ti)).map((i=>{const t=ze(i.terms,"Multiply")??i.terms,n=t.length<=1?t[0]:e._fn("Multiply",t.sort(Ye));return i.exponent[0]===i.exponent[1]?n:e.power(n,i.exponent)}));return ze(t,"Multiply")??t}function ri(e,i,t,n){const r=e.jsonSerializationOptions.exclude;if(("Rational"===i||"Divide"===i)&&t[0]?.isLiteral&&t[1]?.isLiteral&&1===t[0]?.asSmallInteger&&2===t[1]?.asSmallInteger&&!r.includes("Half"))return si(e,"Half",{...n,wikidata:"Q39373172"});if("Negate"===i&&t[0].isLiteral){if(null!==t[0].machineValue)return ai(e,-t[0].machineValue);if(null!==t[0].decimalValue)return ai(e,t[0].decimalValue.neg());if(null!==t[0].complexValue)return ai(e,t[0].complexValue.neg());const[i,n]=t[0].rationalValue;if(null!==i&&null!==n)return ai(e,[-i,n])}if("Rational"===i&&r.includes(i)&&t.length>1)return ri(e,"Divide",t,n);if("Complex"===i&&r.includes(i))return ri(e,"Add",[t[0],e._fn("Multiply",[t[1],e.symbol("ImaginaryUnit")])],n);if("Sqrt"===i&&r.includes(i))return ri(e,"Power",[t[0],r.includes("Half")?e.number([1,2]):e.HALF],n);if("Root"===i&&r.includes(i)&&t[1].isLiteral){const i=t[1].asSmallInteger;if(2===i)return ri(e,"Sqrt",[t[0]]);if(null!==i)return i<0?ri(e,"Divide",[e.ONE,e._fn("Power",[t[0],e.number([1,-i])])],n):ri(e,"Power",[t[0],e.number([1,-i])],n)}if("Square"===i&&r.includes(i))return ri(e,"Power",[t[0],e.TWO],n);if("Exp"===i&&r.includes(i))return ri(e,"Power",[e.symbol("ExponentialE"),t[0]],n);if("Subtract"===i&&r.includes(i))return ri(e,"Add",[t[0],e._fn("Negate",[t[1]])],n);if("Add"===i&&2===t.length&&!r.includes("Subtract")){if(t[1].isLiteral){const i=t[1].asSmallInteger;if(null!==i&&i<0)return ri(e,"Subtract",[t[0],e.number(-i)],n)}if("Negate"===t[1].head)return ri(e,"Subtract",[t[0],t[1].op1],n)}if("Tuple"===i){if(1===t.length&&!r.includes("Single"))return ri(e,"Single",t,n);if(2===t.length&&!r.includes("Pair"))return ri(e,"Pair",t,n);if(3===t.length&&!r.includes("Triple"))return ri(e,"Triple",t,n)}const s=["string"==typeof i?i:i.json,...t.map((e=>e.json))],a={...n??{}};return e.jsonSerializationOptions.metadata.includes("latex")?a.latex=a.latex??e.serialize(s):a.latex="",e.jsonSerializationOptions.metadata.includes("wikidata")?n?.wikidata||"string"!=typeof i||(a.wikidata=e.getFunctionDefinition(i)?.wikidata??""):a.wikidata="",a.latex||a.wikidata||!e.jsonSerializationOptions.shorthands.includes("function")?a.latex&&a.wikidata?{fn:s,latex:a.latex,wikidata:a.wikidata}:a.latex?{fn:s,latex:a.latex}:a.wikidata?{fn:s,wikidata:a.wikidata}:{fn:s}:s}function si(e,i,t){return"Half"===i&&e.jsonSerializationOptions.exclude.includes("Half")?ai(e,[1,2],t):(t={...t},e.jsonSerializationOptions.metadata.includes("latex")?(t.latex=t.latex??e.serialize({sym:i}),t.latex===i&&(t.latex=""),t.latex=t.latex):t.latex="",e.jsonSerializationOptions.metadata.includes("wikidata")?t.wikidata||(t.wikidata=e.getSymbolDefinition(i)?.wikidata??""):t.wikidata="",i=i,t.latex||t.wikidata||!e.jsonSerializationOptions.shorthands.includes("symbol")?t.latex&&t.wikidata?{sym:i,latex:t.latex,wikidata:t.wikidata}:t.latex?{sym:i,latex:t.latex}:t.wikidata?{sym:i,wikidata:t.wikidata}:{sym:i}:i)}function ai(e,i,t){t={...t},e.jsonSerializationOptions.metadata.includes("latex")?t.latex=t.latex??e.serialize(this):t.latex="";const n=!t.latex&&e.jsonSerializationOptions.shorthands.includes("number");if(i instanceof Ce){if(i.isNaN())return t.latex?{num:"NaN",latex:t.latex}:{num:"NaN"};if(!i.isFinite())return i.isPositive()?t.latex?{num:"+Infinity",latex:t.latex}:{num:"+Infinity"}:t.latex?{num:"-Infinity",latex:t.latex}:{num:"-Infinity"};if(n&&Te(i)&&i.precision()<15)return i.toNumber();const r=i.isInteger()&&i.e<i.precision()+4?i.toFixed(0):oi(e,i.toJSON());return t.latex?{num:r,latex:t.latex}:{num:r}}if(i instanceof Oe.exports.Complex)return i.isInfinite()?si(e,"ComplexInfinity",t):i.isNaN()?t.latex?{num:"NaN",latex:t.latex}:{num:"NaN"}:ri(e,"Complex",[e.number(i.re),e.number(i.im)],{...t,wikidata:"Q11567"});if(Array.isArray(i))return!t.latex&&!t.wikidata&&e.jsonSerializationOptions.shorthands.includes("function")&&e.jsonSerializationOptions.shorthands.includes("number")?["Rational",i[0],i[1]]:ri(e,"Rational",[e.number(i[0]),e.number(i[1])],t);if(Number.isNaN(i))return t.latex?{latex:t.latex,num:"NaN"}:{num:"NaN"};if(!Number.isFinite(i)&&i>0)return t.latex?{latex:t.latex,num:"+Infinity"}:{num:"+Infinity"};if(!Number.isFinite(i)&&i<0)return t.latex?{latex:t.latex,num:"-Infinity"}:{num:"-Infinity"};if(n)return i;const r=oi(e,i.toString());return t.latex!==r?{latex:t.latex,num:r}:{num:r}}function oi(e,i){if(!e.jsonSerializationOptions.repeatingDecimal)return i;let[t,n,r,s]=i.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return i;const a=r[r.length-1];r=r.slice(0,-1);let o="";for(let e=0;e<r.length-16;e++){o=r.substring(0,e);for(let t=0;t<=16;t++){const l=r.substring(e,e+t+1),u=Math.floor((r.length-o.length)/l.length);if(u>1&&(o+l.repeat(u+1)).startsWith(r))return"0"===l?"0"===a?n+"."+o+(s??""):i:n+"."+o+"("+l+")"+(s??"")}}return i}class li extends Ve{constructor(e,i,t){super(e,t),this._value=new Map,this._isCanonical=!1;for(const t of Object.keys(i))this._value.set(t,e.box(i[t]));e._register(this)}_purge(){for(const[e,i]of this._value)i._purge()}get hash(){let e=Qe("Dictionary");for(const[i,t]of this._value)e^=Qe(i)^t.hash;return e}get complexity(){return 97}get head(){return"Dictionary"}get isPure(){return!1}getKey(e){return this._value.get(e)}hasKey(e){return this._value.has(e)}get keys(){return this._value.keys()}get keysCount(){return this._value.size}has(e){for(const[i,t]of this._value)if(t.has(e))return!0;return!1}get domain(){return this.engine.domain("Collection")}get json(){if(this.engine.jsonSerializationOptions.shorthands.includes("dictionary")){const e={};for(const i of this._value.keys())e[i]=this._value.get(i).json;return{dict:e}}const e=[];for(const i of this._value.keys())e.push(this.engine._fn("KeyValuePair",[this.engine.string(i),this._value.get(i)]));return ri(this.engine,"Dictionary",e,{latex:this._latex})}isSame(e){if(this===e)return!0;if(!(e instanceof li))return!1;if(this._value.size!==e._value.size)return!1;for(const[i,t]of this._value){const n=e.getKey(i);if(!n||!t.isSame(n))return!1}return!0}match(e,i){if(!(e instanceof li))return null;if(this._value.size!==e._value.size)return null;let t={};for(const[i,n]of this._value){const r=e.getKey(i);if(!r)return null;const s=n.match(r);if(null===s)return null;t={...t,...s}}return t}isEqual(e){if(this===e)return!0;if(!(e instanceof li))return!1;if(!e.keys||this._value.size!==e._value.size)return!1;for(const[i,t]of this._value){const n=e.getKey(i);if(!n||!t.isEqual(n))return!1}return!0}apply(e,i){const t={};for(const i of this.keys)t[i]=this.engine.box(e(this.getKey(i)));return i?this.engine.fn(i,[{dict:t}]):new li(this.engine,t)}evaluate(e){return this.apply((i=>i.evaluate(e)??i))}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get canonical(){if(this.isCanonical)return this;const e=this.apply((e=>e.canonical));return e.isCanonical=!0,e}simplify(e){return e?.recursive??1?this.apply((i=>i.simplify(e)??i)):this}N(e){return this.apply((i=>i.N(e)))}replace(e,i){let t=0;const n={};for(const r of this.keys){const s=this.getKey(r),a=s.replace(e,i);null!==a&&(t+=1),n[r]=a??s}return 0===t?null:new li(this.engine,n)}subs(e){const i={};for(const t of this.keys)i[t]=this.getKey(t).subs(e);return new li(this.engine,i)}}function ui(e,i){const t=new Set;for(const[n,r,s]of i){let i=e.pattern(n);const a={};for(const t of He(i))a[t]=e.symbol("_"+t);let o;i=i.subs(a);const l=Be(s?.condition);if(l){const i=e.parse(l).subs(a);o=e=>"True"===i.subs(e).value?.symbol}else o=s?.condition;const u=je(r)?e.parse(r):e.box(r);u&&t.add([i,u.subs(a),s?.priority??0,o])}return t}function ci([e,i,t,n],r,s){const a=e.match(r,s);return null===a?null:"function"!=typeof n||n(a)?i.subs(a):null}function hi(e,i,t){const n=t?.iterationLimit??1;let r=0;const s=t?.once??!1;let a=!1,o=!1;try{for(;!a&&r<n;){a=!0;for(const n of i){const i=ci(n,e,t);if(null!==i&&i!==e){if(s)return i;a=!1,o=!0,e=i}}r+=1}}catch(e){}return o?e:null}const mi=[];function fi(e,i){if(null==i)return e;if(e===i)return e;const t=e.engine,n=t.box(i);return t.costFunction(n)<=1.7*t.costFunction(e)?n:e}class gi extends Ve{constructor(e,i,t,n){if(super(e,n),this._head="string"==typeof i?i:i.symbol??i,this._ops=t,"string"==typeof this._head){const i=e.getFunctionDefinition(this._head,n?.wikidata);if(null===i)throw Error(`Function \`${this._head}\` is not defined`);this._def=i}this._isCanonical=!1,e._register(this)}get hash(){if(void 0!==this._hash)return this._hash;let e=0;for(const i of this._ops)e=e<<1^i.hash|0;return e="string"==typeof this._head?e^Qe(this._head)|0:e^this._head.hash|0,this._hash=e,e}_purge(){"string"!=typeof this._head&&this._head._purge();for(const e of this._ops)e._purge();this._value&&this._value._purge(),this._numericValue&&this._numericValue._purge()}get wikidata(){return this._wikidata??this._def?.wikidata??""}get description(){return this._def&&this._def.description?"string"==typeof this._def.description?[this._def.description]:this._def.description:[]}get url(){return this._def?.url??""}get complexity(){return this._def?.complexity??1e5}get head(){return this._head}get value(){if(this.isPure)return this._value||(this._value=this.evaluate()),this._value}get numericValue(){if(!this.isPure)return;if(this._numericValue)return this._numericValue;const e=this.N();return this._numericValue=e.isLiteral?e:void 0,this._numericValue}get isPure(){if(void 0!==this._isPure)return this._isPure;let e;return void 0!==this._def?.pure&&(e=this._def.pure),!1!==e&&(e=this._ops.every((e=>e.isPure))),this._isPure=e,e}get isLiteral(){return!1}get ops(){return this._ops}get nops(){return this._ops.length}get op1(){return this._ops[0]??this.engine.symbol("Missing")}get op2(){return this._ops[1]??this.engine.symbol("Missing")}get op3(){return this._ops[2]??this.engine.symbol("Missing")}get functionDefinition(){return this._def}_repairDefinition(){if("string"==typeof this._head){if("_"===this._head[0])return;this._def=this.engine.getFunctionDefinition(this._head,this._wikidata),this._def&&(this._head=this._def.name)}}get domain(){const e=this._def;if(!e)return this.engine.domain("Anything");if("function"==typeof e.evalDomain){const i=e.evalDomain(this.engine,this._ops);return"string"==typeof i?this.engine.domain(i):i??this.engine.domain("Nothing")}return e.domain??(e.numeric?this.engine.domain("Number"):this.engine.domain("Nothing"))}isLess(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<0}}isLessEqual(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<=0}}isGreater(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>0}}isGreaterEqual(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>=0}}get isZero(){const e=this.sgn;return null!==e&&("number"==typeof e?0===e:void 0)}get isNotZero(){const e=this.sgn;return null!==e&&("number"==typeof e?0!==e:void 0)}get isOne(){}get isNegativeOne(){}get isPositive(){const e=this.sgn;return null!==e&&("number"==typeof e?0!==e:void 0)}get isNonPositive(){const e=this.sgn;return null!==e&&("number"==typeof e?e<=0:void 0)}get isNegative(){const e=this.sgn;return null!==e&&("number"==typeof e?e<0:void 0)}get isNonNegative(){const e=this.sgn;return null!==e&&("number"==typeof e?e>=0:void 0)}get isNumber(){return this.domain.isSubsetOf("Number")}get isInteger(){return this.domain.isSubsetOf("Integer")}get isRational(){return this.domain.isSubsetOf("RationalNumber")}get isAlgebraic(){return this.domain.isSubsetOf("AlgebraicNumber")}get isReal(){return this.domain.isSubsetOf("RealNumber")}get isExtendedReal(){return this.domain.isSubsetOf("ExtendedRealNumber")}get isComplex(){return this.domain.isSubsetOf("ComplexNumber")}get isImaginary(){return this.domain.isSubsetOf("ImaginaryNumber")}get json(){return this._isCanonical?function(e,i,t,n){const r=e.jsonSerializationOptions.exclude;if("Add"===i&&2===t.length&&!r.includes("Subtract")){const i=t[0].asSmallInteger;if(null!==i&&i<0)return ri(e,"Subtract",[t[1],e.number(-i)],n);if("Negate"===t[0].head)return ri(e,"Subtract",[t[1],t[0].op1],n)}if("Multiply"===i&&!e.jsonSerializationOptions.exclude.includes("Divide")){const i=new ei(e,t).asRationalExpression();if("Divide"===i.head)return ri(e,i.head,i.ops,n)}if("Power"===i){if(!r.includes("Exp")&&"ExponentialE"===t[0]?.symbol)return ri(e,"Exp",[t[1]],n);if(t[1]?.isLiteral){const i=t[1].asSmallInteger;if(!r.includes("Square")&&2===i)return ri(e,"Square",[t[0]],n);if(-1===i)return ri(e,"Divide",[e.ONE,t[0]],n);if(null!==i&&i<0)return ri(e,"Divide",[e.ONE,e.power(t[0],-i)],n);const[s,a]=t[1].rationalValue;if(1===s){if(!r.includes("Sqrt")&&2===a)return ri(e,"Sqrt",[t[0]],n);if(!r.includes("Root"))return ri(e,"Root",[t[0],e.number(a)],n)}if(-1===s){if(!r.includes("Sqrt")&&2===a)return ri(e,"Divide",[e.ONE,e._fn("Sqrt",[t[0]])],n);if(!r.includes("Root"))return ri(e,"Divide",[e.ONE,e._fn("Root",[t[0],e.number(a)])],n)}}}return ri(e,i,t,n)}(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this._wikidata}):ri(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this._wikidata})}has(e){if("string"==typeof this._head)if("string"==typeof e){if(this._head===e)return!0}else if(e.includes(this._head))return!0;for(const i of this._ops)if(i.has(e))return!0;return!1}isSame(e){if(this===e)return!0;if(!(e instanceof gi))return!1;if(this.nops!==e.nops)return!1;if("string"==typeof this.head){if(this.head!==e.head)return!1}else{if("string"==typeof e.head)return!1;if(!e.head||!this.head.isSame(e.head))return!1}const i=this._ops,t=e._ops;for(let e=0;e<i.length;e++)if(!i[e].isSame(t[e]))return!1;return!0}match(e,i){if(!(e instanceof gi))return null;let t={};if("string"==typeof this.head){if(this.head!==e.head)return null}else{if("string"==typeof e.head)return null;{if(!e.head)return null;const n=this.head.match(e.head,i);if(null===n)return null;t={...t,...n}}}const n=this._ops,r=e._ops;for(let e=0;e<n.length;e++){const s=n[e].match(r[e],i);if(null===s)return null;t={...t,...s}}return t}isEqual(e){if(!this.isCanonical)return this.canonical.isEqual(e);if((e=e.canonical).isNumber&&this.isNumber){const i=this.engine,t=i.add([this,i.negate(e)]).N();return!!t.isZero||(null!==t.asFloat&&0===i.chop(t.asFloat)||this.evaluate().isSame(e.evaluate()))}return this._def?.relationalOperator&&e.functionDefinition?.relationalOperator?this.evaluate().isSame(e.evaluate()):this.isSame(e)}get sgn(){const e=this.head;if("Negate"===e){const e=this._ops[0]?.sgn;if(void 0===e)return;return null===e?null:0===e?0:e>0?-1:1}if("Multiply"===e){const e=this._ops.reduce(((e,i)=>e*(i.sgn??NaN)),1);return isNaN(e)?null:e>0?1:e<0?-1:0}if("Add"===e){let e=0,i=0,t=0;const n=this._ops.length;for(const n of this._ops){const r=n.sgn;if(null==r)break;0===r&&(t+=1),r>0&&(e+=1),r<0&&(i+=1)}return t===n?0:e===n?1:i===n?-1:null}if("Divide"===e){const e=this._ops[0]?.sgn,i=this._ops[1]?.sgn;return null===e||null===i||void 0===e||void 0===i?null:0===e?0:e>0&&i>0||e<0&&i<0?1:-1}return"Square"===e?this._ops[0]?.isImaginary?-1:this._ops[0]?.isZero?0:1:"Abs"===e?this._ops[0]?.isZero?0:1:"Sqrt"===e?this._ops[0]?.isZero?0:this._ops[0]?.isImaginary?null:1:null}*map(e){let i=0;for(;i<this._ops.length;)yield e(this._ops[i++])}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get canonical(){if(this.isCanonical)return this;let e=this._def?.associative?ze(this._ops,this.head)??this._ops:this._ops;if(e=di(e,this._def?.hold??"none",(e=>"Nothing"===e.symbol?null:e.canonical)),this._def?.associative&&(e=ze(e,this.head)??e),this._def?.canonical){return this._def.canonical(this.engine,e)}if(!this._def)return this.engine._fn(this._head,e);if(1===e.length&&e[0].head===this._head)if(this._def.idempotent)e=e[0].ops;else if(this._def.involution)return e[0].op1;return e.length>1&&this._def.associative&&(e=ze(e,this._head)??e),e.length>1&&!0===this._def.commutative&&(e=e.sort(Ye)),this.engine._fn(this._head,e)}apply(e,i){const t=i??this.head;let n=!1;const r=[];for(const i of this._ops){const t=e(i);i!==t&&(n=!0),r.push(this.engine.box(t))}return n||this.head!==t?this.engine.fn(t,r):this}simplify(e){if(!this.isCanonical)return this.canonical.simplify(e);if("Hold"===this.head)return this;if("ReleaseHold"===this.head){const i=this.op1;return"Hold"!==i.head?i.simplify(e):i.op1.isMissing?this.engine.symbol("Nothing"):i.op1.simplify(e)}if(!this._def)return this;let i=this._def?.associative?ze(this._ops,this.head)??this._ops:this._ops;if(i=di(i,this._def.hold,(i=>i.simplify(e).canonical)),this._def?.associative&&(i=ze(i,this.head)??i),"string"!=typeof this._head)return pi(this._head,i).simplify(e);let t=this._def.simplify?.(this.engine,i)??this.engine.fn(this._head,i).canonical;const n=e?.rules??this.engine.cache("standard-simplification-rules",(()=>ui(this.engine,mi)),(e=>{for(const[i,t,n,r]of e)i._purge(),t._purge();return e}));let r=0,s=!1;do{const e=t.replace(n);null!==e?(t=fi(e,t),t===e&&(s=!0)):s=!0,r+=1}while(!s&&r<this.engine.iterationLimit);return t}evaluate(e){if(!this.isCanonical)return this.canonical.evaluate(e);if("Hold"===this.head)return this;if("ReleaseHold"===this.head){const i=this.op1;return"Hold"!==i.head?i.evaluate(e):i.op1.isMissing?this.engine.symbol("Nothing"):i.op1.evaluate(e)}if(!this._def)return this;const i=this._def;let t=di(i.associative?ze(this._ops,this.head)??this._ops:this._ops,i.hold,(i=>i.evaluate(e)??i));return i.associative&&(t=ze(t,this.head)??t),"string"!=typeof this._head?pi(this._head,t).evaluate(e):void 0===i.evaluate?this.engine.fn(this._head,t).canonical:"function"!=typeof i.evaluate?pi(i.evaluate,t).canonical:i.evaluate(this.engine,t)??this.engine.fn(this._head,t).canonical}N(e){if(!this.isCanonical)return this.canonical.N(e);if("Hold"===this.head)return this;if("ReleaseHold"===this.head){const i=this.op1;return"Hold"!==i.head?i.N(e):i.op1.isMissing?this.engine.symbol("Nothing"):i.op1.N(e)}if(!this._def)return this;const i=this._def;let t=i.associative?ze(this._ops,this.head)??this._ops:this._ops;if(t=di(t,this._def.hold,(i=>i.N(e))),i.associative&&(t=ze(t,this.head)??t),"string"!=typeof this._head)return pi(this._head,t).N(e);const n=i.N?.(this.engine,t)??this.evaluate();if(n.isLiteral){if(!Ue(this.engine)&&n.complexValue)return this.engine.NAN;if(!We(this.engine)&&n.decimalValue)return this.engine.number(n.decimalValue.toNumber())}return n}solve(e){return null}replace(e,i){return hi(this,e,i)}subs(e){return this.engine.fn(this._head,this._ops.map((i=>i.subs(e)))).canonical}}function pi(e,i){const t={__:e.engine.tuple(i),"_#":e.engine.number(i.length)};let n=1;for(const e of i)t["_"+n++]=e;return t._=t._1,e.subs(t)}function di(e,i,t){if(0===e.length)return[];const n=[];if("all"===i)return e;if("none"===i)for(let i=0;i<e.length;i++){const r=t(e[i]);null!==r&&n.push(r)}else if("first"===i){n.push(e[0]);for(let i=1;i<e.length;i++){const r=t(e[i]);null!==r&&n.push(r)}}else if("rest"===i){const i=t(e[0]);null!==i&&n.push(i);for(let i=1;i<e.length;i++)n.push(e[i])}else if("last"===i){for(let i=0;i<e.length-1;i++){const r=t(e[i]);null!==r&&n.push(r)}n.push(e[e.length-1])}else if("most"===i){for(let i=0;i<e.length-1;i++)n.push(e[i]);const i=t(e[e.length-1]);null!==i&&n.push(i)}return n}function vi(e){if("number"==typeof e&&!isNaN(e))return isFinite(e)?0===e?"NonNegativeInteger":Number.isInteger(e)?e>0?"PositiveInteger":e<0?"NegativeInteger":"Integer":e>0?"PositiveNumber":e<0?"NegativeNumber":"RealNumber":"ExtendedRealNumber";if(e instanceof qe.exports.Decimal)return e.isNaN()?"Number":e.isFinite()?e.isZero()?"NonNegativeInteger":e.isInteger()?e.gt(0)?"PositiveInteger":e.lt(0)?"NegativeInteger":"Integer":e.gt(0)?"PositiveNumber":e.lt(0)?"NegativeNumber":"RealNumber":"ExtendedRealNumber";if(e instanceof Oe.exports.Complex){const i=e;return 0===i.im?vi(i.re):0===i.re&&0!==i.im?"ImaginaryNumber":"ComplexNumber"}if(Array.isArray(e)){const[i,t]=we(e);if(!Number.isNaN(i)&&!Number.isNaN(t))return 1!==t?"RationalNumber":vi(i)}return"Number"}function bi(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=7919)return Ne.has(e);for(const i of Ne)if(e%i==0)return!1;return e>=0x3ffffffffffe5?!!function(e,i){let t=0,n=e-1;for(;n%2==0;)n/=2,++t;e:do{let i=Math.pow(2+Math.floor(Math.random()*(e-3)),n)%e;if(1!==i&&i!==e-1){for(let n=t-1;n--;){if(i=i*i%e,1===i)return!1;if(i===e-1)continue e}return!1}}while(--i);return!0}(e,30)&&void 0:e===function(e){if(1===e)return 1;if(e%2==0)return 2;if(e%3==0)return 3;if(e%5==0)return 5;const i=Math.floor(Math.sqrt(e));let t=7;for(;t<=i;){if(e%t==0)return t;if(e%(t+4)==0)return t+4;if(e%(t+6)==0)return t+6;if(e%(t+10)==0)return t+10;if(e%(t+12)==0)return t+12;if(e%(t+16)==0)return t+16;if(e%(t+22)==0)return t+22;if(e%(t+24)==0)return t+24;t+=30}return e}(e)}class yi extends Ve{constructor(e,i,t){if(super(e,t),this._isCanonical=!0,i instanceof Oe.exports.Complex)Number.isNaN(i.re)||Number.isNaN(i.im)?this._value=NaN:0===e.chop(i.im)?this._value=i.re:this._value=Ue(e)?i:NaN;else if(Array.isArray(i)){let[e,t]=i;t<0&&([e,t]=[-e,-t]),1===t?this._value=e:0===e?this._value=0===t?NaN:e:(this._value=[e,t],this._isCanonical=1===_e(e,t))}else i instanceof qe.exports.Decimal?this._value=We(e)?i:i.toNumber():"number"==typeof i?this._value=i:We(e)?this._value=e.decimal(i):"string"==typeof i&&(this._value=Number.parseFloat(i));"number"==typeof this._value?Number.isInteger(this._value)?this._head="Integer":this._head="Number":this._value instanceof Oe.exports.Complex?this._head="ComplexNumber":Array.isArray(this._value)?this._head="RationalNumber":this._value instanceof qe.exports.Decimal?this._value.isInteger()?this._head="Integer":this._head="RealNumber":this._head="Number",e._register(this)}get hash(){if(void 0!==this._hash)return this._hash;let e=0;return e="number"==typeof this._value?Qe(this._value.toString()):this._value instanceof Oe.exports.Complex?Qe(this._value.re.toString()+" +i "+this._value.im.toString()):this._value instanceof qe.exports.Decimal?Qe(this._value.toString()):Qe(this._value[0].toString()+" / "+this._value[1].toString()),this._hash=e,e}get head(){return this._head}get isPure(){return!0}get isLiteral(){return!0}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get numericValue(){if(!Array.isArray(this._value))return this;const[e,i]=this._value,t=this.engine;return We(t)?new yi(t,t.decimal(e).div(i)):new yi(t,e/i)}get machineValue(){return"number"==typeof this._value?this._value:null}get decimalValue(){return this._value instanceof qe.exports.Decimal?this._value:null}get complexValue(){return this._value instanceof Oe.exports.Complex?this._value:null}get rationalValue(){return Array.isArray(this._value)?this._value:[null,null]}get asFloat(){if("number"==typeof this._value)return this._value;if(this._value instanceof qe.exports.Decimal){if(this._value.isNaN())return NaN;if(!this._value.isFinite())return this._value.isPositive()?1/0:-1/0;if(Te(this._value))return this._value.toNumber()}return Array.isArray(this._value)?this._value[0]/this._value[1]:null}get asSmallInteger(){if("number"==typeof this._value)return Number.isInteger(this._value)&&this._value>=-1e6&&this._value<=1e6?this._value:null;if(this._value instanceof qe.exports.Decimal)return this._value.isInteger()&&this._value.gte(-1e6)&&this._value.lte(1e6)?this._value.toNumber():null;if(Array.isArray(this._value)){const e=this._value[0]/this._value[1];return Number.isInteger(e)&&e>=-1e6&&e<=1e6?e:null}return 0===this.engine.chop(this._value.im)&&Number.isInteger(this._value.re)&&this._value.re>=-1e6&&this._value.re<=1e6?this._value.re:null}get asRational(){const[e,i]=this.rationalValue;if(null!==e&&null!==i)return[e,i];const t=this.asSmallInteger;return null!==t?[t,1]:[null,null]}get domain(){return void 0===this._domain&&(this._domain=this.engine.domain(vi(this._value))),this._domain}get json(){return ai(this.engine,this._value,{latex:this._latex})}get sgn(){if(this.isZero)return 0;if(this._value instanceof Oe.exports.Complex)return null;if("number"==typeof this._value)return this._value<0?-1:this._value>0?1:null;if(this._value instanceof qe.exports.Decimal)return this._value.isNegative()?-1:this._value.isPositive()?1:null;if(Array.isArray(this._value)){const[e,i]=this._value;return 0===e&&0!==i?0:e<0?-1:e>0?1:null}return null}isSame(e){if(this===e)return!0;if(!(e instanceof yi))return!1;if(Array.isArray(this._value)){if(!Array.isArray(e._value))return!1;const[i,t]=e._value;return this._value[0]===i&&this._value[1]===t}return this._value instanceof qe.exports.Decimal?e._value instanceof qe.exports.Decimal&&this._value.eq(e._value):this._value instanceof Oe.exports.Complex?e._value instanceof Oe.exports.Complex&&this._value.equals(e._value):"number"==typeof this._value&&("number"==typeof e._value&&this._value===e._value)}isEqual(e){if(this===e)return!0;const i=e.numericValue;if(void 0===i)return!1;if(!(i instanceof yi))return!1;if(Array.isArray(this._value)){const e=i.asFloat;return null!==e&&0===this.engine.chop(this._value[0]/this._value[1]-e)}if(this._value instanceof qe.exports.Decimal)return 0===this.engine.chop(this._value.sub(i.decimalValue??i.asFloat??NaN));if(this._value instanceof Oe.exports.Complex){if(i instanceof Oe.exports.Complex)return 0===this.engine.chop(i.re-this._value.re)&&0===this.engine.chop(i.im-this._value.im);if(0!==this._value.im)return!1}const t=this.asFloat,n=i.asFloat;return null!==t&&null!==n&&0===this.engine.chop(n-t)}match(e,i){return this.isEqualWithTolerance(e,i?.numericTolerance??0)?{}:null}isEqualWithTolerance(e,i){if(this===e)return!0;if(!(e instanceof yi))return!1;if(Array.isArray(this._value)){const t=e.asFloat;return null!==t&&Math.abs(this._value[0]/this._value[1]-t)<=i}if(this._value instanceof qe.exports.Decimal)return this._value.sub(e.decimalValue??e.asFloat??NaN).abs().lte(i);if(this._value instanceof Oe.exports.Complex){if(e._value instanceof Oe.exports.Complex)return Math.abs(e._value.re-this._value.re)<=i&&Math.abs(e._value.im-this._value.im)<=i;if(0!==this._value.im)return!1}const t=this.asFloat,n=e.asFloat;return null!==t&&null!==n&&Math.abs(n-t)<=i}isLess(e){if(e=e.N(),!this.isImaginary&&!e.isImaginary){if("number"==typeof this._value){const i=e.machineValue;if(null!==i)return this._value<i;const t=e.decimalValue;if(null!==t)return t.greaterThanOrEqualTo(this._value);const[n,r]=e.rationalValue;return null!==n&&null!==r&&this._value*r<n}if(this._value instanceof qe.exports.Decimal){const i=e.machineValue;if(null!==i)return this._value.lt(i);const t=e.decimalValue;if(null!==t)return this._value.lt(t);const[n,r]=e.rationalValue;return null!==n&&null!==r&&this._value.mul(r).lt(n)}if(Array.isArray(this._value)){const[i,t]=this._value;if("number"==typeof e)return i<e*t;const[n,r]=e.rationalValue;if(null!==n&&null!==r)return i*r<n*t;const s=e.decimalValue;return null!==s&&s.mul(i).lt(t)}this._value,Oe.exports.Complex}}isLessEqual(e){e=e.N();const i=this.isLess(e);if(void 0===i)return;const t=this.isEqual(e);return void 0!==t?i||t:void 0}isGreater(e){const i=this.isLess(e);if(void 0!==i)return!i}isGreaterEqual(e){e=e.N();const i=this.isLess(e);if(void 0===i)return;const t=this.isEqual(e);return void 0!==t?!i||t:void 0}get isPositive(){const e=this.sgn;if(null!=e)return e>0}get isNonNegative(){const e=this.sgn;if(null!=e)return e>=0}get isNegative(){const e=this.sgn;if(null!=e)return e<0}get isNonPositive(){const e=this.sgn;if(null!=e)return e<=0}get isZero(){return!Array.isArray(this._value)&&0===this.engine.chop(this._value)}get isNotZero(){return!!Array.isArray(this._value)||0!==this.engine.chop(this._value)}get isOne(){if("number"==typeof this._value)return 1===this._value;if(this._value instanceof qe.exports.Decimal)return this._value.equals(this.engine.DECIMAL_ONE);if(Array.isArray(this._value)){const[e,i]=this._value;return 0!==i&&e===i}return this._value.equals(1)}get isNegativeOne(){if("number"==typeof this._value)return-1===this._value;if(this._value instanceof qe.exports.Decimal)return this._value.equals(this.engine.DECIMAL_NEGATIVE_ONE);if(Array.isArray(this._value)){const[e,i]=this._value;return e<0&&0!==i&&-e===i}return this._value.equals(-1)}get isOdd(){return!(!this.isOne&&!this.isNegativeOne)||!this.isZero&&(!!this.isInteger&&("number"==typeof this._value?this._value%2!=0:this._value instanceof qe.exports.Decimal?!this._value.mod(2).isZero():void 0))}get isEven(){return!this.isOne&&!this.isNegativeOne&&(!!this.isZero||!!this.isInteger&&("number"==typeof this._value?this._value%2==0:this._value instanceof qe.exports.Decimal?this._value.mod(2).isZero():void 0))}get isPrime(){return!(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)&&("number"==typeof this._value?bi(this._value):void 0)}get isComposite(){return!(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)&&("number"==typeof this._value?!bi(this._value):void 0)}get isInfinity(){return"number"==typeof this._value?!Number.isFinite(this._value)&&!Number.isNaN(this._value):(this._value instanceof qe.exports.Decimal||this._value instanceof Oe.exports.Complex)&&!this._value.isFinite()&&!this._value.isNaN()}get isNaN(){return"number"==typeof this._value?Number.isNaN(this._value):(this._value instanceof qe.exports.Decimal&&this._value.isNaN(),this._value instanceof Oe.exports.Complex&&this._value.isNaN(),!1)}get isFinite(){return!this.isInfinity&&!isNaN}get isNumber(){return!0}get isInteger(){return"number"==typeof this._value?Number.isInteger(this._value):this._value instanceof qe.exports.Decimal&&this._value.isInteger()}get isRational(){return!!Array.isArray(this._value)||this.isInteger}get isAlgebraic(){if(this.isRational)return!0}get isReal(){return!!this.isFinite&&(!(this._value instanceof Oe.exports.Complex)||0===this.engine.chop(this._value.im))}get isExtendedReal(){return this.isInfinity||this.isReal}get isComplex(){return!this.isNaN}get isImaginary(){return this._value instanceof Oe.exports.Complex&&0!==this._value.im}get isExtendedComplex(){return this.isInfinity||!this.isNaN}get canonical(){if(this._isCanonical)return this;if(Array.isArray(this._value)){const[e,i]=we(this._value);return Number.isNaN(e)||Number.isNaN(i)?this.engine.NAN:1===i?this.engine.number(e):0===i?0!==e&&Number.isFinite(e)?e<0?this.engine.NEGATIVE_INFINITY:this.engine.POSITIVE_INFINITY:this.engine.NAN:0===e?this.engine.ZERO:this.engine.number([e,i])}return this}simplify(e){return this.canonical}N(e){if(Array.isArray(this._value)){const e=this.engine,[i,t]=this._value;return We(e)?e.number(e.decimal(i).div(t)):e.number(i/t)}return this}}class Ni extends Ve{constructor(e,i,t){super(e,t),this._string=i.normalize(),e._register(this)}get hash(){return Qe("String"+this._string)}get json(){return e=this.engine,i=i=this._string,e.jsonSerializationOptions.shorthands.includes("string")?`'${i}'`:{str:i};var e,i}get head(){return"String"}get isPure(){return!0}get isLiteral(){return!0}get isCanonical(){return!0}set isCanonical(e){}get domain(){return this.engine.domain("String")}get complexity(){return 19}get string(){return this._string}isEqual(e){return e.string===this._string}isSame(e){return e.string===this._string}match(e,i){return e instanceof Ni&&this._string===e._string?{}:null}}function xi(e){return Object.fromEntries(Object.entries(e).filter((([e,i])=>void 0!==i)))}function _i(e){const i={...e};return e.zero||e.one||e.negativeOne?(i.number=!0,i.integer=!0,i.rational=!0,i.algebraic=!0,i.real=!0,i.extendedReal=!0,i.complex=!0,i.extendedComplex=!0,i.imaginary=!1,i.positive=!1,i.nonPositive=!0,i.negative=!1,i.nonNegative=!0,i.zero=e.zero,i.notZero=!e.zero,i.one=e.one,i.negativeOne=e.negativeOne,i.negativeOne=!1,i.infinity=!1,i.NaN=!1,i.finite=!0,i.even=e.one,i.odd=!e.one,i.prime=!1,i.composite=!1,i):(!0===i.notZero&&(i.imaginary||(i.real=!0),i.zero=!1),(i.positive||i.nonNegative)&&(i.negativeOne=!1),i.positive?(i.nonPositive=!1,i.negative=!1,i.nonNegative=!0):i.nonPositive?(i.positive=!1,i.negative=i.notZero,i.nonNegative=!i.zero):i.negative?(i.positive=!1,i.nonPositive=i.notZero,i.nonNegative=!1):i.nonNegative&&(i.positive=i.notZero,i.nonPositive=!i.zero,i.negative=!1),(i.positive||i.negative||i.nonPositive||i.nonNegative)&&(i.number=!0,i.finite?i.real=!0:i.finite||(i.complex=!0),i.imaginary=!1),i.infinity&&(i.finite=!1,i.NaN=!1),i.finite&&(i.number=!0,i.complex=!0,i.infinity=!1,i.NaN=!1),e.even&&(i.odd=!1),e.odd&&(i.even=!1),i.integer&&(i.rational=!0),i.rational&&(i.algebraic=!0),i.algebraic&&(i.real=!0),i.extendedReal&&(i.real=!0),i.real&&(i.complex=!0),i.imaginary&&(i.complex=!0),i.extendedComplex&&(i.complex=!0),i.complex&&(i.number=!0),i.real&&i.infinity&&(i.extendedReal=!0),i.complex&&i.infinity&&(i.extendedComplex=!0),(i.even||i.infinity||i.NaN||i.negative||i.imaginary||!1===i.integer)&&(i.prime=!1),i.number&&i.prime&&(i.composite=!1),i)}function wi(e){if(!e)return{};const i=e.symbol,t={};return e.isSubsetOf("Number")?(t.number=!0,"Integer"===i&&(t.integer=!0),"RationalNumber"===i&&(t.rational=!0),"AlgebraicNumber"===i&&(t.algebraic=!0),"TranscendentalNumber"===i&&(t.algebraic=!1,t.real=!0),"ExtendedRealNumber"===i&&(t.extendedReal=!0),"RealNumber"===i&&(t.real=!0),"ImaginaryNumber"===i&&(t.imaginary=!0),"ExtendedComplexNumber"===i&&(t.extendedComplex=!0),"ComplexNumber"===i&&(t.complex=!0)):(t.number=!1,t.integer=!1,t.rational=!1,t.algebraic=!1,t.real=!1,t.extendedReal=!1,t.complex=!1,t.extendedComplex=!1,t.imaginary=!1,t.positive=!1,t.nonPositive=!1,t.negative=!1,t.nonNegative=!1,t.zero=!1,t.notZero=!1,t.one=!1,t.negativeOne=!1,t.infinity=!1,t.NaN=!1,t.odd=!1,t.even=!1,t.prime=!1,t.composite=!1),xi(_i(t))}function Si(e){return xi({number:(e=e.canonical).isNumber,integer:e.isInteger,rational:e.isRational,algebraic:e.isAlgebraic,real:e.isReal,extendedReal:e.isExtendedReal,complex:e.isComplex,extendedComplex:e.isExtendedComplex,imaginary:e.isImaginary,positive:e.isPositive,nonPositive:e.isNonPositive,negative:e.isNegative,nonNegative:e.isNonNegative,zero:e.isZero,notZero:e.isNotZero,one:e.isOne,negativeOne:e.isNegativeOne,infinity:e.isInfinity,NaN:e.isNaN,finite:e.isFinite,even:e.isEven,odd:e.isOdd,prime:e.isPrime,composite:e.isComposite})}class Ei{constructor(e,i){this._engine=e,this._def=i,this.scope=e.context,this.name=i.name,this.constant=i.constant??!1,this.hold=i.hold??!0,this._purge()}_purge(){this._value=this._value?._purge();const e=this._def,i=xi({description:e.description,wikidata:e.wikidata,number:e.number,integer:e.integer,rational:e.rational,algebraic:e.algebraic,real:e.real,extendedReal:e.extendedReal,complex:e.complex,zero:e.zero,notZero:e.notZero,one:e.one,negativeOne:e.negativeOne,infinity:e.infinity,NaN:e.NaN,finite:e.finite,even:e.even,odd:e.odd,prime:e.prime,composite:e.composite});if("value"in e&&"number"==typeof e.value){const t=this._engine.number(e.value);let n;const r=e.domain?this._engine.domain(e.domain):void 0;return n=r&&t.domain.isSubsetOf(r)?r:t.domain,this._value=t,this._domain=n,this.setProps(Si(t)),this.setProps(wi(n)),void this.setProps(i)}let t,n;if(je(e.value)?t=this._engine.parse(e.value):"function"==typeof e.value?t=this._engine.box(e.value(this._engine)??"Undefined"):e.value&&(t=this._engine.box(e.value)),!t&&!1===e.hold)throw Error(`Symbol definition "${e.name}": Expected a value "hold=false" `);t=t?.canonical;const r=e.domain?this._engine.domain(e.domain):void 0;if(n=!r||t&&!t.domain.isSubsetOf(r)?t?.domain??this._engine.defaultDomain??this._engine.domain("Anything"):r,!t)return this._value=void 0,this._domain=n,this.setProps(wi(n)),void this.setProps(i);this._value=t,this._domain=n,this.setProps(Si(t)),this.setProps(wi(n)),this.setProps(i)}get value(){return this._value}set value(e){if(this.constant)throw Error(`The value of the constant "${this.name}" cannot be changed`);this._value=e,e&&this.setProps(Si(e))}get domain(){return this._domain}set domain(e){if(!e)return void(this._domain=void 0);e=this._engine.domain(e);const i=this.value?.domain;i&&!i.isSubsetOf(e)&&(e=i),this._domain=e,this.setProps(wi(e))}updateFlags(e){this.setProps(_i(e))}setProps(e){e.wikidata&&(this.wikidata=e.wikidata),e.description&&(this.description=e.description),void 0!==e.number&&(this._number=e.number),void 0!==e.integer&&(this._integer=e.integer),void 0!==e.rational&&(this._rational=e.rational),void 0!==e.algebraic&&(this._algebraic=e.algebraic),void 0!==e.real&&(this._real=e.real),void 0!==e.extendedReal&&(this._extendedReal=e.extendedReal),void 0!==e.complex&&(this._complex=e.complex),void 0!==e.extendedComplex&&(this._extendedComplex=e.extendedComplex),void 0!==e.imaginary&&(this._imaginary=e.imaginary),void 0!==e.positive&&(this._positive=e.positive),void 0!==e.nonPositive&&(this._nonPositive=e.nonPositive),void 0!==e.negative&&(this._negative=e.negative),void 0!==e.nonNegative&&(this._nonNegative=e.nonNegative),void 0!==e.zero&&(this._zero=e.zero),void 0!==e.notZero&&(this._notZero=e.notZero),void 0!==e.one&&(this._one=e.one),void 0!==e.negativeOne&&(this._negativeOne=e.negativeOne),void 0!==e.infinity&&(this._infinity=e.infinity),void 0!==e.finite&&(this._finite=e.finite),void 0!==e.NaN&&(this._NaN=e.NaN),void 0!==e.even&&(this._even=e.even),void 0!==e.odd&&(this._odd=e.odd),void 0!==e.prime&&(this._prime=e.prime),void 0!==e.composite&&(this._composite=e.composite)}get number(){return this._number}set number(e){this.updateFlags({number:e})}get integer(){return this._integer}set integer(e){this.updateFlags({integer:e})}get rational(){return this._rational}set rational(e){this.updateFlags({rational:e})}get algebraic(){return this._algebraic}set algebraic(e){this.updateFlags({algebraic:e})}get real(){return this._real}set real(e){this.updateFlags({real:e})}get extendedReal(){return this._extendedReal}set extendedReal(e){this.updateFlags({extendedReal:e})}get complex(){return this._complex}set complex(e){this.updateFlags({complex:e})}get extendedComplex(){return this._extendedComplex}set extendedComplex(e){this.updateFlags({extendedComplex:e})}get imaginary(){return this._imaginary}set imaginary(e){this.updateFlags({imaginary:e})}get positive(){return this._positive}set positive(e){this.updateFlags({positive:e})}get nonPositive(){return this._nonPositive}set nonPositive(e){this.updateFlags({nonPositive:e})}get negative(){return this._negative}set negative(e){this.updateFlags({negative:e})}get nonNegative(){return this._nonNegative}set nonNegative(e){this.updateFlags({nonNegative:e})}get zero(){return this._zero}set zero(e){this.updateFlags({zero:e})}get notZero(){return this._notZero}set notZero(e){this.updateFlags({notZero:e})}get one(){return this._one}set one(e){this.updateFlags({one:e})}get negativeOne(){return this._negativeOne}set negativeOne(e){this.updateFlags({negativeOne:e})}get infinity(){return this._infinity}set infinity(e){this.updateFlags({infinity:e})}get finite(){return this._finite}set finite(e){this.updateFlags({finite:e})}get NaN(){return this._NaN}set NaN(e){this.updateFlags({NaN:e})}get even(){return this._even}set even(e){this.updateFlags({even:e})}get odd(){return this._odd}set odd(e){this.updateFlags({odd:e})}get prime(){if(void 0===this._prime&&this._value?.isNumber)if(!this._value.isInteger||this._value.isNonPositive)this._prime=!1,this._composite=!1;else{const e=this._value.asFloat;null!==e?(this._prime=bi(e),this._composite=!this._prime):(this._prime=void 0,this._composite=void 0)}return this._prime}set prime(e){this.updateFlags({prime:e})}get composite(){if(void 0===this._composite){const e=this.prime;this._composite=void 0===e?void 0:!e}return this._composite}set composite(e){this.updateFlags({composite:e})}}class Ii extends Ve{constructor(e,i,t){if(super(e,t),this._name=i.normalize(),n=this._name,/[\u0000-\u0020\u0022\u0060\ufffe\uffff]/.test(n)||/^[\u0021\u0022\u0024-\u002e\u003a\u003f\u0040\u005b\u005d\u005e\u007b\u007d\u007e]$/.test(n[0]))throw Error(`The name "${this._name}" cannot be used as a symbol name`);var n;this._repairDefinition(),e._register(this)}get hash(){return void 0===this._hash&&(this._hash=Qe(this._name)),this._hash}_purge(){return this._def?._purge()}get isPure(){return(this._def?.constant&&this._def.value?.isPure)??!1}get isCanonical(){return!0}set isCanonical(e){}get wikidata(){return this._wikidata??this._def?.wikidata??""}get description(){return this._def&&this._def.description?"string"==typeof this._def.description?[this._def.description]:this._def.description:[]}get url(){return this._def?.url??""}get complexity(){return 7}get head(){return"Symbol"}get symbol(){return this._name}get isMissing(){return"Missing"===this._name}get isLiteral(){return!1}get symbolDefinition(){return this._def}_repairDefinition(){if("_"===this._name[0])return;let e;this._wikidata&&(e=this.engine.getSymbolDefinition("",this._wikidata)),e||(e=this.engine.getSymbolDefinition(this._name),e&&e.wikidata&&this._wikidata&&e.wikidata!==this._wikidata&&(e=void 0)),e?(this._name=e.name,this._def=e):null!==this.engine.defaultDomain?(this._def=this.engine.defineSymbol({name:this._name,wikidata:this._wikidata,domain:this.engine.defaultDomain,...wi(this.engine.defaultDomain)}),this._name=this._def.name):this._def=void 0}get value(){return this._def?.value}set value(e){if("_"===this._name[0])throw Error(`The value of the wildcard "${this._name}" cannot be changed`);let i;if(this.engine.forget(this._name),void 0!==e){const t=this.engine.box(e);i=t.value??t.evaluate()}this._def?this._def.value=i:this._def=this.engine.defineSymbol({name:this._name,value:i,domain:this.engine.defaultDomain??this.engine.domain("Anything")})}get numericValue(){return this._def?.value?.numericValue}get domain(){return this._def?.domain??this.engine.domain("Anything")}set domain(e){if("_"===this._name[0])throw Error(`The domain of the wildcard "${this._name}" cannot be changed`);this._def?this._def.domain=e:this._def=this.engine.defineSymbol({name:this._name,domain:e,...wi(e)})}get json(){return si(this.engine,this._name,{wikidata:this._wikidata})}get sgn(){const e=this.value?.sgn;return void 0!==e?e:!0===this._def?.zero?0:!0===this._def?.positive?1:!0===this._def?.negative?-1:void 0}has(e){return"string"==typeof e?this._name===e:e.includes(this._name)}isSame(e){return e instanceof Ii&&this._name===e._name}match(e,i){return e instanceof Ii&&this._name===e._name?{}:null}isEqual(e){if(this===e)return!0;if(null!==e.symbol)return e.symbol===this._name;const i=this._def?.value;if(i)return i.isEqual(e);if(e.isZero){if(this.isZero)return!0;if(this.isNotZero)return!1}return this.isZero&&e.isNotZero||this.engine.ask(["NotEqual",this,e]).length,!1}isLess(e){if(null!==e.symbol&&e.symbol===this._name)return!1;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<0}}isLessEqual(e){if(null!==e.symbol&&e.symbol===this._name)return!0;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<=0}return this.isLess(e)||this.isEqual(e)}isGreater(e){if(null!==e.symbol&&e.symbol===this._name)return!1;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>0}}isGreaterEqual(e){if(null!==e.symbol&&e.symbol===this._name)return!0;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>=0}return this.isGreater(e)||this.isEqual(e)}get isZero(){return this._def?.zero??this._def?.value?.isZero}get isNotZero(){const e=this._def?.notZero;if("boolean"==typeof e)return e;const i=this.sgn;return"number"==typeof i?0!==i:void 0}get isOne(){return this._def?.one}get isNegativeOne(){return this._def?.negativeOne}get isOdd(){return this._def?.odd}get isEven(){return this._def?.even}get isPrime(){return this._def?.prime}get isComposite(){return this._def?.composite}get isInfinity(){return this._def?.infinity}get isNaN(){return this._def?.NaN}get isPositive(){return this._def?.positive}get isNonPositive(){return this._def?.nonPositive}get isNegative(){return this._def?.negative}get isNonNegative(){return this._def?.nonNegative}get isNumber(){return this._def?.number}get isInteger(){return this._def?.integer}get isRational(){return this._def?.rational}get isAlgebraic(){return this._def?.rational}get isReal(){return this._def?.real}get isExtendedReal(){return this._def?.extendedReal}get isComplex(){return this._def?.complex}get isImaginary(){return this._def?.imaginary}get canonical(){return!1===this._def?.hold?this._def?.value?.value??this._def?.value??this:this}simplify(e){const i=e?.rules?this.replace(e.rules)??this:this;if(!1===i.symbolDefinition?.hold){const t=i.value;if(t)return t.simplify(e)}return i}evaluate(e){return!0===this.symbolDefinition?.hold?this:this._def?.value?.evaluate(e)??this}N(e){const i=this._def?.value;return i?.N(e)??i?.evaluate(e)??i??this}replace(e,i){return hi(this,e,i)}subs(e){return e[this._name]??this}}class ki extends Ii{constructor(e,i,t){super(e,i,t)}get head(){return"Domain"}get domain(){return this.engine.domain("Domain")}isSubsetOf(e){return i=this._name,{Number:["Number","ExtendedComplexNumber","ExtendedRealNumber","ComplexNumber","ImaginaryNumber","RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],ExtendedComplexNumber:["Number","ExtendedRealNumber","ComplexNumber","ImaginaryNumber","RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],ExtendedRealNumber:["ExtendedRealNumber","RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],ComplexNumber:["ComplexNumber","ImaginaryNumber"],ImaginaryNumber:["ImaginaryNumber"],RealNumber:["RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],TranscendentalNumber:["TranscendentalNumber"],AlgebraicNumber:["AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NonNegativeInteger","NonPositiveInteger","PositiveInteger"],RationalNumber:["RationalNumber","Integer","NegativeInteger","NonNegativeInteger","NonPositiveInteger","PositiveInteger"],Integer:["Integer","NegativeInteger","NonNegativeInteger","NonPositiveInteger","PositiveInteger"],NegativeNumber:["NegativeNumber","NegativeInteger"],NonNegativeNumber:["NonNegativeNumber","PositiveNumber","NonNegativeInteger","PositiveInteger"],NonPositiveNumber:["NonPositiveNumber","NegativeNumber","NegativeInteger"],PositiveNumber:["PositiveNumber","PositiveInteger"],NegativeInteger:["NegativeInteger"],PositiveInteger:["PositiveInteger"],NonNegativeInteger:["NonNegativeInteger","PositiveInteger"],NonPositiveInteger:["NegativeInteger"]}["string"==typeof e?e:e.symbol??""]?.includes(i)??void 0??!1;var i}}function Mi(e,i){if(null==i)return e.symbol("Nothing");if(i instanceof Ve)return i;if(Array.isArray(i)){if("number"!=typeof i[0])return new gi(e,"string"==typeof i[0]?i[0]:Mi(e,i[0]),i.slice(1).map((i=>Mi(e,i))));const[t,n]=i;return"number"==typeof n&&Number.isInteger(t)&&Number.isInteger(n)?e.number(i):e.fn("Divide",i)}if("number"==typeof i||i instanceof Oe.exports.Complex||i instanceof qe.exports.Decimal)return e.number(i);if("string"==typeof i)return i.startsWith("'")&&i.endsWith("'")?new Ni(e,i.slice(1,-1)):e.symbol(i);if("object"==typeof i){const t={latex:i.latex,wikidata:i.wikidata};if("dict"in i)return new li(e,i.dict,t);if("fn"in i)return"string"==typeof i.fn[0]?function(e,i,t,n){if("Hold"===i)return new gi(e,"Hold",[qi(e,t[0]??"Missing")],n);if("String"===i)return 0===t.length?new Ni(e,"",n):new Ni(e,t.map((e=>Ci(e)??"")).join(""),n);if("Symbol"===i&&t.length>0)return e.symbol(t.map((e=>Ci(e)??"")).join(""),n);if(("Divide"===i||"Rational"===i)&&2===t.length){const i=w(t[0]),n=w(t[1]);if(null!==i&&null!==n&&Number.isInteger(i)&&Number.isInteger(n))return e.number([i,n])}if("Number"===i&&1===t.length)return Mi(e,t[0]);if("Complex"===i){if(1===t.length){const i=Mi(e,t[0]),r=i.asFloat;return null!==r&&0!==r?new yi(e,e.complex(0,r),n):e.mul([i,e.I])}if(2===t.length){const i=Mi(e,t[0]),r=Mi(e,t[1]),s=i.asFloat,a=r.asFloat;return null!==a&&null!==s?0===a&&0===s?e.ZERO:null!==a&&0!==a?new yi(e,e.complex(s,a),n):i:e.add([i,e.mul([r,e.I])],n)}}if("Negate"===i&&t.length>0&&"number"==typeof t[0])return e.number(-t[0],n);if("Single"===i||"Pair"===i||"Triple"===i)return e.fn("Tuple",t,n);if("Dictionary"===i){const i={};for(const n of t){const t=e.box(n),r=t.head;if("KeyValuePair"===r||"Pair"===r||"Tuple"===r){const e=t.op1;if(!e.isMissing){const n=t.op2;let r=e.symbol??e.string;if(!r&&e.isLiteral){const i=e.machineValue??e.asSmallInteger;i&&Number.isFinite(i)&&Number.isInteger(i)&&(r=i.toString())}r&&(i[r]=n)}}}return new li(e,i,n)}return new gi(e,i,t.map((i=>Mi(e,i))),n)}(e,i.fn[0],i.fn.slice(1),t):e.fn(Mi(e,i.fn[0]),i.fn.slice(1).map((i=>Mi(e,i))),t);if("str"in i)return new Ni(e,i.str,t);if("sym"in i)return e.symbol(i.sym,t);if("num"in i)return e.number(i,t)}return e.symbol("Undefined")}function Ai(e,i,t){if(i instanceof yi)return i;if(Array.isArray(i)){if(2!==i.length)throw Error("Array argument to boxNumber() should be two integers");const[n,r]=we(i);if("number"!=typeof n||"number"!=typeof r)throw Error("Array argument to boxNumber() should be two integers");if(!Number.isInteger(n)||!Number.isInteger(r))throw Error("Array argument to boxNumber() should be two integers");if(r===n)return 0===r?e.NAN:e.ONE;if(1===r)i=n;else{if(-1!==r)return 1===n&&2===r?e.HALF:new yi(e,[n,r],t);i=-n}}if(i instanceof Oe.exports.Complex){if(i.isNaN())return e.NAN;if(i.isZero())return e.ZERO;if(i.isInfinite())return e.COMPLEX_INFINITY;if(0!==i.im)return Ue(e)?new yi(e,i,t):e.NAN;i=i.re}if(i instanceof qe.exports.Decimal)return i.isNaN()?e.NAN:i.equals(e.DECIMAL_NEGATIVE_ONE)?e.NEGATIVE_ONE:i.isZero()?e.ZERO:i.equals(e.DECIMAL_ONE)?e.ONE:i.equals(e.DECIMAL_TWO)?e.TWO:!i.isFinite()&&i.isPositive()?e.POSITIVE_INFINITY:!i.isFinite()&&i.isNegative()?e.NEGATIVE_INFINITY:new yi(e,We(e)?i:i.toNumber(),t);if("object"==typeof i&&"num"in i)if("number"==typeof i.num)i=i.num;else if("string"==typeof i.num){let n=i.num.toLowerCase();if(/[0-9][nd]$/.test(n)&&(n=n.slice(0,-1)),n=n.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),/\([0-9]+\)$/.test(n)){const[i,t,r]=n.match(/(.+)\(([0-9]+)\)$/)??[];n=t+r.repeat(Math.ceil(e.precision/r.length))}return"nan"===n?e.NAN:"infinity"===n||"+infinity"===n?e.POSITIVE_INFINITY:"-infinity"===n?e.NEGATIVE_INFINITY:"0"===n?e.ZERO:"1"===n?e.ONE:"-1"===n?e.NEGATIVE_ONE:"2"===n?e.TWO:new yi(e,n,t)}if("number"==typeof i){if(Number.isNaN(i))return e.NAN;if(!Number.isFinite(i)&&i>0&&e.POSITIVE_INFINITY,!Number.isFinite(i)&&i<0&&e.NEGATIVE_INFINITY,-1===i)return e.NEGATIVE_ONE;if(0===i)return e.ZERO;if(1===i)return e.ONE;if(2===i)return e.TWO}return"number"==typeof i?new yi(e,i,t):null}function Di(e,i,t){if("string"==typeof i)return new ki(e,i,t);if(i instanceof ki)return i;if(!i.symbol)throw Error("Unexpected domain expression"+i.json);return new ki(e,i.symbol,t)}function qi(e,i){if("object"==typeof i&&i instanceof Ve)return i;if("string"==typeof i)return Mi(e,i);if(Array.isArray(i)){const t=i.map((i=>qi(e,i)));return new gi(e,t[0],t.slice(1))}if("object"==typeof i){if("dict"in i)return new li(e,i.dict);if("fn"in i)return qi(e,i.fn);if("str"in i)return new Ni(e,i.str);if("sym"in i)return Mi(e,i.sym);if("num"in i)return Mi(e,i.num)}return Mi(e,i)}function Ci(e){if("string"==typeof e)return e;if(e instanceof Ve)return e.string??e.symbol??e.toString();if("object"==typeof e){if("str"in e)return e.str;if("fn"in e&&"String"===e.fn[0]&&"string"==typeof e.fn[1])return e.fn[1]}return Array.isArray(e)&&"String"===e[0]&&"string"==typeof e[1]?e[1]:null}function Oi(e,i){if(!e.isLiteral)return null;let t;null!==e.machineValue&&(t=-e.machineValue),e.decimalValue&&(t=e.decimalValue.neg()),e.complexValue&&(t=e.complexValue.neg());const[n,r]=e.rationalValue;return null!==n&&null!==r&&(t=[-n,r]),void 0!==t?e.engine.number(t,i):null}function Vi(e,i){if("Negate"===e.head)return e.op1;if(e.isLiteral)return Oi(e,i);if("Add"===e.head){let t=e.ops.map((e=>Vi(e)));return t=ze(t,"Add")??t,e.engine.add(t,i)}return e.engine._fn("Negate",[e],i)}function Pi(e){if("Negate"===e.head)return e.op1;if(e.isLiteral)return Oi(e);const i=e.engine;if("Add"===e.head){let t=e.ops.map((e=>Pi(e)));return t=ze(t,"Add")??t,i.add(t)}return"Multiply"===e.head?function(e,i){let t=[],n=!1;for(const e of i)n||"Negate"!==e.head?t.push(e):(n=!0,t.push(e.op1));if(n)return e.mul(t);t=[];for(const e of i)!n&&e.isLiteral&&e.isInteger?(n=!0,t.push(Pi(e))):t.push(e);if(n)return e.mul(t);t=[];for(const e of i)!n&&e.isLiteral&&e.isNumber?(n=!0,t.push(Pi(e))):t.push(e);return n?e.mul(t):e._fn("Negate",[e._fn("Multiply",i)])}(i,e.ops):"Divide"===e.head?i.divide(Pi(e.op1),e.op2):i._fn("Negate",[e])}function Fi(e,i,t="simplify"){return Pi(i)}class Li{constructor(e,i){if(this._literal=[0,1],this._imaginary=0,this._posInfinityCount=0,this._negInfinityCount=0,this._terms=[],this.engine=e,i)for(const e of i)this.addTerm(e)}get isEmpty(){return 0===this._terms.length&&0===this._literal[0]&&0===this._imaginary&&0===this._negInfinityCount&&0===this._posInfinityCount}addTerm(e,i){if("Nothing"===e.symbol)return;if(void 0===i&&(i=[1,1]),e.isLiteral){if(e.isInfinity)return void(e.isPositive?this._posInfinityCount+=1:this._negInfinityCount+=1);const[t,n]=e.asRational;if(null!==t&&null!==n)return void(this._literal=[i[0]*(this._literal[0]*n+t*this._literal[1]),i[1]*n*this._literal[1]]);if(e.complexValue){let t=e.complexValue.re,n=e.complexValue.im;if(Number.isInteger(t)&&Math.abs(t)<=1e6&&(this._literal[0]+=this._literal[1]*t*i[0]/i[1],t=0),Number.isInteger(n)&&Math.abs(n)<=1e6&&(this._imaginary+=n*i[0]/i[1],n=0),0===t&&0===n)return;e=this.engine.number(this.engine.complex(t,n))}}let t;if([t,e]=Je(e),0===t[0])return;if(t=[t[0]*i[0],t[1]*i[1]],"Add"===e.head){for(const i of e.ops)this.addTerm(i,t);return}let n=!1;if(!e.isLiteral)if(this._terms.length>500){const i=e.hash;for(let r=0;r<this._terms.length;r++)if(!this._terms[r].term.isLiteral&&i===this._terms[r].term.hash&&e.isSame(this._terms[r].term)){const[e,i]=this._terms[r].coef,[s,a]=t;this._terms[r].coef=[e*a+i*s,i*a],n=!0;break}}else for(let i=0;i<this._terms.length;i++)if(!this._terms[i].term.isLiteral&&e.isSame(this._terms[i].term)){const[e,r]=this._terms[i].coef,[s,a]=t;this._terms[i].coef=[e*a+r*s,r*a],n=!0;break}n||this._terms.push({term:e,coef:t})}terms(){const e=this.engine;if(this._posInfinityCount>0&&this._negInfinityCount>0)return[e.NAN];if(this._posInfinityCount>0)return[e.POSITIVE_INFINITY];if(this._negInfinityCount>0)return[e.NEGATIVE_INFINITY];if(0===this._terms.length)return 0===this._literal[0]&&0===this._imaginary?[]:0===this._imaginary?[e.number(this._literal)]:0===this._literal[0]?[e.number(e.complex(0,this._imaginary))]:[e.number(this._literal),e.number(e.complex(0,this._imaginary))];const i=[];for(const{coef:[t,n],term:r}of this._terms)0!==t&&(t===n?i.push(r):t===-n?i.push(e.negate(r)):1===n?i.push(e.mul([e.number(t),r])):1===t?i.push(e.divide(r,e.number(n))):0!==t&&i.push(e.mul([e.number([t,n]),r])));return 0!==this._literal[0]&&i.push(e.number(this._literal)),0!==this._imaginary&&i.push(e.number(e.complex(0,this._imaginary))),ze(i,"Add")??i}asExpression(){const e=this.engine,i=this.terms();return 0===i.length?e.ZERO:1===i.length?i[0]:e._fn("Add",i.sort(((e,i)=>{const t=Ze(e),n=Ze(i);if(t<n)return-1;if(t>n)return 1;const r=Re(e),s=Re(i);if(r!==s)return s-r;const a=$e(e),o=$e(i);return a!==o?a-o:Ye(e,i)})))}}function Ti(e,i){if((i=ze(i,"Add")??i).length<=1)return i[0]??e.symbol("Nothing");if(2===i.length){let t=0,n=0;if(i[0].isLiteral&&(n=i[0].machineValue,n=null===n&&i[0].decimalValue?i[0].asFloat??0:0),0!==n?t=Ge(i[1]):(t=Ge(i[0]),0!==t&&(n=i[1].machineValue,n=null===n&&i[1].decimalValue?i[1].asFloat??0:0)),0!==t)return e.number(e.complex(n,t));if(i[0].isLiteral&&i[1].isLiteral){if(i[0].isZero)return i[1];if(i[1].isZero)return i[0];const[t,n]=i[0].asRational,[r,s]=i[1].asRational;if(null!==t&&null!==n&&null!==r&&null!==s)return e.number([t*s+r*n,n*s])}}return new Li(e,i).asExpression()}function zi(e,i,t){const n=new Li(e);for(const t of i){if(t.isImaginary&&t.isInfinity)return e.symbol("ComplexInfinity");if(t.isNaN||t.isMissing||"Undefined"===t.symbol)return e.NAN;n.addTerm(t)}return n.asExpression()}function Ri(e,i,t,n){if("ComplexInfinity"===t.symbol)return e.NAN;if(t.isLiteral){if(t.isZero)return e.ONE;if(i.isLiteral){if(i.isOne)return e.ONE;if(i.isZero){if(t.isPositive)return e.ZERO;if(t.isNegative)return e.COMPLEX_INFINITY}if(t.isOne)return i;if(t.isNegativeOne){if(i.isOne)return e.ONE;if(i.isNegativeOne)return e.NEGATIVE_ONE;if(i.isInfinity)return e.ZERO;const[t,r]=i.rationalValue;if(null!==t&&null!==r)return e.number([r,t],n);const s=i.asFloat;return null!==s&&Number.isInteger(s)?e.number([1,s],n):e._fn("Power",[i,e.NEGATIVE_ONE],n)}const r=t.asFloat;if(.5===r||-.5===r){const t=i.asSmallInteger;if(null!==t&&t>0){const[i,n]=xe(t,2);if(1===n&&1===i)return e.ONE;if(1!==i)return 1===n?e.number(r>=0?i:[1,i]):e.mul([e.number(i),e.power(e.number(n),e.HALF)])}return r>0?e._fn("Power",[i,e.HALF],n):e._fn("Power",[i,e.number([-1,2])],n)}if(i.isInfinity){if(t.complexValue){const i=t.complexValue.re;if(0===i)return e.NAN;if(i<0)return e.ZERO;if(i>0)return e.COMPLEX_INFINITY}if(i.isNegative){if(t.isInfinity)return e.NAN}else if(i.isPositive){if(t.isNegativeOne)return e.ZERO;if(t.isInfinity)return t.isNegative?e.ZERO:e.POSITIVE_INFINITY}}if(t.isInfinity&&(i.isOne||i.isNegativeOne))return e.NAN;const[s,a]=i.asRational;if(null!==s&&null!==a){const i=t.asSmallInteger;if(null!==i)return-1===i?e.number([a,s]):i>0?e.number([Math.pow(s,i),Math.pow(a,i)]):e.number([Math.pow(a,-i),Math.pow(s,-i)])}}}if("Power"===i.head&&i.op1.isReal){const n=t.asSmallInteger;if(null!==n){const t=i.op2.asSmallInteger;if(null!==t)return e._fn("Power",[i.op1,e.number(n*t)])}if(i.op1.isNonNegative){const[n,r]=t.asRational;if(null!==n&&null!==r){const[t,s]=i.op2.asRational;if(null!==t&&null!==s)return e._fn("Power",[i.op1,e.number([n*t,r*s])])}}}if("Multiply"===i.head){if(null!==t.asSmallInteger)return e._fn("Multiply",i.ops.map((i=>e.power(i,t))))}return null}function $i(e,i){if(i.machineValue)return e.number(Math.pow(i.machineValue,2));if(i.decimalValue)return e.number(i.decimalValue.pow(2));if(i.complexValue)return e.number(i.complexValue.pow(2));const[t,n]=i.rationalValue;if(null!==t&&null!==n)return e.number([Math.pow(n,2),Math.pow(t,2)]);if("Multiply"===i.head)return e._fn("Multiply",i.ops.map((i=>$i(e,i))));if("Power"===i.head){const t=i.op2.asSmallInteger;return null!==t?e._fn("Power",[i.op1,e.number(2*t)]):e._fn("Power",[i.op1,e.mul([e.TWO,i.op2])])}return e._fn("Power",[i,e.TWO])}function Zi(e,i,t,n){if("N"===n&&i.isLiteral&&t.isLiteral)return i.complexValue?e.number(i.complexValue.pow(t.complexValue??t.asFloat??NaN)):t.complexValue&&i.asFloat?e.number(e.complex(i.asFloat).pow(t.complexValue)):i.decimalValue?e.number(i.decimalValue.pow(t.decimalValue??t.asFloat)):i.asFloat&&(t.decimalValue||We(e))?e.number(e.decimal(i.asFloat).pow(t.decimalValue??t.asFloat)):e.number(Math.pow(i.asFloat??NaN,t.asFloat??NaN));if(null!==i.asSmallInteger){const[n,r]=t.rationalValue;if(!(1!==n&&-1!==n||2!==r&&3!==r)){const[s,a]=xe(i.asSmallInteger,r);if(1===a&&1===s)return e.ONE;if(1===s)return;return 1===a?e.number(n>=0?s:[1,s]):e.mul([e.number(s),e.power(e.number(a),t)])}}}function ji(e,i){return 0===(i=ze(i,"Multiply")??i).length?e.symbol("Nothing"):1===i.length?i[0]:2===i.length?Gi(i[0],i[1]):new ei(e,i).asExpression()}function Bi(e,i,t){const n=new ei(e);for(const t of i){if(t.isNaN||t.isMissing||"Undefined"===t.symbol)return e.NAN;n.addTerm(t)}return n.asExpression()}function Gi(e,i,t){const n=e.engine;if(e.isLiteral&&i.isLiteral&&e.isInteger&&i.isInteger){if(e.decimalValue&&i.decimalValue)return n.number(e.decimalValue.mul(i.decimalValue));if(e.machineValue&&i.machineValue)return n.number(e.machineValue*i.machineValue)}if("Nothing"===e.symbol)return i;if("Nothing"===i.symbol)return e;if(e.isLiteral&&e.isOne)return i;if(i.isLiteral&&i.isOne)return e;if(e.isLiteral&&e.isNegativeOne)return Vi(i);if(i.isLiteral&&i.isNegativeOne)return Vi(e);if(e.isMissing||i.isMissing)return n._fn("Multiply",[e,i]);let r=1,s=e,a=i;s.isLiteral&&null!==s.asRational||(a=i,s=e),"Negate"===a.head&&(a=a.op1,r=-r);const[o,l]=s.asRational;if(s.isLiteral&&null!==o&&null!==l){if(o===l)return a;if(0===o)return n.ZERO;if("Add"===a.head)return r<0&&(s=Vi(s)),n.add(a.ops.map((e=>Gi(s,e))),t);if(a.isLiteral){const[e,i]=a.asRational;if(null!==e&&null!==i)return n.number(we([r*o*e,i*l]),t)}return r<0?n._fn("Multiply",[Vi(s),a],t):n._fn("Multiply",[s,a],t)}if(s.hash===a.hash&&s.isSame(a))return $i(n,s);const u=new ei(n,[s,a]);return r>0?u.asExpression():Vi(u.asExpression(),t)}function Hi(e,i,t){if(i.isLiteral&&t.isLiteral){if(i.isOne)return e.inverse(t);if(i.isNegativeOne)return Vi(e.inverse(t));if(t.isOne)return i;if(t.isNegativeOne)return Vi(i);const[n,r]=[i.asSmallInteger,t.asSmallInteger];if(null!==n&&null!==r&&0!==r)return e.number(we([n,r]))}if("Divide"===i.head&&"Divide"===t.head)return e.divide(e.mul([i.op1,t.op2]),e.mul([i.op2,t.op1]));if("Divide"===i.head)return e.divide(e.mul([i.op1,t]),i.op2);if("Divide"===t.head)return e.divide(e.mul([i,t.op2]),t.op1);let[n,r]=Xe(i),[s,a]=Xe(t);return r=r.canonical,a=a.canonical,a.isLiteral&&a.isOne?n*s<0?Vi(r):r:(a=e.inverse(a),r.isOne?a:r.isNegativeOne?Vi(a):n*s>0?e.mul([r,a]):e.negate(e.mul([r,a])))}const Wi=[{functions:[{name:"Abs",domain:"Number",range:[0,1/0],wikidata:"Q3317982",threadable:!0,idempotent:!0,numeric:!0,complexity:1200,simplify:(e,i)=>Ui(e,i[0],"simplify"),evaluate:(e,i)=>Ui(e,i[0],"evaluate"),N:(e,i)=>Ui(e,i[0],"N")},{name:"Add",wikidata:"Q32043",associative:!0,commutative:!0,threadable:!0,idempotent:!0,evalDomain:function(e,i){let t="Nothing";for(const e of i){const i=e.domain;if(!i.isSubsetOf("Number"))return"Nothing";i.isSubsetOf(t)||(t=i)}return t},numeric:!0,complexity:1300,canonical:(e,i)=>Ti(e,i),simplify:(e,i)=>zi(e,i),evaluate:(e,i)=>zi(e,i),N:(e,i)=>function(e,i){for(const t of i){if(t.isImaginary&&t.isInfinity)return e.symbol("ComplexInfinity");if(t.isNaN||t.isMissing||"Undefined"===t.symbol)return e.NAN}let[t,n]=[0,1],r=0,s=e.DECIMAL_ZERO,a=Oe.exports.Complex.ZERO;const o=new Li(e);for(const l of i)if("Nothing"!==l.symbol&&!l.isZero){const[i,u]=l.rationalValue;null!==i&&null!==u?[t,n]=[t*u+n*i,n*u]:null!==l.decimalValue?s=s.add(l.decimalValue):null!==l.machineValue?We(e)?s=s.add(l.machineValue):r+=l.machineValue:null!==l.complexValue?a=a.add(l.complexValue):o.addTerm(l)}if(!Ue(e)&&0!==a.im)return e.NAN;if(We(e)||0!==e.chop(s)){let i=s;if(0!==t&&(i=i.mul(n).add(t).div(n)),0!==r&&(i=i.add(r)),0!==a.re&&(i=i.add(a.re)),0!==a.im)if(Te(i)){const t=e.number(e.complex(i.toNumber(),a.im));if(o.isEmpty)return t;o.addTerm(t)}else o.addTerm(e.number(e.complex(0,a.im))),o.addTerm(e.number(i));else{if(o.isEmpty)return e.number(i);o.addTerm(e.number(i))}}else{const i=r+a.re+t/n,s=e.number(0===a.im?i:e.complex(i,a.im));if(o.isEmpty)return s;o.addTerm(s)}return o.asExpression()}(e,i)},{name:"Ceil",description:"Rounds a number up to the next largest integer",numeric:!0,complexity:1250,evalDomain:(e,i)=>i[0].isNumber?e.symbol("Integer"):e.symbol("Nothing"),evaluate:(e,i)=>{const t=i[0];return t.decimalValue?e.number(t.decimalValue.ceil()):t.complexValue?e.number(t.complexValue.ceil(0)):null!==t.asFloat?e.number(Math.ceil(t.asFloat)):void 0}},{name:"Chop",associative:!0,threadable:!0,idempotent:!0,numeric:!0,complexity:1200,evalDomain:(e,i)=>i[0].isNumber?i[0].domain:e.symbol("Nothing"),N:(e,i)=>{const t=i[0];return t.decimalValue?e.number(e.chop(t.decimalValue)):t.complexValue?e.number(e.chop(t.complexValue)):null!==t.asFloat?e.number(e.chop(t.asFloat)):void 0}},{name:"Complex",wikidata:"Q11567",domain:"ComplexNumber",complexity:500},{name:"Divide",wikidata:"Q1226939",domain:"Number",numeric:!0,complexity:2500,canonical:(e,i)=>Hi(e,i[0],i[1])},{name:"Exp",domain:"Number",wikidata:"Q168698",threadable:!0,numeric:!0,complexity:3500,canonical:(e,i)=>e.power(e.symbol("ExponentialE"),i[0])},{name:"Erf",description:"Complementary Error Function",domain:"Number",numeric:!0,complexity:7500},{name:"Erfc",description:"Complementary Error Function",domain:"Number",numeric:!0,complexity:7500},{name:"Factorial",description:"The factorial function",wikidata:"Q120976",numeric:!0,complexity:9e3,evalDomain:(e,i)=>i[0].isInteger&&i[0].isPositive?e.symbol("Integer"):e.symbol("ComplexNumber"),evaluate:(e,i)=>{const t=i[0].asSmallInteger;return null!==t&&t>=0?We(e)?e.number(Pe(e,e.decimal(t))):e.number(function(e){if(!Number.isInteger(e)||e<0)return NaN;let i=1;for(let t=2;t<=e;t++)i*=t;return i}(t)):i[0].complexValue?e.number(i[0].complexValue.add(1)):null!==i[0].asFloat?e.number(ke(1+i[0].asFloat)):void 0}},{name:"Floor",domain:"Number",wikidata:"Q56860783",numeric:!0,complexity:1250,evaluate:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.floor()):i[0].complexValue?e.number(i[0].complexValue.floor(0)):null!==i[0].asFloat?e.number(Math.floor(i[0].asFloat)):void 0},{name:"Gamma",domain:"Number",wikidata:"Q190573",numeric:!0,complexity:8e3,N:(e,i)=>i[0].decimalValue?e.number(Le(e,i[0].decimalValue)):i[0].complexValue?e.number(i[0].complexValue):null!==i[0].asFloat?e.number(ke(i[0].asFloat)):void 0},{name:"LogGamma",domain:"Number",numeric:!0,complexity:8e3,N:(e,i)=>i[0].decimalValue?e.number(Fe(e,i[0].decimalValue)):i[0].complexValue?e.number(i[0].complexValue):null!==i[0].asFloat?e.number(Ie(i[0].asFloat)):void 0},{name:"Ln",description:"Natural Logarithm",domain:"Number",wikidata:"Q204037",numeric:!0,complexity:4e3,N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.log()):i[0].complexValue?e.number(i[0].complexValue.log()):null!==i[0].asFloat?e.number(Math.log(i[0].asFloat)):void 0},{name:"Log",description:"Log(b, z) = Logarithm of base b",domain:"Number",wikidata:"Q11197",numeric:!0,complexity:4100,N:(e,i)=>{const t=i[0],n=i[1];return t.decimalValue?e.number(t.decimalValue.log().div(n.decimalValue??n.asFloat??NaN)):t.complexValue?e.number(t.complexValue.log().div(n.complexValue??n.asFloat??NaN)):null!==t.asFloat?e.number(Math.log(t.asFloat)/Math.log(n.asFloat??NaN)):void 0}},{name:"Lb",description:"Base-2 Logarithm",domain:"Number",wikidata:"Q581168",numeric:!0,complexity:4100,N:(e,i)=>{const t=i[0];return t.decimalValue?e.number(t.decimalValue.log().div(e.DECIMAL_TWO)):t.complexValue?e.number(t.complexValue.log().div(e.complex(2))):null!==t.asFloat?e.number(Math.log2(t.asFloat)):void 0}},{name:"Lg",description:"Base-10 Logarithm",domain:"Number",wikidata:"Q966582",numeric:!0,complexity:4100,N:(e,i)=>{const t=i[0];return t.decimalValue?e.number(t.decimalValue.log().div(e.decimal(10))):t.complexValue?e.number(t.complexValue.log().div(e.complex(10))):null!==t.asFloat?e.number(Math.log10(t.asFloat)):void 0}},{name:"Multiply",domain:"Number",wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,numeric:!0,complexity:2100,canonical:(e,i)=>ji(e,i),simplify:(e,i)=>Bi(e,i),evaluate:(e,i)=>Bi(e,i),N:(e,i)=>function(e,i){for(const t of i)if(t.isNaN||t.isMissing||"Undefined"===t.symbol)return e.NAN;let[t,n]=[1,1],r=1,s=e.DECIMAL_ONE,a=Oe.exports.Complex.ONE;const o=new ei(e);for(const l of i)if("Nothing"!==l.symbol&&!l.isOne){const[i,u]=l.rationalValue;null!==i&&null!==u?[t,n]=[t*i,n*u]:null!==l.decimalValue?s=s.mul(l.decimalValue):null!==l.machineValue?We(e)?s=s.mul(l.machineValue):r*=l.machineValue:null!==l.complexValue?a=a.mul(l.complexValue):o.addTerm(l)}if(!Ue(e)&&0!==a.im)return e.NAN;if(We(e)||!s.eq(e.DECIMAL_ONE)){const i=s.mul(t).div(n).mul(r);if(1!==a.re||0!==a.im)if(Te(i)){const t=e.number(e.complex(a.mul(i.toNumber())));if(o.isEmpty)return t;o.addTerm(t)}else{if(o.isEmpty)return e._fn("Multiply",[e.number(a),e.number(i)]);o.addTerm(e.number(a)),o.addTerm(e.number(i))}else{if(o.isEmpty)return e.number(i);o.addTerm(e.number(i))}}else{const i=r*t/n;let s;if(s=1!==a.re||0!==a.im?e.number(a.mul(i)):e.number(i),o.isEmpty)return s;o.addTerm(s)}return o.asExpression()}(e,i)},{name:"Negate",description:"Additive Inverse",domain:"Number",wikidata:"Q715358",numeric:!0,complexity:2e3,canonical:(e,i)=>Vi(i[0]),simplify:(e,i)=>Fi(0,i[0],"simplify"),evaluate:(e,i)=>Fi(0,i[0],"evaluate"),N:(e,i)=>Fi(0,i[0],"N"),sgn:(e,i)=>{const t=i[0];return t.isZero?0:t.isPositive?-1:t.isNegative?1:void 0}},{name:"Power",domain:"Number",wikidata:"Q33456",commutative:!1,numeric:!0,complexity:3500,canonical:(e,i)=>i[0]&&i[1]?Ri(e,i[0],i[1])??e._fn("Power",i):e._fn("Power",i),simplify:(e,i)=>Zi(e,i[0],i[1],"simplify"),evaluate:(e,i)=>Zi(e,i[0],i[1],"evaluate"),N:(e,i)=>Zi(e,i[0],i[1],"N")},{name:"Rational",domain:"RationalNumber",numeric:!0,complexity:2400,canonical:(e,i)=>2===i.length?Hi(e,i[0],i[1]):e._fn("Rational",i),simplify:(e,i)=>{if(2===i.length)return null!==i[0].asSmallInteger&&null!==i[1].asSmallInteger?e.number([i[0].asSmallInteger,i[1].asSmallInteger]):void 0},evaluate:(e,i)=>{if(2===i.length)return null!==i[0].asSmallInteger&&null!==i[1].asSmallInteger?e.number([i[0].asSmallInteger,i[1].asSmallInteger]):void 0;const t=i[0].asFloat;if(null===t)return i[0];const n=function(e){if(!Number.isFinite(e))return e;if(0==e%1)return e;let i=Math.floor(e),t=1,n=0,r=i,s=1;for(;e-i>1e-15*s*s;){i=Math.floor(e=1/(e-i));const a=t;t=r;const o=n;n=s,r=a+i*t,s=o+i*n}return[r,s]}(t);return"number"==typeof n?e.number(n):e.number([n[0],n[1]])},N:(e,i)=>{if(2===i.length){if(null===i[0].asSmallInteger||null===i[1].asSmallInteger)return;return e.number(i[0].asSmallInteger/i[1].asSmallInteger)}}},{name:"Root",domain:"Number",numeric:!0,complexity:3200,canonical:(e,i)=>{const t=e.inverse(i[1]);return Ri(e,i[0],t)??e._fn("Power",[i[0],t])},N:(e,i)=>{const t=i[0],n=i[1];if(t.decimalValue)return e.number(t.decimalValue.pow(e.DECIMAL_ONE.div(n.asFloat??NaN)));if(t.complexValue){const i=n.complexValue?Oe.exports.Complex.ONE.div(n.complexValue):e.complex(1/(n.asFloat??NaN));return e.number(t.complexValue.pow(i))}return null!==t.asFloat?e.number(Math.pow(t.asFloat,n.asFloat??NaN)):void 0}},{name:"Round",domain:"Number",numeric:!0,complexity:1250,N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.round()):i[0].complexValue?e.number(i[0].complexValue.round(0)):null!==i[0].asFloat?e.number(Math.round(i[0].asFloat)):void 0},{name:"Sign",domain:"Number",range:[-1,1],numeric:!0,complexity:1200,simplify:(e,i)=>{const t=i[0].sgn;return 0===t?e.ZERO:1===t?e.ONE:-1===t?e.NEGATIVE_ONE:void 0},evaluate:(e,i)=>{const t=i[0].sgn;return 0===t?e.ZERO:1===t?e.ONE:-1===t?e.NEGATIVE_ONE:void 0},N:(e,i)=>{const t=i[0].sgn;return 0===t?e.ZERO:1===t?e.ONE:-1===t?e.NEGATIVE_ONE:void 0}},{name:"SignGamma",description:"The sign of the gamma function: -1 or +1",domain:"Number",numeric:!0,complexity:7900,range:[-1,1]},{name:"Sqrt",description:"Square Root",domain:"Number",wikidata:"Q134237",numeric:!0,complexity:3e3,canonical:(e,i)=>Ri(e,i[0],e.HALF)??e._fn("Power",[i[0],e.HALF]),simplify:(e,i)=>Qi(e,i[0],"simplify"),evaluate:(e,i)=>Qi(e,i[0],"evaluate"),N:(e,i)=>Qi(e,i[0],"N")},{name:"Square",domain:"Number",wikidata:"Q3075175",numeric:!0,complexity:3100,canonical:(e,i)=>Ri(e,i[0],e.TWO)??e._fn("Power",[i[0],e.TWO]),N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.mul(i[0].decimalValue)):i[0].complexValue?e.number(i[0].complexValue.mul(i[0].complexValue)):null!==i[0].asFloat?e.number(i[0].asFloat*i[0].asFloat):void 0},{name:"Subscript",hold:"last",canonical:(e,i)=>{if(i[0].string&&i[1].isLiteral&&null!==i[1].asSmallInteger){const t=i[1].asSmallInteger;if(t>1&&t<=36){const[n,r]=Me(i[0].string,t);return r?e._fn("Error",[e.number(n),e.string("unexpected-digits"),e._fn("LatexForm",[e.string(r)])]):e.number(n)}}if(i[0].symbol){if(i[0].symbolDefinition?.at)return e._fn("At",[i[0],i[1]]);let t=i[1].string??i[1].symbol;if(t||null!==i[1].asSmallInteger&&(t=i[1].asSmallInteger.toString()),t)return e.symbol(i[0].symbol+"_"+t)}return e._fn("Subscript",i)}},{name:"Subtract",domain:"Number",wikidata:"Q40754",numeric:!0,complexity:1350,canonical:(e,i)=>0===i.length?e.symbol("Nothing"):1===i.length?Vi(i[0]):Ti(e,[i[0],Vi(i[1])]),N:(e,i)=>{const t=i[0],n=i[1];return t.complexValue||n.complexValue?e.number(e.complex(t.complexValue??t.asFloat).sub(n.complexValue??n.asFloat)):t.decimalValue||n.decimalValue?e.number(e.decimal(t.decimalValue??t.asFloat??NaN).sub(n.decimalValue??n.asFloat??NaN)):null!==t.asFloat&&null!==n.asFloat?e.number(t.asFloat-n.asFloat):void 0}}]},{symbols:[{name:"MachineEpsilon",domain:"RealNumber",constant:!0,real:!0,value:{num:Number.EPSILON.toString()}},{name:"Half",constant:!0,hold:!1,value:["Rational",1,2]},{name:"ImaginaryUnit",domain:"ImaginaryNumber",constant:!0,hold:!0,wikidata:"Q193796",imaginary:!0,value:["Complex",0,1]},{name:"ExponentialE",domain:"TranscendentalNumber",algebraic:!1,wikidata:"Q82435",constant:!0,hold:!0,real:!0,value:e=>We(e)?e.DECIMAL_ONE.exp():Math.exp(1)},{name:"GoldenRatio",domain:"AlgebraicNumber",wikidata:"Q41690",constant:!0,algebraic:!0,hold:!1,value:["Divide",["Add",1,["Sqrt",5]],2]},{name:"CatalanConstant",domain:"RealNumber",algebraic:void 0,wikidata:"Q855282",constant:!0,value:{num:"0.91596559417721901505460351493238411077414937428167\n 21342664981196217630197762547694793565129261151062\n 48574422619196199579035898803325859059431594737481\n 15840699533202877331946051903872747816408786590902\n 47064841521630002287276409423882599577415088163974\n 70252482011560707644883807873370489900864775113225\n 99713434074854075532307685653357680958352602193823\n 23950800720680355761048235733942319149829836189977\n 06903640418086217941101917532743149978233976105512\n 24779530324875371878665828082360570225594194818097\n 53509711315712615804242723636439850017382875977976\n 53068370092980873887495610893659771940968726844441\n 66804621624339864838916280448281506273022742073884\n 31172218272190472255870531908685735423498539498309\n 91911596738846450861515249962423704374517773723517\n 75440708538464401321748392999947572446199754961975\n 87064007474870701490937678873045869979860644874974\n 64387206238513712392736304998503539223928787979063\n 36440323547845358519277777872709060830319943013323\n 16712476158709792455479119092126201854803963934243\n "}},{name:"EulerGamma",domain:"RealNumber",algebraic:void 0,wikidata:"Q273023",constant:!0,value:{num:"0.57721566490153286060651209008240243104215933593992359880576723488486772677766\n 467093694706329174674951463144724980708248096050401448654283622417399764492353\n 625350033374293733773767394279259525824709491600873520394816567085323315177661\n 152862119950150798479374508570574002992135478614669402960432542151905877553526\n 733139925401296742051375413954911168510280798423487758720503843109399736137255\n 306088933126760017247953783675927135157722610273492913940798430103417771778088\n 154957066107501016191663340152278935867965497252036212879226555953669628176388\n 792726801324310104765059637039473949576389065729679296010090151251959509222435\n 014093498712282479497471956469763185066761290638110518241974448678363808617494\n 551698927923018773910729457815543160050021828440960537724342032854783670151773\n 943987003023703395183286900015581939880427074115422278197165230110735658339673"}}]},{functions:[{name:"PreIncrement",domain:"Number",numeric:!0},{name:"PreDecrement",domain:"Number",numeric:!0}]}];function Ui(e,i,t){if("simplify"!==t||i.isLiteral){if(null!==i.machineValue)return e.number(Math.abs(i.machineValue));if(i.decimalValue)return e.number(i.decimalValue.abs());if(i.complexValue)return e.number(i.complexValue.abs());const[n,r]=i.rationalValue;if(null===n||null===r)return;return e.number("N"===t?Math.abs(n/r):[Math.abs(n),r])}if(!i.isMissing)return i.isNonNegative?i:i.isNegative?e.negate(i):void 0}function Qi(e,i,t){if(i.isOne)return e.ONE;if(i.isZero)return e.ZERO;if("N"===t)return i.complexValue?e.number(i.complexValue.sqrt()):i.isNonNegative?i.decimalValue?e.number(i.decimalValue.sqrt()):null!==i.asFloat?e.number(Math.sqrt(i.asFloat)):void 0:Ue(e)?e.number(e.complex(i.asFloat).sqrt()):e.NAN;if(null!==i.asSmallInteger){const[t,n]=xe(i.asSmallInteger,2);if(1===n)return e.number(t);if(1!==t)return this._fn("Multiply",[t,e._fn("Sqrt",[e.box(n).canonical])])}}const Yi=[{symbols:[{name:"Missing",domain:"Nothing"},{name:"Nothing",domain:"Nothing"}]},{functions:[{name:"KeyValuePair",description:"A key/value pair",complexity:8200,canonical:(e,i)=>e.tuple(i)},{name:"Single",description:"A tuple with a single element",complexity:8200,canonical:(e,i)=>e.tuple(i)},{name:"Pair",description:"A tuple of two elements",complexity:8200,canonical:(e,i)=>e.tuple(i)},{name:"Triple",description:"A tuple of three elements",complexity:8200,canonical:(e,i)=>e.tuple(i)},{name:"Tuple",description:"A fixed number of heterogeneous elements",complexity:8200}]},{functions:[{name:"BaseForm",description:"`BaseForm(expr, base=10)`",complexity:9e3,inert:!0,simplify:(e,i)=>i[0]},{name:"Delimiter",complexity:9e3,inert:!0,evalDomain:(e,i)=>!i[0]||i[0].isMissing?"Nothing":i[0].domain,canonical:(e,i)=>!i[0]||i[0].isMissing?e.symbol("Nothing"):i[0],simplify:(e,i)=>i[0],evaluate:(e,i)=>i[0]},{name:"Error",complexity:500,hold:"all",evalDomain:(e,i)=>!i[0]||i[0].isMissing?"Nothing":i[0].domain,evaluate:(e,i)=>i[0].evaluate()},{name:"Style",complexity:9e3,evalDomain:(e,i)=>!i[0]||i[0].isMissing?"Nothing":i[0].domain,evaluate:(e,i)=>i[0]}]},{functions:[{name:"Apply",evalDomain:()=>"Anything"},{name:"About",evalDomain:()=>"Dictionary"},{name:"Block",evalDomain:()=>"Anything"},{name:"Domain",evalDomain:()=>"Domain"},{name:"Evaluate",domain:"Anything",hold:"all",evaluate:(e,i)=>i[0].evaluate()},{name:"FromDigits",description:"`FromDigits(s, base=10)` return an integer representation of the string `s` in base `base`.",evaluate:(e,i)=>{const t=i[0];if(t.isMissing)return;if(!t.string)return e.error(e._fn("FromDigits",i),"Expected first argument as a string",["LatexForm",t.latex]);const n=i[1];if(n.isMissing&&e.number(Number.parseInt(t.string,10)),null===n.machineValue)return["Error",e._fn("FromDigits",i),{str:"Expected `base` as an integer between 2 and 36"},["LatexForm",n.latex]];const r=n.machineValue;if(r<2||r>36)return["Error",e._fn("FromDigits",i),{str:"Expected `base` as an integer between 2 and 36"},["LatexForm",n.latex]];const[s,a]=Me(t.string,r);return a?["Error",s,{str:"unexpected-digits"},["LatexForm",a]]:e.number(s)}},{name:"Head",domain:"Expression",evaluate:(e,i)=>{const t=i[0];return"string"==typeof t.head?e.symbol(t.head):t.head}},{name:"Html",domain:"String",evaluate:(e,i)=>(i.length,e.string(""))},{name:"IntegerString",description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",evaluate:(e,i)=>{const t=i[0];if(t.isMissing)return;const n=t.machineValue??t.decimalValue?.toNumber()??NaN;if(Number.isNaN(n)||!Number.isInteger(n))return void e.signal(e._fn("IntegerString",i),`Expected first argument as an integer. Got \\(${t.latex}$\\)`);const r=i[1];if(r.isMissing)return t.machineValue?e.string(Math.abs(t.machineValue).toString()):t.decimalValue?e.string(t.decimalValue.abs().toString()):e.string(Math.abs(Math.round(t.asFloat??NaN)).toString());if(null===r.asSmallInteger)return void e.signal(e._fn("IntegerString",i),`Expected \`base\` as an integer between 2 and 36. Got \\(${r.latex}$\\)`);const s=r.asSmallInteger;if(!(s<2||s>36))return e.string(Math.abs(n).toString(s));e.signal(e._fn("IntegerString",i),"Expected `base` as an integer between 2 and 36. Got "+s)}},{name:"Lambda",wikidata:"Q567612",hold:"all",evalDomain:()=>"Anything"},{name:"Latex",domain:"LatexString",evaluate:(e,i)=>0===i.length?e._fn("LatexString",[]):e._fn("LatexString",[e.string(o(i.map((e=>e.latex))))])},{name:"LatexString",domain:"LatexString",evaluate:(e,i)=>0===i.length?e._fn("LatexString",[]):e._fn("LatexString",[e.string(o(i.map((i=>e.serialize(i)))))])},{name:"LatexTokens",evalDomain:()=>"LatexString",evaluate:(e,i)=>0===i.length?e._fn("LatexString",[]):e._fn("LatexString",[e.string(o(i.map((i=>e.serialize(i)))))])},{name:"Parse",domain:"Anything",evaluate:(e,i)=>{if(0===i.length)return e.symbol("Nothing");const t=o(i.map((i=>e.serialize(i))));return e.parse(t)}},{name:"String",domain:"String",threadable:!0,evaluate:(e,i)=>0===i.length?e.string(""):e.string(i.map((e=>e.string??`\\(${e.latex}$\\)`)).join(""))},{name:"Symbol",complexity:500,description:"Construct a new symbol with a name formed by concatenating the arguments",domain:"Symbol",threadable:!0,evaluate:(e,i)=>{if(0===i.length)return e.symbol("Nothing");const t=i.map((e=>{const i=e.symbol;if(null!==i)return i;const n=t.string;if(null!==n)return n;const r=t.smallIntegerValue;return null!==r?r.toString():""})).join("");return t.length>0?e.symbol(t):e.symbol("Nothing")}},{name:"SymbolName",evaluate:(e,i)=>i[0].symbol?e.string(i[0].symbol):e.symbol("Nothing")},{name:"Tail",evalDomain:()=>"List",evaluate:(e,i)=>e._fn("List",i[0].ops??[])},{name:"Timing",description:"`Timing(expr)` evaluates `expr` and return a `Pair` of the number of second elapsed for the evaluation, and the value of the evaluation",domain:"Pair",evaluate:(e,i)=>{if(!i[1]||i[1].isMissing){const t=globalThis.performance.now(),n=i[0].evaluate(),r=1e3*(globalThis.performance.now()-t);return e.pair(e.number(r),n)}let t,n=Math.max(3,Math.round(i[1].asSmallInteger??3)),r=[];for(;n>0;){const e=globalThis.performance.now();t=i[0].evaluate(),r.push(1e3*(globalThis.performance.now()-e)),n-=1}const s=Math.max(...r),a=Math.min(...r);r=r.filter((e=>e>a&&e<s));const o=r.reduce(((e,i)=>e+i),0);return 0===o?e.pair(e.number(s),t):e.pair(e.number(o/r.length),t)}}]}],Ki={symbols:[{name:"True",wikidata:"Q16751793",domain:"Boolean",constant:!0},{name:"False",wikidata:"Q5432619",domain:"Boolean",constant:!0},{name:"Maybe",wikidata:"Q781546",domain:"MaybeBoolean",constant:!0}],functions:[{name:"And",wikidata:"Q191081",domain:"MaybeBoolean",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,logic:!0,simplify:Ji,evaluate:Ji},{name:"Or",wikidata:"Q1651704",domain:"MaybeBoolean",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,logic:!0,simplify:Xi,evaluate:Xi},{name:"Not",wikidata:"Q190558",domain:"MaybeBoolean",involution:!0,complexity:10100,logic:!0,simplify:et,evaluate:et},{name:"Equivalent",wikidata:"Q220433",domain:"MaybeBoolean",complexity:10200,logic:!0,simplify:it,evaluate:it},{name:"Implies",wikidata:"Q7881229",domain:"MaybeBoolean",complexity:10200,logic:!0,simplify:tt,evaluate:tt},{name:"Exists",domain:"MaybeBoolean"}]};function Ji(e,i){if(0===i.length)return e.symbol("True");const t=[];for(const n of i){if("False"===n.symbol)return e.symbol("False");if("True"!==n.symbol){let i=!1;for(const r of t)if(r.isSame(n))i=!0;else if("Not"===n.head&&n.op1.isSame(r)||"Not"===r.head&&r.op1.isSame(n))return e.symbol("False");i||t.push(n)}}return 0===t.length?e.symbol("True"):1===t.length?t[0]:e._fn("And",t)}function Xi(e,i){if(0===i.length)return e.symbol("True");const t=[];for(const n of i){if("True"===n.symbol)return e.symbol("True");if("False"!==n.symbol){let i=!1;for(const r of t)if(r.isSame(n))i=!0;else if("Not"===n.head&&n.op1.isSame(r)||"Not"===r.head&&r.op1.isSame(n))return e.symbol("True");i||t.push(n)}}return 0===t.length?e.symbol("True"):1===t.length?t[0]:e._fn("Or",t)}function et(e,i){const t=i[0].symbol;return"True"===t?e.symbol("False"):"False"===t?e.symbol("True"):"Maybe"===t?e.symbol("Maybe"):void 0}function it(e,i){const t=i[0].symbol,n=i[1].symbol;return"True"===t&&"True"===n||"False"===t&&"False"===n?e.symbol("True"):"True"===t&&"False"===n||"False"===t&&"True"===n?e.symbol("False"):"Maybe"===t||"Maybe"===n?e.symbol("Maybe"):void 0}function tt(e,i){const t=i[0].symbol,n=i[1].symbol;return"True"===t&&"True"===n||"False"===t&&"False"===n||"False"===t&&"True"===n?e.symbol("True"):"True"===t&&"False"===n?e.symbol("False"):"Maybe"===t||"Maybe"===n?e.symbol("Maybe"):void 0}const nt=(e,i)=>{if(!i[0])return null;return i[0].domain.isSubsetOf("Number")?e.symbol("RealNumber"):null},rt=(e,i)=>{if(!i[0])return null;const t=i[0].domain;return t.isSubsetOf("RealNumber")?e.symbol("RealNumber"):t.isSubsetOf("ComplexNumber")?e.symbol("ComplexNumber"):null},st=[{symbols:[{name:"Degrees",domain:"RealNumber",constant:!0,value:["Divide","Pi",180]},{name:"Pi",domain:"TranscendentalNumber",algebraic:!1,constant:!0,hold:!0,wikidata:"Q167",value:e=>We(e)?e.DECIMAL_PI:Math.PI}],functions:[{name:"Hypot",evaluate:["Sqrt",["Square","_1"],["Square","_2"]],evalDomain:nt},{name:"Sin",evalDomain:rt,numeric:!0,complexity:5e3,simplify:(e,i)=>mt(e,"Sin",i[0])??(Ue(e)?e.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",i[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",i[0]]]]],["Complex",0,2]]).canonical:void 0),evaluate:(e,i)=>mt(e,"Sin",i[0])??(Ue(e)?e.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",i[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",i[0]]]]],["Complex",0,2]]).canonical:void 0),N:(e,i)=>i[0].decimalValue?e.number(e.chop(i[0].decimalValue.sin())):i[0].complexValue?e.number(i[0].complexValue.sin()):null!==i[0].asFloat?e.number(Math.sin(i[0].asFloat)):void 0}]},{functions:[{name:"Arctan",wikidata:"Q2257242",evalDomain:nt,numeric:!0,complexity:5200,simplify:(e,i)=>mt(e,"Arctan",i[0]),N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.atan()):i[0].complexValue?e.number(i[0].complexValue.atan()):null!==i[0].asFloat?e.number(Math.atan(i[0].asFloat)):void 0},{name:"Arctan2",wikidata:"Q776598",evalDomain:nt,numeric:!0,complexity:5200,N:(e,i)=>i[0].decimalValue&&i[1].decimalValue?e.number(qe.exports.Decimal.atan2(i[0].decimalValue,i[1].decimalValue)):null!==i[0].asFloat&&null!==i[1].asFloat?e.number(Math.atan2(i[0].asFloat,i[1].asFloat)):void 0},{name:"Cos",evalDomain:nt,numeric:!0,complexity:5050,simplify:(e,i)=>mt(e,"Cos",i[0])??e.box(["Sin",["Add",i[0],["Multiply","Half","Pi"]]]).canonical,evaluate:["Sin",["Add","_1",["Multiply","Half","Pi"]]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.cos()):i[0].complexValue?e.number(i[0].complexValue.cos()):null!==i[0].asFloat?e.number(Math.cos(i[0].asFloat)):void 0},{name:"Tan",evalDomain:rt,numeric:!0,complexity:5100,simplify:(e,i)=>mt(e,"Tan",i[0])??e.box(["Divide",["Sin",i[0]],["Cos",i[0]]]).canonical,evaluate:["Divide",["Sin","_1"],["Cos","_1"]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.tan()):i[0].complexValue?e.number(i[0].complexValue.tan()):null!==i[0].asFloat?e.number(Math.tan(i[0].asFloat)):void 0}]},{functions:[{name:"Arcosh",evalDomain:nt,numeric:!0,complexity:6200,simplify:(e,i)=>mt(e,"Arcoshh",i[0])??e.box(["Ln",["Add",i[0],["Sqrt",["Subtract",["Square",i[0]],1]]]]).canonical,evaluate:["Ln",["Add","_1",["Sqrt",["Subtract",["Square","_1"],1]]]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.acosh()):i[0].complexValue?e.number(i[0].complexValue.acosh()):null!==i[0].asFloat?e.number(Math.acosh(i[0].asFloat)):void 0},{name:"Arcsin",evalDomain:nt,numeric:!0,complexity:5500,simplify:(e,i)=>mt(e,"Arcsin",i[0])??e.box(["Multiply",2,["Arctan2",i[0],["Add",1,["Sqrt",["Subtract",1,["Square",i[0]]]]]]]).canonical,evaluate:["Multiply",2,["Arctan2","_1",["Add",1,["Sqrt",["Subtract",1,["Square","_1"]]]]]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.asin()):i[0].complexValue?e.number(i[0].complexValue.asin()):null!==i[0].asFloat?e.number(Math.asin(i[0].asFloat)):void 0},{name:"Arsinh",evalDomain:nt,numeric:!0,complexity:6100,simplify:(e,i)=>mt(e,"Arsinh",i[0])??e.box(["Ln",["Add",i[0],["Sqrt",["Add",["Square",i[0]],1]]]]).canonical,evaluate:["Ln",["Add","_1",["Sqrt",["Add",["Square","_1"],1]]]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.asinh()):i[0].complexValue?e.number(i[0].complexValue.asinh()):null!==i[0].asFloat?e.number(Math.asinh(i[0].asFloat)):void 0},{name:"Artanh",evalDomain:nt,numeric:!0,complexity:6300,simplify:(e,i)=>mt(e,"Artanh",i[0])??e.box(["Multiply","Half",["Ln",["Divide",["Add",1,i[0]],["Subtract",1,i[0]]]]]).canonical,evaluate:["Multiply","Half",["Ln",["Divide",["Add",1,"_1"],["Subtract",1,"_1"]]]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.atanh()):i[0].complexValue?e.number(i[0].complexValue.atanh()):null!==i[0].asFloat?e.number(Math.atanh(i[0].asFloat)):void 0},{name:"Cosh",evalDomain:nt,numeric:!0,complexity:6050,simplify:(e,i)=>mt(e,"Cosh",i[0]),evaluate:["Multiply","Half",["Add",["Exp","_1"],["Exp",["Negate","_1"]]]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.cosh()):i[0].complexValue?e.number(i[0].complexValue.cosh()):null!==i[0].asFloat?e.number(Math.cosh(i[0].asFloat)):void 0},{name:"Cot",evalDomain:rt,numeric:!0,complexity:5600,simplify:(e,i)=>mt(e,"Cot",i[0])??e.box(["Divide",["Cos",i[0]],["Sin",i[0]]]).canonical,evaluate:["Divide",["Cos","_1"],["Sin","_1"]],N:(e,i)=>i[0].decimalValue?e.number(e.DECIMAL_ONE.div(i[0].decimalValue.tan())):i[0].complexValue?e.number(i[0].complexValue.tan().inverse()):null!==i[0].asFloat?e.number(1/Math.tan(i[0].asFloat)):void 0},{name:"Csc",description:"Cosecant",evalDomain:nt,numeric:!0,complexity:5600,simplify:(e,i)=>mt(e,"Csc",i[0])??e.box(["Divide",1,["Sin",i[0]]]).canonical,evaluate:["Divide",1,["Sin","_1"]],N:(e,i)=>i[0].decimalValue?e.number(e.DECIMAL_ONE.div(i[0].decimalValue.sin())):i[0].complexValue?e.number(i[0].complexValue.sin().inverse()):null!==i[0].asFloat?e.number(1/Math.sin(i[0].asFloat)):void 0},{name:"Haversine",wikidata:"Q2528380",evalDomain:nt,evaluate:["Divide",["Subtract",1,["Cos","_1"]],2],numeric:!0},{name:"InverseHaversine",evalDomain:rt,numeric:!0,evaluate:["Multiply",2,["Arcsin",["Sqrt","_1"]]]},{name:"Sec",description:"Secant, inverse of cosine",evalDomain:rt,numeric:!0,complexity:5500,simplify:(e,i)=>mt(e,"Sec",i[0])??e.box(["Divide",1,["Cos",i[0]]]).canonical,evaluate:["Divide",1,["Cos","_1"]],N:(e,i)=>i[0].decimalValue?e.number(e.DECIMAL_ONE.div(i[0].decimalValue.cos())):i[0].complexValue?e.number(i[0].complexValue.cos().inverse()):null!==i[0].asFloat?e.number(1/Math.cos(i[0].asFloat)):void 0},{name:"Sinh",evalDomain:rt,numeric:!0,complexity:6e3,simplify:(e,i)=>mt(e,"Sinh",i[0])??e.box(["Multiply","Half",["Subtract",["Exp",i[0]],["Exp",["Negate",i[0]]]]]).canonical,evaluate:["Multiply","Half",["Subtract",["Exp","_1"],["Exp",["Negate","_1"]]]]}]},{functions:[{name:"Csch",evalDomain:nt,numeric:!0,complexity:6200,simplify:(e,i)=>mt(e,"Csch",i[0])??e.box(["Divide",1,["Sinh",i[0]]]).canonical,evaluate:["Divide",1,["Sinh","_1"]],N:(e,i)=>i[0].decimalValue?e.number(e.DECIMAL_ONE.div(i[0].decimalValue.sinh())):i[0].complexValue?e.number(i[0].complexValue.sinh().inverse()):null!==i[0].asFloat?e.number(1/Math.sinh(i[0].asFloat)):void 0},{name:"Sech",evalDomain:rt,numeric:!0,complexity:6200,simplify:(e,i)=>mt(e,"Sech",i[0])??e.box(["Divide",1,["Cosh",i[0]]]).canonical,evaluate:["Divide",1,["Cosh","_1"]],N:(e,i)=>i[0].decimalValue?e.number(e.DECIMAL_ONE.div(i[0].decimalValue.cosh())):i[0].complexValue?e.number(i[0].complexValue.cosh().inverse()):null!==i[0].asFloat?e.number(1/Math.cosh(i[0].asFloat)):void 0},{name:"Tanh",evalDomain:rt,numeric:!0,complexity:6200,simplify:(e,i)=>mt(e,"Tanh",i[0])??e.box(["Divide",["Sinh",i[0]],["Cosh",i[0]]]).canonical,evaluate:["Divide",["Sinh","_1"],["Cosh","_1"]],N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.tanh()):i[0].complexValue?e.number(i[0].complexValue.tanh()):null!==i[0].asFloat?e.number(Math.tanh(i[0].asFloat)):void 0}]},{functions:[{name:"Arccos",evalDomain:nt,numeric:!0,complexity:5550,evaluate:["Subtract",["Divide","Pi",2],["Arcsin","_1"]],simplify:(e,i)=>mt(e,"Arccos",i[0])??e.box(["Subtract",["Divide","Pi",2],["Arcsin",i[0]]]).canonical,N:(e,i)=>i[0].decimalValue?e.number(i[0].decimalValue.acos()):i[0].complexValue?e.number(i[0].complexValue.acos()):null!==i[0].asFloat?e.number(Math.acos(i[0].asFloat)):void 0},{name:"Coth",evalDomain:rt,numeric:!0,complexity:6300,simplify:(e,i)=>mt(e,"Coth",i[0])??e.box(["Divide",1,["Tanh",i[0]]]).canonical,evaluate:["Divide",1,["Tanh","_1"]],N:(e,i)=>i[0].decimalValue?e.number(e.DECIMAL_ONE.div(i[0].decimalValue.tanh())):i[0].complexValue?e.number(i[0].complexValue.tanh().inverse()):null!==i[0].asFloat?e.number(1/Math.tanh(i[0].asFloat)):void 0},{name:"InverseFunction",domain:"Number",simplify:(e,i)=>ft(e,i[0]),evaluate:(e,i)=>ft(e,i[0])}]}],at=["Sqrt",2],ot=["Sqrt",3],lt=["Sqrt",5],ut=["Sqrt",6],ct=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:NaN,Sec:1,Csc:NaN}],[[1,12],{Sin:["Divide",["Subtract",ut,at],4],Cos:["Divide",["Add",ut,at],4],Tan:["Subtract",2,ot],Cot:["Add",2,ot],Sec:["Subtract",ut,at],Csc:["Add",ut,at]}],[[1,10],{Sin:["Divide",["Subtract",lt,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,lt]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,lt]]],4],Cot:["Sqrt",["Add",5,["Multiply",2,lt]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,lt]]],5],Csc:["Add",1,lt]}],[[1,8],{Sin:"$\\frac\\sqrt{2-\\sqrt2}{2}$",Cos:"$\\frac {\\sqrt {2+{\\sqrt {2}}}}{2}$",Tan:"$\\sqrt{2} - 1$",Cot:"$\\sqrt{2} + 1$",Sec:"$\\sqrt{ 4 - 2\\sqrt{2}$",Csc:"$\\sqrt{ 4 + 2\\sqrt{2}$"}],[[1,6],{Sin:"$\\frac{1}{2}$",Cos:"$\\frac{\\sqrt{3}}{2}$",Tan:"$\\frac{\\sqrt{3}}{3}$",Cot:"$\\frac{2\\sqrt{3}}{3}$",Sec:"$\\sqrt{3}$",Csc:2}],[[1,5],{Sin:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Cos:"$\\frac{1+ \\sqrt{5}} {4}$",Tan:"$\\sqrt{5-2\\sqrt5}$",Cot:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Sec:"$\\sqrt{5} - 1$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,4],{Sin:["Divide",at,2],Cos:["Divide",at,2],Tan:1,Cot:1,Sec:at,Csc:at}],[[3,10],{Sin:"$\\frac{1+ \\sqrt{5}} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,3],{Sin:["Divide",ot,2],Cos:"Half",Tan:ot,Cot:["Divide",ot,3],Sec:2,Csc:["Divide",["Multiply",2,ot],3]}],[[3,8],{Sin:"$\\frac{ \\sqrt{2 + \\sqrt{2}} } {2}$",Cos:"$\\frac{ \\sqrt{2 - \\sqrt{2}} } {2}$",Tan:"$\\sqrt{2} + 1$",Cot:"$\\sqrt{2} - 1$",Sec:"$\\sqrt{ 4 + 2 \\sqrt{2} }$",Csc:"$\\sqrt{ 4 - 2 \\sqrt{2} }$"}],[[2,5],{Sin:"$\\frac{\\sqrt{10+ 2\\sqrt{5}}} {4}$",Cos:"$\\frac{\\sqrt{5}-1} {4}$",Tan:"$\\sqrt{5+2\\sqrt{5}}$",Cot:"$\\frac{\\sqrt{25-10\\sqrt{5}}} {5}$",Sec:"$1 + \\sqrt{5}$",Csc:"$\\frac{\\sqrt{50-10\\sqrt{5}}} {5}$"}],[[5,12],{Sin:"$\\frac{\\sqrt{6} + \\sqrt{2}} {4}$",Cos:"$\\frac{ \\sqrt{6} - \\sqrt{2}} {4}$",Tan:"$2+\\sqrt{3}$",Cot:"$2-\\sqrt{3}$",Sec:"$\\sqrt{6}+\\sqrt{2}$",Csc:"$\\sqrt{6} - \\sqrt{2}$"}],[[1,2],{Sin:1,Cos:0,Tan:NaN,Cot:0,Sec:NaN,Csc:1}]],ht={Sin:[[1,"Sin"],[1,"Cos"],[-1,"Sin"],[-1,"Cos"]],Cos:[[1,"Cos"],[-1,"Sin"],[-1,"Cos"],[1,"Sin"]],Sec:[[1,"Sec"],[-1,"Csc"],[-1,"Sec"],[1,"Csc"]],Csc:[[1,"Csc"],[1,"Sec"],[-1,"Csc"],[-1,"Sec"]],Tan:[[1,"Tan"],[-1,"Cot"],[1,"Tan"],[-1,"Cot"]],Cot:[[1,"Cot"],[-1,"Tan"],[1,"Cot"],[-1,"Tan"]]};function mt(e,i,t){if(!t||t.isMissing)return;const n=e.cache("constructible-trigonometric-values",(()=>{const i=[];for(const[t,n]of ct){const r={};for(const i of Object.keys(n))r[i]=e.parse(Be(n[i]))??e.box(n[i]);i.push([t,r])}return i}),(e=>{for(const[i,t]of e)for(const e of Object.values(t))e._purge();return e}));if(!(t=t.numericValue??t).isLiteral)return;let r=t.asFloat;if(null===r)return;r%=2*Math.PI;const s="Cos"!==i&&"Sec"!==i?Math.sign(r):1;r=Math.abs(r);const a=Math.floor(2*r/Math.PI);let o;r%=Math.PI/2,[o,i]=ht[i][a],o*=s;for(const[[t,s],a]of n)if(0===e.chop(r-Math.PI*t/s))return o<0?Vi(a[i]):a[i]}function ft(e,i){const t=i.op1.head;if("string"!=typeof t)return i;const n={Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arsinh",Cosh:"Arcosh",Tanh:"Artanh",Sech:"Arcsech",Csch:"Arcsch",Arcosh:"Cosh",Arcos:"Cos",Arccsc:"Csc",Arcsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arsinh:"Sinh",Arctan:"Tan",Artanh:"Tanh"}[t];return n?e._fn(n,[i.op1.op1]):i}const gt={symbols:[{name:"EmptySet",domain:"Set",constant:!0,wikidata:"Q226183"}],functions:[{name:"Element",domain:"MaybeBoolean",complexity:11200},{name:"NotElement",domain:"MaybeBoolean",complexity:11200,canonical:(e,i)=>e.fn("Not",[e.fn("Element",i)])},{name:"Subset",domain:"MaybeBoolean",complexity:11200},{name:"NotSubset",domain:"MaybeBoolean",complexity:11200,canonical:(e,i)=>e.fn("Not",[e.fn("Subset",i)])},{name:"Superset",domain:"MaybeBoolean",complexity:11200},{name:"SupersetEqual",domain:"MaybeBoolean",complexity:11200},{name:"NotSuperset",domain:"MaybeBoolean",complexity:11200,canonical:(e,i)=>e.fn("Not",[e.fn("Superset",i)])},{name:"NotSupersetEqual",domain:"MaybeBoolean",complexity:11200,canonical:(e,i)=>e.fn("Not",[e.fn("SupersetEqual",i)])},{name:"SubsetEqual",domain:"MaybeBoolean",complexity:11200},{name:"NotSubsetNotEqual",domain:"MaybeBoolean",complexity:11200,canonical:(e,i)=>e.fn("Not",[e.fn("SubsetEqual",i)])},{name:"CartesianProduct",domain:"Set",wikidata:"Q173740"},{name:"Complement",domain:"Set",wikidata:"Q242767"},{name:"Intersection",domain:"Set",wikidata:"Q185837",threadable:!0,associative:!0,commutative:!0,involution:!0,evaluate:function(e,i){return e.symbol("EmptySet")}},{name:"Union",domain:"Set",wikidata:"Q185359",threadable:!0,associative:!0,commutative:!0,involution:!0,evaluate:function(e,i){return e.symbol("False")}},{name:"Set",domain:"Set"},{name:"SetMinus",domain:"Set",wikidata:"Q18192442",evaluate:function(e,i){return e.symbol("EmptySet")}},{name:"SymmetricDifference",domain:"Set",wikidata:"Q1147242"}]};class pt{constructor(e,i){const t=i.numeric??!1,n=i.hold??"none",r=i.idempotent??!1,s=i.involution??!1;if(t&&"none"!==n)throw Error(`Function Definition "${i.name}": unexpected 'hold' attribute on a 'numeric' function`);if(r&&s)throw Error(`Function Definition "${i.name}": the 'idempotent' and 'involution' flags are mutually exclusive in function `);if(i.domain&&i.evalDomain)throw Error(`Function definition "${i.name}" should include either 'domain' or 'evalDomain', not both `);this.name=i.name,this.description=i.description,this.wikidata=i.wikidata,this.scope=e.context,this.threadable=i.threadable??!1,this.associative=i.associative??!1,this.commutative=i.commutative??!1,this.idempotent=r,this.involution=s,this.numeric=t,this.logic=i.logic??!1,this.relationalOperator=i.relationalOperator??!1,this.inert=i.inert??!1,this.pure=i.pure??!0,this.complexity=i.complexity??1e5,this.hold=n,this.sequenceHold=i.sequenceHold??!1,this.range=i.range,this.domain=i.domain?e.domain(i.domain):i.numeric?e.domain("Number"):e.domain("Anything"),this.canonical=i.canonical,this.simplify=i.simplify,this.evaluate=i.evaluate?"function"==typeof i.evaluate?i.evaluate:e.box(i.evaluate).canonical:void 0,this.N=i.N,this.evalDomain=i.evalDomain,this.evalDimension=i.evalDimension,this.sgn=i.sgn,this.compile=i.compile}_purge(){this.domain._purge()}}function dt(e,i){return new pt(e,i)}function vt(e,i){const t=e.engine;return"Negate"===e.head&&"Negate"===i.head?vt(e.op1,i.op1):"Negate"===e.head?Vi(vt(e.op1,i)):"Negate"===i.head?Vi(vt(e,i.op1)):"Add"===e.head?t.add(e.ops.map((e=>vt(e,i)))):"Add"===i.head?t.add(i.ops.map((i=>vt(e,i)))):t.mul([e,i])}function bt(e,i){if(1===i)return e;const t=vt(e,e);if(2===i)return t;if(i%2==0)return bt(t,i/2);return vt(bt(t,Math.round(i/2)-1),e)}function yt(e="all"){if("all"===e)return yt(["domains","core","collections","algebra","arithmetic","calculus","combinatorics","dimensions","linear-algebra","logic","numeric","other","physics","polynomials","relop","statistics","trigonometry","units"]);const i=[];for(const t of e){const e=Nt[t];e&&Array.isArray(e)?i.push(...e):e&&i.push(e)}return i}const Nt={arithmetic:Wi,core:Yi,collections:[gt,{functions:[{name:"Sequence"}]}],logic:Ki,relop:{functions:[{name:"Equal",domain:"MaybeBoolean",commutative:!0,complexity:11e3,relationalOperator:!0,evaluate:(e,i)=>{if(i.length<2)return e.symbol("True");let t;for(const n of i)if(t){if(!1===t.isEqual(n))return e.symbol("False")}else t=n;return e.symbol("True")}},{name:"NotEqual",domain:"MaybeBoolean",wikidata:"Q28113351",commutative:!0,complexity:11e3,relationalOperator:!0,evaluate:(e,i)=>{if(i.length<2)return e.symbol("False");let t;for(const n of i)if(t){if(!0===t.isEqual(n))return e.symbol("False")}else t=n;return e.symbol("True")}},{name:"Less",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,evaluate:(e,i)=>{if(i.length<2)return e.symbol("True");let t;for(const n of i){if(!n.isNumber)return;if(t){const i=e.fn("Subtract",[n,t]).N().sgn;if(null==i)return;if(i<=0)return e.symbol("False");t=n}else t=n}return e.symbol("True")}},{name:"NotLess",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("Less",i)])},{name:"Greater",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,canonical:(e,i)=>e._fn("Less",i.reverse()),evaluate:(e,i)=>{if(i.length<2)return e.symbol("True");let t;for(const n of i){if(!n.isNumber)return;if(t){const i=e.fn("Subtract",[n,t]).N().sgn;if(null==i)return;if(i>=0)return e.symbol("False");t=n}else t=n}return e.symbol("True")}},{name:"NotGreater",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("Greater",i)])},{name:"LessEqual",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,evaluate:(e,i)=>{if(i.length<2)return e.symbol("True");let t;for(const n of i){if(!n.isNumber)return;if(t){const i=e.fn("Subtract",[n,t]).N().sgn;if(null==i)return;if(i<0)return e.symbol("False");t=n}else t=n}return e.symbol("True")}},{name:"NotLessNotEqual",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("LessEqual",i)])},{name:"GreaterEqual",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,canonical:(e,i)=>e._fn("LessEqual",i.reverse()),evaluate:(e,i)=>{if(i.length<2)return e.symbol("True");let t;for(const n of i){if(!n.isNumber)return;if(t){const i=e.fn("Subtract",[n,t]).N().sgn;if(null==i)return;if(i>0)return e.symbol("False");t=n}else t=n}return e.symbol("True")}},{name:"NotGreaterNotEqual",domain:"MaybeBoolean",complexity:11e3,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("GreaterEqual",i)])},{name:"TildeFullEqual",description:"Indicate isomorphism, congruence and homotopic equivalence",domain:"MaybeBoolean",relationalOperator:!0},{name:"NotTildeFullEqual",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("TildeFullEqual",i)])},{name:"TildeEqual",description:"Approximately or asymptotically equal",domain:"MaybeBoolean",relationalOperator:!0,complexity:11e3},{name:"NotTildeEqual",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("TildeEqual",i)])},{name:"Approx",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0},{name:"NotApprox",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("Approx",i)])},{name:"ApproxEqual",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0},{name:"NotApproxEqual",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("ApproxEqual",i)])},{name:"ApproxNotEqual",domain:"MaybeBoolean",relationalOperator:!0,complexity:11100},{name:"NotApproxNotEqual",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("ApproxNotEqual",i)])},{name:"Precedes",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0},{name:"NotPrecedes",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("Precedes",i)])},{name:"Succeeds",domain:"MaybeBoolean"},{name:"NotSucceeds",domain:"MaybeBoolean",complexity:11100,relationalOperator:!0,canonical:(e,i)=>e._fn("Not",[e._fn("Succeeds",i)])}]},polynomials:[{functions:[{name:"Expand",description:"Expand out products and positive integer powers",evaluate:(e,i)=>i[0]?function(e){if("Multiply"===(e=e.simplify()).head)return 2===e.nops?vt(e.op1,e.op2):e.ops.reduce(((e,i)=>vt(e,i)),e.engine.ONE);if("Power"===e.head){const i=e.op1.head;if("Multiply"===i)return e.engine.mul(e.op1.ops.map((i=>e.engine.power(i,e.op2))));if("Negate"===i){const i=e.op2.asSmallInteger;if(null!==i&&i>0)return i%2==0?e.engine.power(e.op1.op1,e.op2):e.engine.negate(e.engine.power(e.op1.op1,e.op2))}if("Add"===i){const i=e.op2.asSmallInteger;if(null!==i)return i>0?bt(e.op1,i):e.engine.inverse(bt(e.op1,-i))}}return e}(i[0]):e.symbol("Nothing")}]}],physics:{symbols:[{name:"Mu-0",description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",domain:"RealNumber",value:125663706212e-17}]},trigonometry:st};function xt(e,i){if("object"!=typeof i||!("name"in i)||!i.name)throw Error("Missing name for definition "+JSON.stringify(i));if(!/[A-Za-z][A-Za-z0-9-]*/.test(i.name)&&1!==i.name.length)throw Error("Invalid definition name "+i.name)}function _t(e,i){if(void 0===i)return;if(Array.isArray(i)){for(const t of i)_t(e,t);return}e.context.dictionary||(e.context.dictionary={symbols:new Map,functions:new Map,symbolWikidata:new Map,functionWikidata:new Map});const t=e.context.dictionary;if(i.symbols)for(const n of i.symbols){xt(0,n);const i=new Ei(e,n);if(n.wikidata){if(t.symbolWikidata.has(n.wikidata))throw Error(`Duplicate symbol with wikidata ${n.wikidata}, ${n.name} and ${t.symbolWikidata.get(n.wikidata).name}`);t.symbolWikidata.set(n.wikidata,i)}if(t.symbols.has(n.name))throw Error(`Duplicate symbol definition ${n.name}:\n${JSON.stringify(t.symbols.get(n.name))}\n${JSON.stringify(n)}`);t.symbols.set(n.name,i)}if(i.functions)for(const n of i.functions){xt(0,n);const i=dt(e,n);if(t.functions.has(n.name)?t.functions.set(n.name,[...t.functions.get(n.name),i]):t.functions.set(n.name,[i]),n.wikidata){if(t.functionWikidata.has(n.wikidata))throw Error(`Duplicate function with wikidata ${n.wikidata}, ${n.name} and ${t.functionWikidata.get(n.wikidata).name}`);t.functionWikidata.set(n.wikidata,i)}}}function wt(e){return Number.isInteger(e)?Math.floor(Math.log2(Math.abs(e))/Math.log2(10))+(e>0?1:2):2}const St=function e(i){if(i.symbol)return 1;if(i.isLiteral){if(i.isZero)return 1;if(i.isInteger&&null!==i.asFloat)return wt(i.asFloat);const[e,t]=i.rationalValue;if(null!==e&&null!==t)return wt(e)+wt(t)+1;if(i.complexValue){const e=i.complexValue;return wt(e.re)+wt(e.im)+1}if(i.isNumber)return 2}const t=i.head;return("string"==typeof t?1:e(t))+(i.ops?.reduce(((i,t)=>i+e(t)),0)??0)};class Et{constructor(e){this._items=e?e instanceof Et?new Map(e._items):new Map(e):new Map}has(e){for(const i of this._items.keys())if(i.isSame(e))return!0;return!1}get(e){for(const[i,t]of this._items)if(i.isSame(e))return t}clear(){this._items.clear()}set(e,i){for(const t of this._items.keys())if(t.isSame(e))return void this._items.set(t,i);this._items.set(e,i)}delete(e){this._items.delete(e)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}}class It extends Ve{constructor(e,i,t){super(e,t),this._pattern=je(i)?e.parse(i):e.box(i),this._pattern.isCanonical&&(this._canonicalPattern=this._pattern)}get hash(){return Qe("Pattern")^this._pattern.hash}_purge(){this._pattern._purge(),this._canonicalPattern?._purge()}get json(){return ri(this.engine,"Pattern",[this._pattern])}get head(){return"Pattern"}get domain(){return this.engine.domain("Pattern")}get isCanonical(){return!0}set isCanonical(e){}isSame(e){return this===e||e instanceof It&&this._pattern.isSame(e._pattern)}isEqual(e){return e instanceof It&&this._pattern.isEqual(e._pattern)}match(e,i){let t=this._pattern;return i?.exact||(this._canonicalPattern||(this._canonicalPattern=this._pattern.canonical),t=this._canonicalPattern),function(e,i,t){const n=Mt(e,i,{},{numericTolerance:t?.numericTolerance??1e-10});return n||(t.recursive,null)}(e,t,{recursive:i?.recursive??!1,numericTolerance:i?.numericTolerance??0})}test(e,i){return null!==this.match(e,i)}count(e,i){let t=0;for(const n of e)null!==this.match(n,i)&&(t+=1);return t}subs(e){return new It(this.engine,this._pattern.subs(e).canonical)}}function kt(e,i,t){const n=function(e){const i=e.match(/^__?_?([a-zA-Z0-9]+)/);return null===i?"":i[1]}(e);return""===n?t:t[n]?i.isSame(t[n])?t:null:(t[n]=i,t)}function Mt(e,i,t,n){const r=e.engine;if(i instanceof yi)return e instanceof yi?0===n.numericTolerance?i.isSame(e)?t:null:i.isEqualWithTolerance(e,n.numericTolerance)?t:null:null;const s=i.string;if(null!==s)return e.string===s?t:null;const a=i.symbol;if(null!==a)return a.startsWith("_")?kt(a,e,t):a===e.symbol?t:null;if(i.nops!==e.nops)return null;const o=i.keys;if(null!==o){const i=e.keys;if(null===i)return null;for(const e of o){const r=Mt(i[e],o[e],t,n);if(null===r)return null;t=r}return t}if(i.ops){const s=i.head;if("string"==typeof s&&s.startsWith("_"))return kt(s,r.box(e.head),t);{const i=Mt(r.box(e.head),r.pattern(s),t,n);if(null===i)return null;t=i}const a=e.ops;let o={...t},l=0;const u=i.ops.map((e=>r.pattern(e)));for(;l<i.nops;){const e=u[l],i=e.symbol;if(null!==i)if(i.startsWith("__")){let e=0;if(void 0===u[l+1])e=a.length+1;else{let i=!1;for(;!i&&e<a.length;)i=null!==Mt(a[e],u[l+1],t,n),e+=1;if(!i)return null}if(!i.startsWith("___")&&e<=1)return null;o=kt(i,r.fn("Sequence",a.splice(0,e-1)),o)}else if(i.startsWith("_"))o=kt(i,a.shift(),o);else{const i=Mt(a.shift(),e,t,n);if(null===i)return null;o={...o,...i}}else{const i=Mt(a.shift(),e,t,n);if(null===i)return null;o={...o,...i}}if(null===o)return null;l+=1}return o}return null}class At{constructor(e){this._cache={},this._commonSymbols={True:null,False:null,Maybe:null,All:null,Missing:null,Nothing:null,None:null,Undefined:null,Pi:null,ImaginaryUnit:null},this._commonNumbers={0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null},this._commonDomains={Anything:null,Nothing:null,Boolean:null,MaybeBoolean:null,String:null,Domain:null,Symbol:null,Integer:null,RationalNumber:null,AlgebraicNumber:null,RealNumber:null,ExtendedRealNumber:null,ImaginaryNumber:null,ComplexNumber:null,ExtendedComplexNumber:null,Number:null,PositiveInteger:null,TranscendentalNumber:null,PositiveNumber:null},this._jsonSerializationOptions={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],repeatingDecimal:!0},this._stats={highwaterMark:0,symbols:new Set,expressions:new Set},this._defaultDomain=null,this._numericMode=e?.numericMode??"auto",this._precision=Math.max(e?.numericPrecision??100,Math.floor(ye)),this._decimal=qe.exports.Decimal.clone({precision:this._precision}),this.decimal=e=>new this._decimal(e),this.complex=(e,i)=>new Oe.exports.Complex(e,i),this.tolerance=e?.tolerance??1e-10,this.ZERO=new yi(this,0),this.ONE=new yi(this,1),this.TWO=new yi(this,2),this.HALF=new yi(this,[1,2]),this.NEGATIVE_ONE=new yi(this,-1),this.I=new yi(this,Oe.exports.Complex.I),this.NAN=new yi(this,NaN),this.POSITIVE_INFINITY=new yi(this,1/0),this.NEGATIVE_INFINITY=new yi(this,-1/0),this.COMPLEX_INFINITY=new yi(this,Oe.exports.Complex.INFINITY),this.purge();const i=e?.dictionaries??At.getDictionaries();this.pushScope({dictionary:i,scope:{warn:e=>{for(const i of e)i.message},timeLimit:2,memoryLimit:1,recursionLimit:1024}}),null===e?.assumptions?this.pushScope():this.pushScope({assumptions:e?.assumptions});for(const e of Object.keys(this._commonDomains))this._commonDomains[e]&&!this._commonDomains[e].symbolDefinition&&this._commonDomains[e]._repairDefinition();for(const e of Object.keys(this._commonSymbols))this._commonSymbols[e]&&!this._commonSymbols[e].symbolDefinition&&this._commonSymbols[e]._repairDefinition();this._defaultDomain=null===e?.defaultDomain?null:this.domain(e?.defaultDomain??"ExtendedRealNumber")}static getDictionaries(e="all"){return yt(e)}purge(){this.DECIMAL_NEGATIVE_ONE=this.decimal(-1),this.DECIMAL_NAN=this.decimal(NaN),this.DECIMAL_ZERO=this.decimal(0),this.DECIMAL_ONE=this.decimal(1),this.DECIMAL_TWO=this.decimal(2),this.DECIMAL_HALF=this.DECIMAL_ONE.div(this.DECIMAL_TWO),this.DECIMAL_PI=this.DECIMAL_NEGATIVE_ONE.acos();const e=this._stats.symbols.values(),i=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(const i of e)i._purge();for(const e of i)e._purge();for(const e of Object.values(this._commonDomains))e?._purge();for(const e of Object.values(this._commonSymbols))e?._purge();let t=this.context;for(;t;){if(t.dictionary?.functions)for(const[e,i]of t.dictionary.functions)for(const e of i)e._purge();if(t.dictionary?.symbols)for(const[e,i]of t.dictionary.symbols)i._purge();t=t.parentScope}for(const e of Object.keys(this._cache))this._cache[e].value&&(this._cache[e].purge?this._cache[e].value=this._cache[e].purge(this._cache[e].value):delete this._cache[e])}_register(e){this._stats.highwaterMark+=1}_unregister(e){}get stats(){const e=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=e,{...this._stats}}get precision(){return this._precision}set precision(e){const i=this._precision;"machine"===e&&(e=Math.floor(ye)),e!==i&&(this.latexSyntax.updateOptions({precision:e,avoidExponentsInRange:[-6,e]}),this._precision=Math.max(e,Math.floor(ye)),this._decimal=this._decimal.config({precision:this._precision}),this.purge())}get numericMode(){return this._numericMode}set numericMode(e){e!==this._numericMode&&(this._numericMode=e,"complex"!==e&&"machine"!==e||(this._precision=Math.floor(ye)),this.latexSyntax.options.precision>this._precision&&this.latexSyntax.updateOptions({precision:this._precision}),this.purge())}get timeLimit(){let e=this.context;for(;e;){if(void 0!==e.timeLimit)return e.timeLimit;e=e.parentScope}return 2}get iterationLimit(){let e=this.context;for(;e;){if(void 0!==e.iterationLimit)return e.iterationLimit;e=e.parentScope}return 1024}get recursionLimit(){let e=this.context;for(;e;){if(void 0!==e.recursionLimit)return e.recursionLimit;e=e.parentScope}return 1024}get defaultDomain(){return this._defaultDomain}set defaultDomain(e){this._defaultDomain=null===e?null:this.domain(e)}get tolerance(){return this._tolerance}set tolerance(e){this._tolerance="number"==typeof e&&Number.isFinite(e)?Math.max(e,0):1e-10,this._decimalTolerance=this.decimal(this._tolerance)}chop(e){return"number"==typeof e&&Math.abs(e)<=this._tolerance||e instanceof qe.exports.Decimal&&e.abs().lte(this._decimalTolerance)||e instanceof Oe.exports.Complex&&Math.abs(e.re)<=this._tolerance&&Math.abs(e.im)<=this._tolerance?0:e}get latexSyntax(){return this._latexSyntax||(this._latexSyntax=new be({precision:this.precision,avoidExponentsInRange:[-6,this.precision],computeEngine:this,onError:e=>{throw Error(e[0].message.toString())}})),this._latexSyntax}set costFunction(e){"function"!=typeof e&&(this._cost=St),this._cost=e}get costFunction(){return this._cost??St}getSymbolDefinition(e,i){let t,n=this.context;if(i)for(;n&&!t;)t=n.dictionary?.symbolWikidata.get(i),n=n.parentScope;for(;n&&!t;)i&&(t=n.dictionary?.symbolWikidata.get(i)),t||(t=n.dictionary?.symbols.get(e)),n=n.parentScope;return t}getFunctionDefinition(e){let i,t=this.context;for(;t&&!i;)i=t.dictionary?.functions.get(e),t=t.parentScope;if(i)return i[0]}defineSymbol(e){const i=new Ei(this,e);return this.context.dictionary||(this.context.dictionary={symbols:new Map,functions:new Map,symbolWikidata:new Map,functionWikidata:new Map}),e.name&&this.context.dictionary.symbols.set(e.name,i),e.wikidata&&this.context.dictionary.symbolWikidata.set(e.wikidata,i),i}pushScope(e){if(this.context={...e?.scope,parentScope:this.context,assumptions:this.context?new Et(this.context.assumptions):new Et},_t(this,e?.dictionary),void 0!==e?.assumptions)for(const i of e.assumptions)this.assume(this.parse(Be(i))??i)}popScope(){const e=this.context?.parentScope;if(this.context.warnings){const e=[...this.context.warnings];this.context.warnings=[],this.context.warn&&this.context.warn(e)}e&&this.context.warnings&&this.context.warnings.length>0&&(e.warnings?e.warnings=[...e.warnings,...this.context.warnings]:e.warnings=[...this.context.warnings]),this.context=e}get assumptions(){return this.context.assumptions||(this.context.assumptions=new Et),this.context.assumptions}shouldContinueExecution(){return void 0===this.deadline||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw Error("timeout")}assert(e,i,t,n){e||this.signal(i,t,n)}signal(e,i,t){let n="",r="";"object"==typeof e&&"message"in e?t=e.message:(n=e.latex,r=i??"");void 0===t||"string"==typeof t||Array.isArray(t)&&t.map((e=>e.toString())).join(", ")}cache(e,i,t){if(void 0===this._cache[e])try{this._cache[e]={build:i,purge:t,value:i()}}catch(e){}return this._cache[e]?.value}box(e){return Mi(this,e)}fn(e,i,t){if("Hold"===e)return this._fn("Hold",i,t);if(i=i.map((e=>e.canonical)),"String"===e)return this.string(i.map((e=>e.string??e.latex)).join(""),t);if("Symbol"===e)return this.symbol(i.map((e=>e.string??e.latex)).join(""),t);if(("Divide"===e||"Rational"===e)&&2===i.length){const e=i[0].asSmallInteger,t=i[1].asSmallInteger;if(null!==e&&null!==t&&Number.isInteger(e)&&Number.isInteger(t))return this.number([e,t])}if("Number"===e){if(1===i.length){const e=i[0],t=e.decimalValue??e.complexValue??e.machineValue;if(null!==t)return this.number(t);const[n,r]=e.rationalValue;if(null!==n&&null!==r)return this.number([n,r])}return this.NAN}if("Complex"===e){if(1===i.length){const e=i[0].asFloat;return null!==e?this.number(this.complex(0,e)):this.mul([i[0],this.I])}if(2===i.length){const e=i[0].asFloat,n=i[1].asFloat;return null!==e&&null!==n&&this.number(this.complex(e,n)),0===n?i[0]:this.add([i[0],this.mul([i[1],this.I])],t)}}if("Negate"===e&&1===i.length)return Vi(i[0]??this.symbol("Missing"),t);if("Single"===e||"Pair"===e||"Triple"===e||"KeyValuePair"===e)return this.tuple(i,t);if("Dictionary"===e){const e={};for(const t of i)if("Tuple"===t.head){const i=t.op1;if(!i.isMissing){t.op2;let n=i.symbol??i.string;if(!n&&i.isLiteral){const e=i.machineValue??i.asSmallInteger;e&&Number.isFinite(e)&&Number.isInteger(e)&&(n=e.toString())}n&&e[n]}}return new li(this,e,t)}if("Add"===e)return this.add(i,t);if("Multiply"===e)return this.mul(i,t);if("Divide"===e)return this.divide(i[0]??this.symbol("Missing"),i[1]??this.symbol("Missing"),t);if("Power"===e)return this.power(i[0]??this.symbol("Missing"),i[1]??this.symbol("Missing"),t);return new gi(this,e,i,t).canonical}_fn(e,i,t){const n=new gi(this,e,i,t);return n.isCanonical=!0,n}error(e,i,t){return this._fn("Error",[e,this.string(i),this.box(t)])}add(e,i){const t=Ti(this,e);return i?.latex&&(t.latex=i.latex),i?.wikidata&&(t.wikidata=i.wikidata),t}mul(e,i){const t=ji(this,e);return i?.latex&&(t.latex=i.latex),i?.wikidata&&(t.wikidata=i.wikidata),t}power(e,i,t){let n=null;if("number"==typeof i?n=i:Array.isArray(i)&&1===i[1]&&(n=i[0]),1===n)return e;if(-1===n&&e.isLiteral){const[i,t]=e.rationalValue;if(null!==i&&null!==t)return this.number([t,i]);const n=e.asSmallInteger;if(null!==n)return this.number([1,n])}return("number"==typeof i||Array.isArray(i))&&(i=this.number(i)),Ri(this,e,i,t)??this._fn("Power",[e,i],t)}inverse(e,i){let t=this.NEGATIVE_ONE;if("Power"===e.head){if(e.op2.isNegativeOne)return e.op1;t=Vi(e.op2),e=e.op1}return Ri(this,e,t,i)??this._fn("Power",[e,t],i)}negate(e,i){return Vi(e,i)}divide(e,i,t){const n=Hi(this,e,i);return t?.latex&&(n.latex=t.latex),t?.wikidata&&(n.wikidata=t.wikidata),n}pair(e,i,t){return this._fn("Tuple",[e,i],t)}tuple(e,i){return this._fn("Tuple",e,i)}string(e,i){return new Ni(this,e,i)}symbol(e,i){if("Infinity"===e)return this.POSITIVE_INFINITY;if("+Infinity"===e)return this.POSITIVE_INFINITY;if("-Infinity"===e)return this.NEGATIVE_INFINITY;if("Half"===e)return this.HALF;let t=this._commonSymbols[e];return t?i?.wikidata&&t.wikidata&&t.wikidata!==i.wikidata?new Ii(this,e,i):t:null===t?(t=new Ii(this,e),this._commonSymbols[e]=t,t):new Ii(this,e,i)}domain(e,i){return"string"!=typeof e?e:this._commonDomains[e]?this._commonDomains[e]:null===this._commonDomains[e]?(this._commonDomains[e]=Di(this,e,i),this._commonDomains[e]):Di(this,e,i)}number(e,i){if(Array.isArray(e)&&1===e[1]&&(e=e[0]),"number"==typeof e){if(-1===e)return this.NEGATIVE_ONE;if(null===this._commonNumbers[e]&&(this._commonNumbers[e]=Ai(this,e)??null),this._commonNumbers[e])return this._commonNumbers[e]}return Ai(this,e,i)??this.NAN}rules(e){return ui(this,e)}pattern(e){return new It(this,e)}parse(e){return null===e?null:this.box(this.latexSyntax.parse(Be(e)??e))}serialize(e){return"object"==typeof e&&"json"in e?this.latexSyntax.serialize(e.json):this.latexSyntax.serialize(e)}get latexOptions(){return{...this.latexSyntax.options,...this.latexSyntax.serializer.options}}set latexOptions(e){this.latexSyntax.updateOptions(e)}get jsonSerializationOptions(){return this._jsonSerializationOptions}set jsonSerializationOptions(e){e.exclude&&(this._jsonSerializationOptions.exclude=[...e.exclude]),e.shorthands&&("all"===e.shorthands||e.shorthands.includes("all")?this._jsonSerializationOptions.shorthands=["function","symbol","string","dictionary","number"]:this._jsonSerializationOptions.shorthands=[...e.shorthands]),e.metadata&&("all"===e.metadata||e.metadata.includes("all")?this._jsonSerializationOptions.metadata=["latex","wikidata"]:this._jsonSerializationOptions.metadata=[...e.metadata])}ask(e){const i=this.pattern(e),t=[];for(const[e,n]of this.assumptions){const r=i.match(e,{numericTolerance:this._tolerance});null!==r&&!0===n&&t.push(r)}return t}assume(e,i){try{const t=Be(e);let n=t?this.parse(t):this.box(e);return i&&(n=this.box(["Element",e,this.domain(i)])),"not-a-predicate"}catch{return"internal-error"}}forget(e){if(void 0!==e){if(Array.isArray(e))for(const i of e)this.forget(i);else if("string"==typeof e){this.context.dictionary?.symbols.delete(e);for(const[i,t]of this.assumptions){He(i).includes(e)&&this.assumptions.delete(i)}}}else this.assumptions.clear()}}const Dt="0.4.3";export{At as ComputeEngine,i as DEBUG,e as DEFAULT_COMPLEXITY,Dt as version};
|
|
1
|
+
/** CortexJS Compute Engine 0.6.0 */
|
|
2
|
+
function e(e){return!("kind"in e)||"symbol"===e.kind}function t(e){return"kind"in e&&"matchfix"===e.kind}function i(e){return"kind"in e&&"infix"===e.kind}function n(e){return"kind"in e&&"prefix"===e.kind}function r(e){return"kind"in e&&"postfix"===e.kind}function s(e){return"kind"in e&&"environment"===e.kind}var a,o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},l={exports:{}};a=l,function(e){var t,i,n,r,s=9e15,o=1e9,l="0123456789abcdef",u="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",c="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",h={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-s,maxE:s,crypto:!1},m=!0,f="[DecimalError] ",g=f+"Invalid argument: ",p=f+"Precision limit exceeded",d=f+"crypto unavailable",v="[object Decimal]",b=Math.floor,y=Math.pow,N=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,x=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,_=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,S=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,w=1e7,E=u.length-1,I=c.length-1,k={toStringTag:v};function A(e){var t,i,n,r=e.length-1,s="",a=e[0];if(r>0){for(s+=a,t=1;t<r;t++)(i=7-(n=e[t]+"").length)&&(s+=R(i)),s+=n;(i=7-(n=(a=e[t])+"").length)&&(s+=R(i))}else if(0===a)return"0";for(;a%10==0;)a/=10;return s+a}function M(e,t,i){if(e!==~~e||e<t||e>i)throw Error(g+e)}function F(e,t,i,n){var r,s,a,o;for(s=e[0];s>=10;s/=10)--t;return--t<0?(t+=7,r=0):(r=Math.ceil((t+1)/7),t%=7),s=y(10,7-t),o=e[r]%s|0,null==n?t<3?(0==t?o=o/100|0:1==t&&(o=o/10|0),a=i<4&&99999==o||i>3&&49999==o||5e4==o||0==o):a=(i<4&&o+1==s||i>3&&o+1==s/2)&&(e[r+1]/s/100|0)==y(10,t-2)-1||(o==s/2||0==o)&&0==(e[r+1]/s/100|0):t<4?(0==t?o=o/1e3|0:1==t?o=o/100|0:2==t&&(o=o/10|0),a=(n||i<4)&&9999==o||!n&&i>3&&4999==o):a=((n||i<4)&&o+1==s||!n&&i>3&&o+1==s/2)&&(e[r+1]/s/1e3|0)==y(10,t-3)-1,a}function O(e,t,i){for(var n,r,s=[0],a=0,o=e.length;a<o;){for(r=s.length;r--;)s[r]*=t;for(s[0]+=l.indexOf(e.charAt(a++)),n=0;n<s.length;n++)s[n]>i-1&&(void 0===s[n+1]&&(s[n+1]=0),s[n+1]+=s[n]/i|0,s[n]%=i)}return s.reverse()}k.absoluteValue=k.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),P(e)},k.ceil=function(){return P(new this.constructor(this),this.e+1,2)},k.clampedTo=k.clamp=function(e,t){var i=this,n=i.constructor;if(e=new n(e),t=new n(t),!e.s||!t.s)return new n(NaN);if(e.gt(t))throw Error(g+t);return i.cmp(e)<0?e:i.cmp(t)>0?t:new n(i)},k.comparedTo=k.cmp=function(e){var t,i,n,r,s=this,a=s.d,o=(e=new s.constructor(e)).d,l=s.s,u=e.s;if(!a||!o)return l&&u?l!==u?l:a===o?0:!a^l<0?1:-1:NaN;if(!a[0]||!o[0])return a[0]?l:o[0]?-u:0;if(l!==u)return l;if(s.e!==e.e)return s.e>e.e^l<0?1:-1;for(t=0,i=(n=a.length)<(r=o.length)?n:r;t<i;++t)if(a[t]!==o[t])return a[t]>o[t]^l<0?1:-1;return n===r?0:n>r^l<0?1:-1},k.cosine=k.cos=function(){var e,t,i=this,n=i.constructor;return i.d?i.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(i.e,i.sd())+7,n.rounding=1,i=function(e,t){var i,n,r;if(t.isZero())return t;(n=t.d.length)<32?r=""+1/U(4,i=Math.ceil(n/3)):(i=16,r="2.3283064365386962890625e-10"),e.precision+=i,t=Q(e,1,t.times(r),new e(1));for(var s=i;s--;){var a=t.times(t);t=a.times(a).minus(a).times(8).plus(1)}return e.precision-=i,t}(n,K(n,i)),n.precision=e,n.rounding=t,P(2==r||3==r?i.neg():i,e,t,!0)):new n(1):new n(NaN)},k.cubeRoot=k.cbrt=function(){var e,t,i,n,r,s,a,o,l,u,c=this,h=c.constructor;if(!c.isFinite()||c.isZero())return new h(c);for(m=!1,(s=c.s*y(c.s*c,1/3))&&Math.abs(s)!=1/0?n=new h(s.toString()):(i=A(c.d),(s=((e=c.e)-i.length+1)%3)&&(i+=1==s||-2==s?"0":"00"),s=y(i,1/3),e=b((e+1)/3)-(e%3==(e<0?-1:2)),(n=new h(i=s==1/0?"5e"+e:(i=s.toExponential()).slice(0,i.indexOf("e")+1)+e)).s=c.s),a=(e=h.precision)+3;;)if(u=(l=(o=n).times(o).times(o)).plus(c),n=q(u.plus(c).times(o),u.plus(l),a+2,1),A(o.d).slice(0,a)===(i=A(n.d)).slice(0,a)){if("9999"!=(i=i.slice(a-3,a+1))&&(r||"4999"!=i)){+i&&(+i.slice(1)||"5"!=i.charAt(0))||(P(n,e+1,1),t=!n.times(n).times(n).eq(c));break}if(!r&&(P(o,e+1,0),o.times(o).times(o).eq(c))){n=o;break}a+=4,r=1}return m=!0,P(n,e,h.rounding,t)},k.decimalPlaces=k.dp=function(){var e,t=this.d,i=NaN;if(t){if(i=7*((e=t.length-1)-b(this.e/7)),e=t[e])for(;e%10==0;e/=10)i--;i<0&&(i=0)}return i},k.dividedBy=k.div=function(e){return q(this,new this.constructor(e))},k.dividedToIntegerBy=k.divToInt=function(e){var t=this.constructor;return P(q(this,new t(e),0,1,1),t.precision,t.rounding)},k.equals=k.eq=function(e){return 0===this.cmp(e)},k.floor=function(){return P(new this.constructor(this),this.e+1,3)},k.greaterThan=k.gt=function(e){return this.cmp(e)>0},k.greaterThanOrEqualTo=k.gte=function(e){var t=this.cmp(e);return 1==t||0===t},k.hyperbolicCosine=k.cosh=function(){var e,t,i,n,r,s=this,a=s.constructor,o=new a(1);if(!s.isFinite())return new a(s.s?1/0:NaN);if(s.isZero())return o;i=a.precision,n=a.rounding,a.precision=i+Math.max(s.e,s.sd())+4,a.rounding=1,(r=s.d.length)<32?t=""+1/U(4,e=Math.ceil(r/3)):(e=16,t="2.3283064365386962890625e-10"),s=Q(a,1,s.times(t),new a(1),!0);for(var l,u=e,c=new a(8);u--;)l=s.times(s),s=o.minus(l.times(c.minus(l.times(c))));return P(s,a.precision=i,a.rounding=n,!0)},k.hyperbolicSine=k.sinh=function(){var e,t,i,n,r=this,s=r.constructor;if(!r.isFinite()||r.isZero())return new s(r);if(t=s.precision,i=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,(n=r.d.length)<3)r=Q(s,2,r,r,!0);else{e=(e=1.4*Math.sqrt(n))>16?16:0|e,r=Q(s,2,r=r.times(1/U(5,e)),r,!0);for(var a,o=new s(5),l=new s(16),u=new s(20);e--;)a=r.times(r),r=r.times(o.plus(a.times(l.times(a).plus(u))))}return s.precision=t,s.rounding=i,P(r,t,i,!0)},k.hyperbolicTangent=k.tanh=function(){var e,t,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,q(i.sinh(),i.cosh(),n.precision=e,n.rounding=t)):new n(i.s)},k.inverseCosine=k.acos=function(){var e,t=this,i=t.constructor,n=t.abs().cmp(1),r=i.precision,s=i.rounding;return-1!==n?0===n?t.isNeg()?L(i,r,s):new i(0):new i(NaN):t.isZero()?L(i,r+4,s).times(.5):(i.precision=r+6,i.rounding=1,t=t.asin(),e=L(i,r+4,s).times(.5),i.precision=r,i.rounding=s,e.minus(t))},k.inverseHyperbolicCosine=k.acosh=function(){var e,t,i=this,n=i.constructor;return i.lte(1)?new n(i.eq(1)?0:NaN):i.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(i.e),i.sd())+4,n.rounding=1,m=!1,i=i.times(i).minus(1).sqrt().plus(i),m=!0,n.precision=e,n.rounding=t,i.ln()):new n(i)},k.inverseHyperbolicSine=k.asinh=function(){var e,t,i=this,n=i.constructor;return!i.isFinite()||i.isZero()?new n(i):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(i.e),i.sd())+6,n.rounding=1,m=!1,i=i.times(i).plus(1).sqrt().plus(i),m=!0,n.precision=e,n.rounding=t,i.ln())},k.inverseHyperbolicTangent=k.atanh=function(){var e,t,i,n,r=this,s=r.constructor;return r.isFinite()?r.e>=0?new s(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=s.precision,t=s.rounding,n=r.sd(),Math.max(n,e)<2*-r.e-1?P(new s(r),e,t,!0):(s.precision=i=n-r.e,r=q(r.plus(1),new s(1).minus(r),i+e,1),s.precision=e+4,s.rounding=1,r=r.ln(),s.precision=e,s.rounding=t,r.times(.5))):new s(NaN)},k.inverseSine=k.asin=function(){var e,t,i,n,r=this,s=r.constructor;return r.isZero()?new s(r):(t=r.abs().cmp(1),i=s.precision,n=s.rounding,-1!==t?0===t?((e=L(s,i+4,n).times(.5)).s=r.s,e):new s(NaN):(s.precision=i+6,s.rounding=1,r=r.div(new s(1).minus(r.times(r)).sqrt().plus(1)).atan(),s.precision=i,s.rounding=n,r.times(2)))},k.inverseTangent=k.atan=function(){var e,t,i,n,r,s,a,o,l,u=this,c=u.constructor,h=c.precision,f=c.rounding;if(u.isFinite()){if(u.isZero())return new c(u);if(u.abs().eq(1)&&h+4<=I)return(a=L(c,h+4,f).times(.25)).s=u.s,a}else{if(!u.s)return new c(NaN);if(h+4<=I)return(a=L(c,h+4,f).times(.5)).s=u.s,a}for(c.precision=o=h+10,c.rounding=1,e=i=Math.min(28,o/7+2|0);e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(m=!1,t=Math.ceil(o/7),n=1,l=u.times(u),a=new c(u),r=u;-1!==e;)if(r=r.times(l),s=a.minus(r.div(n+=2)),r=r.times(l),void 0!==(a=s.plus(r.div(n+=2))).d[t])for(e=t;a.d[e]===s.d[e]&&e--;);return i&&(a=a.times(2<<i-1)),m=!0,P(a,c.precision=h,c.rounding=f,!0)},k.isFinite=function(){return!!this.d},k.isInteger=k.isInt=function(){return!!this.d&&b(this.e/7)>this.d.length-2},k.isNaN=function(){return!this.s},k.isNegative=k.isNeg=function(){return this.s<0},k.isPositive=k.isPos=function(){return this.s>0},k.isZero=function(){return!!this.d&&0===this.d[0]},k.lessThan=k.lt=function(e){return this.cmp(e)<0},k.lessThanOrEqualTo=k.lte=function(e){return this.cmp(e)<1},k.logarithm=k.log=function(e){var t,i,n,r,s,a,o,l,u=this,c=u.constructor,h=c.precision,f=c.rounding;if(null==e)e=new c(10),t=!0;else{if(i=(e=new c(e)).d,e.s<0||!i||!i[0]||e.eq(1))return new c(NaN);t=e.eq(10)}if(i=u.d,u.s<0||!i||!i[0]||u.eq(1))return new c(i&&!i[0]?-1/0:1!=u.s?NaN:i?0:1/0);if(t)if(i.length>1)s=!0;else{for(r=i[0];r%10==0;)r/=10;s=1!==r}if(m=!1,a=G(u,o=h+5),n=t?D(c,o+10):G(e,o),F((l=q(a,n,o,1)).d,r=h,f))do{if(a=G(u,o+=10),n=t?D(c,o+10):G(e,o),l=q(a,n,o,1),!s){+A(l.d).slice(r+1,r+15)+1==1e14&&(l=P(l,h+1,0));break}}while(F(l.d,r+=10,f));return m=!0,P(l,h,f)},k.minus=k.sub=function(e){var t,i,n,r,s,a,o,l,u,c,h,f,g=this,p=g.constructor;if(e=new p(e),!g.d||!e.d)return g.s&&e.s?g.d?e.s=-e.s:e=new p(e.d||g.s!==e.s?g:NaN):e=new p(NaN),e;if(g.s!=e.s)return e.s=-e.s,g.plus(e);if(u=g.d,f=e.d,o=p.precision,l=p.rounding,!u[0]||!f[0]){if(f[0])e.s=-e.s;else{if(!u[0])return new p(3===l?-0:0);e=new p(g)}return m?P(e,o,l):e}if(i=b(e.e/7),c=b(g.e/7),u=u.slice(),s=c-i){for((h=s<0)?(t=u,s=-s,a=f.length):(t=f,i=c,a=u.length),s>(n=Math.max(Math.ceil(o/7),a)+2)&&(s=n,t.length=1),t.reverse(),n=s;n--;)t.push(0);t.reverse()}else{for((h=(n=u.length)<(a=f.length))&&(a=n),n=0;n<a;n++)if(u[n]!=f[n]){h=u[n]<f[n];break}s=0}for(h&&(t=u,u=f,f=t,e.s=-e.s),a=u.length,n=f.length-a;n>0;--n)u[a++]=0;for(n=f.length;n>s;){if(u[--n]<f[n]){for(r=n;r&&0===u[--r];)u[r]=w-1;--u[r],u[n]+=w}u[n]-=f[n]}for(;0===u[--a];)u.pop();for(;0===u[0];u.shift())--i;return u[0]?(e.d=u,e.e=C(u,i),m?P(e,o,l):e):new p(3===l?-0:0)},k.modulo=k.mod=function(e){var t,i=this,n=i.constructor;return e=new n(e),!i.d||!e.s||e.d&&!e.d[0]?new n(NaN):!e.d||i.d&&!i.d[0]?P(new n(i),n.precision,n.rounding):(m=!1,9==n.modulo?(t=q(i,e.abs(),0,3,1)).s*=e.s:t=q(i,e,0,n.modulo,1),t=t.times(e),m=!0,i.minus(t))},k.naturalExponential=k.exp=function(){return j(this)},k.naturalLogarithm=k.ln=function(){return G(this)},k.negated=k.neg=function(){var e=new this.constructor(this);return e.s=-e.s,P(e)},k.plus=k.add=function(e){var t,i,n,r,s,a,o,l,u,c,h=this,f=h.constructor;if(e=new f(e),!h.d||!e.d)return h.s&&e.s?h.d||(e=new f(e.d||h.s===e.s?h:NaN)):e=new f(NaN),e;if(h.s!=e.s)return e.s=-e.s,h.minus(e);if(u=h.d,c=e.d,o=f.precision,l=f.rounding,!u[0]||!c[0])return c[0]||(e=new f(h)),m?P(e,o,l):e;if(s=b(h.e/7),n=b(e.e/7),u=u.slice(),r=s-n){for(r<0?(i=u,r=-r,a=c.length):(i=c,n=s,a=u.length),r>(a=(s=Math.ceil(o/7))>a?s+1:a+1)&&(r=a,i.length=1),i.reverse();r--;)i.push(0);i.reverse()}for((a=u.length)-(r=c.length)<0&&(r=a,i=c,c=u,u=i),t=0;r;)t=(u[--r]=u[r]+c[r]+t)/w|0,u[r]%=w;for(t&&(u.unshift(t),++n),a=u.length;0==u[--a];)u.pop();return e.d=u,e.e=C(u,n),m?P(e,o,l):e},k.precision=k.sd=function(e){var t,i=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(g+e);return i.d?(t=T(i.d),e&&i.e+1>t&&(t=i.e+1)):t=NaN,t},k.round=function(){var e=this,t=e.constructor;return P(new t(e),e.e+1,t.rounding)},k.sine=k.sin=function(){var e,t,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(e=n.precision,t=n.rounding,n.precision=e+Math.max(i.e,i.sd())+7,n.rounding=1,i=function(e,t){var i,n=t.d.length;if(n<3)return t.isZero()?t:Q(e,2,t,t);i=(i=1.4*Math.sqrt(n))>16?16:0|i,t=Q(e,2,t=t.times(1/U(5,i)),t);for(var r,s=new e(5),a=new e(16),o=new e(20);i--;)r=t.times(t),t=t.times(s.plus(r.times(a.times(r).minus(o))));return t}(n,K(n,i)),n.precision=e,n.rounding=t,P(r>2?i.neg():i,e,t,!0)):new n(NaN)},k.squareRoot=k.sqrt=function(){var e,t,i,n,r,s,a=this,o=a.d,l=a.e,u=a.s,c=a.constructor;if(1!==u||!o||!o[0])return new c(!u||u<0&&(!o||o[0])?NaN:o?a:1/0);for(m=!1,0==(u=Math.sqrt(+a))||u==1/0?(((t=A(o)).length+l)%2==0&&(t+="0"),u=Math.sqrt(t),l=b((l+1)/2)-(l<0||l%2),n=new c(t=u==1/0?"5e"+l:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+l)):n=new c(u.toString()),i=(l=c.precision)+3;;)if(n=(s=n).plus(q(a,s,i+2,1)).times(.5),A(s.d).slice(0,i)===(t=A(n.d)).slice(0,i)){if("9999"!=(t=t.slice(i-3,i+1))&&(r||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(P(n,l+1,1),e=!n.times(n).eq(a));break}if(!r&&(P(s,l+1,0),s.times(s).eq(a))){n=s;break}i+=4,r=1}return m=!0,P(n,l,c.rounding,e)},k.tangent=k.tan=function(){var e,t,i=this,n=i.constructor;return i.isFinite()?i.isZero()?new n(i):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,(i=i.sin()).s=1,i=q(i,new n(1).minus(i.times(i)).sqrt(),e+10,0),n.precision=e,n.rounding=t,P(2==r||4==r?i.neg():i,e,t,!0)):new n(NaN)},k.times=k.mul=function(e){var t,i,n,r,s,a,o,l,u,c=this,h=c.constructor,f=c.d,g=(e=new h(e)).d;if(e.s*=c.s,!(f&&f[0]&&g&&g[0]))return new h(!e.s||f&&!f[0]&&!g||g&&!g[0]&&!f?NaN:f&&g?0*e.s:e.s/0);for(i=b(c.e/7)+b(e.e/7),(l=f.length)<(u=g.length)&&(s=f,f=g,g=s,a=l,l=u,u=a),s=[],n=a=l+u;n--;)s.push(0);for(n=u;--n>=0;){for(t=0,r=l+n;r>n;)o=s[r]+g[n]*f[r-n-1]+t,s[r--]=o%w|0,t=o/w|0;s[r]=(s[r]+t)%w|0}for(;!s[--a];)s.pop();return t?++i:s.shift(),e.d=s,e.e=C(s,i),m?P(e,h.precision,h.rounding):e},k.toBinary=function(e,t){return Y(this,2,e,t)},k.toDecimalPlaces=k.toDP=function(e,t){var i=this,n=i.constructor;return i=new n(i),void 0===e?i:(M(e,0,o),void 0===t?t=n.rounding:M(t,0,8),P(i,e+i.e+1,t))},k.toExponential=function(e,t){var i,n=this,r=n.constructor;return void 0===e?i=V(n,!0):(M(e,0,o),void 0===t?t=r.rounding:M(t,0,8),i=V(n=P(new r(n),e+1,t),!0,e+1)),n.isNeg()&&!n.isZero()?"-"+i:i},k.toFixed=function(e,t){var i,n,r=this,s=r.constructor;return void 0===e?i=V(r):(M(e,0,o),void 0===t?t=s.rounding:M(t,0,8),i=V(n=P(new s(r),e+r.e+1,t),!1,e+n.e+1)),r.isNeg()&&!r.isZero()?"-"+i:i},k.toFraction=function(e){var t,i,n,r,s,a,o,l,u,c,h,f,p=this,d=p.d,v=p.constructor;if(!d)return new v(p);if(u=i=new v(1),n=l=new v(0),a=(s=(t=new v(n)).e=T(d)-p.e-1)%7,t.d[0]=y(10,a<0?7+a:a),null==e)e=s>0?t:u;else{if(!(o=new v(e)).isInt()||o.lt(u))throw Error(g+o);e=o.gt(t)?s>0?t:u:o}for(m=!1,o=new v(A(d)),c=v.precision,v.precision=s=7*d.length*2;h=q(o,t,0,1,1),1!=(r=i.plus(h.times(n))).cmp(e);)i=n,n=r,r=u,u=l.plus(h.times(r)),l=r,r=t,t=o.minus(h.times(r)),o=r;return r=q(e.minus(i),n,0,1,1),l=l.plus(r.times(u)),i=i.plus(r.times(n)),l.s=u.s=p.s,f=q(u,n,s,1).minus(p).abs().cmp(q(l,i,s,1).minus(p).abs())<1?[u,n]:[l,i],v.precision=c,m=!0,f},k.toHexadecimal=k.toHex=function(e,t){return Y(this,16,e,t)},k.toNearest=function(e,t){var i=this,n=i.constructor;if(i=new n(i),null==e){if(!i.d)return i;e=new n(1),t=n.rounding}else{if(e=new n(e),void 0===t?t=n.rounding:M(t,0,8),!i.d)return e.s?i:e;if(!e.d)return e.s&&(e.s=i.s),e}return e.d[0]?(m=!1,i=q(i,e,0,t,1).times(e),m=!0,P(i)):(e.s=i.s,i=e),i},k.toNumber=function(){return+this},k.toOctal=function(e,t){return Y(this,8,e,t)},k.toPower=k.pow=function(e){var t,i,n,r,s,a,o=this,l=o.constructor,u=+(e=new l(e));if(!(o.d&&e.d&&o.d[0]&&e.d[0]))return new l(y(+o,u));if((o=new l(o)).eq(1))return o;if(n=l.precision,s=l.rounding,e.eq(1))return P(o,n,s);if((t=b(e.e/7))>=e.d.length-1&&(i=u<0?-u:u)<=9007199254740991)return r=z(l,o,i,n),e.s<0?new l(1).div(r):P(r,n,s);if((a=o.s)<0){if(t<e.d.length-1)return new l(NaN);if(0==(1&e.d[t])&&(a=1),0==o.e&&1==o.d[0]&&1==o.d.length)return o.s=a,o}return(t=0!=(i=y(+o,u))&&isFinite(i)?new l(i+"").e:b(u*(Math.log("0."+A(o.d))/Math.LN10+o.e+1)))>l.maxE+1||t<l.minE-1?new l(t>0?a/0:0):(m=!1,l.rounding=o.s=1,i=Math.min(12,(t+"").length),(r=j(e.times(G(o,n+i)),n)).d&&F((r=P(r,n+5,1)).d,n,s)&&(t=n+10,+A((r=P(j(e.times(G(o,t+i)),t),t+5,1)).d).slice(n+1,n+15)+1==1e14&&(r=P(r,n+1,0))),r.s=a,m=!0,l.rounding=s,P(r,n,s))},k.toPrecision=function(e,t){var i,n=this,r=n.constructor;return void 0===e?i=V(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(M(e,1,o),void 0===t?t=r.rounding:M(t,0,8),i=V(n=P(new r(n),e,t),e<=n.e||n.e<=r.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+i:i},k.toSignificantDigits=k.toSD=function(e,t){var i=this.constructor;return void 0===e?(e=i.precision,t=i.rounding):(M(e,1,o),void 0===t?t=i.rounding:M(t,0,8)),P(new i(this),e,t)},k.toString=function(){var e=this,t=e.constructor,i=V(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+i:i},k.truncated=k.trunc=function(){return P(new this.constructor(this),this.e+1,1)},k.valueOf=k.toJSON=function(){var e=this,t=e.constructor,i=V(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+i:i};var q=function(){function e(e,t,i){var n,r=0,s=e.length;for(e=e.slice();s--;)n=e[s]*t+r,e[s]=n%i|0,r=n/i|0;return r&&e.unshift(r),e}function t(e,t,i,n){var r,s;if(i!=n)s=i>n?1:-1;else for(r=s=0;r<i;r++)if(e[r]!=t[r]){s=e[r]>t[r]?1:-1;break}return s}function n(e,t,i,n){for(var r=0;i--;)e[i]-=r,r=e[i]<t[i]?1:0,e[i]=r*n+e[i]-t[i];for(;!e[0]&&e.length>1;)e.shift()}return function(r,s,a,o,l,u){var c,h,m,f,g,p,d,v,y,N,x,_,S,E,I,k,A,M,F,O,q=r.constructor,V=r.s==s.s?1:-1,C=r.d,D=s.d;if(!(C&&C[0]&&D&&D[0]))return new q(r.s&&s.s&&(C?!D||C[0]!=D[0]:D)?C&&0==C[0]||!D?0*V:V/0:NaN);for(u?(g=1,h=r.e-s.e):(u=w,g=7,h=b(r.e/g)-b(s.e/g)),F=D.length,A=C.length,N=(y=new q(V)).d=[],m=0;D[m]==(C[m]||0);m++);if(D[m]>(C[m]||0)&&h--,null==a?(E=a=q.precision,o=q.rounding):E=l?a+(r.e-s.e)+1:a,E<0)N.push(1),p=!0;else{if(E=E/g+2|0,m=0,1==F){for(f=0,D=D[0],E++;(m<A||f)&&E--;m++)I=f*u+(C[m]||0),N[m]=I/D|0,f=I%D|0;p=f||m<A}else{for((f=u/(D[0]+1)|0)>1&&(D=e(D,f,u),C=e(C,f,u),F=D.length,A=C.length),k=F,_=(x=C.slice(0,F)).length;_<F;)x[_++]=0;(O=D.slice()).unshift(0),M=D[0],D[1]>=u/2&&++M;do{f=0,(c=t(D,x,F,_))<0?(S=x[0],F!=_&&(S=S*u+(x[1]||0)),(f=S/M|0)>1?(f>=u&&(f=u-1),1==(c=t(d=e(D,f,u),x,v=d.length,_=x.length))&&(f--,n(d,F<v?O:D,v,u))):(0==f&&(c=f=1),d=D.slice()),(v=d.length)<_&&d.unshift(0),n(x,d,_,u),-1==c&&(c=t(D,x,F,_=x.length))<1&&(f++,n(x,F<_?O:D,_,u)),_=x.length):0===c&&(f++,x=[0]),N[m++]=f,c&&x[0]?x[_++]=C[k]||0:(x=[C[k]],_=1)}while((k++<A||void 0!==x[0])&&E--);p=void 0!==x[0]}N[0]||N.shift()}if(1==g)y.e=h,i=p;else{for(m=1,f=N[0];f>=10;f/=10)m++;y.e=m+h*g-1,P(y,l?a+y.e+1:a,o,p)}return y}}();function P(e,t,i,n){var r,s,a,o,l,u,c,h,f,g=e.constructor;e:if(null!=t){if(!(h=e.d))return e;for(r=1,o=h[0];o>=10;o/=10)r++;if((s=t-r)<0)s+=7,a=t,l=(c=h[f=0])/y(10,r-a-1)%10|0;else if((f=Math.ceil((s+1)/7))>=(o=h.length)){if(!n)break e;for(;o++<=f;)h.push(0);c=l=0,r=1,a=(s%=7)-7+1}else{for(c=o=h[f],r=1;o>=10;o/=10)r++;l=(a=(s%=7)-7+r)<0?0:c/y(10,r-a-1)%10|0}if(n=n||t<0||void 0!==h[f+1]||(a<0?c:c%y(10,r-a-1)),u=i<4?(l||n)&&(0==i||i==(e.s<0?3:2)):l>5||5==l&&(4==i||n||6==i&&(s>0?a>0?c/y(10,r-a):0:h[f-1])%10&1||i==(e.s<0?8:7)),t<1||!h[0])return h.length=0,u?(t-=e.e+1,h[0]=y(10,(7-t%7)%7),e.e=-t||0):h[0]=e.e=0,e;if(0==s?(h.length=f,o=1,f--):(h.length=f+1,o=y(10,7-s),h[f]=a>0?(c/y(10,r-a)%y(10,a)|0)*o:0),u)for(;;){if(0==f){for(s=1,a=h[0];a>=10;a/=10)s++;for(a=h[0]+=o,o=1;a>=10;a/=10)o++;s!=o&&(e.e++,h[0]==w&&(h[0]=1));break}if(h[f]+=o,h[f]!=w)break;h[f--]=0,o=1}for(s=h.length;0===h[--s];)h.pop()}return m&&(e.e>g.maxE?(e.d=null,e.e=NaN):e.e<g.minE&&(e.e=0,e.d=[0])),e}function V(e,t,i){if(!e.isFinite())return H(e);var n,r=e.e,s=A(e.d),a=s.length;return t?(i&&(n=i-a)>0?s=s.charAt(0)+"."+s.slice(1)+R(n):a>1&&(s=s.charAt(0)+"."+s.slice(1)),s=s+(e.e<0?"e":"e+")+e.e):r<0?(s="0."+R(-r-1)+s,i&&(n=i-a)>0&&(s+=R(n))):r>=a?(s+=R(r+1-a),i&&(n=i-r-1)>0&&(s=s+"."+R(n))):((n=r+1)<a&&(s=s.slice(0,n)+"."+s.slice(n)),i&&(n=i-a)>0&&(r+1===a&&(s+="."),s+=R(n))),s}function C(e,t){var i=e[0];for(t*=7;i>=10;i/=10)t++;return t}function D(e,t,i){if(t>E)throw m=!0,i&&(e.precision=i),Error(p);return P(new e(u),t,1,!0)}function L(e,t,i){if(t>I)throw Error(p);return P(new e(c),t,i,!0)}function T(e){var t=e.length-1,i=7*t+1;if(t=e[t]){for(;t%10==0;t/=10)i--;for(t=e[0];t>=10;t/=10)i++}return i}function R(e){for(var t="";e--;)t+="0";return t}function z(e,t,i,n){var r,s=new e(1),a=Math.ceil(n/7+4);for(m=!1;;){if(i%2&&J((s=s.times(t)).d,a)&&(r=!0),0===(i=b(i/2))){i=s.d.length-1,r&&0===s.d[i]&&++s.d[i];break}J((t=t.times(t)).d,a)}return m=!0,s}function $(e){return 1&e.d[e.d.length-1]}function Z(e,t,i){for(var n,r=new e(t[0]),s=0;++s<t.length;){if(!(n=new e(t[s])).s){r=n;break}r[i](n)&&(r=n)}return r}function j(e,t){var i,n,r,s,a,o,l,u=0,c=0,h=0,f=e.constructor,g=f.rounding,p=f.precision;if(!e.d||!e.d[0]||e.e>17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(m=!1,l=p):l=t,o=new f(.03125);e.e>-2;)e=e.times(o),h+=5;for(l+=n=Math.log(y(2,h))/Math.LN10*2+5|0,i=s=a=new f(1),f.precision=l;;){if(s=P(s.times(e),l,1),i=i.times(++c),A((o=a.plus(q(s,i,l,1))).d).slice(0,l)===A(a.d).slice(0,l)){for(r=h;r--;)a=P(a.times(a),l,1);if(null!=t)return f.precision=p,a;if(!(u<3&&F(a.d,l-n,g,u)))return P(a,f.precision=p,g,m=!0);f.precision=l+=10,i=s=o=new f(1),c=0,u++}a=o}}function G(e,t){var i,n,r,s,a,o,l,u,c,h,f,g=1,p=e,d=p.d,v=p.constructor,b=v.rounding,y=v.precision;if(p.s<0||!d||!d[0]||!p.e&&1==d[0]&&1==d.length)return new v(d&&!d[0]?-1/0:1!=p.s?NaN:d?0:p);if(null==t?(m=!1,c=y):c=t,v.precision=c+=10,n=(i=A(d)).charAt(0),!(Math.abs(s=p.e)<15e14))return u=D(v,c+2,y).times(s+""),p=G(new v(n+"."+i.slice(1)),c-10).plus(u),v.precision=y,null==t?P(p,y,b,m=!0):p;for(;n<7&&1!=n||1==n&&i.charAt(1)>3;)n=(i=A((p=p.times(e)).d)).charAt(0),g++;for(s=p.e,n>1?(p=new v("0."+i),s++):p=new v(n+"."+i.slice(1)),h=p,l=a=p=q(p.minus(1),p.plus(1),c,1),f=P(p.times(p),c,1),r=3;;){if(a=P(a.times(f),c,1),A((u=l.plus(q(a,new v(r),c,1))).d).slice(0,c)===A(l.d).slice(0,c)){if(l=l.times(2),0!==s&&(l=l.plus(D(v,c+2,y).times(s+""))),l=q(l,new v(g),c,1),null!=t)return v.precision=y,l;if(!F(l.d,c-10,b,o))return P(l,v.precision=y,b,m=!0);v.precision=c+=10,u=a=p=q(h.minus(1),h.plus(1),c,1),f=P(p.times(p),c,1),r=o=1}l=u,r+=2}}function H(e){return e.s*e.s/0+""}function W(e,t){var i,n,r;for((i=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(i<0&&(i=n),i+=+t.slice(n+1),t=t.substring(0,n)):i<0&&(i=t.length),n=0;48===t.charCodeAt(n);n++);for(r=t.length;48===t.charCodeAt(r-1);--r);if(t=t.slice(n,r)){if(r-=n,e.e=i=i-n-1,e.d=[],n=(i+1)%7,i<0&&(n+=7),n<r){for(n&&e.d.push(+t.slice(0,n)),r-=7;n<r;)e.d.push(+t.slice(n,n+=7));n=7-(t=t.slice(n)).length}else n-=r;for(;n--;)t+="0";e.d.push(+t),m&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function B(e,i){var n,r,s,a,o,l,u,c,h;if(i.indexOf("_")>-1){if(i=i.replace(/(\d)_(?=\d)/g,"$1"),S.test(i))return W(e,i)}else if("Infinity"===i||"NaN"===i)return+i||(e.s=NaN),e.e=NaN,e.d=null,e;if(x.test(i))n=16,i=i.toLowerCase();else if(N.test(i))n=2;else{if(!_.test(i))throw Error(g+i);n=8}for((a=i.search(/p/i))>0?(u=+i.slice(a+1),i=i.substring(2,a)):i=i.slice(2),o=(a=i.indexOf("."))>=0,r=e.constructor,o&&(a=(l=(i=i.replace(".","")).length)-a,s=z(r,new r(n),a,2*a)),a=h=(c=O(i,n,w)).length-1;0===c[a];--a)c.pop();return a<0?new r(0*e.s):(e.e=C(c,h),e.d=c,m=!1,o&&(e=q(e,s,4*l)),u&&(e=e.times(Math.abs(u)<54?y(2,u):t.pow(2,u))),m=!0,e)}function Q(e,t,i,n,r){var s,a,o,l,u=e.precision,c=Math.ceil(u/7);for(m=!1,l=i.times(i),o=new e(n);;){if(a=q(o.times(l),new e(t++*t++),u,1),o=r?n.plus(a):n.minus(a),n=q(a.times(l),new e(t++*t++),u,1),void 0!==(a=o.plus(n)).d[c]){for(s=c;a.d[s]===o.d[s]&&s--;);if(-1==s)break}s=o,o=n,n=a,a=s}return m=!0,a.d.length=c+1,a}function U(e,t){for(var i=e;--t;)i*=e;return i}function K(e,t){var i,n=t.s<0,s=L(e,e.precision,1),a=s.times(.5);if((t=t.abs()).lte(a))return r=n?4:1,t;if((i=t.divToInt(s)).isZero())r=n?3:2;else{if((t=t.minus(i.times(s))).lte(a))return r=$(i)?n?2:3:n?4:1,t;r=$(i)?n?1:4:n?3:2}return t.minus(s).abs()}function Y(e,t,n,r){var s,a,u,c,h,m,f,g,p,d=e.constructor,v=void 0!==n;if(v?(M(n,1,o),void 0===r?r=d.rounding:M(r,0,8)):(n=d.precision,r=d.rounding),e.isFinite()){for(v?(s=2,16==t?n=4*n-3:8==t&&(n=3*n-2)):s=t,(u=(f=V(e)).indexOf("."))>=0&&(f=f.replace(".",""),(p=new d(1)).e=f.length-u,p.d=O(V(p),10,s),p.e=p.d.length),a=h=(g=O(f,10,s)).length;0==g[--h];)g.pop();if(g[0]){if(u<0?a--:((e=new d(e)).d=g,e.e=a,g=(e=q(e,p,n,r,0,s)).d,a=e.e,m=i),u=g[n],c=s/2,m=m||void 0!==g[n+1],m=r<4?(void 0!==u||m)&&(0===r||r===(e.s<0?3:2)):u>c||u===c&&(4===r||m||6===r&&1&g[n-1]||r===(e.s<0?8:7)),g.length=n,m)for(;++g[--n]>s-1;)g[n]=0,n||(++a,g.unshift(1));for(h=g.length;!g[h-1];--h);for(u=0,f="";u<h;u++)f+=l.charAt(g[u]);if(v){if(h>1)if(16==t||8==t){for(u=16==t?4:3,--h;h%u;h++)f+="0";for(h=(g=O(f,s,t)).length;!g[h-1];--h);for(u=1,f="1.";u<h;u++)f+=l.charAt(g[u])}else f=f.charAt(0)+"."+f.slice(1);f=f+(a<0?"p":"p+")+a}else if(a<0){for(;++a;)f="0"+f;f="0."+f}else if(++a>h)for(a-=h;a--;)f+="0";else a<h&&(f=f.slice(0,a)+"."+f.slice(a))}else f=v?"0p+0":"0";f=(16==t?"0x":2==t?"0b":8==t?"0o":"")+f}else f=H(e);return e.s<0?"-"+f:f}function J(e,t){if(e.length>t)return e.length=t,!0}function X(e){return new this(e).abs()}function ee(e){return new this(e).acos()}function te(e){return new this(e).acosh()}function ie(e,t){return new this(e).plus(t)}function ne(e){return new this(e).asin()}function re(e){return new this(e).asinh()}function se(e){return new this(e).atan()}function ae(e){return new this(e).atanh()}function oe(e,t){e=new this(e),t=new this(t);var i,n=this.precision,r=this.rounding,s=n+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(i=t.s<0?L(this,n,r):new this(0)).s=e.s:!e.d||t.isZero()?(i=L(this,s,1).times(.5)).s=e.s:t.s<0?(this.precision=s,this.rounding=1,i=this.atan(q(e,t,s,1)),t=L(this,s,1),this.precision=n,this.rounding=r,i=e.s<0?i.minus(t):i.plus(t)):i=this.atan(q(e,t,s,1)):(i=L(this,s,1).times(t.s>0?.25:.75)).s=e.s:i=new this(NaN),i}function le(e){return new this(e).cbrt()}function ue(e){return P(e=new this(e),e.e+1,2)}function ce(e,t,i){return new this(e).clamp(t,i)}function he(e){if(!e||"object"!=typeof e)throw Error(f+"Object expected");var t,i,n,r=!0===e.defaults,a=["precision",1,o,"rounding",0,8,"toExpNeg",-s,0,"toExpPos",0,s,"maxE",0,s,"minE",-s,0,"modulo",0,9];for(t=0;t<a.length;t+=3)if(i=a[t],r&&(this[i]=h[i]),void 0!==(n=e[i])){if(!(b(n)===n&&n>=a[t+1]&&n<=a[t+2]))throw Error(g+i+": "+n);this[i]=n}if(i="crypto",r&&(this[i]=h[i]),void 0!==(n=e[i])){if(!0!==n&&!1!==n&&0!==n&&1!==n)throw Error(g+i+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(d);this[i]=!0}else this[i]=!1}return this}function me(e){return new this(e).cos()}function fe(e){return new this(e).cosh()}function ge(e,t){return new this(e).div(t)}function pe(e){return new this(e).exp()}function de(e){return P(e=new this(e),e.e+1,3)}function ve(){var e,t,i=new this(0);for(m=!1,e=0;e<arguments.length;)if((t=new this(arguments[e++])).d)i.d&&(i=i.plus(t.times(t)));else{if(t.s)return m=!0,new this(1/0);i=t}return m=!0,i.sqrt()}function be(e){return e instanceof t||e&&e.toStringTag===v||!1}function ye(e){return new this(e).ln()}function Ne(e,t){return new this(e).log(t)}function xe(e){return new this(e).log(2)}function _e(e){return new this(e).log(10)}function Se(){return Z(this,arguments,"lt")}function we(){return Z(this,arguments,"gt")}function Ee(e,t){return new this(e).mod(t)}function Ie(e,t){return new this(e).mul(t)}function ke(e,t){return new this(e).pow(t)}function Ae(e){var t,i,n,r,s=0,a=new this(1),l=[];if(void 0===e?e=this.precision:M(e,1,o),n=Math.ceil(e/7),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(n));s<n;)(r=t[s])>=429e7?t[s]=crypto.getRandomValues(new Uint32Array(1))[0]:l[s++]=r%1e7;else{if(!crypto.randomBytes)throw Error(d);for(t=crypto.randomBytes(n*=4);s<n;)(r=t[s]+(t[s+1]<<8)+(t[s+2]<<16)+((127&t[s+3])<<24))>=214e7?crypto.randomBytes(4).copy(t,s):(l.push(r%1e7),s+=4);s=n/4}else for(;s<n;)l[s++]=1e7*Math.random()|0;for(e%=7,(n=l[--s])&&e&&(r=y(10,7-e),l[s]=(n/r|0)*r);0===l[s];s--)l.pop();if(s<0)i=0,l=[0];else{for(i=-1;0===l[0];i-=7)l.shift();for(n=1,r=l[0];r>=10;r/=10)n++;n<7&&(i-=7-n)}return a.e=i,a.d=l,a}function Me(e){return P(e=new this(e),e.e+1,this.rounding)}function Fe(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function Oe(e){return new this(e).sin()}function qe(e){return new this(e).sinh()}function Pe(e){return new this(e).sqrt()}function Ve(e,t){return new this(e).sub(t)}function Ce(){var e=0,t=arguments,i=new this(t[e]);for(m=!1;i.s&&++e<t.length;)i=i.plus(t[e]);return m=!0,P(i,this.precision,this.rounding)}function De(e){return new this(e).tan()}function Le(e){return new this(e).tanh()}function Te(e){return P(e=new this(e),e.e+1,1)}(t=function e(t){var i,n,r;function s(e){var t,i,n,r=this;if(!(r instanceof s))return new s(e);if(r.constructor=s,be(e))return r.s=e.s,void(m?!e.d||e.e>s.maxE?(r.e=NaN,r.d=null):e.e<s.minE?(r.e=0,r.d=[0]):(r.e=e.e,r.d=e.d.slice()):(r.e=e.e,r.d=e.d?e.d.slice():e.d));if("number"==(n=typeof e)){if(0===e)return r.s=1/e<0?-1:1,r.e=0,void(r.d=[0]);if(e<0?(e=-e,r.s=-1):r.s=1,e===~~e&&e<1e7){for(t=0,i=e;i>=10;i/=10)t++;return void(m?t>s.maxE?(r.e=NaN,r.d=null):t<s.minE?(r.e=0,r.d=[0]):(r.e=t,r.d=[e]):(r.e=t,r.d=[e]))}return 0*e!=0?(e||(r.s=NaN),r.e=NaN,void(r.d=null)):W(r,e.toString())}if("string"!==n)throw Error(g+e);return 45===(i=e.charCodeAt(0))?(e=e.slice(1),r.s=-1):(43===i&&(e=e.slice(1)),r.s=1),S.test(e)?W(r,e):B(r,e)}if(s.prototype=k,s.ROUND_UP=0,s.ROUND_DOWN=1,s.ROUND_CEIL=2,s.ROUND_FLOOR=3,s.ROUND_HALF_UP=4,s.ROUND_HALF_DOWN=5,s.ROUND_HALF_EVEN=6,s.ROUND_HALF_CEIL=7,s.ROUND_HALF_FLOOR=8,s.EUCLID=9,s.config=s.set=he,s.clone=e,s.isDecimal=be,s.abs=X,s.acos=ee,s.acosh=te,s.add=ie,s.asin=ne,s.asinh=re,s.atan=se,s.atanh=ae,s.atan2=oe,s.cbrt=le,s.ceil=ue,s.clamp=ce,s.cos=me,s.cosh=fe,s.div=ge,s.exp=pe,s.floor=de,s.hypot=ve,s.ln=ye,s.log=Ne,s.log10=_e,s.log2=xe,s.max=Se,s.min=we,s.mod=Ee,s.mul=Ie,s.pow=ke,s.random=Ae,s.round=Me,s.sign=Fe,s.sin=Oe,s.sinh=qe,s.sqrt=Pe,s.sub=Ve,s.sum=Ce,s.tan=De,s.tanh=Le,s.trunc=Te,void 0===t&&(t={}),t&&!0!==t.defaults)for(r=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],i=0;i<r.length;)t.hasOwnProperty(n=r[i++])||(t[n]=this[n]);return s.config(t),s}(h)).prototype.constructor=t,t.default=t.Decimal=t,u=new t(u),c=new t(c),a.exports?("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator&&(k[Symbol.for("nodejs.util.inspect.custom")]=k.toString,k[Symbol.toStringTag]="Decimal"),a.exports=t):(e||(e="undefined"!=typeof self&&self&&self.self==self?self:window),n=e.Decimal,t.noConflict=function(){return e.Decimal=n,t},e.Decimal=t)}(o);var u=l.exports,c={exports:{}};function h(e){return 8205===e||65038===e||65039===e||e>=127995&&e<=128e3||e>=129456&&e<=129460||e>=917536&&e<=917632}function m(e){return e>=127462&&e<=127487}!function(e,t){!function(t){var i=function(e){return.5*(Math.exp(e)+Math.exp(-e))},n=function(e){return.5*(Math.exp(e)-Math.exp(-e))},r=function(){throw SyntaxError("Invalid Param")};function s(e,t){var i=Math.abs(e),n=Math.abs(t);return 0===e?Math.log(n):0===t?Math.log(i):i<3e3&&n<3e3?.5*Math.log(e*e+t*t):.5*Math.log((e/=2)*e+(t/=2)*t)+Math.LN2}function a(e,t){if(!(this instanceof a))return new a(e,t);var i=function(e,t){var i={re:0,im:0};if(null==e)i.re=i.im=0;else if(void 0!==t)i.re=e,i.im=t;else switch(typeof e){case"object":if("im"in e&&"re"in e)i.re=e.re,i.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return a.INFINITY;i.re=e.abs*Math.cos(e.arg),i.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 a.INFINITY;i.re=e.r*Math.cos(e.phi),i.im=e.r*Math.sin(e.phi)}else 2===e.length?(i.re=e[0],i.im=e[1]):r();break;case"string":i.im=i.re=0;var n=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),s=1,o=0;null===n&&r();for(var l=0;l<n.length;l++){var u=n[l];" "===u||"\t"===u||"\n"===u||("+"===u?s++:"-"===u?o++:"i"===u||"I"===u?(s+o===0&&r()," "===n[l+1]||isNaN(n[l+1])?i.im+=parseFloat((o%2?"-":"")+"1"):(i.im+=parseFloat((o%2?"-":"")+n[l+1]),l++),s=o=0):((s+o===0||isNaN(u))&&r(),"i"===n[l+1]||"I"===n[l+1]?(i.im+=parseFloat((o%2?"-":"")+u),l++):i.re+=parseFloat((o%2?"-":"")+u),s=o=0))}s+o>0&&r();break;case"number":i.im=0,i.re=e;break;default:r()}return isNaN(i.re)||i.im,i}(e,t);this.re=i.re,this.im=i.im}a.prototype={re:0,im:0,sign:function(){var e=this.abs();return new a(this.re/e,this.im/e)},add:function(e,t){var i=new a(e,t);return this.isInfinite()&&i.isInfinite()?a.NAN:this.isInfinite()||i.isInfinite()?a.INFINITY:new a(this.re+i.re,this.im+i.im)},sub:function(e,t){var i=new a(e,t);return this.isInfinite()&&i.isInfinite()?a.NAN:this.isInfinite()||i.isInfinite()?a.INFINITY:new a(this.re-i.re,this.im-i.im)},mul:function(e,t){var i=new a(e,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?a.NAN:this.isInfinite()||i.isInfinite()?a.INFINITY:0===i.im&&0===this.im?new a(this.re*i.re,0):new a(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)},div:function(e,t){var i=new a(e,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return a.NAN;if(this.isInfinite()||i.isZero())return a.INFINITY;if(this.isZero()||i.isInfinite())return a.ZERO;e=this.re,t=this.im;var n,r,s=i.re,o=i.im;return 0===o?new a(e/s,t/s):Math.abs(s)<Math.abs(o)?new a((e*(r=s/o)+t)/(n=s*r+o),(t*r-e)/n):new a((e+t*(r=o/s))/(n=o*r+s),(t-e*r)/n)},pow:function(e,t){var i=new a(e,t);if(e=this.re,t=this.im,i.isZero())return a.ONE;if(0===i.im){if(0===t&&e>0)return new a(Math.pow(e,i.re),0);if(0===e)switch((i.re%4+4)%4){case 0:return new a(Math.pow(t,i.re),0);case 1:return new a(0,Math.pow(t,i.re));case 2:return new a(-Math.pow(t,i.re),0);case 3:return new a(0,-Math.pow(t,i.re))}}if(0===e&&0===t&&i.re>0&&i.im>=0)return a.ZERO;var n=Math.atan2(t,e),r=s(e,t);return e=Math.exp(i.re*r-i.im*n),t=i.im*r+i.re*n,new a(e*Math.cos(t),e*Math.sin(t))},sqrt:function(){var e,t,i=this.re,n=this.im,r=this.abs();if(i>=0){if(0===n)return new a(Math.sqrt(i),0);e=.5*Math.sqrt(2*(r+i))}else e=Math.abs(n)/Math.sqrt(2*(r-i));return t=i<=0?.5*Math.sqrt(2*(r-i)):Math.abs(n)/Math.sqrt(2*(r+i)),new a(e,n<0?-t:t)},exp:function(){var e=Math.exp(this.re);return this.im,new a(e*Math.cos(this.im),e*Math.sin(this.im))},expm1:function(){var e=this.re,t=this.im;return new a(Math.expm1(e)*Math.cos(t)+function(e){var t=Math.PI/4;if(-t>e||e>t)return Math.cos(e)-1;var i=e*e;return i*(i*(i*(i*(i*(i*(i*(i/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-.5)}(t),Math.exp(e)*Math.sin(t))},log:function(){var e=this.re,t=this.im;return new a(s(e,t),Math.atan2(t,e))},abs:function(){return e=this.re,t=this.im,i=Math.abs(e),n=Math.abs(t),i<3e3&&n<3e3?Math.sqrt(i*i+n*n):(i<n?(i=n,n=e/t):n=t/e,i*Math.sqrt(1+n*n));var e,t,i,n},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var e=this.re,t=this.im;return new a(Math.sin(e)*i(t),Math.cos(e)*n(t))},cos:function(){var e=this.re,t=this.im;return new a(Math.cos(e)*i(t),-Math.sin(e)*n(t))},tan:function(){var e=2*this.re,t=2*this.im,r=Math.cos(e)+i(t);return new a(Math.sin(e)/r,n(t)/r)},cot:function(){var e=2*this.re,t=2*this.im,r=Math.cos(e)-i(t);return new a(-Math.sin(e)/r,n(t)/r)},sec:function(){var e=this.re,t=this.im,r=.5*i(2*t)+.5*Math.cos(2*e);return new a(Math.cos(e)*i(t)/r,Math.sin(e)*n(t)/r)},csc:function(){var e=this.re,t=this.im,r=.5*i(2*t)-.5*Math.cos(2*e);return new a(Math.sin(e)*i(t)/r,-Math.cos(e)*n(t)/r)},asin:function(){var e=this.re,t=this.im,i=new a(t*t-e*e+1,-2*e*t).sqrt(),n=new a(i.re-t,i.im+e).log();return new a(n.im,-n.re)},acos:function(){var e=this.re,t=this.im,i=new a(t*t-e*e+1,-2*e*t).sqrt(),n=new a(i.re-t,i.im+e).log();return new a(Math.PI/2-n.im,n.re)},atan:function(){var e=this.re,t=this.im;if(0===e){if(1===t)return new a(0,1/0);if(-1===t)return new a(0,-1/0)}var i=e*e+(1-t)*(1-t),n=new a((1-t*t-e*e)/i,-2*e/i).log();return new a(-.5*n.im,.5*n.re)},acot:function(){var e=this.re,t=this.im;if(0===t)return new a(Math.atan2(1,e),0);var i=e*e+t*t;return 0!==i?new a(e/i,-t/i).atan():new a(0!==e?e/0:0,0!==t?-t/0:0).atan()},asec:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new a(0,1/0);var i=e*e+t*t;return 0!==i?new a(e/i,-t/i).acos():new a(0!==e?e/0:0,0!==t?-t/0:0).acos()},acsc:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new a(Math.PI/2,1/0);var i=e*e+t*t;return 0!==i?new a(e/i,-t/i).asin():new a(0!==e?e/0:0,0!==t?-t/0:0).asin()},sinh:function(){var e=this.re,t=this.im;return new a(n(e)*Math.cos(t),i(e)*Math.sin(t))},cosh:function(){var e=this.re,t=this.im;return new a(i(e)*Math.cos(t),n(e)*Math.sin(t))},tanh:function(){var e=2*this.re,t=2*this.im,r=i(e)+Math.cos(t);return new a(n(e)/r,Math.sin(t)/r)},coth:function(){var e=2*this.re,t=2*this.im,r=i(e)-Math.cos(t);return new a(n(e)/r,-Math.sin(t)/r)},csch:function(){var e=this.re,t=this.im,r=Math.cos(2*t)-i(2*e);return new a(-2*n(e)*Math.cos(t)/r,2*i(e)*Math.sin(t)/r)},sech:function(){var e=this.re,t=this.im,r=Math.cos(2*t)+i(2*e);return new a(2*i(e)*Math.cos(t)/r,-2*n(e)*Math.sin(t)/r)},asinh:function(){var e=this.im;this.im=-this.re,this.re=e;var t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t},acosh:function(){var e=this.acos();if(e.im<=0){var t=e.re;e.re=-e.im,e.im=t}else t=e.im,e.im=-e.re,e.re=t;return e},atanh:function(){var e=this.re,t=this.im,i=e>1&&0===t,n=1-e,r=1+e,o=n*n+t*t,l=0!==o?new a((r*n-t*t)/o,(t*n+r*t)/o):new a(-1!==e?e/0:0,0!==t?t/0:0),u=l.re;return l.re=s(l.re,l.im)/2,l.im=Math.atan2(l.im,u)/2,i&&(l.im=-l.im),l},acoth:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new a(0,Math.PI/2);var i=e*e+t*t;return 0!==i?new a(e/i,-t/i).atanh():new a(0!==e?e/0:0,0!==t?-t/0:0).atanh()},acsch:function(){var e=this.re,t=this.im;if(0===t)return new a(0!==e?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var i=e*e+t*t;return 0!==i?new a(e/i,-t/i).asinh():new a(0!==e?e/0:0,0!==t?-t/0:0).asinh()},asech:function(){var e=this.re,t=this.im;if(this.isZero())return a.INFINITY;var i=e*e+t*t;return 0!==i?new a(e/i,-t/i).acosh():new a(0!==e?e/0:0,0!==t?-t/0:0).acosh()},inverse:function(){if(this.isZero())return a.INFINITY;if(this.isInfinite())return a.ZERO;var e=this.re,t=this.im,i=e*e+t*t;return new a(e/i,-t/i)},conjugate:function(){return new a(this.re,-this.im)},neg:function(){return new a(-this.re,-this.im)},ceil:function(e){return e=Math.pow(10,e||0),new a(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=Math.pow(10,e||0),new a(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=Math.pow(10,e||0),new a(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){var i=new a(e,t);return Math.abs(i.re-this.re)<=a.EPSILON&&Math.abs(i.im-this.im)<=a.EPSILON},clone:function(){return new a(this.re,this.im)},toString:function(){var e=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)<a.EPSILON&&(e=0),Math.abs(t)<a.EPSILON&&(t=0),0===t?i+e:(0!==e?(i+=e,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),1!==t&&(i+=t),i+"i"))},toVector:function(){return[this.re,this.im]},valueOf:function(){return 0===this.im?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return 0===this.im&&0===this.re},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!(this.isNaN()||this.isFinite())}},a.ZERO=new a(0,0),a.ONE=new a(1,0),a.I=new a(0,1),a.PI=new a(Math.PI,0),a.E=new a(Math.E,0),a.INFINITY=new a(1/0,1/0),a.NAN=new a(NaN,NaN),a.EPSILON=1e-15,Object.defineProperty(a,"__esModule",{value:!0}),a.default=a,a.Complex=a,e.exports=a}()}(c);class f{constructor(e){this.obeyspaces=!1,this.s=function(e){if(/^[\u0020-\u00FF]*$/.test(e))return e;const t=[],i=function(e){const t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);if(n>=55296&&n<=56319){const t=e.charCodeAt(i+1);t>=56320&&t<=57343&&(n=65536+1024*(n-55296)+(t-56320),i++)}t.push(n)}return t}(e);let n=0;for(;n<i.length;){const e=i[n++],r=i[n];if(8205===r){const e=n-1;for(n+=2;8205===i[n];)n+=2;t.push(String.fromCodePoint(...i.slice(e,2*n-e+1)))}else if(h(r)){const e=n-1;for(;h(i[n]);)n+=8205===i[n]?2:1;t.push(String.fromCodePoint(...i.slice(e,2*n-e-1)))}else m(e)?(n+=1,t.push(String.fromCodePoint(...i.slice(n-2,2)))):t.push(String.fromCodePoint(e))}return t}(e),this.pos=0}end(){return this.pos>=this.s.length}get(){return this.pos<this.s.length?this.s[this.pos++]:""}peek(){return this.s[this.pos]}match(e){let t;return t="string"==typeof this.s?e.exec(this.s.slice(this.pos)):e.exec(this.s.slice(this.pos).join("")),t?.[0]?(this.pos+=t[0].length,t[0]):null}next(){if(this.end())return null;if(!this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]+/))return"<space>";if(this.obeyspaces&&this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]/))return"<space>";const e=this.get();if("\\"===e){if(!this.end()){let e=this.match(/^[a-zA-Z*]+/);if(e)this.match(/^[ \f\n\r\t\v\xA0\u2028\u2029]*/);else if(e=this.get()," "===e)return"<space>";return"\\"+e}}else{if("{"===e)return"<{>";if("}"===e)return"<}>";if("^"===e){if("^"===this.peek()){this.get();const e=this.match(/^(\^(\^(\^(\^[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f])?[0-9a-f][0-9a-f]/);if(e)return String.fromCodePoint(parseInt(e.slice(e.lastIndexOf("^")+1),16))}return e}if("#"===e){if(!this.end()){let e=!1;if(/[0-9?]/.test(this.peek())&&(e=!0,this.pos+1<this.s.length)){const t=this.s[this.pos+1];e=/[^0-9A-Za-z]/.test(t)}return e?"#"+this.get():"#"}}else if("$"===e)return"$"===this.peek()?(this.get(),"<$$>"):"<$>"}return e}}function g(e,t){let i=[],n=e.next();if(n)if("\\relax"===n);else if("\\noexpand"===n)n=e.next(),n&&i.push(n);else if("\\obeyspaces"===n)e.obeyspaces=!0;else if("\\space"===n||"~"===n)i.push("<space>");else if("\\bgroup"===n)i.push("<{>");else if("\\egroup"===n)i.push("<}>");else if("\\string"===n)n=e.next(),n&&("\\"===n[0]?Array.from(n).forEach((e=>i.push("\\"===e?"\\backslash":e))):"<{>"===n?i.push("\\{"):"<space>"===n?i.push("~"):"<}>"===n&&i.push("\\}"));else if("\\csname"===n){for(;"<space>"===e.peek();)e.next();let r="",s=!1,a=[];do{0===a.length&&(/^#[0-9?]$/.test(e.peek())?(a=p(t?.[e.get().slice(1)]??t?.["?"]??"\\placeholder{}",t),n=a[0]):(n=e.next(),a=n?[n]:[])),s=0===a.length,s||"\\endcsname"!==n||(s=!0,a.shift()),s||(s="<$>"===n||"<$$>"===n||"<{>"===n||"<}>"===n||!!n&&n.length>1&&"\\"===n[0]),s||(r+=a.shift())}while(!s);r&&i.push("\\"+r),i=i.concat(a)}else if("\\endcsname"===n);else if(n.length>1&&"#"===n[0]){const e=n.slice(1);i=i.concat(p(t?.[e]??t?.["?"]??"\\placeholder{}",t))}else i.push(n);return i}function p(e,t){const i=e.toString().split(/\r?\n/);let n="",r="";for(const e of i){n+=r,r=" ";const t=e.match(/((?:\\%)|[^%])*/);null!==t&&(n+=t[0])}const s=new f(n),a=[];do{a.push(...g(s,t))}while(!s.end());return a}function d(e){let t="",i="";for(const n of e)n&&(/[a-zA-Z*]/.test(n[0])&&(i+=t),t=/\\[a-zA-Z]+\*?$/.test(n)?" ":"",i+=n);return i}function v(e){let t=[];if(Array.isArray(e))for(const i of e)Array.isArray(i)?t=[...t,...i]:t.push(i);else t=[e];return d(t.map((e=>({"<space>":" ","<$$>":"$$","<$>":"$","<{>":"{","<}>":"}"}[e]??e))))}function b(e){return null!==e&&"object"==typeof e&&"num"in e}function y(e){return null!==e&&"object"==typeof e&&"sym"in e}function N(e){return null!==e&&"object"==typeof e&&"fn"in e}function x(e){return null===e?null:"object"==typeof e&&"str"in e?e.str:"string"!=typeof e||e.length<2||"'"!==e[0]||"'"!==e[e.length-1]?null:e.substring(1,e.length-1)}function _(e){return null===e?null:Array.isArray(e)?e[0]:N(e)?e.fn[0]:null}function S(e){const t=_(e);return"string"==typeof t?t:""}function w(e,t){return null===e?null:Array.isArray(e)?e[t]??null:N(e)?e.fn[t]??null:null}function E(e){return Array.isArray(e)?Math.max(0,e.length-1):N(e)?Math.max(0,e.fn.length-1):0}function I(e){if(null===e)return null;const t=y(e)?e.sym:e;return"string"!=typeof t||t.length>=2&&"'"===t[0]&&"'"===t[t.length-1]?null:t}function k(e){if(null===e)return null;const t=y(e)?e.sym:e;return"string"!=typeof t||t.length<2||"'"!==t[0]||"'"!==t[t.length-1]?null:t.slice(1,-1)}function A(e){const t=_(e);if("KeyValuePair"===t||"Tuple"===t||"Pair"===t){const t=k(w(e,1));return t?[t,w(e,2)??"Nothing"]:null}return null}function M(e){if(null===e)return null;if("object"==typeof e&&"dict"in e)return e.dict;const t=A(e);if(t)return{[t[0]]:t[1]};const i=_(e);if("List"===i||"Dictionary"===i){const t={};for(let i=1;i<E(e);i++){const n=A(w(e,i));n&&(t[n[0]]=n[1])}return t}return null}function F(e){if(null===e)return null;if("number"==typeof e)return e;if(b(e))return parseFloat(e.num);const t=I(e);return"NaN"===t?NaN:"+Infinity"===t?1/0:"-Infinity"===t?-1/0:null}function O(e){if(function(e){return null===e||!Array.isArray(e)&&("object"!=typeof e||!("fn"in e||"dic"in e))}(e))return[null,null];const t=_(e);if(!t)return[null,null];let i=null,n=null;if("Negate"===t&&([i,n]=O(w(e,1)??"Missing"),null!==i&&null!==n))return[-i,n];if("Rational"===t)return[F(w(e,1)??NaN)??NaN,F(w(e,2)??NaN)??NaN];if("Power"===t){const t=F(w(e,2));1===t?(i=F(w(e,1))??null,n=1):-1===t&&(i=1,n=F(w(e,1))??null)}return"Divide"===t&&(i=F(w(e,1))??null,n=F(w(e,2))??null),"Multiply"===t&&"Power"===_(w(e,2))&&-1===F(w(w(e,2),2))&&(i=F(w(e,1))??null,n=F(w(w(e,2),1))??null),null===i||null===n?[null,null]:Number.isInteger(i)&&Number.isInteger(n)?[i,n]:[null,null]}function q(e){return Array.isArray(e)?e.slice(1):N(e)?e.fn.slice(1):[]}function P(e,t){let i=null;if(Array.isArray(e)&&(i=e),N(e)&&(i=e.fn),null===i)return[];let n=1;const r=[];for(;n<i.length;)r.push(t(i[n])),n+=1;return r}function V(e,t,i,n="both"){if("non"===n)return[e,t,i];const r=_(t),s=_(i);return"left"===n?r===e?[e,...q(t)??[],i]:[e,t,i]:"right"===n?s===e?[e,t,...q(i)??[]]:[e,t,i]:r===e&&s===e?[e,...q(t)??[],...q(i)??[]]:r===e?[e,...q(t)??[],i]:s===e?[e,t,...q(i)??[]]:[e,t,i]}function C(e){const t=_(e);return null===e?null:("Delimiter"===t&&(e=w(e,1)??null),null===e?null:"Sequence"===t?q(e)??[]:null)}function D(e,t){return t>2?"solidus":"radical"}function L(e,t){return t>3?"inline-solidus":"quotient"}function T(e,t,i,n){return null===i?"\\sqrt{}":(n=n??2,"solidus"===t?e.wrapShort(i)+"^{1\\/"+e.serialize(n)+"}":"quotient"===t?e.wrapShort(i)+"^{\\frac{1}{"+e.serialize(n)+"}}":2===F(n)?"\\sqrt{"+e.serialize(i)+"}":"\\sqrt["+e.serialize(n)+"]{"+e.serialize(i)+"}")}function R(e,t){if(null===t)return"";const i=w(t,1)??"Missing",n=w(t,2)??"Missing";if(1===E(t))return e.serialize(i);const r=L(0,e.level);if("inline-solidus"===r||"nice-solidus"===r){const t=e.wrapShort(i),s=e.wrapShort(n);return"inline-solidus"===r?`${t}\\/${s}`:`^{${t}}\\!\\!/\\!_{${s}}`}return"reciprocal"===r?e.wrap(i)+e.wrap(n)+"^{-1}":"factor"===r?"\\frac{1}{"+e.serialize(n)+"}"+e.wrap(i):`\\frac{${e.serialize(i)}}{${e.serialize(n)}}`}function z(e,t){const i=_(t),n=w(t,1)??"Missing",r=w(t,2)??"Missing";if("Sqrt"===i)return T(e,D(0,e.level),n,2);if("Root"===i)return T(e,D(0,e.level),n,r);const s=F(r)??1;if(-1===s)return e.serialize(["Divide","1",n]);if(s<0)return e.serialize(["Divide","1",["Power",n,-s]]);if("Divide"===_(r)||"Rational"===_(r)){if(1===F(w(r,1)))return T(e,D(0,e.level),n,w(r,2))}else if("Power"===_(r)&&-1===F(w(r,2)))return T(e,D(0,e.level),n,w(r,1));return e.wrapShort(n)+"^{"+e.serialize(r)+"}"}const $=[{name:"CatalanConstant",serialize:"G"},{name:"GoldenRatio",serialize:"\\varphi"},{name:"EulerGamma",serialize:"\\gamma"},{name:"Degrees",serialize:"\\frac{\\pi}{180}"},{trigger:["\\infty"],parse:{num:"+Infinity"}},{name:"ComplexInfinity",trigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{trigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",trigger:["\\pi"]},{trigger:["\u03c0"],parse:"Pi"},{name:"ExponentialE",trigger:["e"],serialize:"e"},{trigger:["\\mathrm","<{>","e","<}>"],parse:"ExponentialE"},{trigger:["\\exponentialE"],parse:"ExponentialE"},{name:"ImaginaryUnit",trigger:["\\imaginaryI"]},{trigger:["i"],parse:"ImaginaryUnit"},{trigger:["\\mathrm","<{>","i","<}>"],parse:"ImaginaryUnit"},{name:"Add",trigger:["+"],kind:"infix",associativity:"both",precedence:275,parse:(e,t,i)=>{if(275<t.minPrec)return null;const n=e.matchExpression({...t,minPrec:275});return null===n?null:V("Add",i,n)},serialize:function(e,t){e.level-=1;const i=_(t);let n="",r=w(t,1),s=!Number.isNaN(F(r)??NaN);if("Negate"===i)n="-"+e.wrap(r,276);else if("Add"===i){n=e.serialize(r);const i=E(t)+1;for(let a=2;a<i;a++){r=w(t,a);const i=F(r)??NaN,o=!Number.isNaN(i);let l=!1;if(null!==r&&s){const[t,i]=O(r);null!==t&&null!==i&&isFinite(t)&&isFinite(i)&&1!==i&&(n+=e.options.invisiblePlus+e.serialize(r),l=!0)}if(!l)if(i<0)n+=e.serialize(r);else if("Negate"===_(r))n+=e.wrap(r,275);else{const t=e.wrap(r,275);"-"===t[0]||"+"===t[0]?n+=t:n=n+"+"+t}s=o}}else if("Subtract"===i){const i=w(t,2);n=null!==i?e.wrap(r,275)+"-"+e.wrap(i,275):e.wrap(r,275)}return e.level+=1,n}},{kind:"prefix",trigger:["+"],precedence:275,parse:(e,t)=>275<t.minPrec?null:e.matchExpression({...t,minPrec:400})},{name:"Complex",precedence:274,serialize:(e,t)=>{const i=F(w(t,1)),n=F(w(t,2));if(0===n)return e.serialize(w(t,1));const r=1===n?"\\imaginaryI":-1===n?"-\\imaginaryI":d([e.serialize(w(t,2)),"\\imaginaryI"]);return 0===i?r:d(null!==n&&n<0?[e.serialize(w(t,1)),r]:[e.serialize(w(t,1)),"+",r])}},{name:"Divide",trigger:["\\frac"],requiredLatexArg:2,precedence:660,parse:function(e){const t=e.matchRequiredLatexArgument()??"Missing",i=e.matchRequiredLatexArgument()??"Missing";if("PartialDerivative"===_(t)&&("PartialDerivative"===_(i)||"Multiply"===_(i)&&"PartialDerivative"===_(w(i,1)))){const n=w(t,3)??"Missing";let r=w(t,1);null!==r&&"Missing"!==r||(r=e.matchExpression()??"Missing");let s=[];if("Multiply"===_(i)){for(const e of q(i))if("PartialDerivative"===_(e)){const t=w(e,2);t&&s.push(t)}}else{const e=w(i,2);e&&s.push(e)}return s.length>1&&(s=["List",...s]),["PartialDerivative",r,...s,"Missing"===n?1:n]}return["Divide",t,i]},serialize:R},{trigger:["\\/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{trigger:["/"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{trigger:["\\div"],kind:"infix",associativity:"non",precedence:660,parse:"Divide"},{name:"Exp",serialize:(e,t)=>d(["\\exponentialE^{",e.serialize(w(t,1)??"Missing"),"}"])},{name:"Factorial",trigger:["!"],kind:"postfix",precedence:810},{name:"Factorial2",trigger:["!","!"],kind:"postfix",precedence:810},{trigger:"\\operatorname{floor}",parse:e=>{const t=e.matchArguments("enclosure");return null===t?null:["Floor",...t]}},{name:"Gcd",trigger:"\\operatorname{gcd}",parse:e=>{const t=e.matchArguments("enclosure");return null===t?null:["Gcd",...t]},serialize:(e,t)=>d(["\\operatorname{gcd}","\\left(",e.serialize(t),"\\right)"])},{name:"Half",serialize:"\\frac12"},{name:"Lcm",trigger:"\\operatorname{lcm}"},{name:"MinusPlus",trigger:["\\mp"],kind:"infix",associativity:"both",precedence:270},{name:"Multiply",trigger:["\\times"],kind:"infix",associativity:"both",precedence:390,serialize:function e(t,i){if(null===i)return"";t.level-=1;let n="";const[r,s]=function(e){if("Multiply"!==_(e))return[[],[]];const t=[],i=[],n=q(e);for(const e of n)if("Power"===_(e))if("Negate"===_(w(e,2))){const t=w(e,1)??"Missing",n=w(w(e,2),1)??"Missing";i.push(["Power",t,n])}else{const n=F(w(e,2))??NaN;-1===n?i.push(w(e,1)??"Missing"):n<0?i.push(["Power",w(e,1)??"Missing",-n]):t.push(e)}else t.push(e);return[t,i]}(i);if(s.length>0&&(n=1===s.length&&1===s[0]?0===r.length?"1":1===r.length?t.serialize(r[0]):e(t,["Multiply",...r]):t.serialize(["Divide",1===r.length?r[0]:["Multiply",...r],1===s.length?s[0]:["Multiply",...s]])),n)return t.level+=1,n;let a=!1,o=null;const l=E(i)+1;let u=!1;for(let e=1;e<l;e++){if(o=w(i,e),null===o)continue;let r;if("number"==typeof o||b(o))r=t.serialize(o),"-1"!==r||n?("-"===r[0]&&(r=r.slice(1),a=!a),n=n?d([n,t.options.multiply,r]):r):n="-",u=!0;else{if("Power"===_(o)){const[e,i]=O(w(o,2)??NaN);if(1===e&&null!==i){n+=T(t,D(0,t.level),w(o,1),i),u=!1;continue}}if("Power"!==_(o)||isNaN(F(w(o,1))??NaN)){if("Negate"===_(o)&&(o=w(o,1),a=!a),r=t.wrap(o,390),n){const e=_(o);n=!u||"Divide"!==e&&"Rational"!==e?t.options.invisibleMultiply?d([n,t.options.invisibleMultiply,r]):d([n,r]):d([n,t.options.multiply,r])}else n=r;u=!1}else r=t.serialize(o),n=n?d([n,t.options.multiply,r]):r,u=!0}}return t.level+=1,a?"-"+n:n}},{trigger:["\\cdot"],kind:"infix",associativity:"both",precedence:390,parse:(e,t,i)=>{if(391<t.minPrec)return null;const n=e.matchExpression({...t,minPrec:392});return null===n?null:V("Multiply",i,n)}},{trigger:["*"],kind:"infix",associativity:"both",precedence:390,parse:(e,t,i)=>{if(391<t.minPrec)return null;const n=e.matchExpression({...t,minPrec:392});return null===n?null:["Multiply",i,n]}},{name:"Negate",trigger:["-"],kind:"prefix",parse:(e,t)=>{if(276<t.minPrec)return null;const i=e.matchExpression({...t,minPrec:400});return null===i?null:["Negate",i]},precedence:275},{name:"PlusMinus",trigger:["\\pm"],kind:"infix",associativity:"both",precedence:270},{name:"Power",trigger:["^"],kind:"infix",serialize:z},{name:"Rational",precedence:660,serialize:R},{name:"Root",serialize:z},{name:"Round",trigger:"\\operatorname{round}"},{name:"Square",precedence:720,serialize:(e,t)=>e.wrapShort(w(t,1))+"^2"},{name:"Sign",trigger:"\\operatorname{sgn}"},{name:"Sqrt",trigger:["\\sqrt"],optionalLatexArg:1,requiredLatexArg:1,parse:function(e){const t=e.matchOptionalLatexArgument(),i=e.matchRequiredLatexArgument();return null===i?null!==t?["Root","Missing",t]:["Sqrt","Missing"]:null!==t?["Root",i,t]:["Sqrt",i]},serialize:z},{name:"Subtract",trigger:["-"],kind:"infix",associativity:"both",precedence:275,parse:(e,t,i)=>{if(276<t.minPrec)return null;const n=e.matchExpression({...t,minPrec:277});return null===n?null:["Subtract",i,n]}}];function Z(e=""){return(t,i)=>q(i).map((e=>t.serialize(e))).join(e)}function j(e,t){if(null===t)return"";const i=_(t);if("LatexString"===i)return B(e,t);if("LatexTokens"===i)return W(e,t);const n=x(t);if(null!==n)return`\\text{${n}}`;const r=F(t);return null!==r?r.toString():`\\text{${JSON.stringify(t)}}`}const G=[{name:"Missing",trigger:["\\placeholder"],requiredLatexArg:1,serialize:e=>e.options.missingSymbol??"\\placeholder{}"},{name:"BaseForm",serialize:(e,t)=>{const i=F(w(t,2))??NaN;if(isFinite(i)&&i>=2&&i<=36){const e=F(w(t,1))??NaN;if(isFinite(e)){let t=Number(e).toString(i),n=0;if(2===i||10===i?n=4:16===i?n=2:i>16&&(n=4),n>0){const e=t;t="";for(let i=0;i<e.length;i++)i>0&&i%n==0&&(t="\\, "+t),t=e[e.length-i-1]+t}return`(\\text{${t}}_{${i}}`}}return"\\operatorname{BaseForm}("+e.serialize(w(t,1))+", "+e.serialize(w(t,2))+")"}},{name:"Delimiter",serialize:(e,t)=>{const i=E(t);if(0===i)return"";if(1===i)return`\\left( ${e.serialize(w(t,1))} \\right)`;let n="",r="\\left(",s="\\left)";2===i?n=j(e,w(t,2))??"":3===i?(r=j(e,w(t,2))??"",s=j(e,w(t,3))??""):(r=j(e,w(t,2))??"",n=j(e,w(t,3))??"",s=j(e,w(t,4))??"");const a=w(t,1);return n&&"Sequence"===_(a)?`${r} ${Z(n)(e,a)} ${s}`:`${r} ${e.serialize(a)} ${s}`}},{name:"Error",serialize:(e,t)=>{const i=w(t,1),n="Nothing"===I(i)?"":e.serialize(i);if(E(t)>=3){const e=w(t,3);if(e&&"LatexForm"===_(e)){const t=Q(x(w(e,1)));if(t)return`${n??""}\\texttt{\\textcolor{red}{${t}}}`}}return n??""}},{name:"FromLatex",serialize:(e,t)=>`\\texttt{${Q(x(w(t,1)))}}`},{name:"LatexForm",serialize:B},{name:"LatexTokens",serialize:W},{kind:"matchfix",openDelimiter:"(",closeDelimiter:")",parse:(e,t)=>null===t?null:"Sequence"===_(t)?0===E(t)?["Delimiter","Nothing"]:["Delimiter",...q(t)]:["Delimiter",t]},{name:"Sequence",trigger:[","],kind:"infix",precedence:20,parse:(e,t,i)=>{if(t.minPrec>=20)return null;"Missing"===i&&(i="Nothing");const n=["Sequence",i];let r=!1;for(;!r;){for(r=!0,e.skipSpace();e.match(",");)n.push("Nothing"),e.skipSpace();if(e.atTerminator(t))n.push("Nothing");else{const i=e.matchExpression({...t,minPrec:20});n.push(i??"Nothing"),r=null===i}r||(e.skipSpace(),r=!e.match(","))}return n},serialize:Z()},{trigger:[";"],kind:"infix",precedence:19,parse:(e,t,i)=>{if(t.minPrec>=19)return null;"Missing"===i&&(i="Nothing");const n=["Sequence",...C(i)??["Sequence",i]];for(;;){for(e.skipSpace();e.match(",");)n.push("Nothing"),e.skipSpace();if(e.atEnd){n.push("Nothing");break}const i=e.matchExpression({...t,minPrec:19});if(null===i){n.push("Nothing");break}if(n.push(...C(i)??["Sequence",i]),e.skipSpace(),!e.match(","))break}return n}},{name:"String",trigger:["\\text"],parse:e=>H(e),serialize:(e,t)=>{const i=q(t);return null===i||0===i.length?"\\text{}":d(["\\text{",i.map((t=>e.serialize(t))).join(""),"}"])}},{name:"Subscript",trigger:["_"],kind:"infix",serialize:(e,t)=>2===E(t)?e.serialize(w(t,1))+"_{"+e.serialize(w(t,2))+"}":"_{"+e.serialize(w(t,1))+"}"},{name:"Superplus",trigger:["^","+"],kind:"postfix"},{name:"Subplus",trigger:["_","+"],kind:"postfix"},{name:"Superminus",trigger:["^","-"],kind:"postfix"},{name:"Subminus",trigger:["_","-"],kind:"postfix"},{trigger:["^","*"],kind:"postfix",parse:(e,t)=>["Superstar",t]},{name:"Superstar",trigger:["^","\\star"],kind:"postfix"},{trigger:["_","*"],kind:"postfix",parse:(e,t)=>["Substar",t]},{name:"Substar",trigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",trigger:["^","\\dagger"],kind:"postfix"},{trigger:["^","\\dag"],kind:"postfix",parse:(e,t)=>["Superdagger",t]},{name:"Prime",trigger:["^","\\prime"],kind:"postfix"},{trigger:["^","\\doubleprime"],kind:"postfix",parse:(e,t)=>["Prime",t??"Nothing",2]},{name:"Derivative",serialize:(e,t)=>{const i=F(w(t,1))??NaN;if(!isFinite(i))return"";const n=e.serialize(w(t,2));return 1===i?n+"^{\\prime}":2===i?n+"^{\\doubleprime}":n+"^{("+Number(i).toString()+")}"}},{name:"Piecewise",trigger:"cases",kind:"environment",parse:e=>["Piecewise",e.matchTabular("cases")??"Nothing"],serialize:(e,t)=>{if("List"!==_(w(t,1)))return"";const i=q(w(t,1));let n="",r="";for(const t of i){n+=r;const i=w(t,1);if(null!==i){n+=e.serialize(i);const r=w(t,2);null!==r&&(n+="&"+e.serialize(r))}r="\\\\"}return"\\begin{cases}"+n+"\\end{cases}"}}];function H(e,t){if(!e.match("<{>"))return"Nothing";const i=[];let n="",r=null;for(;!e.atEnd&&!e.match("<}>");)if("<{>"===e.peek)i.push(H(e));else if(e.match("\\textbf")&&e.match("<{>"))i.push(H(e,{"font-weight":"bold"}));else if(e.match("\\color")&&e.match("<{>")){const t=e.matchColor();t&&e.match("<}>")&&(null!==r&&n?i.push(["Style",n,{dict:r}]):n&&i.push(["String",n]),n="",r={color:t})}else if(e.match("<space>"))n+=" ";else if(e.match("<$>")){const t=e.index,r=e.matchExpression()??"Nothing";e.skipSpace(),e.match("<$>")?i.push(r):(n+="$",e.index=t)}else if(e.match("<$$>")){const t=e.index,r=e.matchExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?i.push(r):(n+="$$",e.index=t)}else n+=e.matchChar()??"";return null!==r&&n?i.push(["Style",n,{dict:r}]):n&&i.push(["String",n]),t?["Style",["String",...i],{dict:t}]:["String",...i]}function W(e,t){return null===t?"":d(P(t,(t=>{const i=x(t);return null===i?e.serialize(t):"<{>"===i?"{":"<}>"===i?"}":"<$>"===i?"$":"<$$>"===i?"$$":"<space>"===i?" ":i})))}function B(e,t){return null===t?"":d(P(t,(t=>x(t)??e.serialize(t))))}function Q(e){return null===e?"":e.replace(/[{}\[\]\\:\-\$%]/g,(e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "}[e]??"\\"+e)))}const U=[{name:"Overscript",trigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",trigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",trigger:["+","+"],kind:"postfix",precedence:880},{name:"Decrement",trigger:["-","-"],kind:"postfix",precedence:880},{name:"PreIncrement",trigger:["+","+"],kind:"prefix",precedence:880},{name:"PreDecrement",trigger:["-","-"],kind:"prefix",precedence:880},{name:"Ring",trigger:["\\circ"],kind:"infix",precedence:265},{name:"Transpose",trigger:["^","T"],kind:"infix"},{name:"ConjugateTranspose",trigger:["^","H"],kind:"infix"},{name:"StringJoin",trigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",trigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",trigger:["\\partial"],kind:"prefix",parse:e=>{let t=!1,i="Nothing",n="Nothing";for(;!t;)e.skipSpace(),e.match("_")?n=e.matchRequiredLatexArgument():e.match("^")?i=e.matchRequiredLatexArgument():t=!0;const r=C(n);if(r&&(n=["List",...r]),!n||!i)return null;let s=e.matchRequiredLatexArgument()??"Nothing";return"Nothing"!==s&&(s=[s,...e.matchArguments("enclosure")??"Nothing"]),["PartialDerivative",s,n,i]},serialize:(e,t)=>{let i="\\partial";const n=w(t,1),r=w(t,2),s=w(t,3);return null!==r&&"Nothing"!==r&&("List"===_(r)?i+="_{"+e.serialize(["Sequence",...q(r)])+"}":i+="_{"+e.serialize(r)+"}"),null!==s&&"Nothing"!==s&&(i+="^{"+e.serialize(s)+"}"),null!==n&&"Nothing"!==n&&(i+=e.serialize(n)),i},precedence:740},{name:"OverBar",trigger:["\\overline"],requiredLatexArg:1},{name:"UnderBar",trigger:["\\underline"],requiredLatexArg:1},{name:"OverVector",trigger:["\\vec"],requiredLatexArg:1},{name:"OverTilde",trigger:["\\tilde"],requiredLatexArg:1},{name:"OverHat",trigger:["\\hat"],requiredLatexArg:1},{name:"OverRightArrow",trigger:["\\overrightarrow"],requiredLatexArg:1},{name:"OverLeftArrow",trigger:["\\overleftarrow"],requiredLatexArg:1},{name:"OverRightDoubleArrow",trigger:["\\Overrightarrow"],requiredLatexArg:1},{name:"OverLeftHarpoon",trigger:["\\overleftharpoon"],requiredLatexArg:1},{name:"OverRightHarpoon",trigger:["\\overrightharpoon"],requiredLatexArg:1},{name:"OverLeftRightArrow",trigger:["\\overleftrightarrow"],requiredLatexArg:1},{name:"OverBrace",trigger:["\\overbrace"],requiredLatexArg:1},{name:"OverLineSegment",trigger:["\\overlinesegment"],requiredLatexArg:1},{name:"OverGroup",trigger:["\\overgroup"],requiredLatexArg:1},{trigger:["\\displaystyle"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'display'","'block'"]]}},{trigger:["\\textstyle"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'display'","'inline'"]]}},{trigger:["\\scriptstyle"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'display'","'script'"]]}},{trigger:["\\scriptscriptstyle"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'display'","'scriptscript'"]]}},{trigger:["\\tiny"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",1]]}},{trigger:["\\scriptsize"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",2]]}},{trigger:["\\footnotesize"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",3]]}},{trigger:["\\small"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",4]]}},{trigger:["\\normalsize"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",5]]}},{trigger:["\\large"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",6]]}},{trigger:["\\Large"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",7]]}},{trigger:["\\LARGE"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",8]]}},{trigger:["\\huge"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",9]]}},{trigger:["\\Huge"],parse:e=>{const t=e.matchArguments("group");return null===t?null:["Style",...t,["KeyValuePair","'size'",10]]}},{name:"Style",serialize:(e,t)=>{let i=e.serialize(w(t,1));const n=M(w(t,2));if(null===n)return i;"block"===k(n.display)?i=d(["{\\displaystyle",i,"}"]):"inline"===k(n.display)?i=d(["{\\textstyle",i,"}"]):"script"===k(n.display)?i=d(["{\\scriptstyle",i,"}"]):"scriptscript"===k(n.display)&&(i=d(["{\\scriptscriptstyle",i,"}"]));const r=F(n.size);return null!==r&&r>=1&&r<=10&&(i=d(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],i,"}"])),i}},{trigger:["\\!"],parse:()=>["HorizontalSpacing","Nothing",-3]},{trigger:["\\ "],parse:()=>["HorizontalSpacing","Nothing",6]},{trigger:["\\:"],parse:()=>["HorizontalSpacing","Nothing",4]},{trigger:["\\enskip"],parse:()=>["HorizontalSpacing","Nothing",9]},{trigger:["\\quad"],parse:()=>["HorizontalSpacing","Nothing",18]},{trigger:["\\qquad"],parse:()=>["HorizontalSpacing","Nothing",36]},{trigger:["\\,"],parse:()=>["HorizontalSpacing","Nothing",3]},{trigger:["\\;"],parse:()=>["HorizontalSpacing","Nothing",5]},{trigger:["\\enspace"],parse:()=>["HorizontalSpacing","Nothing",9]},{name:"HorizontalSpacing",serialize:(e,t)=>{if("Nothing"===I(w(t,1))){const e=F(w(t,2));return null===e?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[e]??""}return""}}];function K(e){return t=>{let i=!1,n=0;if(t.skipSpace(),t.match("^")){if(t.skipSpace(),t.match("<{>")){t.skipSpace(),t.match("-")&&t.match("1")&&(i=!0);do{t.match("\\doubleprime")&&(n+=2),t.match("\\prime")&&(n+=1),t.match("'")&&(n+=1)}while(!t.match("<}>")&&!t.atEnd)}let e=!1;for(;!e;)t.skipSpace(),t.match("\\doubleprime")?n+=2:t.match("\\prime")||t.match("'")?n+=1:e=!0}let r={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arctan","\\arcsec":"Arcsec","\\arccsc":" Arccsc","\\arsinh":"Arsinh","\\arcosh":"Arcosh","\\artanh":"Artanh","\\arcsech":"Arcsech","\\arccsch":"Arcsch","\\ch":"Cosh","\\cos":"Cos","\\cosec":"Csc","\\cosh":"Csch","\\cot":"Cot","\\cotg":"Cot","\\coth":"Coth","\\csc":"Csc","\\ctg":"Cot","\\cth":"Coth","\\sec":"Sec","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tanh":"Tanh","\\tg":"Tan","\\th":"Tanh"}[e??""]??e??"";i&&(r=["InverseFunction",r]),n>=1&&(r=["Derivative",n,r]);const s=t.matchArguments("implicit");return null===s?[r,"Nothing"]:[r,...s]}}const Y=[{name:"Arcsin",trigger:["\\arcsin"],parse:K("Arcsin")},{name:"Arccos",trigger:["\\arccos"],parse:K("Arccos")},{name:"Arctan",trigger:["\\arctan"],parse:K("Arctan")},{trigger:["\\arctg"],parse:K("Arctan")},{name:"Arccot",trigger:["\\arcctg"],parse:K("Arccot")},{name:"Arcsec",trigger:["\\arcsec"],parse:K("Arcsec")},{name:"Arccsc",trigger:["\\arccsc"],parse:K("Arccsc")},{name:"Arsinh",trigger:["\\arsinh"],parse:K("Arsinh")},{name:"Arcosh",trigger:["\\arcosh"],parse:K("Arcosh")},{name:"Artanh",trigger:["\\artanh"],parse:K("Artanh")},{name:"Arsech",trigger:["\\arsech"],parse:K("Arsech")},{name:"Arcsch",trigger:["\\arcsch"],parse:K("Arcsch")},{trigger:["\\ch"],parse:K("Cosh")},{name:"Cosec",trigger:["\\cosec"],parse:K("Cosec")},{name:"Cosh",trigger:["\\cosh"],parse:K("Cosh")},{name:"Cot",trigger:["\\cot"],parse:K("Cot")},{trigger:["\\cotg"],parse:K("Cot")},{name:"Coth",trigger:["\\coth"],parse:K("Coth")},{name:"Csc",trigger:["\\csc"],parse:K("Csc")},{trigger:["\\ctg"],parse:K("Cot")},{trigger:["\\cth"],parse:K("Cotanh")},{name:"Sec",trigger:["\\sec"],parse:K("Sec")},{name:"Sinh",trigger:["\\sinh"],parse:K("Sinh")},{trigger:["\\sh"],parse:K("Sinh")},{name:"Tan",trigger:["\\tan"],parse:K("Tan")},{trigger:["\\tg"],parse:K("Tan")},{name:"Tanh",trigger:["\\tanh"],parse:K("Tanh")},{trigger:["\\th"],parse:K("Tanh")},{name:"Cos",trigger:["\\cos"],parse:K("Cos")},{name:"Sin",trigger:["\\sin"],parse:K("Sin")}],J=[{name:"AlgebraicNumber",trigger:"\\bar\\Q"},{name:"ComplexNumber",trigger:["\\C"]},{trigger:"\\mathbb{C}",parse:"ComplexNumber"},{name:"ImaginaryNumber",trigger:["\\imaginaryI\\R"]},{name:"ExtendedComplexNumber",trigger:["\\bar\\C"]},{name:"EmptySet",trigger:["\\emptyset"]},{trigger:["\\varnothing"],parse:"EmptySet"},{name:"Integer",trigger:["\\Z"]},{trigger:"\\mathbb{Z}",parse:"Integer"},{name:"RationalNumber",trigger:["\\Q"]},{name:"RealNumber",trigger:["\\R"]},{name:"ExtendedRealNumber",trigger:["\\bar\\R"]},{name:"TranscendentalNumber",trigger:"\\R-\\bar\\Q"},{trigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumber"},{name:"NegativeNumber",trigger:"\\R^-"},{trigger:"\\R^{-}",parse:"NegativeNumber"},{trigger:"\\R_-",parse:"NegativeNumber"},{trigger:"\\R_{-}",parse:"NegativeNumber"},{trigger:"\\R^{\\lt}",parse:"NegativeNumber"},{name:"PositiveNumber",trigger:"\\R^+"},{trigger:"\\R^{+}",parse:"PositiveNumber"},{trigger:"\\R_+",parse:"PositiveNumber"},{trigger:"\\R_{+}",parse:"PositiveNumber"},{trigger:"\\R^{\\gt}",parse:"PositiveNumber"},{name:"NonPositiveNumber",trigger:"\\R^{0-}"},{trigger:"\\R^{-0}",parse:"NonPositiveNumber"},{trigger:"\\R^{\\leq}",parse:"NonPositiveNumber"},{name:"NegativeInteger",trigger:"\\Z^-"},{trigger:"\\Z^-",parse:"NegativeInteger"},{trigger:"\\Z^{-}",parse:"NegativeInteger"},{trigger:"\\Z_-",parse:"NegativeInteger"},{trigger:"\\Z_{-}",parse:"NegativeInteger"},{trigger:"\\Z^{\\lt}",parse:"NegativeInteger"},{name:"PositiveInteger",trigger:"\\Z^+"},{trigger:"\\Z^{+}",parse:"PositiveInteger"},{trigger:"\\Z_+",parse:"PositiveInteger"},{trigger:"\\Z_{+}",parse:"PositiveInteger"},{trigger:"\\Z^{\\gt}",parse:"PositiveInteger"},{trigger:"\\Z^{\\gt0}",parse:"PositiveInteger"},{trigger:"\\N^+",parse:"PositiveInteger"},{trigger:"\\N^{+}",parse:"PositiveInteger"},{trigger:"\\N^*",parse:"PositiveInteger"},{trigger:"\\N^{*}",parse:"PositiveInteger"},{trigger:"\\N^\\star",parse:"PositiveInteger"},{trigger:"\\N^{\\star}",parse:"PositiveInteger"},{trigger:"\\N_1",parse:"PositiveInteger"},{trigger:"\\N_{1}",parse:"PositiveInteger"},{name:"NonNegativeInteger",trigger:["\\N"]},{trigger:"\\Z^{+0}",parse:"NonNegativeInteger"},{trigger:"\\Z^{\\geq}",parse:"NonNegativeInteger"},{trigger:"\\Z^{\\geq0}",parse:"NonNegativeInteger"},{trigger:"\\Z^{0+}",parse:"NonNegativeInteger"},{trigger:"\\mathbb{N}",parse:"NonNegativeInteger"},{trigger:"\\N_0",parse:"NonNegativeInteger"},{trigger:"\\N_{0}",parse:"NonNegativeInteger"},{name:"CartesianProduct",trigger:["\\times"],kind:"infix",associativity:"right",precedence:390,parse:(e,t,i)=>{if(390<t.minPrec)return null;const n=e.computeEngine;if(!n||!n.box(i).valueDomain.isSubdomainOf("Set"))return null;const r=e.index,s=e.matchExpression({...t,minPrec:390});return null===s||!0!==n.box(i).valueDomain.isSubdomainOf("Set")?(e.index=r,null):["CartesianProduct",i,s]}},{name:"Complement",trigger:["^","\\complement"],kind:"infix"},{name:"Intersection",trigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:X},{name:"Multiple",serialize:X},{name:"Union",trigger:["\\cup"],kind:"infix",precedence:350},{name:"Range",serialize:X},{name:"SetMinus",trigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",trigger:["\\triangle"],kind:"infix",precedence:260},{trigger:["\\ni"],kind:"infix",associativity:"right",precedence:160,parse:(e,t,i)=>{const n=e.matchExpression(t);return null===n?null:["Element",n,i]}},{name:"Element",trigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",trigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",trigger:["\\nsubset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSuperset",trigger:["\\nsupset"],kind:"infix",associativity:"right",precedence:240},{name:"NotSubsetNotEqual",trigger:["\\nsubseteq"],kind:"infix",associativity:"right",precedence:240},{name:"NotSupersetNotEqual",trigger:["\\nsupseteq"],kind:"infix",associativity:"right",precedence:240},{name:"SquareSubset",trigger:["\\sqsubset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSubsetEqual",trigger:["\\sqsubseteq"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSuperset",trigger:["\\sqsupset"],kind:"infix",associativity:"right",precedence:265},{name:"SquareSupersetEqual",trigger:["\\sqsupseteq"],kind:"infix",associativity:"right",precedence:265},{name:"Subset",trigger:["\\subset"],kind:"infix",associativity:"right",precedence:240},{trigger:["\\subsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{trigger:["\\varsubsetneqq"],kind:"infix",associativity:"right",precedence:240,parse:"Subset"},{name:"SubsetEqual",trigger:["\\subseteq"],kind:"infix",precedence:240},{name:"Superset",trigger:["\\supset"],kind:"infix",associativity:"right",precedence:240},{trigger:["\\supsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{trigger:["\\varsupsetneq"],kind:"infix",associativity:"right",precedence:240,parse:"Superset"},{name:"SupersetEqual",trigger:["\\supseteq"],kind:"infix",associativity:"right",precedence:240}];function X(e,t){if(null===t)return"";const i=_(t);return null===i?"":"Set"===i?0===E(t)?"\\emptyset":2===E(t)&&"Condition"===_(w(t,2))?d(["\\left\\lbrace",e.serialize(w(t,1)),"\\middle\\mid",e.serialize(w(t,2)),"\\right\\rbrace"]):d(["\\left\\lbrace",...q(t).map((t=>e.serialize(t)+" ,")),"\\right\\rbrace"]):(e.numericSetStyle(t,e.level),"")}const ee=[["Alpha","\\alpha",945],["Beta","\\beta",946],["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],["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],["CapitalAlpha","\\Alpha",913],["CapitalBeta","\\Beta",914],["CapitalGamma","\\Gamma",915],["CapitalDelta","\\Delta",916],["CapitalEpsilon","\\Epsilon",917],["CapitalZeta","\\Zeta",918],["CapitalEta","\\Eta",919],["CapitalTheta","\\Theta",920],["CapitaIota","\\Iota",921],["CapitalKappa","\\Kappa",922],["CapitalLambda","\\Lambda",923],["CapitalMu","\\Mu",924],["CapitalNu","\\Nu",925],["CapitalXi","\\Xi",926],["CapitalOmicron","\\Omicron",927],["CapitalPi","\\Pi",928],["CapitalRho","\\Rho",929],["CapitalSigma","\\Sigma",931],["CapitalTau","\\Tau",932],["CapitalPhi","\\Phi",934],["CapitalUpsilon","\\Upsilon",933],["CapitalChi","\\Chi",935],["CapitalPsi","\\Psi",936],["CapitalOmega","\\Omega",937],["Digamma","\\digamma",989],["Alef","\\aleph",8501],["Bet","\\beth",8502],["Gimel","\\gimel",8503],["Dalet","\\daleth",8504],["TurnedCapitalF","\\Finv",8498],["TurnedCapitalG","\\Game",8513],["Weierstrass","\\wp",8472],["Eth","\\eth",240],["InvertedOhm","\\mho",8487],["BlackClubSuit","\\clubsuit",9827],["WhiteHeartSuit","\\heartsuit",9825],["BlackSpadeSuit","\\spadesuit",9824],["WhiteDiamondSuit","\\diamondsuit",9826],["Sharp","\\sharp",9839],["Flat","\\flat",9837],["Natural","\\natural",9838]],te=[...ee.map((([e,t,i])=>({name:e,trigger:[t],parse:e}))),...ee.map((([e,t,i])=>({trigger:[String.fromCodePoint(i)],parse:e})))],ie={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","|":"\\vert","||":"\\Vert","\\lceil":"\\lceil","\\lfloor":"\\lfloor","\\rceil":"\\rceil","\\rfloor":"\\rfloor"};function ne(e){return Array.isArray(e)?e.length:1}function re(a,o){if(!function(s,a){const o=s.name??s.trigger??s.openDelimiter;if(void 0!==s.serialize&&!s.name)return a({severity:"warning",message:["invalid-dictionary-entry",o,"Unexpected serialize property without a name property"]}),!1;if(t(s)){if(s.trigger)return a({severity:"warning",message:["invalid-dictionary-entry",o,`Unexpected 'trigger' "${s.trigger}". 'matchfix' operators use a 'openDelimiter' and 'closeDelimiter' instead of a trigger. `]}),!1;if(!s.openDelimiter||!s.closeDelimiter)return a({severity:"warning",message:["invalid-dictionary-entry",o,"Expected `openDelimiter` and a `closeDelimiter` for matchfix operator"]}),!1;if(typeof s.openDelimiter!=typeof s.closeDelimiter)return a({severity:"warning",message:["invalid-dictionary-entry",o,"Expected `openDelimiter` and `closeDelimiter` to both be strings or array of LatexToken"]}),!1}if(i(s)||r(s)||n(s)){if(Array.isArray(s.trigger)&&("_"===s.trigger[0]||"^"===s.trigger[0])||"string"==typeof s.trigger&&(s.trigger.startsWith("^")||s.trigger.startsWith("_"))){if(void 0!==s.precedence||void 0!==s.associativity)return a({severity:"warning",message:["invalid-dictionary-entry",o,'Unexpected "precedence" or "associativity" for superscript/subscript operator']}),!1}else if(void 0===s.precedence)return a({severity:"warning",message:["invalid-dictionary-entry",o,`Expected a "precedence" for ${s.kind} operator`]}),!1}else if(void 0!==s.associativity)return a({severity:"warning",message:["invalid-dictionary-entry",o,'Unexpected "associativity" operator']}),!1;return e(s)||void 0===s.optionalLatexArg&&void 0===s.requiredLatexArg?t(s)||s.trigger||s.name?void 0!==s.parse||void 0!==s.name||(a({severity:"warning",message:["invalid-dictionary-entry",o,"Expected a 'parse' or 'name'"]}),!1):(a({severity:"warning",message:["invalid-dictionary-entry",o,"Expected at least a 'trigger' or a 'name'"]}),!1):(a({severity:"warning",message:["invalid-dictionary-entry",o,'Unexpected "optionalLatexArg" or "requiredLatexArg" for non-symbol']}),!1)}(a,o))return[null,null];const l={name:a.name,kind:"kind"in a?a.kind:"symbol"};if("matchfix"===l.kind&&t(a)){if(l.openDelimiter=a.openDelimiter,l.closeDelimiter=a.closeDelimiter,"function"==typeof a.serialize)l.serialize=a.serialize;else{const e="string"==typeof l.openDelimiter?ie[l.openDelimiter]:v(l.openDelimiter),t="string"==typeof l.closeDelimiter?ie[l.closeDelimiter]:v(l.closeDelimiter);l.serialize=(i,n)=>d([e,i.serialize(n),t])}if("function"==typeof a.parse)l.parse=a.parse;else{const e=a.parse??a.name;l.parse=(t,i)=>[e,i]}return[null,l]}if("environment"===l.kind&&s(a)){const e=a.trigger;return l.serialize=(t,i)=>`\\begin{${e}${t.serialize(w(i,1))}\\end{${e}`,l.parse=a.parse??(()=>null),[e,l]}const u="string"==typeof a.trigger?p(a.trigger,[]):a.trigger,c=u?v(u):"";if(a.trigger,"symbol"===l.kind&&e(a)&&(l.precedence=a.precedence??1e4,l.optionalLatexArg=a.optionalLatexArg??0,l.requiredLatexArg=a.requiredLatexArg??0),"infix"!==l.kind&&"prefix"!==l.kind&&"postfix"!==l.kind||!(i(a)||n(a)||r(a))||(!u||"^"!==u[0]&&"_"!==u[0]?l.precedence=a.precedence??1e4:l.precedence=720),"infix"===l.kind&&i(a))if(l.associativity=a.associativity??"non","function"==typeof a.parse)l.parse=a.parse;else if(!u||"^"!==u[0]&&"_"!==u[0]){const e=a.parse??a.name,t=l.precedence,i=l.associativity;l.parse=(n,r,s)=>{if(t<r.minPrec)return null;const a=n.matchExpression({...r,minPrec:t});return"string"!=typeof e?[e,s,a??"Missing"]:V(e,s,a??"Missing",i)}}else{const e=a.parse??a.name;l.parse=(t,i,n)=>[e,w(n,1)??"Missing",w(n,2)??"Missing"]}else if("function"==typeof a.parse)l.parse=a.parse;else if(void 0!==a.parse)l.parse=()=>a.parse;else if(void 0===a.parse&&void 0!==a.name)if("postfix"===l.kind)l.parse=(e,t)=>t?[a.name,t]:null;else if("prefix"===l.kind){const e=l.precedence,t=a.name;l.parse=(i,n)=>{if(e<n.minPrec)return null;const r=i.matchExpression({...n,minPrec:e});return null===r?null:[t,r]}}return"function"==typeof a.serialize||"string"==typeof a.serialize?l.serialize=a.serialize:u&&("postfix"===l.kind?l.serialize="#1"+c:"prefix"===l.kind?l.serialize=c+"#1":"infix"===l.kind?l.serialize="#1"+c+"#2":"symbol"===l.kind?l.serialize=c:l.serialize=""),[u??null,l]}const se={algebra:[{name:"To",trigger:["\\to"],kind:"infix",precedence:270}],arithmetic:$,calculus:[{name:"Integral",trigger:["\\int"],parse:function(e){let t="Nothing",i="Nothing",n=!1;for(;!n;)e.skipSpace(),e.match("_")?i=e.matchRequiredLatexArgument():e.match("^")?t=e.matchRequiredLatexArgument():n=!0;return["Integral",e.matchExpression({tokens:["d"]})??"",t??"Nothing",i??"Nothing"]},serialize:function(e,t){return""}}],core:G,logic:[{name:"True",trigger:["\\mathrm","<{>","T","r","u","e","<}>"],serialize:"\\mathrm{True}"},{name:"False",trigger:["\\mathrm","<{>","F","a","l","s","e","<}>"],serialize:"\\mathrm{False}"},{name:"Maybe",trigger:["\\mathrm","<{>","M","a","y","b","e","<}>"],serialize:"\\mathrm{Maybe}"}],relop:[{trigger:["!","<"],kind:"infix",associativity:"right",precedence:246,parse:"NotLess"},{name:"NotLess",trigger:["\\nless"],kind:"infix",associativity:"right",precedence:246},{trigger:["<"],kind:"infix",associativity:"right",precedence:245,parse:"Less"},{name:"Less",trigger:["\\lt"],kind:"infix",associativity:"right",precedence:245},{trigger:["<","="],kind:"infix",associativity:"right",precedence:241,parse:"LessEqual"},{name:"LessEqual",trigger:["\\le"],kind:"infix",associativity:"right",precedence:241},{trigger:["\\leq"],kind:"infix",associativity:"right",precedence:241,parse:"Equal"},{trigger:["\\leqslant"],kind:"infix",associativity:"right",precedence:265,parse:"LessEqual"},{name:"LessNotEqual",trigger:["\\lneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotLessNotEqual",trigger:["\\nleqq"],kind:"infix",associativity:"right",precedence:260},{name:"LessOverEqual",trigger:["\\leqq"],kind:"infix",associativity:"right",precedence:265},{name:"GreaterOverEqual",trigger:["\\geqq"],kind:"infix",associativity:"right",precedence:265,parse:"GreaterEqual"},{name:"Equal",trigger:["="],kind:"infix",associativity:"right",precedence:260},{trigger:["*","="],kind:"infix",associativity:"right",precedence:260,parse:"StarEqual"},{name:"StarEqual",trigger:["\\star","="],kind:"infix",associativity:"right",precedence:260},{name:"PlusEqual",trigger:["+","="],kind:"infix",associativity:"right",precedence:260},{name:"MinusEqual",trigger:["-","="],kind:"infix",associativity:"right",precedence:260},{name:"SlashEqual",trigger:["/","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqual",trigger:["=","="],kind:"infix",associativity:"right",precedence:260},{name:"EqualEqualEqual",trigger:["=","=","="],kind:"infix",associativity:"right",precedence:265},{name:"TildeFullEqual",trigger:["\\cong"],kind:"infix",associativity:"right",precedence:260},{name:"NotTildeFullEqual",trigger:["\\ncong"],kind:"infix",associativity:"right",precedence:260},{trigger:[":","="],kind:"infix",associativity:"right",precedence:260,parse:"Assign"},{name:"Assign",trigger:["\\coloneq"],kind:"infix",associativity:"right",precedence:260},{name:"Approx",trigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",trigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",trigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:260},{name:"NotApproxEqual",trigger:["!","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",trigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{name:"Unequal",trigger:["!","="],kind:"infix",associativity:"right",precedence:260},{name:"GreaterEqual",trigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{trigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{trigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{trigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:265,parse:"GreaterEqual"},{name:"GreaterNotEqual",trigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:260},{name:"NotGreaterNotEqual",trigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:260},{trigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",trigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",trigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{trigger:["!",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",trigger:["\\circeq"],kind:"infix",associativity:"right",precedence:260},{name:"TriangleEqual",trigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:260},{name:"DotEqual",trigger:["\\doteq"],kind:"infix",associativity:"right",precedence:265},{name:"DotEqualDot",trigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:265},{name:"FallingDotEqual",trigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"RisingDotEqual",trigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:265},{name:"QuestionEqual",trigger:["\\questeq"],kind:"infix",associativity:"right",precedence:260},{name:"Equivalent",trigger:["\\equiv"],kind:"infix",associativity:"right",precedence:260},{trigger:["\\iff"],kind:"infix",parse:"Equivalent",associativity:"right",precedence:260},{name:"MuchLess",trigger:["\\ll"],kind:"infix",associativity:"right",precedence:260},{name:"MuchGreater",trigger:["\\gg"],kind:"infix",associativity:"right",precedence:260},{name:"Precedes",trigger:["\\prec"],kind:"infix",associativity:"right",precedence:260},{name:"Succeeds",trigger:["\\succ"],kind:"infix",associativity:"right",precedence:260},{name:"PrecedesEqual",trigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:260},{name:"SucceedsEqual",trigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotPrecedes",trigger:["\\nprec"],kind:"infix",associativity:"right",precedence:260},{name:"NotSucceeds",trigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:260},{name:"Between",trigger:["\\between"],kind:"infix",associativity:"right",precedence:265}],other:U,physics:[{name:"mu-0",trigger:"\\mu_0"}],sets:J,symbols:te,trigonometry:Y},ae={"(":["\\lparen","("],")":["\\rparen",")"],"[":["\\lbrack"],"]":["\\rbrack"],"<":["<","\\langle"],">":[">","\\rangle"],"{":["\\{","\\lbrace"],"}":["\\}","\\rbrace"],":":[":","\\colon"],"|":["|","\\|","\\lvert","\\rvert"],"||":["||","\\Vert","\\lVert","\\rVert"],"\\lfloor":["\\lfloor"],"\\rfloor":["\\rfloor"],"\\lceil":["\\lceil"],"\\rceil":["\\rceil"],"\\ulcorner":["\\ulcorner"],"\\urcorner":["\\urcorner"],"\\llcorner":["\\llcorner"],"\\lrcorner":["\\lrcorner"],"\\lgroup":["\\lgroup"],"\\rgroup":["\\rgroup"],"\\lmoustache":["\\lmoustache"],"\\rmoustache":["\\rmoustache"]},oe={":":[":","\\colon"],"|":["|","\\|","\\mid","\\mvert"]},le={"\\left":"\\right","\\bigl":"\\bigr","\\Bigl":"\\Bigr","\\biggl":"\\biggr","\\Biggl":"\\Biggr","\\big":"\\big","\\Big":"\\Big","\\bigg":"\\bigg","\\Bigg":"\\Bigg"},ue=["\\middle","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],ce={"(":")","[":"]","\\{":"\\}","\\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"},he={precision:6,positiveInfinity:"\\infty",negativeInfinity:"-\\infty",notANumber:"\\operatorname{NaN}",decimalMarker:".",groupSeparator:"\\,",exponentProduct:"\\cdot",beginExponentMarker:"10^{",endExponentMarker:"}",notation:"auto",truncationMarker:"\\ldots",beginRepeatingDigits:"\\overline{",endRepeatingDigits:"}",imaginaryNumber:"\\imaginaryI",avoidExponentsInRange:[-7,20]},me={applyInvisibleOperator:"auto",skipSpace:!0,parseArgumentsOfUnknownLatexCommands:!0,parseNumbers:!0,parseUnknownSymbol:e=>/^[fg]$/.test(e)?"function":/^[a-zA-Z]+$/.test(e)?"symbol":"unknown",preserveLatex:!0};class fe{constructor(e,t,i,n,r){this.index=0,this._lastPeek="",this._peekCounter=0,this.options={...he,...me,...t},this.engine=n,this._tokens=e,this.onError=r,this._dictionary=i}updateOptions(e){for(const[t,i]of Object.entries(e))this.options[t]=i}clone(e,t){return new fe(this._tokens.slice(e,t),this.options,this._dictionary,this.engine,this.onError)}get atEnd(){return this.index>=this._tokens.length}get peek(){if(this._tokens[this.index]===this._lastPeek?this._peekCounter+=1:this._peekCounter=0,this._peekCounter>=1024)throw Error(`Infinite loop detected while parsing "${this.latex(0)}" at ${this._lastPeek} (index ${this.index})`);return this._lastPeek=this._tokens[this.index],this._tokens[this.index]}atTerminator(e){const t=this.index;return!!this.atEnd||!!e&&(!(!e.condition||!e.condition(this))||!!(e.tokens&&e.tokens.length>0&&this.matchAll(e.tokens))&&(this.index=t,!0))}latex(e,t){return v(this._tokens.slice(e,t))}latexAhead(e){return v(this._tokens.slice(this.index,this.index+e))}latexBefore(){return this.latex(0,this.index)}latexAfter(){return this.latex(this.index)}lookAhead(){let e=Math.min(this._dictionary.lookahead,this._tokens.length-this.index);const t=[];for(;e>0;)t[e]=this.latexAhead(e--);return t}peekDefinitions(e){let t;t="operator"===e?this.lookAhead().map(((e,t)=>this._dictionary.infix[t]?.get(e)??this._dictionary.postfix[t]?.get(e)??this._dictionary.prefix[t]?.get(e))):this.lookAhead().map(((t,i)=>this._dictionary[e][i]?.get(t)));const i=[];for(let e=t.length;e>0;e--)if(void 0!==t[e])for(const n of t[e])i.push([n,e]);return 0===i.length?null:i}next(){return this._tokens[this.index++]}skipSpace(){if(!this.atEnd&&"<{>"===this.peek&&"<}>"===this._tokens[this.index+1])return this.index+=2,this.skipSpace(),!0;let e=!1;if(!this.options.skipSpace)return!1;for(;this.match("<space>");)e=!0;return e&&this.skipSpace(),e}matchChar(){const e=this.index;let t=0;for(;this.match("^");)t+=1;if(t>=2){let e="",i=0;for(;i!=t;){const t=this.matchAny(["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]);if(!t)break;e+=t,i+=1}if(e.length===t)return String.fromCodePoint(Number.parseInt(e,16))}else{if(this.match("\\char")){let e=Math.floor(this.matchLatexNumber()??NaN);return(!Number.isFinite(e)||e<0||e>1114111)&&(e=10067),String.fromCodePoint(e)}if(this.match("\\unicode"))if("<{>"===this.peek){const e=this.matchLatexNumber();if(this.match("<}>")&&null!==e&&e>=0&&e<=1114111)return String.fromCodePoint(e)}else{const e=this.matchLatexNumber();if(null!==e&&e>=0&&e<=1114111)return String.fromCodePoint(e)}}return this.index=e,this.next()}matchColor(e=!1){let t="";for(;!this.atEnd&&"}"!==this.peek;)t+=this.next();return t}matchLatexDimension(){return null}match(e){return this._tokens[this.index]===e&&(this.index++,!0)}matchAll(e){"string"==typeof e&&(e=[e]);let t=!0,i=0;do{t=this._tokens[this.index+i]===e[i++]}while(t&&i<e.length);return t&&(this.index+=i),t}matchAny(e){return e.includes(this._tokens[this.index])?this._tokens[this.index++]:""}matchWhile(e){const t=[];for(;e.includes(this._tokens[this.index]);)t.push(this._tokens[this.index++]);return t}matchSign(){let e=!1,t=!1;for(;!t;)this.skipSpace()?t=!1:this.matchAny(["-","\u2212"])?(e=!e,t=!1):t=!this.matchAny(["+","\ufe62"]);return e?"-":"+"}matchDecimalDigits(){let e="",t=!1;for(;!t;)if(e+=this.matchWhile(["0","1","2","3","4","5","6","7","8","9"]).join(""),t=!0,this.options.groupSeparator){const e=this.index;this.skipSpace(),this.match(this.options.groupSeparator)&&(this.skipSpace(),/[0-9]/.test(this.peek)?t=!1:this.index=e)}return e}matchSignedInteger(){const e=this.index,t=this.matchSign(),i=this.matchDecimalDigits();return i?("-"===t?"-":"")+i:(this.index=e,"")}matchExponent(){const e=this.index;let t="";if(this.matchAny(["e","E"])){const e=this.matchSignedInteger();e&&(t="e"+e)}if(t)return t;if(this.match("\\times")&&(this.skipSpace(),this.match("1")&&this.match("0")&&this.match("^"))){if(/[0-9]/.test(this.peek))return"e"+this.next();if(this.match("<{>")){this.skipSpace();const e=this.matchSignedInteger();if(this.skipSpace(),this.match("<}>")&&e)return"e"+e}}return this.index=e,""}matchNumber(){if(!this.options.parseNumbers)return"";const e=this.index;this.skipSpace(),this.match("+");let t=!1;if(this.match(this.options.decimalMarker)){const i=this.index;if(!this.matchAny(["0","1","2","3","4","5","6","7","8","9"]))return this.index=e,"";this.index=i,t=!0}let i=this.matchDecimalDigits();return i?(!t&&this.match(this.options.decimalMarker??"")&&(i+="."+(this.matchDecimalDigits()??"0")),(t?"0.":"")+i+this.matchExponent()):(this.index=e,"")}matchLatexNumber(e=!0){let t=!1,i=this.peek;for(;"<space>"===i||"+"===i||"-"===i;)"-"===i&&(t=!t),this.next(),i=this.peek;let n=10,r=["0","1","2","3","4","5","6","7","8","9"];if(this.match("'"))n=8,r=["0","1","2","3","4","5","6","7"],e=!0;else if(this.match('"')||this.match("x"))n=16,r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],e=!0;else if(this.match("`"))return i=this.next(),i?i.startsWith("\\")&&2===i.length?(t?-1:1)*(i.codePointAt(1)??0):(t?-1:1)*(i.codePointAt(0)??0):null;let s="";for(;r.includes(this.peek);)s+=this.next();if(!e&&this.match("."))for(s+=".";r.includes(this.peek);)s+=this.next();const a=e?Number.parseInt(s,n):Number.parseFloat(s);return Number.isNaN(a)?null:t?-a:a}matchPrefixOperator(e){e||(e={minPrec:0}),e.minPrec||(e={...e,minPrec:0});const t=this.peekDefinitions("prefix");if(null===t)return null;const i=this.index;for(const[n,r]of t){this.index=i+r;const t=n.parse(this,e);if(t)return t}return this.index=i,null}matchInfixOperator(e,t){t||(t={minPrec:0}),t.minPrec||(t={...t,minPrec:0});const i=this.peekDefinitions("infix");if(null===i)return null;const n=this.index;for(const[r,s]of i)if(r.precedence>=t.minPrec){this.index=n+s;const i=r.parse(this,t,e);if(i)return i}return this.index=n,null}matchArguments(e){if(!e)return null;const t=this.index,i=this.matchEnclosure();if("enclosure"===e&&"Delimiter"===_(i))return q(i);if("group"===e){const e=this.matchExpression({tokens:["<}>"]});return null===e?[]:[e]}if("implicit"===e){if("Delimiter"===_(i))return q(i);if(null!==i)return[i];const e=this.matchPrimary();return null!==e?[e]:null}return this.index=t,null}matchOpenDelimiter(e,t){const i=this.index,n=le[this.peek];n&&this.next();const r=ae[e]??[e],s=n?[n]:[];return r.includes("||")&&this.matchAll(["|","|"])?(s.push("|"),s.push("|"),s):r.includes(this.peek)?(ce[e]===t?s.push(ce[this.peek]):s.push(t),this.next(),s):(this.index=i,null)}matchMiddleDelimiter(e){const t=oe[e]??[e];if(ue.includes(this.peek)){const e=this.index;return this.next(),t.includes(this.peek)?(this.next(),!0):(this.index=e,!1)}return!!t.include(this.peek)&&(this.next(),!0)}matchEnclosure(){const e=this._dictionary.matchfix;if(0===e.length)return null;const t=this.index;for(const i of e){if(this.index=t,Array.isArray(i.openDelimiter)){if(!this.matchAll(i.openDelimiter))continue;const e=this.matchExpression({tokens:i.closeDelimiter,minPrec:0});if(this.skipSpace(),!this.matchAll(i.closeDelimiter))continue;if("function"==typeof i.parse){const t=i.parse(this,e??"Nothing");if(null===t)continue;return t}return[i.name,e??"Nothing"]}const e=this.matchOpenDelimiter(i.openDelimiter,i.closeDelimiter);if(null===e)continue;const n=this.matchExpression({minPrec:0,tokens:e});if(n&&this.matchAll(e)){if("function"==typeof i.parse){const e=i.parse(this,n??"Nothing");if(null===e)continue;return e}return[i.name,n]}}return this.index=t,null}matchSymbol(){const e=this.index,t=this.peekDefinitions("symbol");if(t)for(const[i,n]of t){let t=null;if(this.index=e+n,"function"!=typeof i.parse){if(0===i.optionalLatexArg&&0===i.requiredLatexArg)return i.name;{const e=[];let t=i.optionalLatexArg;for(;0!==t;){const i=this.matchOptionalLatexArgument();if(null===i)break;e.push(i),t-=1}t=i.requiredLatexArg;const n=[];for(;0!==t;){const e=this.matchRequiredLatexArgument();if(null===e)break;n.push(e),t-=1}return n.length===i.requiredLatexArg?[i.name,...n,...e]:i.name}}if(t=i.parse(this),t)return t}this.index=e;let i="";(this.matchAll(["\\operatorname","<{>"])||this.matchAll(["\\mathit","<{>"])||this.matchAll(["\\mathrm","<{>"]))&&(i=this.matchString({tokens:["<}>"]}),i&&this.match("<}>")||(this.index=e)),i||(i=this.next());const n=this.options.parseUnknownSymbol?.(i,this);if("symbol"===n)return i;if("function"===n){const e=this.matchEnclosure();return null===e?i:"Delimiter"!==_(e)?null:[i,...q(e)]}return this.index=e,this.matchUnknownLatexCommand()}matchOptionalLatexArgument(){const e=this.index;if(this.skipSpace(),this.match("[")){const e=this.matchExpression();if(this.skipSpace(),this.match("]"))return e}return this.index=e,null}matchRequiredLatexArgument(){const e=this.index;if(this.skipSpace(),this.match("<{>")){const t=this.matchExpression({tokens:["<}>"]});return this.skipSpace(),this.match("<}>")?t:(this.index=e,null)}return/^[0-9]$/.test(this.peek)?parseInt(this.next()):/^[^\\#]$/.test(this.peek)?this.next():this.matchSymbol()||(this.index=e,null)}matchSupsub(e){if(null===e)return null;const t=this.index;this.skipSpace();const i=[],n=[];for(;"_"===this.peek||"^"===this.peek;){if(this.match("_")){let e=this.matchRequiredLatexArgument();!e&&this.match("<{>")&&(e=this.matchString({tokens:["<}>"]}),e&&this.match("<}>")),n.push(e??"Missing")}else this.match("^")&&i.push(this.matchRequiredLatexArgument()??"Missing");this.skipSpace()}if(0===i.length&&0===n.length)return this.index=t,e;let r=e;if(n.length>0){const e=this._dictionary.infix[1]?.get("_");if(e){const t=["Subscript",r,1===n.length?n[0]:["Sequence",...n]];for(const i of e)if(r="function"==typeof i.parse?i.parse(this,{minPrec:0},t):t,r)break}}if(i.length>0){const e=this._dictionary.infix[1]?.get("^");if(e){const t=["Superscript",r,1===i.length?i[0]:["Sequence",...i]];for(const i of e)if(r="function"==typeof i.parse?i.parse(this,{minPrec:0},t):t,r)break}}return null===r&&(this.index=t),r}matchPostfix(e){if(null===e)return null;const t=this.peekDefinitions("postfix");if(null===t)return null;const i=this.index;for(const[n,r]of t){this.index=i+r;const t=n.parse(this,e);if(null!==t)return t}return this.index=i,null}matchString(e){e.minPrec||(e={...e,minPrec:0});let t="",i=this.atEnd;for(;!i;){const n=this.peek;"<space>"===n?t+=" ":"\\"===n[0]?(this.onError([{severity:"warning",message:"unexpected-command"}]),t+=this.next()):/^<(\$|\$\$)>$/.test(n)?i=!0:t+=this.next(),i=i||this.atTerminator(e)}return t}matchEnvironmentName(e,t){if(!this.match(e))return!1;const i=this.index;if(this.match("<{>")){const e=this.matchString({tokens:["<}>"]});if(this.match("<}>")&&e===t)return!0}return this.index=i,!1}matchTabular(e){const t=["List"],i={minPrec:0,tokens:["\\end","<{>",...e.split(""),"<}>"]};let n=["List"],r=null;for(;!this.atTerminator(i);)this.skipSpace(),this.match("&")?(n.push(r??"Nothing"),r=null):this.match("\\\\")||this.match("\\cr")?(this.skipSpace(),this.matchOptionalLatexArgument(),null!==r&&n.push(r),t.push(n),n=["List"],r=null):r=this.matchExpression({...i,condition:e=>{const t=e.peek;return"&"===t||"\\\\"===t||"\\cr"===t}});return null!==r&&n.push(r),n.length>1&&t.push(n),t}matchEnvironment(){if(!this.match("\\begin"))return null;const e=this.index;if(this.match("<{>")){const t=this.matchString({tokens:["<}>"]});if(this.match("<}>")){const i=this._dictionary.environment.get(t),n=i?i.parse(this,[],[]):this.matchTabular(t);if(this.skipSpace(),this.matchAll(["\\end","<{>",...t.split(""),"<}>"]),null!==n)return this.decorate(n,e)}}return this.index=e,null}applyInvisibleOperator(e,t){if(null===t||this.atTerminator(e))return null;if(null===this.options.applyInvisibleOperator)return null;const i=this.index,n=this.matchExpression({...e,minPrec:390});if(null===n)return this.index=i,null;if("function"==typeof this.options.applyInvisibleOperator)return this.options.applyInvisibleOperator(this,t,n);const r=this.engine.box(n),s=I(t);if(s&&this.engine&&this.engine.getFunctionDefinition(s)){let e=[];return e="Delimiter"===r.head?"Sequence"===r.op1.head?[...r.op1.ops]:[r.op1]:[r],[s,...e.map((e=>e.json))]}const a=this.engine.box(t);if(a.isLiteral&&a.isInteger&&r.isLiteral){const[e,i]=r.rationalValue;if(null!==e&&null!==i)return["Add",t,n]}return(a.isMissing||"Nothing"===a.symbol||a.isNumber)&&(r.isMissing||"Nothing"===r.symbol||r.isNumber)?V("Multiply",t,n):(this.index=i,null)}matchUnknownLatexCommand(){const e=this.peek;if(!e||"\\"!==e[0])return null;this.next();const t=[];if("\\operatorname"===e){if(this.match("<{>")){for(;!this.atEnd&&"<}>"!==this.peek;)t.push(this.next());this.match("<}>")}else t.push(this.next());return 0===t.length?["Error","Missing",{str:"syntax-error"},["LatexForm",{str:e}]]:["Error","Missing",{str:"unknown-command"},["LatexForm",{str:`${e}{${v(t)}}`}]]}for(;this.match("[");){t.push("[");let e=0;for(;!this.atEnd&&0===e&&"]"!==this.peek;)"["===this.peek&&(e+=1),"]"===this.peek&&(e-=1),t.push(this.next());this.match("]")&&t.push("]")}for(;this.match("<{>");){t.push("<{>");let e=0;for(;!this.atEnd&&0===e&&"<}>"!==this.peek;)"<{>"===this.peek&&(e+=1),"<}>"===this.peek&&(e-=1),t.push(this.next());this.match("<}>")&&t.push("<}>")}return["Error","Missing",{str:"unknown-command"},["LatexForm",{str:`${e}${v(t)}`}]]}matchPrimary(){let e=null;const t=this.index;if(this.match("<{>")?(e=this.matchExpression({tokens:["<}>"]}),this.match("<}>")):this.match("<}>"),null===e){const t=this.matchNumber();t&&(e={num:t})}if(null===e&&(e=this.matchEnclosure()),null===e&&(e=this.matchEnvironment()),null===e&&(e=this.matchSymbol()),null!==e){e=this.decorate(e,t);let i=null,n=this.index;do{if(i=this.matchPostfix(e),e=i??e,this.index===n&&null!==i)break;n=this.index}while(null!==i)}return null!==e&&(e=this.matchSupsub(e)),this.decorate(e,t)}matchExpression(e){const t=this.index;e||(e={minPrec:0}),void 0===e.minPrec&&(e.minPrec=0),this.skipSpace();let i=this.matchPrefixOperator({...e,minPrec:0});if(null===i&&(i=this.matchPrimary()),i){let t=!1;for(;!this.atTerminator(e)&&!t;){this.skipSpace();let n=this.matchInfixOperator(i,e);null===n&&null===this.peekDefinitions("operator")&&(n=this.applyInvisibleOperator(e,i)),null!==n?i=n:t=!0}}return this.decorate(i,t)}decorate(e,t){if(null===e)return null;if(!this.options.preserveLatex)return e;const i=this.latex(t,this.index);return Array.isArray(e)?e={latex:i,fn:e}:"number"==typeof e?e={latex:i,num:Number(e).toString()}:"string"==typeof e?e={latex:i,sym:e}:"object"==typeof e&&null!==e&&(e.latex=i),e}}function ge(e,t){const i=e.length,n=e;e=e.slice(0,-1);for(let i=0;i<e.length-16;i++){const n=e.substring(0,i);for(let r=0;r<17;r++){const s=e.substring(i,i+r+1),a=Math.floor((e.length-n.length)/s.length);if(a>1&&(n+s.repeat(a+1)).startsWith(e))return"0"===s?n.replace(/(\d{3})/g,"$1"+t.groupSeparator):n.replace(/(\d{3})/g,"$1"+t.groupSeparator)+t.beginRepeatingDigits+s+t.endRepeatingDigits}}const r=i>t.precision-1;return e=n,r&&(e=e.substring(0,t.precision-1)),t.groupSeparator&&(e=e.replace(/(\d{3})/g,"$1"+t.groupSeparator)).endsWith(t.groupSeparator)&&(e=e.slice(0,-t.groupSeparator.length)),r?e+t.truncationMarker:e}function pe(e,t){return e?t.beginExponentMarker?t.beginExponentMarker+e+(t.endExponentMarker??""):"10^{"+e+"}":""}class de{constructor(e,t,i){this.level=-1,this.options=e,e.invisibleMultiply&&(/#1/.test(e.invisibleMultiply)&&/#2/.test(e.invisibleMultiply)||i([{severity:"warning",message:["expected-argument","invisibleMultiply"]}])),this.onError=i,this.dictionary=t}updateOptions(e){for(const t of Object.keys(this.options))t in e&&(this.options[t]=e[t])}wrap(e,t){if(null===e)return"";if(void 0===t)return"("+this.serialize(e)+")";if("number"==typeof e||b(e)||"string"==typeof e||y(e))return this.serialize(e);const i=_(e);if("string"==typeof i&&"Delimiter"!==i){const n=this.dictionary.name.get(i);if(n&&("symbol"===n.kind||"prefix"===n.kind||"infix"===n.kind||"postfix"===n.kind)&&n.precedence<t)return this.wrapString(this.serialize(e),this.options.applyFunctionStyle(e,this.level))}return this.serialize(e)}wrapShort(e){if(null===e)return"";const t=this.serialize(e);return"Delimiter"===_(e)||"number"==typeof e||b(e)||/(^(.|\\[a-zA-Z*]+))$/.test(t)?t:this.wrapString(t,this.options.groupStyle(e,this.level+1))}wrapString(e,t){return"none"===t?e:"("+e+")"}serializeSymbol(e,t){const i=_(e);if(!i)return"string"==typeof t?.serialize?t.serialize:"function"==typeof t?.serialize?t.serialize(this,e):ye(I(e),"upright.")??"";const n=q(e);if(!t){if("string"==typeof i&&i.length>0&&"\\"===i[0]){let e=i;for(const t of n)e+="{"+this.serialize(t)+"}";return e}return"string"==typeof i?`${ye(i,"upright.")}(${n.map((e=>this.serialize(e))).join(", ")})`:`\\operatorname{Apply}(${this.serialize(i)}, ${this.serialize(["List",...n])})`}if(t.requiredLatexArg>0){let e="",i="",r=0;for(;r<t.requiredLatexArg;)i+="{"+this.serialize(n[r++])+"}";for(;r<Math.min(n.length,t.optionalLatexArg+t.requiredLatexArg);){const t=this.serialize(n[1+r++]);t&&(e+="["+t+"]")}return t.serialize+(e+i)}return"function"==typeof t.serialize?t.serialize(this,e):"none"===this.options.applyFunctionStyle(e,this.level)?t.serialize+d(n.map((e=>this.serialize(e)))):t.serialize+this.serialize(["Delimiter",...n])}serializeDictionary(e){return`\\left[\\begin{array}{lll}${Object.keys(e).map((t=>`\\textbf{${t}} & \\rightarrow & ${this.serialize(e[t])}`)).join("\\\\")}\\end{array}\\right]`}serialize(e){if(null==e)return"";this.level+=1;try{const t=(()=>{const t=function(e,t){if(null===e)return"";let i;if("number"==typeof e)i=e;else{if("object"!=typeof e||!("num"in e))return"";i=e.num}if(i===1/0||"Infinity"===i||"+Infinity"===i)return t.positiveInfinity;if(i===-1/0||"-Infinity"===i)return t.negativeInfinity;if("NaN"===i||"number"==typeof i&&Number.isNaN(i))return t.notANumber;if("number"==typeof i)return"engineering"===t.notation?function(e,t){if(0===e)return"0";const i=Math.abs(e);let n=Math.round(Math.log10(i));n-=n%3,i>Math.pow(10,t.avoidExponentsInRange[0])&&i<Math.pow(10,t.avoidExponentsInRange[1])&&(n=0);const r=i/Math.pow(10,n);let s="";const a=r.toString().match(/^(.*)\.(.*)$/);a?.[1]&&a[2]&&(s=a[1]+t.decimalMarker+a[2]),t.groupSeparator&&(s=ge(r.toExponential(),t));let o="";return 0!==n&&(o=pe(n.toString(),t)),(e<0?"-":"")+s+o}(i,t):function(e,t){let i,n=e.match(/^(.*)[e|E]([-+]?[0-9]+)$/i);n?.[1]&&n[2]&&(i=pe(n[2],t));let r=n?.[1]??e,s="";return n=(i?n[1]:e).match(/^(.*)\.(.*)$/),n?.[1]&&n[2]&&(r=n[1],s=n[2]),t.groupSeparator&&(r=r.replace(/\B(?=(\d{3})+(?!\d))/g,t.groupSeparator),s=ge(s,t)),s&&(s=t.decimalMarker+s),i?"1"!==r||s?r+s+t.exponentProduct+i:i:r+s}(i.toString(),t);if(/[0-9][nd]$/.test(i)&&(i=i.slice(0,-1)),i=i.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),/\([0-9]+\)$/.test(i)){const[e,n,r]=i.match(/(.+)\(([0-9]+)\)$/)??[];i=n+r.repeat(Math.ceil(t.precision/r.length))}let n="";for("-"===i[0]?(n="-",i=i.substring(1)):"+"===i[0]&&(i=i.substring(1));"0"===i[0];)i=i.substring(1);if(0===i.length)return n+"0";"."===i[0]&&(i="0"+i);let r="";if(i.indexOf(".")>=0){const e=i.match(/(\d*)\.(\d*)([e|E]([-+]?[0-9]*))?/);if(!e)return"";const s=e[1],a=e[2];if(r=e[4]??"","0"===s){let e=0;for(;"0"===a[e]&&e<a.length;)e+=1;let r="";if(e<=4)r="0"+t.decimalMarker,r+=a.substring(0,e),r+=ge(i.substring(r.length),t);else if(e+1>=t.precision)r="0",n="";else{r=i[e];const n=ge(i.substring(e+1),t);n&&(r+=t.decimalMarker+n)}"0"!==r&&(!(i.length-1>t.precision)||t.endRepeatingDigits&&r.endsWith(t.endRepeatingDigits)||!t.truncationMarker||r.endsWith(t.truncationMarker)||(r+=t.truncationMarker),e>4&&(r+=t.exponentProduct+pe(""+(1-e),t))),i=r}else{i=s.replace(/\B(?=(\d{3})+(?!\d))/g,t.groupSeparator);const e=ge(a,t);e&&(i+=t.decimalMarker+e)}}else if(i.length>t.precision){const e=i.length;if(e>t.avoidExponentsInRange[1]){let n=i[0];const r=ge(i.substring(1),t);r&&(n+=t.decimalMarker+r,t.truncationMarker&&!n.endsWith(t.truncationMarker)&&t.endRepeatingDigits&&!n.endsWith(t.endRepeatingDigits)&&(n+=t.truncationMarker)),"1"!==n?n+=t.exponentProduct:n="",i=n+pe(""+(e-1),t)}}else{const e=i.match(/([0-9]*)\.?([0-9]*)([e|E]([-+]?[0-9]+))?/);e&&(i=e[1],e[2]&&(i+=t.decimalMarker+e[2]),r=e[4]??""),i=i.replace(/\B(?=(\d{3})+(?!\d))/g,t.groupSeparator)}const s=pe(r,t);return"1"===i&&s?n+s:(s&&(i=i+t.exponentProduct+s),n+i)}(e,this.options);if(t)return t;const i=x(e);if(null!==i)return`\\text{${i}}`;const n=I(e);if(null!==n){const t=this.dictionary.name.get(n);if("symbol"===t?.kind)return this.serializeSymbol(e,t)}const r=M(e);if(null!==r)return this.serializeDictionary(r);const s=S(e);if(s){if("\\"===s[0]){const t=q(e);return 0===t.length?s:s+"{"+t.map((e=>this.serialize(e))).filter((e=>!!e)).join("}{")+"}"}const t=this.dictionary.name.get(s);if(t)return"function"==typeof t.serialize?t.serialize(this,e):"infix"===t.kind||"postfix"===t.kind||"prefix"===t.kind?function(e,t,i){let n="";const r=E(t),s=S(t);if("postfix"===i.kind)return 1!==r&&e.onError([{severity:"warning",message:["postfix-operator-requires-one-operand",e.serializeSymbol(s)]}]),ve(i.serialize,[e.wrap(w(t,1),i.precedence)]);if("prefix"===i.kind)return 1!==r&&e.onError([{severity:"warning",message:["prefix-operator-requires-one-operand",e.serializeSymbol(s)]}]),ve(i.serialize,[e.wrap(w(t,1),i.precedence+1)]);if("infix"===i.kind){n=e.wrap(w(t,1),i.precedence);for(let s=2;s<r+1;s++){const r=w(t,s);null!==r&&(n=ve(i.serialize,[n,e.wrap(r,i.precedence)]))}}return n}(this,e,t):"matchfix"===t.kind?function(e,t,i){return ve(i.serialize,[e.serialize(w(t,1)??"Nothing")])}(this,e,t):"symbol"===t.kind?this.serializeSymbol(e,t):""}if(Array.isArray(e)||N(e)||null!==I(e))return this.serializeSymbol(e);this.onError([{severity:"warning",message:["syntax-error",e?JSON.stringify(e):"undefined"]}])})();return this.level-=1,t??""}catch(e){}return this.level-=1,""}applyFunctionStyle(e,t){return this.options.applyFunctionStyle(e,t)}groupStyle(e,t){return this.options.groupStyle(e,t)}rootStyle(e,t){return this.options.rootStyle(e,t)}fractionStyle(e,t){return this.options.fractionStyle(e,t)}logicStyle(e,t){return this.options.logicStyle(e,t)}powerStyle(e,t){return this.options.powerStyle(e,t)}numericSetStyle(e,t){return this.options.numericSetStyle(e,t)}}function ve(e,t){let i=e;for(let e=0;e<t.length;e++){let n=t[e]??"";if(/[a-zA-Z*]/.test(n[0])){const t=i.match(RegExp("(.*)#"+Number(e+1).toString()));t&&/\\[a-zA-Z*]+/.test(t[1])&&(n=" "+n)}i=i.replace("#"+Number(e+1).toString(),n)}return i}const be=["alpha","beta","gamma","Gamma","delta","Delta","epsilon","zeta","eta","theta","Theta","iota","kappa","lambda","Lambda","mu","nu","xi","Xi","pi","Pi","rho","sigma","Sigma","tau","upsilon","phi","Phi","varphi","chi","psi","Psi","omega","Omega","aleph","ast","blacksquare","bot","bullet","circ","diamond","times","top","square","star"];function ye(e,t="italic."){if(null===e)return null;const i=e.match(/^(_+)(.*)/);if(i)return`\\text{${"\\_".repeat(i[1].length)+Ne(i[2])}}`;let n;[n,e]=function(e){const t=e.match(/^([a-zA-Z-]+\.)(.*)/);return t?[t[1],t[2]]:["",e]}(e);const r=Ne(e);return 1!==r.length||n?(n||(n=t),({"upright.":"\\mathrm{_}","italic.":"\\mathit{_}","bold-italic.":"\\mathbf{\\mathit{_}}","script.":"\\mathscr{_}","calligraphic.":"\\mathcal{_}","bold-script.":"\\mathbf{\\mathscr{_}}","bold-calligraphic.":"\\mathbf{\\mathcal{_}}","fraktur.":"\\mathfrak{_}","gothic.":"\\mathfrak{_}","bold-gothic.":"\\mathbf{\\mathfrak{_}}","bold-fraktur.":"\\mathbf{\\mathfrak{_}}","sans-serif.":"\\mathsf{_}","bold-sans-serif.":"\\mathbf{\\mathsf{_}}","italic-sans-serif.":"\\mathit{\\mathsf{_}}","monospace.":"\\mathtt{_}","blackboard.":"\\mathbb{_}","double-struck.":"\\mathbb{_}"}[n]??"\\mathit{_}").replace("_",r)):r}function Ne(e){const t=e.indexOf("_");if(t>0){const i=e.substring(0,t),n=e.substring(t+1);return n?n.startsWith('"')&&n.endsWith('"')?`${Ne(i)}_\\mathrm{${Ne(n.substring(1,-1))}}`:`${Ne(i)}_{${Ne(n)}}`:ye(i)+"\\_"}const i=e.match(/([^0-9]+?)([0-9]+)$/);return i?0===i[1].length?e:`${Ne(i[1])}_{${i[2]}}`:be.includes(e)?"\\"+e:e=e.replace(/[{}\[\]\\:\-\$%]/g,(e=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash ","-":'\\unicode{"2013}'}[e]??"\\"+e)))}const xe={invisibleMultiply:"",invisiblePlus:"",multiply:"\\times",missingSymbol:"\\placeholder{}",applyFunctionStyle:function(e,t){return"paren"},groupStyle:function(e,t){return"paren"},rootStyle:D,fractionStyle:L,logicStyle:function(e,t){return"boolean"},powerStyle:function(e,t){return"solidus"},numericSetStyle:function(e,t){return"compact"}};class _e{constructor(e){this.onError=e.onError??(e=>{if("undefined"!=typeof window)for(const t of e);}),this.computeEngine=e.computeEngine;const t={...e};delete t.dictionary,delete t.onError,this.options={...he,...xe,...me,...t},this.dictionary=function(e,t){const i={lookahead:1,name:new Map,symbol:[],infix:[],prefix:[],postfix:[],environment:new Map,matchfix:[]};for(const n of e){const[e,r]=re(n,t);if(null!==r)if(void 0!==r.name&&(i.name.has(r.name)&&t({severity:"warning",message:["invalid-dictionary-entry",r.name,"Duplicate definition"]}),i.name.set(r.name,r)),"matchfix"===r.kind)i.matchfix.push(r);else if("environment"===r.kind){const e=v(n.trigger??"");i.environment.has(e)&&t({severity:"warning",message:["invalid-dictionary-entry",e,"Duplicate environment definition"]}),i.environment.set(e,r)}else if(e){const t=v(n.trigger??""),s=ne(e);if(i.lookahead=Math.max(i.lookahead,s),"symbol"===r.kind){void 0===i.symbol[s]&&(i.symbol[s]=new Map);const e=i.symbol[s];e.has(t)?e.get(t).push(r):e.set(t,[r])}else if("prefix"===r.kind){void 0===i.prefix[s]&&(i.prefix[s]=new Map);const e=i.prefix[s];e.has(t)?e.get(t).push(r):e.set(t,[r])}else if("infix"===r.kind){void 0===i.infix[s]&&(i.infix[s]=new Map);const e=i.infix[s];e.has(t)?e.get(t).push(r):e.set(t,[r])}else if("postfix"===r.kind){void 0===i.postfix[s]&&(i.postfix[s]=new Map);const e=i.postfix[s];e.has(t)?e.get(t).push(r):e.set(t,[r])}}}return i}(e.dictionary??_e.getDictionary(),(e=>this.onError([e])))}updateOptions(e){for(const t of Object.keys(this.options))t in e&&(this.options[t]=e[t]);this.serializer.updateOptions(e)}static getDictionary(e="all"){if("all"===e){let e=[];for(const t of Object.keys(se))se[t]&&(e=[...e,...se[t]]);return e}return se[e]?[...se[e]]:[]}parse(e){const t=new fe(p(e,[]),this.options,this.dictionary,this.computeEngine,this.onError);let i=t.matchExpression();if(!t.atEnd){const e=[];for(;!t.atEnd;)e.push(t.next());i=["Error",i??"Nothing",{str:"syntax-error"},["LatexForm",{str:v(e)}]]}return i||(i="Nothing"),this.options.preserveLatex&&(Array.isArray(i)?i={latex:e,fn:i}:"number"==typeof i?i={latex:e,num:Number(i).toString()}:"string"==typeof i?i={latex:e,sym:i}:"object"==typeof i&&null!==i&&(i.latex=e)),i??"Nothing"}serialize(e){return this.serializer.serialize(e)}get serializer(){return this._serializer||(this._serializer=new de(this.options,this.dictionary,this.onError)),this._serializer}}const Se=Math.log10(Math.pow(2,53)),we=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]);function Ee(e,t){const i=function(e){if(e<=3)return{[e]:1};const t={};let i=!1;for(;!i;){if(e%2==0){t[2]?t[2]+=1:t[2]=1,e/=2;continue}if(e%3==0){t[3]?t[3]+=1:t[3]=1,e/=3;continue}if(1===e)return t;const n=Math.sqrt(e);i=!0;for(let r=6;r<=n+6;r+=6){if(e%(r-1)==0){t[r-1]?t[r-1]+=1:t[r-1]=1,e/=r-1,i=!1;break}if(e%(r+1)==0){t[r+1]?t[r+1]+=1:t[r+1]=1,e/=r+1,i=!1;break}}}return t[e]=1,t}(e);let n=1,r=1;for(const e of Object.keys(i)){const s=parseFloat(e);n*=Math.pow(s,Math.floor(i[e]/t)),r*=Math.pow(s,i[e]%t)}return[n,r]}function Ie(e,t){if(0===e)return t;if(0===t)return e;if(e===t)return e;if(!Number.isInteger(e)||!Number.isInteger(t))return NaN;for(;0!==t;)[e,t]=[t,e%t];return e<0?-e:e}function ke([e,t]){if(1===e||1===t)return[e,t];t<0&&([e,t]=[-e,-t]);const i=Ie(e,t);return i<=1?[e,t]:[e/i,t/i]}const Ae=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],Me=[.999999999999997,57.15623566586292,-59.59796035547549,14.13609797474174,-.4919138160976202,3399464998481188e-20,4652362892704857e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.0002174396181152126,-.0001643181065367639,8441822398385274e-20,-261908384015814e-19,3689918265953162e-21];function Fe(e){if(e<0)return NaN;let t=Me[0];for(let i=14;i>0;--i)t+=Me[i]/(e+i);const i=e+4.7421875+.5;return.9189385332046727+(e+.5)*Math.log(i)-i+Math.log(t)-Math.log(e)}function Oe(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*Oe(1-e));if(e>100)return Math.exp(Fe(e));e-=1;let t=Ae[0];for(let i=1;i<9;i++)t+=Ae[i]/(e+i);const i=e+7+.5;return 2.5066282746310002*Math.pow(i,e+.5)*Math.exp(-i)*t}function qe(e,t=10){let i=0;for(let n=0;n<e.length;n++){const r={" ":-1,"\xa0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200a":-1,"\u200b":-1,"\u202f":-1,"\u205f":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[e[n]];if(-1!==r){if(void 0===r)return[i,e.substring(n)];if(r>=t)return[i,e.substring(n)];i=i*t+r}}return[i,""]}class Pe{constructor(e,t){this.engine=e,t?.latex&&(this._latex=t.latex),t?.wikidata&&(this._wikidata=t.wikidata)}toJSON(){return JSON.stringify(this.json)}toString(){return this.latex}valueOf(){const[e,t]=this.rationalValue;return null!==e&&null!==t?[e,t]:this.asFloat??this.string??this.symbol??this.toString()}is(e){return null!=e&&this.isSame(this.engine.box(e))}has(e){return!1}get description(){return[]}get url(){return""}_purge(){}get isPure(){return!1}get isLiteral(){return!1}get latex(){return this._latex??this.engine.serialize(this)}set latex(e){this._latex=e}get wikidata(){return this._wikidata??""}set wikidata(e){this._wikidata=e}get complexity(){return 1}get ops(){return null}get nops(){return 0}get op1(){return this.engine.symbol("Missing")}get op2(){return this.engine.symbol("Missing")}get op3(){return this.engine.symbol("Missing")}get symbolDefinition(){}get functionDefinition(){}_repairDefinition(){}get keys(){return null}get keysCount(){return 0}getKey(e){}hasKey(e){return!1}get machineValue(){return this.numericValue?.machineValue??null}get rationalValue(){return this.numericValue?.rationalValue??[null,null]}get decimalValue(){return this.numericValue?.decimalValue??null}get complexValue(){return this.numericValue?.complexValue??null}get asFloat(){return this.numericValue?.asFloat??null}get asSmallInteger(){return this.numericValue?.asSmallInteger??null}get asRational(){return this.numericValue?.asRational??[null,null]}get sgn(){return this.numericValue?.sgn??null}get symbol(){return null}get isMissing(){return!1}get value(){return this}set value(e){throw Error(`Can't change the value of \\(${this.latex}\\)`)}get numericValue(){}isSubdomainOf(e){}get domain(){return this.engine.domain("Nothing")}set domain(e){throw Error(`Can't change the domain of \\(${this.latex}\\)`)}get valueDomain(){return this.domain}get string(){return null}isLess(e){}isLessEqual(e){}isGreater(e){}isGreaterEqual(e){}get isZero(){}get isNotZero(){}get isPositive(){}get isNonNegative(){}get isNegative(){}get isNonPositive(){}get isInfinity(){}get isNaN(){}get isFinite(){}get isNumber(){}get isInteger(){}get isRational(){}get isAlgebraic(){return!1}get isReal(){}get isExtendedReal(){}get isComplex(){}get isImaginary(){}get isExtendedComplex(){}get isOne(){}get isNegativeOne(){}get isEven(){}get isOdd(){}get isPrime(){}get isComposite(){}get canonical(){return this}apply(e,t){return this}evaluate(e){return this.simplify(e)}simplify(e){return this}N(e){return this}replace(e){return null}subs(e){return this}solve(e){return null}}function Ve(e,t){if(!t.isInteger()||t.isNegative())return e.DECIMAL_NAN;if(t.lessThan(10))return e.decimal([1,1,2,6,24,120,720,5040,40320,362880,3628800][t.toNumber()]);if(t.gt(Number.MAX_SAFE_INTEGER)){let i=e.DECIMAL_ONE,n=e.DECIMAL_TWO;for(;n.lessThan(t);)i=i.mul(n),n=n.add(1);return i}if(t.modulo(2).eq(1))return t.times(Ve(e,t.minus(1)));let i=t.toNumber(),n=t,r=t;for(;i>2;)i-=2,n=n.add(i),r=r.mul(n);return r}function Ce(e,t){if(t.isNegative())return e.DECIMAL_NAN;const i=e.cache("gamma-p-ln",(()=>["0.99999999999999709182","57.156235665862923517","-59.597960355475491248","14.136097974741747174","-0.49191381609762019978","0.33994649984811888699e-4","0.46523628927048575665e-4","-0.98374475304879564677e-4","0.15808870322491248884e-3","-0.21026444172410488319e-3","0.2174396181152126432e-3","-0.16431810653676389022e-3","0.84418223983852743293e-4","-0.2619083840158140867e-4","0.36899182659531622704e-5"].map((t=>e.decimal(t)))));let n=i[0];for(let e=i.length-1;e>0;--e)n=n.add(i[e].div(t.add(e)));const r=e.cache("gamma-g-ln",(()=>e.decimal(607).div(128))),s=t.add(r).add(e.DECIMAL_HALF);return e.DECIMAL_NEGATIVE_ONE.acos().mul(e.DECIMAL_TWO).log().mul(e.DECIMAL_HALF).add(s.log().mul(t.add(e.DECIMAL_HALF)).minus(s).add(n.log()).minus(t.log()))}function De(e,t){if(t.lessThan(e.DECIMAL_HALF)){const i=e.DECIMAL_NEGATIVE_ONE.acos();return i.div(i.mul(t).sin().mul(De(e,e.DECIMAL_ONE.sub(t))))}if(t.greaterThan(100))return Ce(e,t).exp();t=t.sub(1);const i=e.cache("lanczos-7-c",(()=>["0.99999999999980993227684700473478","676.520368121885098567009190444019","-1259.13921672240287047156078755283","771.3234287776530788486528258894","-176.61502916214059906584551354","12.507343278686904814458936853","-0.13857109526572011689554707","9.984369578019570859563e-6","1.50563273514931155834e-7"].map(e.decimal)));let n=i[0];for(let e=1;e<9;e++)n=n.add(i[e].div(t.add(e)));const r=t.add(7).add(e.DECIMAL_HALF);return e.DECIMAL_NEGATIVE_ONE.acos().times(e.DECIMAL_TWO).sqrt().mul(n.mul(r.neg().exp()).mul(r.pow(t.add(e.DECIMAL_HALF))))}function Le(e){return e.e<308&&e.e>-306}function Te(e,t){const i=[];for(const n of e)n.ops&&n.head===t?i.push(...Te(n.ops,t)??n.ops):i.push(n);return i.length===e.length?null:i}function Re(e){if("Power"===e.head&&e.op2.isLiteral){const t=e.op2.asSmallInteger;return null!==t&&t>0?t:1}if("Multiply"===e.head){let t=1;for(const i of e.ops){const e=Re(i);e>1&&(t+=e)}return t}return 1}function ze(e){if("Power"===e.head&&e.op2.isLiteral){const t=e.op2.asSmallInteger;return null!==t&&t>0?t:1}if("Multiply"===e.head){let t=1;for(const i of e.ops)t=Math.max(t,Re(i));return t}return 1}function $e(e){return e.symbol?e.symbol:e.ops?e.ops.map((e=>$e(e))).filter((e=>e.length>0)).join('"'):""}function Ze(e){return"string"==typeof e&&e.startsWith("$")&&e.endsWith("$")}function je(e){return"string"==typeof e&&e.startsWith("$")&&e.endsWith("$")?e.slice(1,-1):null}function Ge(e){if("ImaginaryUnit"===e.symbol)return 1;const t=e.complexValue;if(t&&0===t.re)return t.im;if("Negate"===e.head)return-Ge(e.op1);let i=0;if("Multiply"===e.head&&2===e.nops){let t;"ImaginaryUnit"===e.op1.symbol?t=e.op2:"ImaginaryUnit"===e.op2.symbol&&(t=e.op1),t&&t.isLiteral&&(i=t.asFloat??0)}return i}function He(e){if(e.symbol)return e.symbolDefinition?.constant?[]:[e.symbol];if(!e.ops&&!e.keys)return[];const t=[];if(e.ops)for(const i of e.ops)t.push(...He(i));if(e.keys)for(const i of e.keys)t.push(...He(e.getKey(i)));return t}function We(e){return"decimal"===e.numericMode||"auto"===e.numericMode&&e.precision>Math.floor(Se)}function Be(e){return"auto"===e.numericMode||"complex"===e.numericMode}function Qe(e){let t=0;for(let i=0;i<e.length;i++)t=Math.imul(31,t)+e.charCodeAt(i)|0;return Math.abs(t)}function Ue(e,t){if(e.isLiteral&&null!==e.asFloat)return t.isLiteral&&null!==t.asFloat?e.asFloat-t.asFloat:-1;if(e.isLiteral&&e.complexValue)return t.isLiteral&&t.complexValue?e.complexValue.re===t.complexValue.re?Math.abs(e.complexValue.im)===Math.abs(t.complexValue.im)?e.complexValue.im-t.complexValue.im:Math.abs(e.complexValue.im)-Math.abs(t.complexValue.im):e.complexValue.re-t.complexValue.re:t.isLiteral&&t.isNumber?1:-1;if(e.symbol)return t.symbol?e.symbol===t.symbol?0:e.symbol>t.symbol?1:-1:t.isLiteral&&t.isNumber?1:-1;if(e.ops){if(t.ops){const i=e.functionDefinition?.complexity??1e5,n=t.functionDefinition?.complexity??1e5;return i===n?"string"==typeof e.head&&"string"==typeof t.head?e.head===t.head?Ke(e)-Ke(t):e.head<t.head?1:-1:Ke(e)-Ke(t):i-n}return t.isLiteral&&t.isNumber||t.symbol?1:-1}if(e.string)return t.string?e.string.length!==t.string.length?t.string.length-e.string.length:t.string<e.string?-1:e.string>t.string?1:0:t.keys?-1:1;if(e.keys&&t.keys){if(e.keysCount!==t.keysCount)return t.keysCount-e.keysCount;let i=0,n=0;for(const e of t.keys)i+=t.getKey(e).complexity;for(const t of e.keys)n+=e.getKey(t).complexity;return n-i}return e.complexity-t.complexity}function Ke(e){return null!==e.keys?1+e.keysCount:e.ops?("string"==typeof e.head?1:Ke(e.head))+[...e.ops].reduce(((e,t)=>e+Ke(t)),0):1}function Ye(e){const t=e.engine;let i=1,n=1;if("Multiply"===e.head){const r=[];for(const t of e.ops)if(t.isLiteral){const[e,s]=t.asRational;null!==e&&null!==s?(i*=e,n*=s):r.push(t)}else r.push(t);return[i,n]=ke([i,n]),i===n?[[1,1],e]:0===r.length?[[i,n],t.ONE]:1===r.length?[[i,n],r[0]]:[[i,n],t.mul(r)]}if("Divide"===e.head){let[[i,n],r]=Ye(e.op1);const[[s,a],o]=Ye(e.op2),[l,u]=ke([i*a,s*n]);return r.isOne&&o.isOne?[[l,u],t.ONE]:o.isOne?[[l,u],r]:[[l,u],t.fn("Divide",[r,o]).canonical]}if("Power"===e.head){if(!e.op2.isLiteral)return[[1,1],e];let[[i,n],r]=Ye(e.op1);if(1===i&&1===n)return[[1,1],e];const s=e.op2,a=s.asSmallInteger;if(null!==a){if(-1===a)return[[n,i],t.inverse(r)];if(Math.log10(Math.abs(i))*Math.abs(a)<15&&Math.log10(Math.abs(n))*Math.abs(a)<15)return a>0?[[Math.pow(i,a),Math.pow(n,a)],t.power(r,s)]:[[Math.pow(n,-a),Math.pow(i,-a)],t.power(r,s)]}const[o,l]=s.rationalValue;if(null!==o&&null!==l&&i>0&&1===Math.abs(o)){const[a,u]=Ee(i,l),[c,h]=Ee(n,l);return 1===a&&1===c?[[1,1],e]:[1===o?[a,c]:[c,a],t.power(t.mul([t.number([u,h]),r]),s)]}return[[1,1],e]}if("Negate"===e.head){const[t,i]=Ye(e.op1);return[[-t[0],t[1]],i]}if(e.isLiteral){if(e.decimalValue){if(e.decimalValue.isInteger()&&Le(e.decimalValue))return[[e.decimalValue.toNumber(),1],t.ONE];if(e.decimalValue?.isNegative())return[[-1,1],t.number(e.decimalValue.neg())]}if(null!==e.machineValue){if(Number.isInteger(e.machineValue))return[[e.machineValue,1],t.ONE];if(e.machineValue<0)return[[-1,1],t.number(-e.machineValue)]}const[i,n]=e.rationalValue;if(null!==i&&null!==n)return[[i,n],t.ONE];if(null!==e.complexValue){const i=e.complexValue;if(i.re<0)return[[-1,1],t.number(t.complex(-i.re,-i.im))]}}return[[1,1],e]}function Je(e){if("Negate"===e.head)return[-1,e.op1];const t=e.engine;if(null!==e.machineValue&&e.machineValue<0)return[-1,t.number(-e.machineValue)];if(e.decimalValue?.isNegative())return[-1,t.number(e.decimalValue.neg())];if(null!==e.complexValue){const i=e.complexValue;if(i.re<0)return[-1,t.number(t.complex(-i.re,-i.im))]}const[i,n]=e.rationalValue;return null!==i&&null!==n&&i<0?[-1,t.number([-i,n])]:[1,e]}class Xe{constructor(e,t){if(this._terms=[],this._literal=[1,1],this._hasInfinity=!1,this._hasZero=!1,this.engine=e,t)for(const e of t)this.addTerm(e)}get isEmpty(){return!1===this._hasInfinity&&!1===this._hasZero&&this._literal[0]===this._literal[1]&&0===this._terms.length}addTerm(e){if("Nothing"===e.symbol)return;if(e.isLiteral){if(e.isOne)return;if(e.isZero)return void(this._hasZero=!0);if(e.isNegativeOne)return void(this._literal[0]*=-1);if(e.isInfinity)return this._hasInfinity=!0,void(e.isNegative&&(this._literal[0]*=-1))}let[t,i]=Ye(e);if(this._literal=[this._literal[0]*t[0],this._literal[1]*t[1]],i.isLiteral&&i.isOne)return;let n=[1,1];if("Power"===i.head&&i.op2.isLiteral){const[e,t]=i.op2.asRational;null!==e&&null!==t&&(n=[e,t],i=i.op1)}let r=!1;if(1===n[1]||i.isNonNegative)for(const e of this._terms)if(e.term.isSame(i)){const[t,i]=e.exponent,[s,a]=n;e.exponent=[t*a+i*s,i*a],r=!0;break}r||this._terms.push({exponent:n,term:i})}groupedByDegrees(e){const t=this.engine,i=[],n=[];this._hasInfinity&&n.push(t.POSITIVE_INFINITY),this._literal=ke(this._literal),1===this._literal[0]&&1===this._literal[1]||(e?.splitRational?(1!==this._literal[0]&&n.push(t.number(this._literal[0]).canonical),1!==this._literal[1]&&i.push({exponent:[-1,1],terms:[t.number(this._literal[1]).canonical]})):n.push(t.number(this._literal).canonical)),n.length>0&&i.push({exponent:[1,1],terms:n});for(const e of this._terms){if(0===e.exponent[0])continue;let t=!1;for(const n of i)if(e.exponent[0]===n.exponent[0]&&e.exponent[1]===n.exponent[1]){n.terms.push(e.term),t=!0;break}t||i.push({exponent:ke(e.exponent),terms:[e.term]})}return i}terms(){return it(this.engine,this.groupedByDegrees())}asNumeratorDenominator(){const e=this.groupedByDegrees(),t=[],i=[];for(const n of e)n.exponent[0]>=0?t.push(n):i.push({exponent:[-n.exponent[0],n.exponent[1]],terms:n.terms});const n=this.engine;let r=it(n,t);r=Te(r,"Multiply")??r;let s=n.ONE;1===r.length?s=r[0]:r.length>0&&(s=n._fn("Multiply",r));let a=it(n,i);a=Te(a,"Multiply")??a;let o=n.ONE;return 1===a.length?o=a[0]:a.length>0&&(o=n._fn("Multiply",a)),[s,o]}asExpression(){const e=this.engine;if(this._hasInfinity){if(this._hasZero)return e.NAN;if(0===this._terms.length)return this._literal[0]>0?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}if(this._hasZero)return e.ZERO;if(0===this._terms.length)return e.number(this._literal).canonical;let t=it(e,this.groupedByDegrees({splitRational:!1}));return this._hasInfinity&&t.push(e.POSITIVE_INFINITY),t=Te(t,"Multiply")??t,0===t.length?e.ONE:1===t.length?t[0]:this.engine._fn("Multiply",t)}asRationalExpression(){const[e,t]=this.asNumeratorDenominator();return t.isOne?e:t.isNegativeOne?this.engine.negate(e):this.engine._fn("Divide",[e,t])}}function et(e){const[t,i]=e;return t===i?0:t>0&&Number.isInteger(t/i)?1:t>0?2:Number.isInteger(t/i)?3:4}function tt(e,t){const i=et(e.exponent),n=et(t.exponent);return i!==n?i-n:e.exponent[0]/e.exponent[1]-t.exponent[0]/t.exponent[1]}function it(e,t){const i=(t=t.sort(tt)).map((t=>{const i=Te(t.terms,"Multiply")??t.terms,n=i.length<=1?i[0]:e._fn("Multiply",i.sort(Ue));return t.exponent[0]===t.exponent[1]?n:e.power(n,t.exponent)}));return Te(i,"Multiply")??i}function nt(e,t,i,n){const r=e.jsonSerializationOptions.exclude;if(("Rational"===t||"Divide"===t)&&i[0]?.isLiteral&&i[1]?.isLiteral&&1===i[0]?.asSmallInteger&&2===i[1]?.asSmallInteger&&!r.includes("Half"))return rt(e,"Half",{...n,wikidata:"Q39373172"});if("Negate"===t&&i[0].isLiteral){if(null!==i[0].machineValue)return st(e,-i[0].machineValue);if(null!==i[0].decimalValue)return st(e,i[0].decimalValue.neg());if(null!==i[0].complexValue)return st(e,i[0].complexValue.neg());const[t,n]=i[0].rationalValue;if(null!==t&&null!==n)return st(e,[-t,n])}if("Rational"===t&&r.includes(t)&&i.length>1)return nt(e,"Divide",i,n);if("Complex"===t&&r.includes(t))return nt(e,"Add",[i[0],e._fn("Multiply",[i[1],e.symbol("ImaginaryUnit")])],n);if("Sqrt"===t&&r.includes(t))return nt(e,"Power",[i[0],r.includes("Half")?e.number([1,2]):e.HALF],n);if("Root"===t&&r.includes(t)&&i[1].isLiteral){const t=i[1].asSmallInteger;if(2===t)return nt(e,"Sqrt",[i[0]]);if(null!==t)return t<0?nt(e,"Divide",[e.ONE,e._fn("Power",[i[0],e.number([1,-t])])],n):nt(e,"Power",[i[0],e.number([1,-t])],n)}if("Square"===t&&r.includes(t))return nt(e,"Power",[i[0],e.TWO],n);if("Exp"===t&&r.includes(t))return nt(e,"Power",[e.symbol("ExponentialE"),i[0]],n);if("Subtract"===t&&r.includes(t))return nt(e,"Add",[i[0],e._fn("Negate",[i[1]])],n);if("Add"===t&&2===i.length&&!r.includes("Subtract")){if(i[1].isLiteral){const t=i[1].asSmallInteger;if(null!==t&&t<0)return nt(e,"Subtract",[i[0],e.number(-t)],n)}if("Negate"===i[1].head)return nt(e,"Subtract",[i[0],i[1].op1],n)}if("Tuple"===t){if(1===i.length&&!r.includes("Single"))return nt(e,"Single",i,n);if(2===i.length&&!r.includes("Pair"))return nt(e,"Pair",i,n);if(3===i.length&&!r.includes("Triple"))return nt(e,"Triple",i,n)}const s=["string"==typeof t?t:t.json,...i.map((e=>e.json))],a={...n??{}};return e.jsonSerializationOptions.metadata.includes("latex")?a.latex=a.latex??e.serialize({fn:s}):a.latex="",e.jsonSerializationOptions.metadata.includes("wikidata")?n?.wikidata||"string"!=typeof t||(a.wikidata=e.getFunctionDefinition(t,i)?.wikidata??""):a.wikidata="",a.latex||a.wikidata||!e.jsonSerializationOptions.shorthands.includes("function")?a.latex&&a.wikidata?{fn:s,latex:a.latex,wikidata:a.wikidata}:a.latex?{fn:s,latex:a.latex}:a.wikidata?{fn:s,wikidata:a.wikidata}:{fn:s}:s}function rt(e,t,i){return"Half"===t&&e.jsonSerializationOptions.exclude.includes("Half")?st(e,[1,2],i):(i={...i},e.jsonSerializationOptions.metadata.includes("latex")?(i.latex=i.latex??e.serialize({sym:t}),i.latex===t&&(i.latex=""),i.latex=i.latex):i.latex="",e.jsonSerializationOptions.metadata.includes("wikidata")?i.wikidata||(i.wikidata=e.getSymbolDefinition(t)?.wikidata??""):i.wikidata="",t=t,i.latex||i.wikidata||!e.jsonSerializationOptions.shorthands.includes("symbol")?i.latex&&i.wikidata?{sym:t,latex:i.latex,wikidata:i.wikidata}:i.latex?{sym:t,latex:i.latex}:i.wikidata?{sym:t,wikidata:i.wikidata}:{sym:t}:t)}function st(e,t,i){i={...i},e.jsonSerializationOptions.metadata.includes("latex")||(i.latex="");const n=!i.latex&&!e.jsonSerializationOptions.metadata.includes("latex")&&e.jsonSerializationOptions.shorthands.includes("number");let r="";if(t instanceof u){if(t.isNaN()?r="NaN":t.isFinite()||(r=t.isPositive()?"+Infinity":"-Infinity"),!r){if(n&&Le(t)&&t.precision()<15)return t.toNumber();r=t.isInteger()&&t.e<t.precision()+4?t.toFixed(0):at(e,t.toJSON())}return e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:r})),i.latex?{num:r,latex:i.latex}:{num:r}}if(t instanceof c.exports.Complex)return t.isInfinite()?rt(e,"ComplexInfinity",i):t.isNaN()?(r="NaN",e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:r})),i.latex?{num:r,latex:i.latex}:{num:r}):nt(e,"Complex",[e.number(t.re),e.number(t.im)],{...i,wikidata:"Q11567"});if(Array.isArray(t))return i.latex||i.wikidata||e.jsonSerializationOptions.metadata.includes("latex")||!e.jsonSerializationOptions.shorthands.includes("function")||!e.jsonSerializationOptions.shorthands.includes("number")?nt(e,"Rational",[e.number(t[0]),e.number(t[1])],i):["Rational",t[0],t[1]];if(Number.isNaN(t)&&(r="NaN"),!Number.isFinite(t)&&t>0&&(r="+Infinity"),!Number.isFinite(t)&&t<0&&(r="-Infinity"),!r){if(n)return t;r=at(e,t.toString())}return e.jsonSerializationOptions.metadata.includes("latex")&&(i.latex=i.latex??e.serialize({num:r})),i.latex?{num:r,latex:i.latex}:{num:r}}function at(e,t){if(!e.jsonSerializationOptions.repeatingDecimal)return t;let[i,n,r,s]=t.match(/^(.*)\.([0-9]+)([e|E][-+]?[0-9]+)?$/)??[];if(!r)return t;const a=r[r.length-1];r=r.slice(0,-1);let o="";for(let e=0;e<r.length-16;e++){o=r.substring(0,e);for(let i=0;i<=16;i++){const l=r.substring(e,e+i+1),u=Math.floor((r.length-o.length)/l.length);if(u>1&&(o+l.repeat(u+1)).startsWith(r))return"0"===l?"0"===a?n+"."+o+(s??""):t:n+"."+o+"("+l+")"+(s??"")}}return t}class ot extends Pe{constructor(e,t,i){super(e,i),this._value=new Map,this._isCanonical=!1;for(const i of Object.keys(t))this._value.set(i,e.box(t[i]));e._register(this)}_purge(){for(const[e,t]of this._value)t._purge()}get hash(){let e=Qe("Dictionary");for(const[t,i]of this._value)e^=Qe(t)^i.hash;return e}get complexity(){return 97}get head(){return"Dictionary"}get isPure(){return!1}getKey(e){return this._value.get(e)}hasKey(e){return this._value.has(e)}get keys(){return this._value.keys()}get keysCount(){return this._value.size}has(e){for(const[t,i]of this._value)if(i.has(e))return!0;return!1}get domain(){const e=["Dictionary"];for(const[t,i]of this._value)e.push(["Tuple",t,i.domain]);return this.engine.domain(e)}get json(){if(this.engine.jsonSerializationOptions.shorthands.includes("dictionary")){const e={};for(const t of this._value.keys())e[t]=this._value.get(t).json;return{dict:e}}const e=[];for(const t of this._value.keys())e.push(this.engine._fn("KeyValuePair",[this.engine.string(t),this._value.get(t)]));return nt(this.engine,"Dictionary",e,{latex:this._latex})}isSame(e){if(this===e)return!0;if(!(e instanceof ot))return!1;if(this._value.size!==e._value.size)return!1;for(const[t,i]of this._value){const n=e.getKey(t);if(!n||!i.isSame(n))return!1}return!0}match(e,t){if(!(e instanceof ot))return null;if(this._value.size!==e._value.size)return null;let i={};for(const[t,n]of this._value){const r=e.getKey(t);if(!r)return null;const s=n.match(r);if(null===s)return null;i={...i,...s}}return i}isEqual(e){if(this===e)return!0;if(!(e instanceof ot))return!1;if(!e.keys||this._value.size!==e._value.size)return!1;for(const[t,i]of this._value){const n=e.getKey(t);if(!n||!i.isEqual(n))return!1}return!0}apply(e,t){const i={};for(const t of this.keys)i[t]=this.engine.box(e(this.getKey(t)));return t?this.engine.fn(t,[{dict:i}]):new ot(this.engine,i)}evaluate(e){return this.apply((t=>t.evaluate(e)??t))}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get canonical(){if(this.isCanonical)return this;const e=this.apply((e=>e.canonical));return e.isCanonical=!0,e}simplify(e){return e?.recursive??1?this.apply((t=>t.simplify(e)??t)):this}N(e){return this.apply((t=>t.N(e)))}replace(e,t){let i=0;const n={};for(const r of this.keys){const s=this.getKey(r),a=s.replace(e,t);null!==a&&(i+=1),n[r]=a??s}return 0===i?null:new ot(this.engine,n)}subs(e){const t={};for(const i of this.keys)t[i]=this.getKey(i).subs(e);return new ot(this.engine,t)}}function lt(e,t){const i=new Set;for(const[n,r,s]of t){let t=e.pattern(n);const a={};for(const i of He(t))a[i]=e.symbol("_"+i);let o;t=t.subs(a);const l=je(s?.condition);if(l){const t=e.parse(l).subs(a);o=e=>"True"===t.subs(e).value?.symbol}else o=s?.condition;const u=Ze(r)?e.parse(r):e.box(r);u&&i.add([t,u.subs(a),s?.priority??0,o])}return i}function ut([e,t,i,n],r,s){const a=e.match(r,s);return null===a?null:"function"!=typeof n||n(a)?t.subs(a):null}function ct(e,t,i){const n=i?.iterationLimit??1;let r=0;const s=i?.once??!1;let a=!1,o=!1;try{for(;!a&&r<n;){a=!0;for(const n of t){const t=ut(n,e,i);if(null!==t&&t!==e){if(s)return t;a=!1,o=!0,e=t}}r+=1}}catch(e){}return o?e:null}const ht=[];function mt(e,t){if(null==t)return e;if(e===t)return e;const i=e.engine,n=i.box(t);return i.costFunction(n)<=1.7*i.costFunction(e)?n:e}class ft extends Pe{constructor(e,t,i,n){super(e,n),this._head="string"==typeof t?t:t.symbol??t,this._ops=i,"string"==typeof this._head&&(this._def=e.getFunctionDefinition(this._head,i)),this._isCanonical=!1,e._register(this)}get hash(){if(void 0!==this._hash)return this._hash;let e=0;for(const t of this._ops)e=e<<1^t.hash|0;return e="string"==typeof this._head?e^Qe(this._head)|0:e^this._head.hash|0,this._hash=e,e}_purge(){"string"!=typeof this._head&&this._head._purge();for(const e of this._ops)e._purge();this._value&&this._value._purge(),this._numericValue&&this._numericValue._purge()}get wikidata(){return this._wikidata??this._def?.wikidata??""}get description(){return this._def&&this._def.description?"string"==typeof this._def.description?[this._def.description]:this._def.description:[]}get url(){return this._def?.url??""}get complexity(){return this._def?.complexity??1e5}get head(){return this._head}get value(){if(this.isPure)return this._value||(this._value=this.evaluate()),this._value}get numericValue(){if(!this.isPure)return;if(this._numericValue)return this._numericValue;const e=this.N();return this._numericValue=e.isLiteral?e:void 0,this._numericValue}get isPure(){if(void 0!==this._isPure)return this._isPure;let e;return void 0!==this._def?.pure&&(e=this._def.pure),!1!==e&&(e=this._ops.every((e=>e.isPure))),this._isPure=e,e}get isLiteral(){return!1}get ops(){return this._ops}get nops(){return this._ops.length}get op1(){return this._ops[0]??this.engine.symbol("Missing")}get op2(){return this._ops[1]??this.engine.symbol("Missing")}get op3(){return this._ops[2]??this.engine.symbol("Missing")}get functionDefinition(){return this._def}_repairDefinition(){if("string"==typeof this._head){if("_"===this._head[0])return;this._def=this.engine.getFunctionDefinition(this._head,this._ops),this._def&&(this._head=this._def.name)}}get domain(){if(this._def?.domain)return"function"==typeof this._def.domain?this.engine.domain(this._def.domain(this.engine,this._ops)):this.engine.domain(this._def.domain);const e=[this.head];for(const t of this._ops)e.push(t.domain);return e.push(this.engine.domain("Anything")),this.engine.domain(e)}get valueDomain(){return this.domain.codomain??this.engine.domain("Nothing")}isLess(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<0}}isLessEqual(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<=0}}isGreater(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>0}}isGreaterEqual(e){if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>=0}}get isZero(){const e=this.sgn;return null!==e&&("number"==typeof e?0===e:void 0)}get isNotZero(){const e=this.sgn;return null!==e&&("number"==typeof e?0!==e:void 0)}get isOne(){}get isNegativeOne(){}get isPositive(){const e=this.sgn;return null!==e&&("number"==typeof e?0!==e:void 0)}get isNonPositive(){const e=this.sgn;return null!==e&&("number"==typeof e?e<=0:void 0)}get isNegative(){const e=this.sgn;return null!==e&&("number"==typeof e?e<0:void 0)}get isNonNegative(){const e=this.sgn;return null!==e&&("number"==typeof e?e>=0:void 0)}get isNumber(){return this.valueDomain.isSubdomainOf("Number")}get isInteger(){return this.valueDomain.isSubdomainOf("Integer")}get isRational(){return this.valueDomain.isSubdomainOf("RationalNumber")}get isAlgebraic(){return this.valueDomain.isSubdomainOf("AlgebraicNumber")}get isReal(){return this.valueDomain.isSubdomainOf("RealNumber")}get isExtendedReal(){return this.valueDomain.isSubdomainOf("ExtendedRealNumber")}get isComplex(){return this.valueDomain.isSubdomainOf("ComplexNumber")}get isImaginary(){return this.valueDomain.isSubdomainOf("ImaginaryNumber")}get json(){return this._isCanonical?function(e,t,i,n){const r=e.jsonSerializationOptions.exclude;if("Add"===t&&2===i.length&&!r.includes("Subtract")){const t=i[0].asSmallInteger;if(null!==t&&t<0)return nt(e,"Subtract",[i[1],e.number(-t)],n);if("Negate"===i[0].head)return nt(e,"Subtract",[i[1],i[0].op1],n)}if("Divide"===t&&e.jsonSerializationOptions.exclude.includes("Divide"))return nt(e,"Multiply",[i[0],e._fn("Power",[i[1],e.NEGATIVE_ONE])],n);if("Multiply"===t&&!e.jsonSerializationOptions.exclude.includes("Divide")){const t=new Xe(e,i).asRationalExpression();if("Divide"===t.head)return nt(e,t.head,t.ops,n)}if("Power"===t){if(!r.includes("Exp")&&"ExponentialE"===i[0]?.symbol)return nt(e,"Exp",[i[1]],n);if(i[1]?.isLiteral){const t=i[1].asSmallInteger;if(!r.includes("Square")&&2===t)return nt(e,"Square",[i[0]],n);if(!e.jsonSerializationOptions.exclude.includes("Divide")){if(-1===t)return nt(e,"Divide",[e.ONE,i[0]],n);if(null!==t&&t<0)return nt(e,"Divide",[e.ONE,e.power(i[0],-t)],n)}const[s,a]=i[1].rationalValue;if(1===s){if(!r.includes("Sqrt")&&2===a)return nt(e,"Sqrt",[i[0]],n);if(!r.includes("Root"))return nt(e,"Root",[i[0],e.number(a)],n)}if(-1===s){if(!r.includes("Sqrt")&&2===a)return nt(e,"Divide",[e.ONE,e._fn("Sqrt",[i[0]])],n);if(!r.includes("Root"))return nt(e,"Divide",[e.ONE,e._fn("Root",[i[0],e.number(a)])],n)}}}return nt(e,t,i,n)}(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this._wikidata}):nt(this.engine,this._head,this._ops,{latex:this._latex,wikidata:this._wikidata})}has(e){if("string"==typeof this._head)if("string"==typeof e){if(this._head===e)return!0}else if(e.includes(this._head))return!0;for(const t of this._ops)if(t.has(e))return!0;return!1}isSame(e){if(this===e)return!0;if(!(e instanceof ft))return!1;if(this.nops!==e.nops)return!1;if("string"==typeof this.head){if(this.head!==e.head)return!1}else{if("string"==typeof e.head)return!1;if(!e.head||!this.head.isSame(e.head))return!1}const t=this._ops,i=e._ops;for(let e=0;e<t.length;e++)if(!t[e].isSame(i[e]))return!1;return!0}match(e,t){if(!(e instanceof ft))return null;let i={};if("string"==typeof this.head){if(this.head!==e.head)return null}else{if("string"==typeof e.head)return null;{if(!e.head)return null;const n=this.head.match(e.head,t);if(null===n)return null;i={...i,...n}}}const n=this._ops,r=e._ops;for(let e=0;e<n.length;e++){const s=n[e].match(r[e],t);if(null===s)return null;i={...i,...s}}return i}isEqual(e){if(!this.isCanonical)return this.canonical.isEqual(e);if((e=e.canonical).isNumber&&this.isNumber){const t=this.engine,i=t.add([this,t.negate(e)]).N();return!!i.isZero||null!==i.asFloat&&0===t.chop(i.asFloat)||this.evaluate().isSame(e.evaluate())}return this.domain.isRelationalOperator&&e.domain.isRelationalOperator?this.evaluate().isSame(e.evaluate()):this.isSame(e)}get sgn(){const e=this.head;if("Negate"===e){const e=this._ops[0]?.sgn;if(void 0===e)return;return null===e?null:0===e?0:e>0?-1:1}if("Multiply"===e){const e=this._ops.reduce(((e,t)=>e*(t.sgn??NaN)),1);return isNaN(e)?null:e>0?1:e<0?-1:0}if("Add"===e){let e=0,t=0,i=0;const n=this._ops.length;for(const n of this._ops){const r=n.sgn;if(null==r)break;0===r&&(i+=1),r>0&&(e+=1),r<0&&(t+=1)}return i===n?0:e===n?1:t===n?-1:null}if("Divide"===e){const e=this._ops[0]?.sgn,t=this._ops[1]?.sgn;return null===e||null===t||void 0===e||void 0===t?null:0===e?0:e>0&&t>0||e<0&&t<0?1:-1}return"Square"===e?this._ops[0]?.isImaginary?-1:this._ops[0]?.isZero?0:1:"Abs"===e?this._ops[0]?.isZero?0:1:"Sqrt"===e?this._ops[0]?.isZero?0:this._ops[0]?.isImaginary?null:1:null}*map(e){let t=0;for(;t<this._ops.length;)yield e(this._ops[t++])}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get canonical(){if(this.isCanonical)return this;let e=this._def?.associative?Te(this._ops,this._def.name)??this._ops:this._ops;if(e=pt(e,this._def?.hold??"none",(e=>e.canonical)),this._def?.associative&&(e=Te(e,this._def.name)??e),this._def?.canonical)return this._def.canonical(this.engine,e);if(!this._def)return this.engine._fn(this._head,e);if(1===e.length&&e[0].head===this._head)if(this._def.idempotent)e=e[0].ops;else if(this._def.involution)return e[0].op1;return e.length>1&&!0===this._def.commutative&&(e=e.sort(Ue)),this.engine._fn(this._head,e)}apply(e,t){const i=t??this.head;let n=!1;const r=[];for(const t of this._ops){const i=e(t);t!==i&&(n=!0),r.push(this.engine.box(i))}return n||this.head!==i?this.engine.fn(i,r):this}simplify(e){if(!this.isCanonical)return this.canonical.simplify(e);const t=this._def;let i,n=this._ops;if(t?(t.associative&&(n=Te(n,t.name)??n),n=pt(n,t.hold,(t=>t.simplify(e))),t.associative&&(n=Te(n,t.name)??n)):n=pt(this._ops,"none",(t=>t.simplify(e))),"string"!=typeof this._head)return gt(this._head,n).simplify(e);t&&(t.simplify?i=t.simplify(this.engine,n):t.inert&&(i=n[0]??this.engine.symbol("Missing"))),i||(i=this.engine.fn(this._head,n).canonical);const r=e?.rules??this.engine.cache("standard-simplification-rules",(()=>lt(this.engine,ht)),(e=>{for(const[t,i,n,r]of e)t._purge(),i._purge();return e}));let s=0,a=!1;do{const e=i.replace(r);null!==e?(i=mt(e,i),i===e&&(a=!0)):a=!0,s+=1}while(!a&&s<this.engine.iterationLimit);return i}evaluate(e){if(!this.isCanonical)return this.canonical.evaluate(e);const t=this._def;let i;return t?(i=pt(t.associative?Te(this._ops,t.name)??this._ops:this._ops,t.hold,(t=>t.evaluate(e))),t.associative&&(i=Te(i,t.name)??i)):i=pt(this._ops,"none",(t=>t.evaluate(e))),"string"!=typeof this._head?gt(this._head,i).evaluate(e):t?void 0===t.evaluate?t.inert?i[0]??this.engine.symbol("Missing"):this.engine.fn(this._head,i).canonical:"function"!=typeof t.evaluate?gt(t.evaluate,i).canonical:t.evaluate(this.engine,i)??this.engine.fn(this._head,i).canonical:this.engine.fn(this._head,i).canonical}N(e){if(!this.isCanonical)return this.canonical.N(e);const t=this._def;let i;if(t?(i=pt(t.associative?Te(this._ops,t.name)??this._ops:this._ops,t.hold,(t=>t.N(e))),t.associative&&(i=Te(i,t.name)??i)):i=pt(this._ops,"none",(t=>t.N(e))),"string"!=typeof this._head)return gt(this._head,i).N(e);if(!t)return this.engine.fn(this._head,i).canonical;const n=t.N?.(this.engine,i)??this.engine.fn(this._head,i).evaluate();if(n.isLiteral){if(!Be(this.engine)&&n.complexValue)return this.engine.NAN;if(!We(this.engine)&&n.decimalValue)return this.engine.number(n.decimalValue.toNumber())}return n}solve(e){return null}replace(e,t){return ct(this,e,t)}subs(e){return this.engine.fn(this._head,this._ops.map((t=>t.subs(e)))).canonical}}function gt(e,t){const i={__:e.engine.tuple(t),"_#":e.engine.number(t.length)};let n=1;for(const e of t)i["_"+n++]=e;return i._=i._1,e.subs(i)}function pt(e,t,i){if(0===e.length)return[];const n=[];for(let r=0;r<e.length;r++)if("Nothing"!==e[r].symbol)if("Hold"===e[r].head)n.push(e[r].op1);else if("ReleaseHold"===e[r].head){const t=i(e[r].op1);null!==t&&"Nothing"!==t.symbol&&n.push(t)}else if(dt(e,t,r)){const t=i(e[r]);null!==t&&"Nothing"!==t.symbol&&n.push(t)}else n.push(e[r]);return n}function dt(e,t,i){return"all"!==t&&("none"===t||("first"===t?0!==i:"rest"===t?0===i:"last"===t?i!==e.length-1:"most"===t&&i===e.length-1))}function vt(e){if("number"==typeof e&&!isNaN(e))return isFinite(e)?0===e?"NonNegativeInteger":Number.isInteger(e)?e>0?"PositiveInteger":e<0?"NegativeInteger":"Integer":e>0?"PositiveNumber":e<0?"NegativeNumber":"RealNumber":"ExtendedRealNumber";if(e instanceof l.exports.Decimal)return e.isNaN()?"Number":e.isFinite()?e.isZero()?"NonNegativeInteger":e.isInteger()?e.gt(0)?"PositiveInteger":e.lt(0)?"NegativeInteger":"Integer":e.gt(0)?"PositiveNumber":e.lt(0)?"NegativeNumber":"RealNumber":"ExtendedRealNumber";if(e instanceof c.exports.Complex){const t=e;return 0===t.im?vt(t.re):0===t.re&&0!==t.im?"ImaginaryNumber":"ComplexNumber"}if(Array.isArray(e)){const[t,i]=ke(e);if(!Number.isNaN(t)&&!Number.isNaN(i))return 1!==i?"RationalNumber":vt(t)}return"Number"}function bt(e){if(!Number.isInteger(e)||!Number.isFinite(e)||Number.isNaN(e)||e<=1)return!1;if(e<=7919)return we.has(e);for(const t of we)if(e%t==0)return!1;return e>=0x3ffffffffffe5?!!function(e,t){let i=0,n=e-1;for(;n%2==0;)n/=2,++i;e:do{let t=Math.pow(2+Math.floor(Math.random()*(e-3)),n)%e;if(1!==t&&t!==e-1){for(let n=i-1;n--;){if(t=t*t%e,1===t)return!1;if(t===e-1)continue e}return!1}}while(--t);return!0}(e,30)&&void 0:e===function(e){if(1===e)return 1;if(e%2==0)return 2;if(e%3==0)return 3;if(e%5==0)return 5;const t=Math.floor(Math.sqrt(e));let i=7;for(;i<=t;){if(e%i==0)return i;if(e%(i+4)==0)return i+4;if(e%(i+6)==0)return i+6;if(e%(i+10)==0)return i+10;if(e%(i+12)==0)return i+12;if(e%(i+16)==0)return i+16;if(e%(i+22)==0)return i+22;if(e%(i+24)==0)return i+24;i+=30}return e}(e)}class yt extends Pe{constructor(e,t,i){if(super(e,i),this._isCanonical=!0,t instanceof c.exports.Complex)Number.isNaN(t.re)||Number.isNaN(t.im)?this._value=NaN:0===e.chop(t.im)?this._value=t.re:this._value=Be(e)?t:NaN;else if(Array.isArray(t)){let[e,i]=t;i<0&&([e,i]=[-e,-i]),1===i?this._value=e:0===e?this._value=0===i?NaN:e:(this._value=[e,i],this._isCanonical=1===Ie(e,i))}else t instanceof l.exports.Decimal?this._value=We(e)?t:t.toNumber():"number"==typeof t?this._value=t:We(e)?this._value=e.decimal(t):"string"==typeof t&&(this._value=Number.parseFloat(t));"number"==typeof this._value?Number.isInteger(this._value)?this._head="Integer":this._head="Number":this._value instanceof c.exports.Complex?this._head="ComplexNumber":Array.isArray(this._value)?this._head="RationalNumber":this._value instanceof l.exports.Decimal?this._value.isInteger()?this._head="Integer":this._head="RealNumber":this._head="Number",e._register(this)}get hash(){if(void 0!==this._hash)return this._hash;let e=0;return e="number"==typeof this._value?Qe(this._value.toString()):this._value instanceof c.exports.Complex?Qe(this._value.re.toString()+" +i "+this._value.im.toString()):this._value instanceof l.exports.Decimal?Qe(this._value.toString()):Qe(this._value[0].toString()+" / "+this._value[1].toString()),this._hash=e,e}get head(){return this._head}get isPure(){return!0}get isLiteral(){return!0}get isCanonical(){return this._isCanonical}set isCanonical(e){this._isCanonical=e}get numericValue(){if(!Array.isArray(this._value))return this;const[e,t]=this._value,i=this.engine;return We(i)?new yt(i,i.decimal(e).div(t)):new yt(i,e/t)}get machineValue(){return"number"==typeof this._value?this._value:null}get decimalValue(){return this._value instanceof l.exports.Decimal?this._value:null}get complexValue(){return this._value instanceof c.exports.Complex?this._value:null}get rationalValue(){return Array.isArray(this._value)?this._value:[null,null]}get asFloat(){if("number"==typeof this._value)return this._value;if(this._value instanceof l.exports.Decimal){if(this._value.isNaN())return NaN;if(!this._value.isFinite())return this._value.isPositive()?1/0:-1/0;if(Le(this._value))return this._value.toNumber()}return Array.isArray(this._value)?this._value[0]/this._value[1]:null}get asSmallInteger(){if("number"==typeof this._value)return Number.isInteger(this._value)&&this._value>=-1e6&&this._value<=1e6?this._value:null;if(this._value instanceof l.exports.Decimal)return this._value.isInteger()&&this._value.gte(-1e6)&&this._value.lte(1e6)?this._value.toNumber():null;if(Array.isArray(this._value)){const e=this._value[0]/this._value[1];return Number.isInteger(e)&&e>=-1e6&&e<=1e6?e:null}return 0===this.engine.chop(this._value.im)&&Number.isInteger(this._value.re)&&this._value.re>=-1e6&&this._value.re<=1e6?this._value.re:null}get asRational(){const[e,t]=this.rationalValue;if(null!==e&&null!==t)return[e,t];const i=this.asSmallInteger;return null!==i?[i,1]:[null,null]}get domain(){return void 0===this._domain&&(this._domain=this.engine.domain(vt(this._value))),this._domain}get json(){return st(this.engine,this._value,{latex:this._latex})}get sgn(){if(this.isZero)return 0;if(this._value instanceof c.exports.Complex)return null;if("number"==typeof this._value)return this._value<0?-1:this._value>0?1:null;if(this._value instanceof l.exports.Decimal)return this._value.isNegative()?-1:this._value.isPositive()?1:null;if(Array.isArray(this._value)){const[e,t]=this._value;return 0===e&&0!==t?0:e<0?-1:e>0?1:null}return null}isSame(e){if(this===e)return!0;if(!(e instanceof yt))return!1;if(Array.isArray(this._value)){if(!Array.isArray(e._value))return!1;const[t,i]=e._value;return this._value[0]===t&&this._value[1]===i}return this._value instanceof l.exports.Decimal?e._value instanceof l.exports.Decimal&&this._value.eq(e._value):this._value instanceof c.exports.Complex?e._value instanceof c.exports.Complex&&this._value.equals(e._value):"number"==typeof this._value&&"number"==typeof e._value&&this._value===e._value}isEqual(e){if(this===e)return!0;const t=e.numericValue;if(void 0===t)return!1;if(!(t instanceof yt))return!1;if(Array.isArray(this._value)){const e=t.asFloat;return null!==e&&0===this.engine.chop(this._value[0]/this._value[1]-e)}if(this._value instanceof l.exports.Decimal)return 0===this.engine.chop(this._value.sub(t.decimalValue??t.asFloat??NaN));if(this._value instanceof c.exports.Complex){if(t instanceof c.exports.Complex)return 0===this.engine.chop(t.re-this._value.re)&&0===this.engine.chop(t.im-this._value.im);if(0!==this._value.im)return!1}const i=this.asFloat,n=t.asFloat;return null!==i&&null!==n&&0===this.engine.chop(n-i)}match(e,t){return this.isEqualWithTolerance(e,t?.numericTolerance??0)?{}:null}isEqualWithTolerance(e,t){if(this===e)return!0;if(!(e instanceof yt))return!1;if(Array.isArray(this._value)){const i=e.asFloat;return null!==i&&Math.abs(this._value[0]/this._value[1]-i)<=t}if(this._value instanceof l.exports.Decimal)return this._value.sub(e.decimalValue??e.asFloat??NaN).abs().lte(t);if(this._value instanceof c.exports.Complex){if(e._value instanceof c.exports.Complex)return Math.abs(e._value.re-this._value.re)<=t&&Math.abs(e._value.im-this._value.im)<=t;if(0!==this._value.im)return!1}const i=this.asFloat,n=e.asFloat;return null!==i&&null!==n&&Math.abs(n-i)<=t}isLess(e){if(e=e.N(),!this.isImaginary&&!e.isImaginary){if("number"==typeof this._value){const t=e.machineValue;if(null!==t)return this._value<t;const i=e.decimalValue;if(null!==i)return i.greaterThanOrEqualTo(this._value);const[n,r]=e.rationalValue;return null!==n&&null!==r&&this._value*r<n}if(this._value instanceof l.exports.Decimal){const t=e.machineValue;if(null!==t)return this._value.lt(t);const i=e.decimalValue;if(null!==i)return this._value.lt(i);const[n,r]=e.rationalValue;return null!==n&&null!==r&&this._value.mul(r).lt(n)}if(Array.isArray(this._value)){const[t,i]=this._value;if("number"==typeof e)return t<e*i;const[n,r]=e.rationalValue;if(null!==n&&null!==r)return t*r<n*i;const s=e.decimalValue;return null!==s&&s.mul(t).lt(i)}this._value,c.exports.Complex}}isLessEqual(e){e=e.N();const t=this.isLess(e);if(void 0===t)return;const i=this.isEqual(e);return void 0!==i?t||i:void 0}isGreater(e){const t=this.isLess(e);if(void 0!==t)return!t}isGreaterEqual(e){e=e.N();const t=this.isLess(e);if(void 0===t)return;const i=this.isEqual(e);return void 0!==i?!t||i:void 0}get isPositive(){const e=this.sgn;if(null!=e)return e>0}get isNonNegative(){const e=this.sgn;if(null!=e)return e>=0}get isNegative(){const e=this.sgn;if(null!=e)return e<0}get isNonPositive(){const e=this.sgn;if(null!=e)return e<=0}get isZero(){return!Array.isArray(this._value)&&0===this.engine.chop(this._value)}get isNotZero(){return!!Array.isArray(this._value)||0!==this.engine.chop(this._value)}get isOne(){if("number"==typeof this._value)return 1===this._value;if(this._value instanceof l.exports.Decimal)return this._value.equals(this.engine.DECIMAL_ONE);if(Array.isArray(this._value)){const[e,t]=this._value;return 0!==t&&e===t}return this._value.equals(1)}get isNegativeOne(){if("number"==typeof this._value)return-1===this._value;if(this._value instanceof l.exports.Decimal)return this._value.equals(this.engine.DECIMAL_NEGATIVE_ONE);if(Array.isArray(this._value)){const[e,t]=this._value;return e<0&&0!==t&&-e===t}return this._value.equals(-1)}get isOdd(){return!(!this.isOne&&!this.isNegativeOne)||!this.isZero&&!!this.isInteger&&("number"==typeof this._value?this._value%2!=0:this._value instanceof l.exports.Decimal?!this._value.mod(2).isZero():void 0)}get isEven(){return!this.isOne&&!this.isNegativeOne&&(!!this.isZero||!!this.isInteger&&("number"==typeof this._value?this._value%2==0:this._value instanceof l.exports.Decimal?this._value.mod(2).isZero():void 0))}get isPrime(){return!(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)&&("number"==typeof this._value?bt(this._value):void 0)}get isComposite(){return!(!this.isInteger||!this.isFinite||this.isNonPositive||this.isOne||this.isZero)&&("number"==typeof this._value?!bt(this._value):void 0)}get isInfinity(){return"number"==typeof this._value?!Number.isFinite(this._value)&&!Number.isNaN(this._value):(this._value instanceof l.exports.Decimal||this._value instanceof c.exports.Complex)&&!this._value.isFinite()&&!this._value.isNaN()}get isNaN(){return"number"==typeof this._value?Number.isNaN(this._value):(this._value instanceof l.exports.Decimal&&this._value.isNaN(),this._value instanceof c.exports.Complex&&this._value.isNaN(),!1)}get isFinite(){return!this.isInfinity&&!isNaN}get isNumber(){return!0}get isInteger(){return"number"==typeof this._value?Number.isInteger(this._value):this._value instanceof l.exports.Decimal&&this._value.isInteger()}get isRational(){return!!Array.isArray(this._value)||this.isInteger}get isAlgebraic(){if(this.isRational)return!0}get isReal(){return!(!this.isFinite||this._value instanceof c.exports.Complex&&0!==this.engine.chop(this._value.im))}get isExtendedReal(){return this.isInfinity||this.isReal}get isComplex(){return!this.isNaN}get isImaginary(){return this._value instanceof c.exports.Complex&&0!==this._value.im}get isExtendedComplex(){return this.isInfinity||!this.isNaN}get canonical(){if(this._isCanonical)return this;if(Array.isArray(this._value)){const[e,t]=ke(this._value);return Number.isNaN(e)||Number.isNaN(t)?this.engine.NAN:1===t?this.engine.number(e):0===t?0!==e&&Number.isFinite(e)?e<0?this.engine.NEGATIVE_INFINITY:this.engine.POSITIVE_INFINITY:this.engine.NAN:0===e?this.engine.ZERO:this.engine.number([e,t])}return this}simplify(e){return this.canonical}N(e){if(Array.isArray(this._value)){const e=this.engine,[t,i]=this._value;return We(e)?e.number(e.decimal(t).div(i)):e.number(t/i)}return this}}class Nt extends Pe{constructor(e,t,i){super(e,i),this._string=t.normalize(),e._register(this)}get hash(){return Qe("String"+this._string)}get json(){return e=this.engine,t=t=this._string,e.jsonSerializationOptions.shorthands.includes("string")?`'${t}'`:{str:t};var e,t}get head(){return"String"}get isPure(){return!0}get isLiteral(){return!0}get isCanonical(){return!0}set isCanonical(e){}get domain(){return this.engine.domain("String")}get complexity(){return 19}get string(){return this._string}isEqual(e){return e.string===this._string}isSame(e){return e.string===this._string}match(e,t){return e instanceof Nt&&this._string===e._string?{}:null}}function xt(e,t){if(null==t)return e.symbol("Nothing");if(t instanceof Pe)return t;if(Array.isArray(t)){if("number"!=typeof t[0])return new ft(e,"string"==typeof t[0]?t[0]:xt(e,t[0]),t.slice(1).map((t=>xt(e,t))));const[i,n]=t;return"number"==typeof n&&Number.isInteger(i)&&Number.isInteger(n)?e.number(t):e.fn("Divide",t)}if("number"==typeof t||t instanceof c.exports.Complex||t instanceof l.exports.Decimal)return e.number(t);if("string"==typeof t)return t.startsWith("'")&&t.endsWith("'")?new Nt(e,t.slice(1,-1)):e.symbol(t);if("object"==typeof t){const i={latex:t.latex,wikidata:t.wikidata};if("dict"in t)return new ot(e,t.dict,i);if("fn"in t)return"string"==typeof t.fn[0]?function(e,t,i,n){if("Hold"===t)return new ft(e,"Hold",[St(e,i[0]??"Missing")],n);if("String"===t)return 0===i.length?new Nt(e,"",n):new Nt(e,i.map((e=>wt(e)??"")).join(""),n);if("Symbol"===t&&i.length>0)return e.symbol(i.map((e=>wt(e)??"")).join(""),n);if(("Divide"===t||"Rational"===t)&&2===i.length){const t=F(i[0]),n=F(i[1]);if(null!==t&&null!==n&&Number.isInteger(t)&&Number.isInteger(n))return e.number([t,n])}if("Number"===t&&1===i.length)return xt(e,i[0]);if("Complex"===t){if(1===i.length){const t=xt(e,i[0]),r=t.asFloat;return null!==r&&0!==r?new yt(e,e.complex(0,r),n):e.mul([t,e.I])}if(2===i.length){const t=xt(e,i[0]),r=xt(e,i[1]),s=t.asFloat,a=r.asFloat;return null!==a&&null!==s?0===a&&0===s?e.ZERO:null!==a&&0!==a?new yt(e,e.complex(s,a),n):t:e.add([t,e.mul([r,e.I])],n)}}if("Negate"===t&&i.length>0&&"number"==typeof i[0])return e.number(-i[0],n);if("Single"===t||"Pair"===t||"Triple"===t)return e.fn("Tuple",i,n);if("Dictionary"===t){const t={};for(const n of i){const i=e.box(n),r=i.head;if("KeyValuePair"===r||"Pair"===r||"Tuple"===r){const e=i.op1;if(!e.isMissing){const n=i.op2;let r=e.symbol??e.string;if(!r&&e.isLiteral){const t=e.machineValue??e.asSmallInteger;t&&Number.isFinite(t)&&Number.isInteger(t)&&(r=t.toString())}r&&(t[r]=n)}}}return new ot(e,t,n)}return new ft(e,t,i.map((t=>xt(e,t))),n)}(e,t.fn[0],t.fn.slice(1),i):e.fn(xt(e,t.fn[0]),t.fn.slice(1).map((t=>xt(e,t))),i);if("str"in t)return new Nt(e,t.str,i);if("sym"in t)return e.symbol(t.sym,i);if("num"in t)return e.number(t,i)}return e.symbol("Undefined")}function _t(e,t,i){if(t instanceof yt)return t;if(Array.isArray(t)){if(2!==t.length)throw Error("Array argument to boxNumber() should be two integers");const[n,r]=t;if("number"!=typeof n||"number"!=typeof r)throw Error("Array argument to boxNumber() should be two integers");if(!Number.isInteger(n)||!Number.isInteger(r))throw Error("Array argument to boxNumber() should be two integers");if(r===n)return 0===r?e.NAN:e.ONE;if(1===r)t=n;else{if(-1!==r)return 1===n&&2===r?e.HALF:new yt(e,[n,r],i);t=-n}}if(t instanceof c.exports.Complex){if(t.isNaN())return e.NAN;if(t.isZero())return e.ZERO;if(t.isInfinite())return e.COMPLEX_INFINITY;if(0!==t.im)return Be(e)?new yt(e,t,i):e.NAN;t=t.re}if(t instanceof l.exports.Decimal)return t.isNaN()?e.NAN:t.equals(e.DECIMAL_NEGATIVE_ONE)?e.NEGATIVE_ONE:t.isZero()?e.ZERO:t.equals(e.DECIMAL_ONE)?e.ONE:t.equals(e.DECIMAL_TWO)?e.TWO:!t.isFinite()&&t.isPositive()?e.POSITIVE_INFINITY:!t.isFinite()&&t.isNegative()?e.NEGATIVE_INFINITY:new yt(e,We(e)?t:t.toNumber(),i);if("object"==typeof t&&"num"in t)if("number"==typeof t.num)t=t.num;else if("string"==typeof t.num){let n=t.num.toLowerCase();if(/[0-9][nd]$/.test(n)&&(n=n.slice(0,-1)),n=n.replace(/[\u0009-\u000d\u0020\u00a0]/g,""),/\([0-9]+\)$/.test(n)){const[t,i,r]=n.match(/(.+)\(([0-9]+)\)$/)??[];n=i+r.repeat(Math.ceil(e.precision/r.length))}return"nan"===n?e.NAN:"infinity"===n||"+infinity"===n?e.POSITIVE_INFINITY:"-infinity"===n?e.NEGATIVE_INFINITY:"0"===n?e.ZERO:"1"===n?e.ONE:"-1"===n?e.NEGATIVE_ONE:"2"===n?e.TWO:new yt(e,n,i)}if("number"==typeof t){if(Number.isNaN(t))return e.NAN;if(!Number.isFinite(t)&&t>0&&e.POSITIVE_INFINITY,!Number.isFinite(t)&&t<0&&e.NEGATIVE_INFINITY,-1===t)return e.NEGATIVE_ONE;if(0===t)return e.ZERO;if(1===t)return e.ONE;if(2===t)return e.TWO}return"number"==typeof t?new yt(e,t,i):null}function St(e,t){if("object"==typeof t&&t instanceof Pe)return t;if("string"==typeof t)return xt(e,t);if(Array.isArray(t)){const i=t.map((t=>St(e,t)));return new ft(e,i[0],i.slice(1))}if("object"==typeof t){if("dict"in t)return new ot(e,t.dict);if("fn"in t)return St(e,t.fn);if("str"in t)return new Nt(e,t.str);if("sym"in t)return xt(e,t.sym);if("num"in t)return xt(e,t.num)}return xt(e,t)}function wt(e){if("string"==typeof e)return e;if(e instanceof Pe)return e.string??e.symbol??e.toString();if("object"==typeof e){if("str"in e)return e.str;if("fn"in e&&"String"===e.fn[0]&&"string"==typeof e.fn[1])return e.fn[1]}return Array.isArray(e)&&"String"===e[0]&&"string"==typeof e[1]?e[1]:null}function Et(e,t){if(!e.isLiteral)return null;let i;null!==e.machineValue&&(i=-e.machineValue),e.decimalValue&&(i=e.decimalValue.neg()),e.complexValue&&(i=e.complexValue.neg());const[n,r]=e.rationalValue;return null!==n&&null!==r&&(i=[-n,r]),void 0!==i?e.engine.number(i,t):null}function It(e,t){if("Negate"===e.head)return e.op1;if(e.isLiteral)return Et(e,t);if("Add"===e.head){let i=e.ops.map((e=>It(e)));return i=Te(i,"Add")??i,e.engine.add(i,t)}return e.engine._fn("Negate",[e],t)}function kt(e){if("Negate"===e.head)return e.op1;if(e.isLiteral)return Et(e);const t=e.engine;if("Add"===e.head){let i=e.ops.map((e=>kt(e)));return i=Te(i,"Add")??i,t.add(i)}return"Multiply"===e.head?function(e,t){let i=[],n=!1;for(const e of t)n||"Negate"!==e.head?i.push(e):(n=!0,i.push(e.op1));if(n)return e.mul(i);i=[];for(const e of t)!n&&e.isLiteral&&e.isInteger?(n=!0,i.push(kt(e))):i.push(e);if(n)return e.mul(i);i=[];for(const e of t)!n&&e.isLiteral&&e.isNumber?(n=!0,i.push(kt(e))):i.push(e);return n?e.mul(i):e._fn("Negate",[e._fn("Multiply",t)])}(t,e.ops):"Divide"===e.head?t.divide(kt(e.op1),e.op2):t._fn("Negate",[e])}function At(e,t,i="simplify"){return kt(t)}class Mt{constructor(e,t){if(this._literal=[0,1],this._imaginary=0,this._posInfinityCount=0,this._negInfinityCount=0,this._terms=[],this.engine=e,t)for(const e of t)this.addTerm(e)}get isEmpty(){return 0===this._terms.length&&0===this._literal[0]&&0===this._imaginary&&0===this._negInfinityCount&&0===this._posInfinityCount}addTerm(e,t){if("Nothing"===e.symbol)return;if(void 0===t&&(t=[1,1]),e.isLiteral){if(e.isInfinity)return void(e.isPositive?this._posInfinityCount+=1:this._negInfinityCount+=1);const[i,n]=e.asRational;if(null!==i&&null!==n)return void(this._literal=[t[0]*(this._literal[0]*n+i*this._literal[1]),t[1]*n*this._literal[1]]);if(e.complexValue){let i=e.complexValue.re,n=e.complexValue.im;if(Number.isInteger(i)&&Math.abs(i)<=1e6&&(this._literal[0]+=this._literal[1]*i*t[0]/t[1],i=0),Number.isInteger(n)&&Math.abs(n)<=1e6&&(this._imaginary+=n*t[0]/t[1],n=0),0===i&&0===n)return;e=this.engine.number(this.engine.complex(i,n)).canonical}}let i;if([i,e]=Ye(e),0===i[0])return;if(i=[i[0]*t[0],i[1]*t[1]],"Add"===e.head){for(const t of e.ops)this.addTerm(t,i);return}let n=!1;if(!e.isLiteral)if(this._terms.length>500){const t=e.hash;for(let r=0;r<this._terms.length;r++)if(!this._terms[r].term.isLiteral&&t===this._terms[r].term.hash&&e.isSame(this._terms[r].term)){const[e,t]=this._terms[r].coef,[s,a]=i;this._terms[r].coef=[e*a+t*s,t*a],n=!0;break}}else for(let t=0;t<this._terms.length;t++)if(!this._terms[t].term.isLiteral&&e.isSame(this._terms[t].term)){const[e,r]=this._terms[t].coef,[s,a]=i;this._terms[t].coef=[e*a+r*s,r*a],n=!0;break}n||this._terms.push({term:e,coef:i})}terms(){const e=this.engine;if(this._posInfinityCount>0&&this._negInfinityCount>0)return[e.NAN];if(this._posInfinityCount>0)return[e.POSITIVE_INFINITY];if(this._negInfinityCount>0)return[e.NEGATIVE_INFINITY];if(0===this._terms.length)return 0===this._literal[0]&&0===this._imaginary?[]:0===this._imaginary?[e.number(this._literal).canonical]:0===this._literal[0]?[e.number(e.complex(0,this._imaginary)).canonical]:[e.number(this._literal).canonical,e.number(e.complex(0,this._imaginary)).canonical];const t=[];for(const{coef:[i,n],term:r}of this._terms)0!==i&&(i===n?t.push(r):i===-n?t.push(e.negate(r)):1===n?t.push(e.mul([e.number(i).canonical,r])):1===i?t.push(e.divide(r,e.number(n).canonical)):0!==i&&t.push(e.mul([e.number([i,n]).canonical,r])));return 0!==this._literal[0]&&t.push(e.number(this._literal).canonical),0!==this._imaginary&&t.push(e.number(e.complex(0,this._imaginary)).canonical),Te(t,"Add")??t}asExpression(){const e=this.engine,t=this.terms();return 0===t.length?e.ZERO:1===t.length?t[0]:e._fn("Add",t.sort(((e,t)=>{const i=$e(e),n=$e(t);if(i<n)return-1;if(i>n)return 1;const r=Re(e),s=Re(t);if(r!==s)return s-r;const a=ze(e),o=ze(t);return a!==o?a-o:Ue(e,t)})))}}function Ft(e,t){if((t=Te(t,"Add")??t).length<=1)return t[0]??e.symbol("Nothing");if(2===t.length){let i=0,n=0;if(t[0].isLiteral&&(n=t[0].machineValue,n=null===n&&t[0].decimalValue?t[0].asFloat??0:0),0!==n?i=Ge(t[1]):(i=Ge(t[0]),0!==i&&(n=t[1].machineValue,n=null===n&&t[1].decimalValue?t[1].asFloat??0:0)),0!==i)return e.number(e.complex(n,i));if(t[0].isLiteral&&t[1].isLiteral){if(t[0].isZero)return t[1];if(t[1].isZero)return t[0];const[i,n]=t[0].asRational,[r,s]=t[1].asRational;if(null!==i&&null!==n&&null!==r&&null!==s)return e.number([i*s+r*n,n*s])}}return new Mt(e,t).asExpression()}function Ot(e,t,i){const n=new Mt(e);for(const i of t){if(i.isImaginary&&i.isInfinity)return e.symbol("ComplexInfinity");if(i.isNaN||i.isMissing||"Undefined"===i.symbol)return e.NAN;n.addTerm(i)}return n.asExpression()}function qt(e,t,i,n){if("ComplexInfinity"===i.symbol)return e.NAN;if(i.isLiteral){if(i.isZero)return e.ONE;if(t.isLiteral){if(t.isOne)return e.ONE;if(t.isZero){if(i.isPositive)return e.ZERO;if(i.isNegative)return e.COMPLEX_INFINITY}if(i.isOne)return t;if(i.isNegativeOne){if(t.isOne)return e.ONE;if(t.isNegativeOne)return e.NEGATIVE_ONE;if(t.isInfinity)return e.ZERO;const[i,r]=t.rationalValue;if(null!==i&&null!==r)return e.number([r,i],n);const s=t.asFloat;return null!==s&&Number.isInteger(s)?e.number([1,s],n):e._fn("Power",[t,e.NEGATIVE_ONE],n)}const r=i.asFloat;if(.5===r||-.5===r){const i=t.asSmallInteger;if(null!==i&&i>0){const[t,n]=Ee(i,2);if(1===n&&1===t)return e.ONE;if(1!==t)return 1===n?e.number(r>=0?t:[1,t]):e.mul([e.number(t),e.power(e.number(n),e.HALF)])}return r>0?e._fn("Power",[t,e.HALF],n):e._fn("Power",[t,e.number([-1,2])],n)}if(t.isInfinity){if(i.complexValue){const t=i.complexValue.re;if(0===t)return e.NAN;if(t<0)return e.ZERO;if(t>0)return e.COMPLEX_INFINITY}if(t.isNegative){if(i.isInfinity)return e.NAN}else if(t.isPositive){if(i.isNegativeOne)return e.ZERO;if(i.isInfinity)return i.isNegative?e.ZERO:e.POSITIVE_INFINITY}}if(i.isInfinity&&(t.isOne||t.isNegativeOne))return e.NAN;const[s,a]=t.asRational;if(null!==s&&null!==a){const t=i.asSmallInteger;if(null!==t)return-1===t?e.number([a,s]):t>0?e.number([Math.pow(s,t),Math.pow(a,t)]):e.number([Math.pow(a,-t),Math.pow(s,-t)])}}}if("Power"===t.head&&t.op1.isReal){const n=i.asSmallInteger;if(null!==n){const i=t.op2.asSmallInteger;if(null!==i)return e._fn("Power",[t.op1,e.number(n*i)])}if(t.op1.isNonNegative){const[n,r]=i.asRational;if(null!==n&&null!==r){const[i,s]=t.op2.asRational;if(null!==i&&null!==s)return e._fn("Power",[t.op1,e.number([n*i,r*s])])}}}return"Multiply"===t.head&&null!==i.asSmallInteger?e._fn("Multiply",t.ops.map((t=>e.power(t,i)))):null}function Pt(e,t){if(t.machineValue)return e.number(Math.pow(t.machineValue,2));if(t.decimalValue)return e.number(t.decimalValue.pow(2));if(t.complexValue)return e.number(t.complexValue.pow(2));const[i,n]=t.rationalValue;if(null!==i&&null!==n)return e.number([Math.pow(n,2),Math.pow(i,2)]);if("Multiply"===t.head)return e._fn("Multiply",t.ops.map((t=>Pt(e,t))));if("Power"===t.head){const i=t.op2.asSmallInteger;return null!==i?e._fn("Power",[t.op1,e.number(2*i)]):e._fn("Power",[t.op1,e.mul([e.TWO,t.op2])])}return e._fn("Power",[t,e.TWO])}function Vt(e,t,i,n){if("N"===n&&t.isLiteral&&i.isLiteral)return t.complexValue?e.number(t.complexValue.pow(i.complexValue??i.asFloat??NaN)):i.complexValue&&t.asFloat?e.number(e.complex(t.asFloat).pow(i.complexValue)):t.decimalValue?e.number(t.decimalValue.pow(i.decimalValue??i.asFloat)):t.asFloat&&(i.decimalValue||We(e))?e.number(e.decimal(t.asFloat).pow(i.decimalValue??i.asFloat)):e.number(Math.pow(t.asFloat??NaN,i.asFloat??NaN));if(null!==t.asSmallInteger){const[n,r]=i.rationalValue;if(!(1!==n&&-1!==n||2!==r&&3!==r)){const[s,a]=Ee(t.asSmallInteger,r);if(1===a&&1===s)return e.ONE;if(1===s)return;return 1===a?e.number(n>=0?s:[1,s]):e.mul([e.number(s),e.power(e.number(a),i)])}}}function Ct(e,t){return 0===(t=Te(t,"Multiply")??t).length?e.symbol("Nothing"):1===t.length?t[0]:2===t.length?Lt(t[0],t[1]):new Xe(e,t).asExpression()}function Dt(e,t,i){const n=new Xe(e);for(const i of t){if(i.isNaN||i.isMissing||"Undefined"===i.symbol)return e.NAN;n.addTerm(i)}return n.asExpression()}function Lt(e,t,i){const n=e.engine;if(e.isLiteral&&t.isLiteral&&e.isInteger&&t.isInteger){if(e.decimalValue&&t.decimalValue)return n.number(e.decimalValue.mul(t.decimalValue));if(e.machineValue&&t.machineValue)return n.number(e.machineValue*t.machineValue)}if("Nothing"===e.symbol)return t;if("Nothing"===t.symbol)return e;if(e.isLiteral&&e.isOne)return t;if(t.isLiteral&&t.isOne)return e;if(e.isLiteral&&e.isNegativeOne)return It(t);if(t.isLiteral&&t.isNegativeOne)return It(e);if(e.isMissing||t.isMissing)return n._fn("Multiply",[e,t]);let r=1,s=e,a=t;s.isLiteral&&null!==s.asRational||(a=t,s=e),"Negate"===a.head&&(a=a.op1,r=-r);const[o,l]=s.asRational;if(s.isLiteral&&null!==o&&null!==l){if(o===l)return a;if(0===o)return n.ZERO;if("Add"===a.head)return r<0&&(s=It(s)),n.add(a.ops.map((e=>Lt(s,e))),i);if(a.isLiteral){const[e,t]=a.asRational;if(null!==e&&null!==t)return n.number(ke([r*o*e,t*l]),i)}return r<0?n._fn("Multiply",[It(s),a],i):n._fn("Multiply",[s,a],i)}if(s.hash===a.hash&&s.isSame(a))return Pt(n,s);const u=new Xe(n,[s,a]);return r>0?u.asExpression():It(u.asExpression(),i)}function Tt(e,t,i){if(t.isLiteral&&i.isLiteral){if(t.isOne)return e.inverse(i);if(t.isNegativeOne)return It(e.inverse(i));if(i.isOne)return t;if(i.isNegativeOne)return It(t);const[n,r]=[t.asSmallInteger,i.asSmallInteger];if(null!==n&&null!==r&&0!==r)return e.number(ke([n,r]))}if("Divide"===t.head&&"Divide"===i.head)return e.divide(e.mul([t.op1,i.op2]),e.mul([t.op2,i.op1]));if("Divide"===t.head)return e.divide(e.mul([t.op1,i]),t.op2);if("Divide"===i.head)return e.divide(e.mul([t,i.op2]),i.op1);let[n,r]=Je(t),[s,a]=Je(i);return r=r.canonical,a=a.canonical,a.isLiteral&&a.isOne?n*s<0?It(r):r:(a=e.inverse(a),r.isOne?a:r.isNegativeOne?It(a):n*s>0?e.mul([r,a]):e.negate(e.mul([r,a])))}const Rt=[{functions:[{name:"Abs",domain:["Function","ExtendedRealNumber","ExtendedRealNumber"],range:[0,1/0],wikidata:"Q3317982",threadable:!0,idempotent:!0,complexity:1200,simplify:(e,t)=>zt(e,t[0],"simplify"),evaluate:(e,t)=>zt(e,t[0],"evaluate"),N:(e,t)=>zt(e,t[0],"N")},{name:"Add",wikidata:"Q32043",associative:!0,commutative:!0,threadable:!0,idempotent:!0,domain:"NumericFunction",complexity:1300,canonical:(e,t)=>Ft(e,t),simplify:(e,t)=>Ot(e,t),evaluate:(e,t)=>Ot(e,t),N:(e,t)=>function(e,t){for(const i of t){if(i.isImaginary&&i.isInfinity)return e.symbol("ComplexInfinity");if(i.isNaN||i.isMissing||"Undefined"===i.symbol)return e.NAN}let[i,n]=[0,1],r=0,s=e.DECIMAL_ZERO,a=c.exports.Complex.ZERO;const o=new Mt(e);for(const l of t)if("Nothing"!==l.symbol&&!l.isZero){const[t,u]=l.rationalValue;null!==t&&null!==u?[i,n]=[i*u+n*t,n*u]:null!==l.decimalValue?s=s.add(l.decimalValue):null!==l.machineValue?We(e)?s=s.add(l.machineValue):r+=l.machineValue:null!==l.complexValue?a=a.add(l.complexValue):o.addTerm(l)}if(!Be(e)&&0!==a.im)return e.NAN;if(We(e)||0!==e.chop(s)){let t=s;if(0!==i&&(t=t.mul(n).add(i).div(n)),0!==r&&(t=t.add(r)),0!==a.re&&(t=t.add(a.re)),0!==a.im)if(Le(t)){const i=e.number(e.complex(t.toNumber(),a.im));if(o.isEmpty)return i;o.addTerm(i)}else o.addTerm(e.number(e.complex(0,a.im))),o.addTerm(e.number(t));else{if(o.isEmpty)return e.number(t);o.addTerm(e.number(t))}}else{const t=r+a.re+i/n,s=e.number(0===a.im?t:e.complex(t,a.im));if(o.isEmpty)return s;o.addTerm(s)}return o.asExpression()}(e,t)},{name:"Ceil",description:"Rounds a number up to the next largest integer",complexity:1250,domain:"NumericFunction",evaluate:(e,t)=>{const i=t[0];return i.decimalValue?e.number(i.decimalValue.ceil()):i.complexValue?e.number(i.complexValue.ceil(0)):null!==i.asFloat?e.number(Math.ceil(i.asFloat)):void 0}},{name:"Chop",associative:!0,threadable:!0,idempotent:!0,complexity:1200,domain:"NumericFunction",N:(e,t)=>{const i=t[0];return i.decimalValue?e.number(e.chop(i.decimalValue)):i.complexValue?e.number(e.chop(i.complexValue)):null!==i.asFloat?e.number(e.chop(i.asFloat)):void 0}},{name:"Complex",wikidata:"Q11567",domain:"NumericFunction",complexity:500},{name:"Divide",wikidata:"Q1226939",domain:"NumericFunction",complexity:2500,canonical:(e,t)=>t[0]&&t[1]?Tt(e,t[0],t[1]):e.symbol("Missing")},{name:"Exp",domain:"NumericFunction",wikidata:"Q168698",threadable:!0,complexity:3500,canonical:(e,t)=>t[0]?e.power(e.symbol("ExponentialE"),t[0]):e.symbol("Missing")},{name:"Erf",description:"Complementary Error Function",domain:"NumericFunction",complexity:7500},{name:"Erfc",description:"Complementary Error Function",domain:"NumericFunction",complexity:7500},{name:"Factorial",description:"The factorial function",wikidata:"Q120976",complexity:9e3,domain:"NumericFunction",evaluate:(e,t)=>{const i=t[0].asSmallInteger;return null!==i&&i>=0?We(e)?e.number(Ve(e,e.decimal(i))):e.number(function(e){if(!Number.isInteger(e)||e<0)return NaN;let t=1;for(let i=2;i<=e;i++)t*=i;return t}(i)):t[0].complexValue?e.number(t[0].complexValue.add(1)):null!==t[0].asFloat?e.number(Oe(1+t[0].asFloat)):void 0}},{name:"Floor",wikidata:"Q56860783",domain:["Function","ExtendedRealNumber","ExtendedRealNumber"],complexity:1250,evaluate:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.floor()):t[0].complexValue?e.number(t[0].complexValue.floor(0)):null!==t[0].asFloat?e.number(Math.floor(t[0].asFloat)):void 0},{name:"Gamma",wikidata:"Q190573",domain:["Function","Number","Number"],complexity:8e3,N:(e,t)=>t[0].decimalValue?e.number(De(e,t[0].decimalValue)):t[0].complexValue?e.number(t[0].complexValue):null!==t[0].asFloat?e.number(Oe(t[0].asFloat)):void 0},{name:"LogGamma",domain:["Function","Number","Number"],complexity:8e3,N:(e,t)=>t[0].decimalValue?e.number(Ce(e,t[0].decimalValue)):t[0].complexValue?e.number(t[0].complexValue):null!==t[0].asFloat?e.number(Fe(t[0].asFloat)):void 0},{name:"Ln",description:"Natural Logarithm",domain:["Function","Number","Number"],wikidata:"Q204037",complexity:4e3,N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.log()):t[0].complexValue?e.number(t[0].complexValue.log()):null!==t[0].asFloat?e.number(Math.log(t[0].asFloat)):void 0},{name:"Log",description:"Log(b, z) = Logarithm of base b",wikidata:"Q11197",domain:["Function","Number","Number","Number"],complexity:4100,N:(e,t)=>{const i=t[0],n=t[1];return i.decimalValue?e.number(i.decimalValue.log().div(n.decimalValue??n.asFloat??NaN)):i.complexValue?e.number(i.complexValue.log().div(n.complexValue??n.asFloat??NaN)):null!==i.asFloat?e.number(Math.log(i.asFloat)/Math.log(n.asFloat??NaN)):void 0}},{name:"Lb",description:"Base-2 Logarithm",domain:["Function","Number","Number"],wikidata:"Q581168",complexity:4100,N:(e,t)=>{const i=t[0];return i.decimalValue?e.number(i.decimalValue.log().div(e.DECIMAL_TWO)):i.complexValue?e.number(i.complexValue.log().div(e.complex(2))):null!==i.asFloat?e.number(Math.log2(i.asFloat)):void 0}},{name:"Lg",description:"Base-10 Logarithm",domain:["Function","Number","Number"],wikidata:"Q966582",complexity:4100,N:(e,t)=>{const i=t[0];return i.decimalValue?e.number(i.decimalValue.log().div(e.decimal(10))):i.complexValue?e.number(i.complexValue.log().div(e.complex(10))):null!==i.asFloat?e.number(Math.log10(i.asFloat)):void 0}},{name:"Multiply",domain:"NumericFunction",wikidata:"Q40276",associative:!0,commutative:!0,idempotent:!0,complexity:2100,canonical:(e,t)=>Ct(e,t),simplify:(e,t)=>Dt(e,t),evaluate:(e,t)=>Dt(e,t),N:(e,t)=>function(e,t){for(const i of t)if(i.isNaN||i.isMissing||"Undefined"===i.symbol)return e.NAN;let[i,n]=[1,1],r=1,s=e.DECIMAL_ONE,a=c.exports.Complex.ONE;const o=new Xe(e);for(const l of t)if("Nothing"!==l.symbol&&!l.isOne){const[t,u]=l.rationalValue;null!==t&&null!==u?[i,n]=[i*t,n*u]:null!==l.decimalValue?s=s.mul(l.decimalValue):null!==l.machineValue?We(e)?s=s.mul(l.machineValue):r*=l.machineValue:null!==l.complexValue?a=a.mul(l.complexValue):o.addTerm(l)}if(!Be(e)&&0!==a.im)return e.NAN;if(We(e)||!s.eq(e.DECIMAL_ONE)){const t=s.mul(i).div(n).mul(r);if(1!==a.re||0!==a.im)if(Le(t)){const i=e.number(e.complex(a.mul(t.toNumber())));if(o.isEmpty)return i;o.addTerm(i)}else{if(o.isEmpty)return e._fn("Multiply",[e.number(a),e.number(t)]);o.addTerm(e.number(a)),o.addTerm(e.number(t))}else{if(o.isEmpty)return e.number(t);o.addTerm(e.number(t))}}else{const t=r*i/n;let s;if(s=1!==a.re||0!==a.im?e.number(a.mul(t)):e.number(t),o.isEmpty)return s;o.addTerm(s)}return o.asExpression()}(e,t)},{name:"Negate",description:"Additive Inverse",wikidata:"Q715358",domain:["Function","Number","Number"],complexity:2e3,canonical:(e,t)=>t[0]?It(t[0]):e.box("Missing"),simplify:(e,t)=>At(0,t[0],"simplify"),evaluate:(e,t)=>At(0,t[0],"evaluate"),N:(e,t)=>At(0,t[0],"N"),sgn:(e,t)=>{const i=t[0]??e.symbol("Missing");return i.isZero?0:i.isPositive?-1:i.isNegative?1:void 0}},{name:"Power",domain:["Function","Number","Number","Number"],wikidata:"Q33456",commutative:!1,complexity:3500,canonical:(e,t)=>{const i=t[0]??e.symbol("Missing"),n=t[1]??e.symbol("Missing");return qt(e,i,n)??e._fn("Power",t)},simplify:(e,t)=>Vt(e,t[0],t[1],"simplify"),evaluate:(e,t)=>Vt(e,t[0],t[1],"evaluate"),N:(e,t)=>Vt(e,t[0],t[1],"N")},{name:"Rational",domain:["Function","Number",["Optional","Number"],"RationalNumber"],complexity:2400,canonical:(e,t)=>2===t.length?Tt(e,t[0],t[1]):e._fn("Rational",t),simplify:(e,t)=>{if(2===t.length)return null!==t[0].asSmallInteger&&null!==t[1].asSmallInteger?e.number([t[0].asSmallInteger,t[1].asSmallInteger]):void 0},evaluate:(e,t)=>{if(2===t.length)return null!==t[0].asSmallInteger&&null!==t[1].asSmallInteger?e.number([t[0].asSmallInteger,t[1].asSmallInteger]):void 0;const i=t[0].asFloat;if(null===i)return t[0];const n=function(e){if(!Number.isFinite(e))return e;if(0==e%1)return e;let t=Math.floor(e),i=1,n=0,r=t,s=1;for(;e-t>1e-15*s*s;){t=Math.floor(e=1/(e-t));const a=i;i=r;const o=n;n=s,r=a+t*i,s=o+t*n}return[r,s]}(i);return"number"==typeof n?e.number(n):e.number([n[0],n[1]])},N:(e,t)=>{if(2===t.length){if(null===t[0].asSmallInteger||null===t[1].asSmallInteger)return;return e.number(t[0].asSmallInteger/t[1].asSmallInteger)}}},{name:"Root",domain:["Function","Number","RationalNumber","Number"],complexity:3200,canonical:(e,t)=>{const i=t[0]??e.symbol("Missing"),n=t[1]??e.symbol("Missing"),r=e.inverse(n);return qt(e,i,r)??e._fn("Power",[i,r])},N:(e,t)=>{const i=t[0],n=t[1];if(i.decimalValue)return e.number(i.decimalValue.pow(e.DECIMAL_ONE.div(n.asFloat??NaN)));if(i.complexValue){const t=n.complexValue?c.exports.Complex.ONE.div(n.complexValue):e.complex(1/(n.asFloat??NaN));return e.number(i.complexValue.pow(t))}return null!==i.asFloat?e.number(Math.pow(i.asFloat,n.asFloat??NaN)):void 0}},{name:"Round",domain:["Function","Number","Number"],complexity:1250,N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.round()):t[0].complexValue?e.number(t[0].complexValue.round(0)):null!==t[0].asFloat?e.number(Math.round(t[0].asFloat)):void 0},{name:"Sign",domain:["Function","Number","Integer"],range:[-1,1],complexity:1200,simplify:(e,t)=>{const i=t[0].sgn;return 0===i?e.ZERO:1===i?e.ONE:-1===i?e.NEGATIVE_ONE:void 0},evaluate:(e,t)=>{const i=t[0].sgn;return 0===i?e.ZERO:1===i?e.ONE:-1===i?e.NEGATIVE_ONE:void 0},N:(e,t)=>{const i=t[0].sgn;return 0===i?e.ZERO:1===i?e.ONE:-1===i?e.NEGATIVE_ONE:void 0}},{name:"SignGamma",description:"The sign of the gamma function: -1 or +1",domain:["Function","Number","Integer"],complexity:7900,range:[-1,1]},{name:"Sqrt",description:"Square Root",domain:["Function","Number","Number"],wikidata:"Q134237",complexity:3e3,canonical:(e,t)=>t[0]?qt(e,t[0],e.HALF)??e._fn("Power",[t[0],e.HALF]):e._fn("Power",[e.symbol("Missing"),e.HALF]),simplify:(e,t)=>$t(e,t[0],"simplify"),evaluate:(e,t)=>$t(e,t[0],"evaluate"),N:(e,t)=>$t(e,t[0],"N")},{name:"Square",domain:["Function","Number","Number"],wikidata:"Q3075175",complexity:3100,canonical:(e,t)=>t[0]?qt(e,t[0],e.TWO)??e._fn("Power",[t[0],e.TWO]):e._fn("Power",[e.symbol("Missing"),e.TWO]),N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.mul(t[0].decimalValue)):t[0].complexValue?e.number(t[0].complexValue.mul(t[0].complexValue)):null!==t[0].asFloat?e.number(t[0].asFloat*t[0].asFloat):void 0},{name:"Subscript",domain:["Function","Anything","Anything","Anything"],hold:"last",canonical:(e,t)=>{const i=t[0]??e.symbol("Missing"),n=t[1]??e.symbol("Missing");if(i.string&&n.isLiteral&&null!==n.asSmallInteger){const t=n.asSmallInteger;if(t>1&&t<=36){const[n,r]=qe(i.string,t);return r?e._fn("Error",[e.number(n),e.string("unexpected-digits"),e._fn("LatexForm",[e.string(r)])]):e.number(n)}}if(i.symbol){if(i.symbolDefinition?.at)return e._fn("At",[i,n]);let t=n.string??n.symbol;if(t||null!==n.asSmallInteger&&(t=n.asSmallInteger.toString()),t)return e.symbol(i.symbol+"_"+t)}return e._fn("Subscript",t)}},{name:"Subtract",domain:["Function","Number","Number","Number"],wikidata:"Q40754",complexity:1350,canonical:(e,t)=>0===t.length?e.symbol("Nothing"):1===t.length?It(t[0]):Ft(e,[t[0],It(t[1])]),N:(e,t)=>{const i=t[0],n=t[1];return i.complexValue||n.complexValue?e.number(e.complex(i.complexValue??i.asFloat).sub(n.complexValue??n.asFloat)):i.decimalValue||n.decimalValue?e.number(e.decimal(i.decimalValue??i.asFloat??NaN).sub(n.decimalValue??n.asFloat??NaN)):null!==i.asFloat&&null!==n.asFloat?e.number(i.asFloat-n.asFloat):void 0}}]},{symbols:[{name:"MachineEpsilon",domain:"RealNumber",constant:!0,real:!0,value:{num:Number.EPSILON.toString()}},{name:"Half",constant:!0,hold:!1,value:["Rational",1,2]},{name:"ImaginaryUnit",domain:"ImaginaryNumber",constant:!0,hold:!0,wikidata:"Q193796",imaginary:!0,value:["Complex",0,1]},{name:"ExponentialE",domain:"TranscendentalNumber",algebraic:!1,wikidata:"Q82435",constant:!0,hold:!0,real:!0,value:e=>We(e)?e.DECIMAL_ONE.exp():Math.exp(1)},{name:"GoldenRatio",domain:"AlgebraicNumber",wikidata:"Q41690",constant:!0,algebraic:!0,hold:!1,value:["Divide",["Add",1,["Sqrt",5]],2]},{name:"CatalanConstant",domain:"RealNumber",algebraic:void 0,wikidata:"Q855282",constant:!0,value:{num:"0.91596559417721901505460351493238411077414937428167\n 21342664981196217630197762547694793565129261151062\n 48574422619196199579035898803325859059431594737481\n 15840699533202877331946051903872747816408786590902\n 47064841521630002287276409423882599577415088163974\n 70252482011560707644883807873370489900864775113225\n 99713434074854075532307685653357680958352602193823\n 23950800720680355761048235733942319149829836189977\n 06903640418086217941101917532743149978233976105512\n 24779530324875371878665828082360570225594194818097\n 53509711315712615804242723636439850017382875977976\n 53068370092980873887495610893659771940968726844441\n 66804621624339864838916280448281506273022742073884\n 31172218272190472255870531908685735423498539498309\n 91911596738846450861515249962423704374517773723517\n 75440708538464401321748392999947572446199754961975\n 87064007474870701490937678873045869979860644874974\n 64387206238513712392736304998503539223928787979063\n 36440323547845358519277777872709060830319943013323\n 16712476158709792455479119092126201854803963934243\n "}},{name:"EulerGamma",domain:"RealNumber",algebraic:void 0,wikidata:"Q273023",constant:!0,value:{num:"0.57721566490153286060651209008240243104215933593992359880576723488486772677766\n 467093694706329174674951463144724980708248096050401448654283622417399764492353\n 625350033374293733773767394279259525824709491600873520394816567085323315177661\n 152862119950150798479374508570574002992135478614669402960432542151905877553526\n 733139925401296742051375413954911168510280798423487758720503843109399736137255\n 306088933126760017247953783675927135157722610273492913940798430103417771778088\n 154957066107501016191663340152278935867965497252036212879226555953669628176388\n 792726801324310104765059637039473949576389065729679296010090151251959509222435\n 014093498712282479497471956469763185066761290638110518241974448678363808617494\n 551698927923018773910729457815543160050021828440960537724342032854783670151773\n 943987003023703395183286900015581939880427074115422278197165230110735658339673"}}]},{functions:[{name:"PreIncrement",domain:["Function","Number","Number"]},{name:"PreDecrement",domain:["Function","Number","Number"]}]}];function zt(e,t,i){if("simplify"!==i||t.isLiteral){if(null!==t.machineValue)return e.number(Math.abs(t.machineValue));if(t.decimalValue)return e.number(t.decimalValue.abs());if(t.complexValue)return e.number(t.complexValue.abs());const[n,r]=t.rationalValue;if(null===n||null===r)return;return e.number("N"===i?Math.abs(n/r):[Math.abs(n),r])}if(!t.isMissing)return t.isNonNegative?t:t.isNegative?e.negate(t):void 0}function $t(e,t,i){if(t.isOne)return e.ONE;if(t.isZero)return e.ZERO;if("N"===i)return t.complexValue?e.number(t.complexValue.sqrt()):t.isNonNegative?t.decimalValue?e.number(t.decimalValue.sqrt()):null!==t.asFloat?e.number(Math.sqrt(t.asFloat)):void 0:Be(e)?e.number(e.complex(t.asFloat).sqrt()):e.NAN;if(null!==t.asSmallInteger){const[i,n]=Ee(t.asSmallInteger,2);if(1===n)return e.number(i);if(1!==i)return this._fn("Multiply",[i,e._fn("Sqrt",[e.box(n).canonical])])}}const Zt=[{symbols:[{name:"Missing",domain:"Anything"},{name:"Nothing",domain:"Nothing"}]},{functions:[{name:"KeyValuePair",domain:["Function","String","Anything",["Tuple","String","Anything"]],description:"A key/value pair",complexity:8200,canonical:(e,t)=>e.tuple(t)},{name:"Single",domain:["Function","Anything",["Tuple","Anything"]],description:"A tuple with a single element",complexity:8200,canonical:(e,t)=>e.tuple(t)},{name:"Pair",domain:["Function","Anything","Anything",["Tuple","Anything","Anything"]],description:"A tuple of two elements",complexity:8200,canonical:(e,t)=>e.tuple(t)},{name:"Triple",domain:["Function","Anything","Anything","Anything",["Tuple","Anything","Anything","Anything"]],description:"A tuple of three elements",complexity:8200,canonical:(e,t)=>e.tuple(t)},{name:"Tuple",domain:["Function",["Some","Anything"],["Tuple",["Some","Anything"]]],description:"A fixed number of heterogeneous elements",complexity:8200}]},{functions:[{name:"BaseForm",domain:["Function","Anything",["Optional","Integer"],"String"],description:"`BaseForm(expr, base=10)`",complexity:9e3,inert:!0},{name:"Delimiter",domain:(e,t)=>{if(!t[0])return"Nothing";const i=t[0].domain.domainExpression;return["Function",i,["Optional","String"],i]},complexity:9e3,inert:!0,canonical:(e,t)=>!t[0]||t[0].isMissing?e.symbol("Nothing"):t[0]},{name:"Error",domain:(e,t)=>{if(!t[0])return"Nothing";const i=t[0].domain.domainExpression;return["Function",i,["Optional","String"],["Optional","Expression"],i]},complexity:500,inert:!0,hold:"all",evaluate:(e,t)=>t[0].evaluate()},{name:"Style",domain:(e,t)=>{if(!t[0])return"Nothing";const i=t[0].domain.domainExpression;return["Function",i,["Optional",["Head","Dictionary"]],i]},complexity:9e3,inert:!0}]},{functions:[{name:"Apply",domain:"Function"},{name:"About",domain:"Function"},{name:"Block",domain:"Function"},{name:"Domain",domain:"Function"},{name:"Evaluate",domain:"Function",hold:"all",evaluate:(e,t)=>t[0].evaluate()},{name:"FromDigits",description:"`FromDigits(s, base=10)` return an integer representation of the string `s` in base `base`.",evaluate:(e,t)=>{const i=t[0];if(i.isMissing)return;if(!i.string)return e.error(e._fn("FromDigits",t),"Expected first argument as a string",["LatexForm",i.latex]);const n=t[1];if(n.isMissing&&e.number(Number.parseInt(i.string,10)),null===n.machineValue)return["Error",e._fn("FromDigits",t),{str:"Expected `base` as an integer between 2 and 36"},["LatexForm",n.latex]];const r=n.machineValue;if(r<2||r>36)return["Error",e._fn("FromDigits",t),{str:"Expected `base` as an integer between 2 and 36"},["LatexForm",n.latex]];const[s,a]=qe(i.string,r);return a?["Error",s,{str:"unexpected-digits"},["LatexForm",a]]:e.number(s)}},{name:"Head",domain:"Function",evaluate:(e,t)=>{const i=t[0];return"string"==typeof i.head?e.symbol(i.head):i.head}},{name:"Html",domain:["Function","Expression","String"],evaluate:(e,t)=>(t.length,e.string(""))},{name:"IntegerString",domain:["Function","Integer",["Optional","Integer"],"String"],description:"`IntegerString(n, base=10)` return a string representation of the integer `n` in base `base`.",evaluate:(e,t)=>{const i=t[0];if(i.isMissing)return;const n=i.machineValue??i.decimalValue?.toNumber()??NaN;if(Number.isNaN(n)||!Number.isInteger(n))return void e.signal(e._fn("IntegerString",t),`Expected first argument as an integer. Got \\(${i.latex}$\\)`);const r=t[1];if(r.isMissing)return i.machineValue?e.string(Math.abs(i.machineValue).toString()):i.decimalValue?e.string(i.decimalValue.abs().toString()):e.string(Math.abs(Math.round(i.asFloat??NaN)).toString());if(null===r.asSmallInteger)return void e.signal(e._fn("IntegerString",t),`Expected \`base\` as an integer between 2 and 36. Got \\(${r.latex}$\\)`);const s=r.asSmallInteger;if(!(s<2||s>36))return e.string(Math.abs(n).toString(s));e.signal(e._fn("IntegerString",t),"Expected `base` as an integer between 2 and 36. Got "+s)}},{name:"Lambda",domain:"Function",wikidata:"Q567612",hold:"all"},{name:"Latex",domain:"Function",evaluate:(e,t)=>0===t.length?e._fn("LatexString",[]):e._fn("LatexString",[e.string(d(t.map((e=>e.latex))))])},{name:"LatexString",domain:"Function",evaluate:(e,t)=>0===t.length?e._fn("LatexString",[]):e._fn("LatexString",[e.string(d(t.map((t=>e.serialize(t)))))])},{name:"LatexTokens",domain:"Function",evaluate:(e,t)=>0===t.length?e._fn("LatexString",[]):e._fn("LatexString",[e.string(d(t.map((t=>e.serialize(t)))))])},{name:"Parse",domain:"Function",evaluate:(e,t)=>{if(0===t.length)return e.symbol("Nothing");const i=d(t.map((t=>e.serialize(t))));return e.parse(i)}},{name:"String",domain:["Function",["Some","Anything"],"String"],threadable:!0,evaluate:(e,t)=>0===t.length?e.string(""):e.string(t.map((e=>e.string??`\\(${e.latex}$\\)`)).join(""))},{name:"Symbol",complexity:500,description:"Construct a new symbol with a name formed by concatenating the arguments",domain:["Function",["Some","Anything"],"Symbol"],threadable:!0,evaluate:(e,t)=>{if(0===t.length)return e.symbol("Nothing");const i=t.map((e=>{const t=e.symbol;if(null!==t)return t;const n=i.string;if(null!==n)return n;const r=i.smallIntegerValue;return null!==r?r.toString():""})).join("");return i.length>0?e.symbol(i):e.symbol("Nothing")}},{name:"SymbolName",domain:["Function","Anything","String"],evaluate:(e,t)=>t[0].symbol?e.string(t[0].symbol):e.symbol("Nothing")},{name:"Tail",domain:["Function","Expression",["List","Expression]"]],evaluate:(e,t)=>e._fn("List",t[0].ops??[])},{name:"Timing",description:"`Timing(expr)` evaluates `expr` and return a `Pair` of the number of second elapsed for the evaluation, and the value of the evaluation",domain:["Function","Expression",["Tuple","Expression","Number"]],evaluate:(e,t)=>{if(!t[1]||t[1].isMissing){const i=globalThis.performance.now(),n=t[0].evaluate(),r=1e3*(globalThis.performance.now()-i);return e.pair(e.number(r),n)}let i,n=Math.max(3,Math.round(t[1].asSmallInteger??3)),r=[];for(;n>0;){const e=globalThis.performance.now();i=t[0].evaluate(),r.push(1e3*(globalThis.performance.now()-e)),n-=1}const s=Math.max(...r),a=Math.min(...r);r=r.filter((e=>e>a&&e<s));const o=r.reduce(((e,t)=>e+t),0);return 0===o?e.pair(e.number(s),i):e.pair(e.number(o/r.length),i)}}]}],jt={symbols:[{name:"True",wikidata:"Q16751793",domain:"Boolean",constant:!0},{name:"False",wikidata:"Q5432619",domain:"Boolean",constant:!0},{name:"Maybe",wikidata:"Q781546",domain:"MaybeBoolean",constant:!0}],functions:[{name:"And",wikidata:"Q191081",domain:"LogicOperator",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,simplify:Gt,evaluate:Gt},{name:"Or",wikidata:"Q1651704",domain:"LogicOperator",threadable:!0,associative:!0,commutative:!0,idempotent:!0,complexity:1e4,simplify:Ht,evaluate:Ht},{name:"Not",wikidata:"Q190558",domain:"LogicOperator",involution:!0,complexity:10100,simplify:Wt,evaluate:Wt},{name:"Equivalent",wikidata:"Q220433",domain:"LogicOperator",complexity:10200,simplify:Bt,evaluate:Bt},{name:"Implies",wikidata:"Q7881229",domain:"LogicOperator",complexity:10200,simplify:Qt,evaluate:Qt},{name:"Exists",domain:"MaybeBoolean"}]};function Gt(e,t){if(0===t.length)return e.symbol("True");const i=[];for(const n of t){if("False"===n.symbol)return e.symbol("False");if("True"!==n.symbol){let t=!1;for(const r of i)if(r.isSame(n))t=!0;else if("Not"===n.head&&n.op1.isSame(r)||"Not"===r.head&&r.op1.isSame(n))return e.symbol("False");t||i.push(n)}}return 0===i.length?e.symbol("True"):1===i.length?i[0]:e._fn("And",i)}function Ht(e,t){if(0===t.length)return e.symbol("True");const i=[];for(const n of t){if("True"===n.symbol)return e.symbol("True");if("False"!==n.symbol){let t=!1;for(const r of i)if(r.isSame(n))t=!0;else if("Not"===n.head&&n.op1.isSame(r)||"Not"===r.head&&r.op1.isSame(n))return e.symbol("True");t||i.push(n)}}return 0===i.length?e.symbol("True"):1===i.length?i[0]:e._fn("Or",i)}function Wt(e,t){const i=t[0].symbol;return"True"===i?e.symbol("False"):"False"===i?e.symbol("True"):"Maybe"===i?e.symbol("Maybe"):void 0}function Bt(e,t){const i=t[0].symbol,n=t[1].symbol;return"True"===i&&"True"===n||"False"===i&&"False"===n?e.symbol("True"):"True"===i&&"False"===n||"False"===i&&"True"===n?e.symbol("False"):"Maybe"===i||"Maybe"===n?e.symbol("Maybe"):void 0}function Qt(e,t){const i=t[0].symbol,n=t[1].symbol;return"True"===i&&"True"===n||"False"===i&&"False"===n||"False"===i&&"True"===n?e.symbol("True"):"True"===i&&"False"===n?e.symbol("False"):"Maybe"===i||"Maybe"===n?e.symbol("Maybe"):void 0}const Ut=[{symbols:[{name:"Degrees",domain:"RealNumber",constant:!0,value:["Divide","Pi",180]},{name:"Pi",domain:"TranscendentalNumber",algebraic:!1,constant:!0,hold:!0,wikidata:"Q167",value:e=>We(e)?e.DECIMAL_PI:Math.PI}],functions:[{name:"Hypot",evaluate:["Sqrt",["Square","_1"],["Square","_2"]],domain:["Function","Number","Number","Number"]},{name:"Sin",domain:["Function","Number","Number"],complexity:5e3,simplify:(e,t)=>ii(e,"Sin",t[0])??(Be(e)?e.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",t[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",t[0]]]]],["Complex",0,2]]).canonical:void 0),evaluate:(e,t)=>ii(e,"Sin",t[0])??(Be(e)?e.box(["Divide",["Subtract",["Exp",["Multiply","ImaginaryUnit",t[0]]],["Exp",["Multiply","ImaginaryUnit",["Negate",t[0]]]]],["Complex",0,2]]).canonical:void 0),N:(e,t)=>t[0].decimalValue?e.number(e.chop(t[0].decimalValue.sin())):t[0].complexValue?e.number(t[0].complexValue.sin()):null!==t[0].asFloat?e.number(Math.sin(t[0].asFloat)):void 0}]},{functions:[{name:"Arctan",wikidata:"Q2257242",domain:["Function","Number","ExtendedRealNumber"],complexity:5200,simplify:(e,t)=>ii(e,"Arctan",t[0]),N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.atan()):t[0].complexValue?e.number(t[0].complexValue.atan()):null!==t[0].asFloat?e.number(Math.atan(t[0].asFloat)):void 0},{name:"Arctan2",wikidata:"Q776598",domain:["Function","Number","Number","Number"],complexity:5200,N:(e,t)=>t[0].decimalValue&&t[1].decimalValue?e.number(l.exports.Decimal.atan2(t[0].decimalValue,t[1].decimalValue)):null!==t[0].asFloat&&null!==t[1].asFloat?e.number(Math.atan2(t[0].asFloat,t[1].asFloat)):void 0},{name:"Cos",domain:["Function","Number","Number"],complexity:5050,simplify:(e,t)=>ii(e,"Cos",t[0])??e.box(["Sin",["Add",t[0],["Multiply","Half","Pi"]]]).canonical,evaluate:["Sin",["Add","_1",["Multiply","Half","Pi"]]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.cos()):t[0].complexValue?e.number(t[0].complexValue.cos()):null!==t[0].asFloat?e.number(Math.cos(t[0].asFloat)):void 0},{name:"Tan",domain:["Function","Number","Number"],complexity:5100,simplify:(e,t)=>ii(e,"Tan",t[0])??e.box(["Divide",["Sin",t[0]],["Cos",t[0]]]).canonical,evaluate:["Divide",["Sin","_1"],["Cos","_1"]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.tan()):t[0].complexValue?e.number(t[0].complexValue.tan()):null!==t[0].asFloat?e.number(Math.tan(t[0].asFloat)):void 0}]},{functions:[{name:"Arcosh",domain:["Function","Number","Number"],complexity:6200,simplify:(e,t)=>ii(e,"Arcoshh",t[0])??e.box(["Ln",["Add",t[0],["Sqrt",["Subtract",["Square",t[0]],1]]]]).canonical,evaluate:["Ln",["Add","_1",["Sqrt",["Subtract",["Square","_1"],1]]]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.acosh()):t[0].complexValue?e.number(t[0].complexValue.acosh()):null!==t[0].asFloat?e.number(Math.acosh(t[0].asFloat)):void 0},{name:"Arcsin",domain:["Function","Number","Number"],complexity:5500,simplify:(e,t)=>ii(e,"Arcsin",t[0])??e.box(["Multiply",2,["Arctan2",t[0],["Add",1,["Sqrt",["Subtract",1,["Square",t[0]]]]]]]).canonical,evaluate:["Multiply",2,["Arctan2","_1",["Add",1,["Sqrt",["Subtract",1,["Square","_1"]]]]]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.asin()):t[0].complexValue?e.number(t[0].complexValue.asin()):null!==t[0].asFloat?e.number(Math.asin(t[0].asFloat)):void 0},{name:"Arsinh",domain:["Function","Number","Number"],complexity:6100,simplify:(e,t)=>ii(e,"Arsinh",t[0])??e.box(["Ln",["Add",t[0],["Sqrt",["Add",["Square",t[0]],1]]]]).canonical,evaluate:["Ln",["Add","_1",["Sqrt",["Add",["Square","_1"],1]]]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.asinh()):t[0].complexValue?e.number(t[0].complexValue.asinh()):null!==t[0].asFloat?e.number(Math.asinh(t[0].asFloat)):void 0},{name:"Artanh",domain:["Function","Number","Number"],complexity:6300,simplify:(e,t)=>ii(e,"Artanh",t[0])??e.box(["Multiply","Half",["Ln",["Divide",["Add",1,t[0]],["Subtract",1,t[0]]]]]).canonical,evaluate:["Multiply","Half",["Ln",["Divide",["Add",1,"_1"],["Subtract",1,"_1"]]]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.atanh()):t[0].complexValue?e.number(t[0].complexValue.atanh()):null!==t[0].asFloat?e.number(Math.atanh(t[0].asFloat)):void 0},{name:"Cosh",domain:["Function","Number","Number"],complexity:6050,simplify:(e,t)=>ii(e,"Cosh",t[0]),evaluate:["Multiply","Half",["Add",["Exp","_1"],["Exp",["Negate","_1"]]]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.cosh()):t[0].complexValue?e.number(t[0].complexValue.cosh()):null!==t[0].asFloat?e.number(Math.cosh(t[0].asFloat)):void 0},{name:"Cot",domain:["Function","Number","Number"],complexity:5600,simplify:(e,t)=>ii(e,"Cot",t[0])??e.box(["Divide",["Cos",t[0]],["Sin",t[0]]]).canonical,evaluate:["Divide",["Cos","_1"],["Sin","_1"]],N:(e,t)=>t[0].decimalValue?e.number(e.DECIMAL_ONE.div(t[0].decimalValue.tan())):t[0].complexValue?e.number(t[0].complexValue.tan().inverse()):null!==t[0].asFloat?e.number(1/Math.tan(t[0].asFloat)):void 0},{name:"Csc",description:"Cosecant",domain:["Function","Number","Number"],complexity:5600,simplify:(e,t)=>ii(e,"Csc",t[0])??e.box(["Divide",1,["Sin",t[0]]]).canonical,evaluate:["Divide",1,["Sin","_1"]],N:(e,t)=>t[0].decimalValue?e.number(e.DECIMAL_ONE.div(t[0].decimalValue.sin())):t[0].complexValue?e.number(t[0].complexValue.sin().inverse()):null!==t[0].asFloat?e.number(1/Math.sin(t[0].asFloat)):void 0},{name:"Haversine",wikidata:"Q2528380",domain:["Function","ExtendedRealNumber","RealNumber"],evaluate:["Divide",["Subtract",1,["Cos","_1"]],2]},{name:"InverseHaversine",domain:["Function","ExtendedRealNumber","RealNumber"],evaluate:["Multiply",2,["Arcsin",["Sqrt","_1"]]]},{name:"Sec",description:"Secant, inverse of cosine",domain:["Function","Number","Number"],complexity:5500,simplify:(e,t)=>ii(e,"Sec",t[0])??e.box(["Divide",1,["Cos",t[0]]]).canonical,evaluate:["Divide",1,["Cos","_1"]],N:(e,t)=>t[0].decimalValue?e.number(e.DECIMAL_ONE.div(t[0].decimalValue.cos())):t[0].complexValue?e.number(t[0].complexValue.cos().inverse()):null!==t[0].asFloat?e.number(1/Math.cos(t[0].asFloat)):void 0},{name:"Sinh",domain:["Function","Number","Number"],complexity:6e3,simplify:(e,t)=>ii(e,"Sinh",t[0])??e.box(["Multiply","Half",["Subtract",["Exp",t[0]],["Exp",["Negate",t[0]]]]]).canonical,evaluate:["Multiply","Half",["Subtract",["Exp","_1"],["Exp",["Negate","_1"]]]]}]},{functions:[{name:"Csch",domain:["Function","Number","ExtendedRealNumber"],complexity:6200,simplify:(e,t)=>ii(e,"Csch",t[0])??e.box(["Divide",1,["Sinh",t[0]]]).canonical,evaluate:["Divide",1,["Sinh","_1"]],N:(e,t)=>t[0].decimalValue?e.number(e.DECIMAL_ONE.div(t[0].decimalValue.sinh())):t[0].complexValue?e.number(t[0].complexValue.sinh().inverse()):null!==t[0].asFloat?e.number(1/Math.sinh(t[0].asFloat)):void 0},{name:"Sech",domain:["Function","Number","Number"],complexity:6200,simplify:(e,t)=>ii(e,"Sech",t[0])??e.box(["Divide",1,["Cosh",t[0]]]).canonical,evaluate:["Divide",1,["Cosh","_1"]],N:(e,t)=>t[0].decimalValue?e.number(e.DECIMAL_ONE.div(t[0].decimalValue.cosh())):t[0].complexValue?e.number(t[0].complexValue.cosh().inverse()):null!==t[0].asFloat?e.number(1/Math.cosh(t[0].asFloat)):void 0},{name:"Tanh",domain:["Function","Number","Number"],complexity:6200,simplify:(e,t)=>ii(e,"Tanh",t[0])??e.box(["Divide",["Sinh",t[0]],["Cosh",t[0]]]).canonical,evaluate:["Divide",["Sinh","_1"],["Cosh","_1"]],N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.tanh()):t[0].complexValue?e.number(t[0].complexValue.tanh()):null!==t[0].asFloat?e.number(Math.tanh(t[0].asFloat)):void 0}]},{functions:[{name:"Arccos",domain:["Function","Number","ExtendedRealNumber"],complexity:5550,evaluate:["Subtract",["Divide","Pi",2],["Arcsin","_1"]],simplify:(e,t)=>ii(e,"Arccos",t[0])??e.box(["Subtract",["Divide","Pi",2],["Arcsin",t[0]]]).canonical,N:(e,t)=>t[0].decimalValue?e.number(t[0].decimalValue.acos()):t[0].complexValue?e.number(t[0].complexValue.acos()):null!==t[0].asFloat?e.number(Math.acos(t[0].asFloat)):void 0},{name:"Coth",domain:["Function","Number","Number"],complexity:6300,simplify:(e,t)=>ii(e,"Coth",t[0])??e.box(["Divide",1,["Tanh",t[0]]]).canonical,evaluate:["Divide",1,["Tanh","_1"]],N:(e,t)=>t[0].decimalValue?e.number(e.DECIMAL_ONE.div(t[0].decimalValue.tanh())):t[0].complexValue?e.number(t[0].complexValue.tanh().inverse()):null!==t[0].asFloat?e.number(1/Math.tanh(t[0].asFloat)):void 0},{name:"InverseFunction",domain:"Function",simplify:(e,t)=>ni(e,t[0]),evaluate:(e,t)=>ni(e,t[0])}]}],Kt=["Sqrt",2],Yt=["Sqrt",3],Jt=["Sqrt",5],Xt=["Sqrt",6],ei=[[[0,1],{Sin:0,Cos:1,Tan:0,Cot:NaN,Sec:1,Csc:NaN}],[[1,12],{Sin:["Divide",["Subtract",Xt,Kt],4],Cos:["Divide",["Add",Xt,Kt],4],Tan:["Subtract",2,Yt],Cot:["Add",2,Yt],Sec:["Subtract",Xt,Kt],Csc:["Add",Xt,Kt]}],[[1,10],{Sin:["Divide",["Subtract",Jt,1],4],Cos:["Divide",["Sqrt",["Add",10,["Multiply",2,Jt]]],4],Tan:["Divide",["Sqrt",["Subtract",25,["Multiply",10,Jt]]],4],Cot:["Sqrt",["Add",5,["Multiply",2,Jt]]],Sec:["Divide",["Sqrt",["Subtract",50,["Multiply",10,Jt]]],5],Csc:["Add",1,Jt]}],[[1,8],{Sin:"$\\frac\\sqrt{2-\\sqrt2}{2}$",Cos:"$\\frac {\\sqrt {2+{\\sqrt {2}}}}{2}$",Tan:"$\\sqrt{2} - 1$",Cot:"$\\sqrt{2} + 1$",Sec:"$\\sqrt{ 4 - 2\\sqrt{2}$",Csc:"$\\sqrt{ 4 + 2\\sqrt{2}$"}],[[1,6],{Sin:"$\\frac{1}{2}$",Cos:"$\\frac{\\sqrt{3}}{2}$",Tan:"$\\frac{\\sqrt{3}}{3}$",Cot:"$\\frac{2\\sqrt{3}}{3}$",Sec:"$\\sqrt{3}$",Csc:2}],[[1,5],{Sin:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Cos:"$\\frac{1+ \\sqrt{5}} {4}$",Tan:"$\\sqrt{5-2\\sqrt5}$",Cot:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Sec:"$\\sqrt{5} - 1$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,4],{Sin:["Divide",Kt,2],Cos:["Divide",Kt,2],Tan:1,Cot:1,Sec:Kt,Csc:Kt}],[[3,10],{Sin:"$\\frac{1+ \\sqrt{5}} {4}$",Cos:"$\\frac{\\sqrt{10- 2\\sqrt{5}}} {4}$",Tan:"$\\frac{\\sqrt{25+10\\sqrt5}} {5}$",Cot:"$\\sqrt{5-2\\sqrt5}$",Sec:"$$",Csc:"$\\frac{\\sqrt{50+10\\sqrt{5}}} {5}$"}],[[1,3],{Sin:["Divide",Yt,2],Cos:"Half",Tan:Yt,Cot:["Divide",Yt,3],Sec:2,Csc:["Divide",["Multiply",2,Yt],3]}],[[3,8],{Sin:"$\\frac{ \\sqrt{2 + \\sqrt{2}} } {2}$",Cos:"$\\frac{ \\sqrt{2 - \\sqrt{2}} } {2}$",Tan:"$\\sqrt{2} + 1$",Cot:"$\\sqrt{2} - 1$",Sec:"$\\sqrt{ 4 + 2 \\sqrt{2} }$",Csc:"$\\sqrt{ 4 - 2 \\sqrt{2} }$"}],[[2,5],{Sin:"$\\frac{\\sqrt{10+ 2\\sqrt{5}}} {4}$",Cos:"$\\frac{\\sqrt{5}-1} {4}$",Tan:"$\\sqrt{5+2\\sqrt{5}}$",Cot:"$\\frac{\\sqrt{25-10\\sqrt{5}}} {5}$",Sec:"$1 + \\sqrt{5}$",Csc:"$\\frac{\\sqrt{50-10\\sqrt{5}}} {5}$"}],[[5,12],{Sin:"$\\frac{\\sqrt{6} + \\sqrt{2}} {4}$",Cos:"$\\frac{ \\sqrt{6} - \\sqrt{2}} {4}$",Tan:"$2+\\sqrt{3}$",Cot:"$2-\\sqrt{3}$",Sec:"$\\sqrt{6}+\\sqrt{2}$",Csc:"$\\sqrt{6} - \\sqrt{2}$"}],[[1,2],{Sin:1,Cos:0,Tan:NaN,Cot:0,Sec:NaN,Csc:1}]],ti={Sin:[[1,"Sin"],[1,"Cos"],[-1,"Sin"],[-1,"Cos"]],Cos:[[1,"Cos"],[-1,"Sin"],[-1,"Cos"],[1,"Sin"]],Sec:[[1,"Sec"],[-1,"Csc"],[-1,"Sec"],[1,"Csc"]],Csc:[[1,"Csc"],[1,"Sec"],[-1,"Csc"],[-1,"Sec"]],Tan:[[1,"Tan"],[-1,"Cot"],[1,"Tan"],[-1,"Cot"]],Cot:[[1,"Cot"],[-1,"Tan"],[1,"Cot"],[-1,"Tan"]]};function ii(e,t,i){if(!i||i.isMissing)return;const n=e.cache("constructible-trigonometric-values",(()=>{const t=[];for(const[i,n]of ei){const r={};for(const t of Object.keys(n))r[t]=(e.parse(je(n[t]))??e.box(n[t])).canonical;t.push([i,r])}return t}),(e=>{for(const[t,i]of e)for(const e of Object.values(i))e._purge();return e}));if(!(i=i.numericValue??i).isLiteral)return;let r=i.asFloat;if(null===r)return;r%=2*Math.PI;const s="Cos"!==t&&"Sec"!==t?Math.sign(r):1;r=Math.abs(r);const a=Math.floor(2*r/Math.PI);let o;r%=Math.PI/2,[o,t]=ti[t][a],o*=s;for(const[[i,s],a]of n)if(0===e.chop(r-Math.PI*i/s))return o<0?It(a[t]):a[t]}function ni(e,t){const i=t.op1.head;if("string"!=typeof i)return t;const n={Sin:"Arcsin",Cos:"Arccos",Tan:"Arctan",Sec:"Arcsec",Csc:" Arccsc",Sinh:"Arsinh",Cosh:"Arcosh",Tanh:"Artanh",Sech:"Arcsech",Csch:"Arcsch",Arcosh:"Cosh",Arcos:"Cos",Arccsc:"Csc",Arcsch:"Csch",Arcsec:"Sec",Arcsin:"Sin",Arsinh:"Sinh",Arctan:"Tan",Artanh:"Tanh"}[i];return n?e._fn(n,[t.op1.op1]):t}function ri(e){return Object.fromEntries(Object.entries(e).filter((([e,t])=>void 0!==t)))}function si(e){const t={...e};return e.zero||e.one||e.negativeOne?(t.number=!0,t.integer=!0,t.rational=!0,t.algebraic=!0,t.real=!0,t.extendedReal=!0,t.complex=!0,t.extendedComplex=!0,t.imaginary=!1,t.positive=!1,t.nonPositive=!0,t.negative=!1,t.nonNegative=!0,t.zero=e.zero,t.notZero=!e.zero,t.one=e.one,t.negativeOne=e.negativeOne,t.negativeOne=!1,t.infinity=!1,t.NaN=!1,t.finite=!0,t.even=e.one,t.odd=!e.one,t.prime=!1,t.composite=!1,t):(!0===t.notZero&&(t.imaginary||(t.real=!0),t.zero=!1),(t.positive||t.nonNegative)&&(t.negativeOne=!1),t.positive?(t.nonPositive=!1,t.negative=!1,t.nonNegative=!0):t.nonPositive?(t.positive=!1,t.negative=t.notZero,t.nonNegative=!t.zero):t.negative?(t.positive=!1,t.nonPositive=t.notZero,t.nonNegative=!1):t.nonNegative&&(t.positive=t.notZero,t.nonPositive=!t.zero,t.negative=!1),(t.positive||t.negative||t.nonPositive||t.nonNegative)&&(t.number=!0,t.finite?t.real=!0:t.finite||(t.complex=!0),t.imaginary=!1),t.infinity&&(t.finite=!1,t.NaN=!1),t.finite&&(t.number=!0,t.complex=!0,t.infinity=!1,t.NaN=!1),e.even&&(t.odd=!1),e.odd&&(t.even=!1),t.integer&&(t.rational=!0),t.rational&&(t.algebraic=!0),t.algebraic&&(t.real=!0),t.extendedReal&&(t.real=!0),t.real&&(t.complex=!0),t.imaginary&&(t.complex=!0),t.extendedComplex&&(t.complex=!0),t.complex&&(t.number=!0),t.real&&t.infinity&&(t.extendedReal=!0),t.complex&&t.infinity&&(t.extendedComplex=!0),(t.even||t.infinity||t.NaN||t.negative||t.imaginary||!1===t.integer)&&(t.prime=!1),t.number&&t.prime&&(t.composite=!1),t)}function ai(e){if(!e)return{};const t=e.domainExpression,i={};return e.isSubdomainOf("Number")?(i.number=!0,"Integer"===t&&(i.integer=!0),"RationalNumber"===t&&(i.rational=!0),"AlgebraicNumber"===t&&(i.algebraic=!0),"TranscendentalNumber"===t&&(i.algebraic=!1,i.real=!0),"ExtendedRealNumber"===t&&(i.extendedReal=!0),"RealNumber"===t&&(i.real=!0),"ImaginaryNumber"===t&&(i.imaginary=!0),"ExtendedComplexNumber"===t&&(i.extendedComplex=!0),"ComplexNumber"===t&&(i.complex=!0)):(i.number=!1,i.integer=!1,i.rational=!1,i.algebraic=!1,i.real=!1,i.extendedReal=!1,i.complex=!1,i.extendedComplex=!1,i.imaginary=!1,i.positive=!1,i.nonPositive=!1,i.negative=!1,i.nonNegative=!1,i.zero=!1,i.notZero=!1,i.one=!1,i.negativeOne=!1,i.infinity=!1,i.NaN=!1,i.odd=!1,i.even=!1,i.prime=!1,i.composite=!1),ri(si(i))}function oi(e){return ri({number:(e=e.canonical).isNumber,integer:e.isInteger,rational:e.isRational,algebraic:e.isAlgebraic,real:e.isReal,extendedReal:e.isExtendedReal,complex:e.isComplex,extendedComplex:e.isExtendedComplex,imaginary:e.isImaginary,positive:e.isPositive,nonPositive:e.isNonPositive,negative:e.isNegative,nonNegative:e.isNonNegative,zero:e.isZero,notZero:e.isNotZero,one:e.isOne,negativeOne:e.isNegativeOne,infinity:e.isInfinity,NaN:e.isNaN,finite:e.isFinite,even:e.isEven,odd:e.isOdd,prime:e.isPrime,composite:e.isComposite})}class li{constructor(e,t){this._engine=e,this._def=t,this.scope=e.context,this.name=t.name,this.constant=t.constant??!1,this.hold=t.hold??!0,this._purge()}_purge(){this._value=this._value?._purge();const e=this._def,t=this._engine,i=ri({description:e.description,wikidata:e.wikidata,number:e.number,integer:e.integer,rational:e.rational,algebraic:e.algebraic,real:e.real,extendedReal:e.extendedReal,complex:e.complex,zero:e.zero,notZero:e.notZero,one:e.one,negativeOne:e.negativeOne,infinity:e.infinity,NaN:e.NaN,finite:e.finite,even:e.even,odd:e.odd,prime:e.prime,composite:e.composite});if("value"in e&&"number"==typeof e.value){const n=t.number(e.value);let r;const s=e.domain?t.domain(e.domain):void 0;return r=s&&n.valueDomain.isSubdomainOf(s)?s:n.valueDomain,this._value=n,this._domain=r,this.setProps(oi(n)),this.setProps(ai(r)),void this.setProps(i)}let n,r;if(Ze(e.value)?n=t.parse(e.value):"function"==typeof e.value?n=t.box(e.value(t)??"Undefined"):e.value&&(n=t.box(e.value)),!n&&!1===e.hold)throw Error(`Symbol definition "${e.name}": Expected a value "hold=false" `);n=n?.canonical;const s=e.domain?t.domain(e.domain):void 0;if(r=!s||n&&!n.valueDomain.isSubdomainOf(s)?n?.valueDomain??t.defaultDomain??t.domain("Anything"):s,!n)return this._value=void 0,this._domain=r,this.setProps(ai(r)),void this.setProps(i);this._value=n,this._domain=r,this.setProps(oi(n)),this.setProps(ai(r)),this.setProps(i)}get value(){return this._value}set value(e){if(this.constant)throw Error(`The value of the constant "${this.name}" cannot be changed`);"number"==typeof e&&(e=this._engine.box(e)),this._value=e,e&&this.setProps(oi(e))}get domain(){return this._domain}set domain(e){if(!e)return void(this._domain=void 0);e=this._engine.domain(e);const t=this.value?.valueDomain;t&&!t.isSubdomainOf(e)&&(e=t),this._domain=e,this.setProps(ai(e))}updateFlags(e){this.setProps(si(e))}setProps(e){e.wikidata&&(this.wikidata=e.wikidata),e.description&&(this.description=e.description),void 0!==e.number&&(this._number=e.number),void 0!==e.integer&&(this._integer=e.integer),void 0!==e.rational&&(this._rational=e.rational),void 0!==e.algebraic&&(this._algebraic=e.algebraic),void 0!==e.real&&(this._real=e.real),void 0!==e.extendedReal&&(this._extendedReal=e.extendedReal),void 0!==e.complex&&(this._complex=e.complex),void 0!==e.extendedComplex&&(this._extendedComplex=e.extendedComplex),void 0!==e.imaginary&&(this._imaginary=e.imaginary),void 0!==e.positive&&(this._positive=e.positive),void 0!==e.nonPositive&&(this._nonPositive=e.nonPositive),void 0!==e.negative&&(this._negative=e.negative),void 0!==e.nonNegative&&(this._nonNegative=e.nonNegative),void 0!==e.zero&&(this._zero=e.zero),void 0!==e.notZero&&(this._notZero=e.notZero),void 0!==e.one&&(this._one=e.one),void 0!==e.negativeOne&&(this._negativeOne=e.negativeOne),void 0!==e.infinity&&(this._infinity=e.infinity),void 0!==e.finite&&(this._finite=e.finite),void 0!==e.NaN&&(this._NaN=e.NaN),void 0!==e.even&&(this._even=e.even),void 0!==e.odd&&(this._odd=e.odd),void 0!==e.prime&&(this._prime=e.prime),void 0!==e.composite&&(this._composite=e.composite)}get number(){return this._number}set number(e){this.updateFlags({number:e})}get integer(){return this._integer}set integer(e){this.updateFlags({integer:e})}get rational(){return this._rational}set rational(e){this.updateFlags({rational:e})}get algebraic(){return this._algebraic}set algebraic(e){this.updateFlags({algebraic:e})}get real(){return this._real}set real(e){this.updateFlags({real:e})}get extendedReal(){return this._extendedReal}set extendedReal(e){this.updateFlags({extendedReal:e})}get complex(){return this._complex}set complex(e){this.updateFlags({complex:e})}get extendedComplex(){return this._extendedComplex}set extendedComplex(e){this.updateFlags({extendedComplex:e})}get imaginary(){return this._imaginary}set imaginary(e){this.updateFlags({imaginary:e})}get positive(){return this._positive}set positive(e){this.updateFlags({positive:e})}get nonPositive(){return this._nonPositive}set nonPositive(e){this.updateFlags({nonPositive:e})}get negative(){return this._negative}set negative(e){this.updateFlags({negative:e})}get nonNegative(){return this._nonNegative}set nonNegative(e){this.updateFlags({nonNegative:e})}get zero(){return this._zero}set zero(e){this.updateFlags({zero:e})}get notZero(){return this._notZero}set notZero(e){this.updateFlags({notZero:e})}get one(){return this._one}set one(e){this.updateFlags({one:e})}get negativeOne(){return this._negativeOne}set negativeOne(e){this.updateFlags({negativeOne:e})}get infinity(){return this._infinity}set infinity(e){this.updateFlags({infinity:e})}get finite(){return this._finite}set finite(e){this.updateFlags({finite:e})}get NaN(){return this._NaN}set NaN(e){this.updateFlags({NaN:e})}get even(){return this._even}set even(e){this.updateFlags({even:e})}get odd(){return this._odd}set odd(e){this.updateFlags({odd:e})}get prime(){if(void 0===this._prime&&this._value?.isNumber)if(!this._value.isInteger||this._value.isNonPositive)this._prime=!1,this._composite=!1;else{const e=this._value.asFloat;null!==e?(this._prime=bt(e),this._composite=!this._prime):(this._prime=void 0,this._composite=void 0)}return this._prime}set prime(e){this.updateFlags({prime:e})}get composite(){if(void 0===this._composite){const e=this.prime;this._composite=void 0===e?void 0:!e}return this._composite}set composite(e){this.updateFlags({composite:e})}}class ui{constructor(e,t){const i=t.domain?"function"==typeof t.domain?t.domain:e.domain(t.domain):e.domain("Function"),n=t.hold??"none",r=t.idempotent??!1,s=t.involution??!1;if(r&&s)throw Error(`Function Definition "${t.name}": the 'idempotent' and 'involution' flags are mutually exclusive in function `);this.name=t.name,this.description=t.description,this.wikidata=t.wikidata,this.scope=e.context,this.threadable=t.threadable??!1,this.associative=t.associative??!1,this.commutative=t.commutative??!1,this.idempotent=r,this.involution=s,this.inert=t.inert??!1,this.pure=t.pure??!0,this.complexity=t.complexity??1e5,this.hold=n,this.sequenceHold=t.sequenceHold??!1,this.range=t.range,this.domain=i,this.canonical=t.canonical,this.simplify=t.simplify,this.evaluate=t.evaluate?"function"==typeof t.evaluate?t.evaluate:e.box(t.evaluate).canonical:void 0,this.N=t.N,this.evalDimension=t.evalDimension,this.sgn=t.sgn,this.compile=t.compile}_purge(){}}function ci(e,t){return new ui(e,t)}function hi(e,t){const i=e.engine;return"Negate"===e.head&&"Negate"===t.head?hi(e.op1,t.op1):"Negate"===e.head?It(hi(e.op1,t)):"Negate"===t.head?It(hi(e,t.op1)):"Add"===e.head?i.add(e.ops.map((e=>hi(e,t)))):"Add"===t.head?i.add(t.ops.map((t=>hi(e,t)))):i.mul([e,t])}function mi(e,t){if(1===t)return e;const i=hi(e,e);return 2===t?i:t%2==0?mi(i,t/2):hi(mi(i,Math.round(t/2)-1),e)}function fi(e="all"){if("all"===e)return fi(["domains","core","collections","algebra","arithmetic","calculus","combinatorics","dimensions","linear-algebra","logic","numeric","other","physics","polynomials","relop","statistics","trigonometry","units"]);const t=[];for(const i of e){const e=gi[i];e&&Array.isArray(e)?t.push(...e):e&&t.push(e)}return t}const gi={arithmetic:Rt,core:Zt,collections:[{symbols:[{name:"EmptySet",domain:"Set",constant:!0,wikidata:"Q226183"}],functions:[{name:"Element",domain:"Predicate",complexity:11200},{name:"NotElement",domain:"Predicate",complexity:11200,canonical:(e,t)=>e.fn("Not",[e.fn("Element",t)])},{name:"Subset",domain:"Predicate",complexity:11200},{name:"NotSubset",domain:"Predicate",complexity:11200,canonical:(e,t)=>e.fn("Not",[e.fn("Subset",t)])},{name:"Superset",domain:"Predicate",complexity:11200},{name:"SupersetEqual",domain:"Predicate",complexity:11200},{name:"NotSuperset",domain:"Predicate",complexity:11200,canonical:(e,t)=>e.fn("Not",[e.fn("Superset",t)])},{name:"NotSupersetEqual",domain:"Predicate",complexity:11200,canonical:(e,t)=>e.fn("Not",[e.fn("SupersetEqual",t)])},{name:"SubsetEqual",domain:"Predicate",complexity:11200},{name:"NotSubsetNotEqual",domain:"Predicate",complexity:11200,canonical:(e,t)=>e.fn("Not",[e.fn("SubsetEqual",t)])},{name:"CartesianProduct",domain:["Function",["Some","Set"],"Set"],wikidata:"Q173740"},{name:"Complement",domain:["Function","Set","Set"],wikidata:"Q242767"},{name:"Intersection",domain:["Function",["Some","Set"],"Set"],wikidata:"Q185837",threadable:!0,associative:!0,commutative:!0,involution:!0,evaluate:function(e,t){return e.symbol("EmptySet")}},{name:"Union",domain:["Function",["Some","Set"],"Set"],wikidata:"Q185359",threadable:!0,associative:!0,commutative:!0,involution:!0,evaluate:function(e,t){return e.symbol("False")}},{name:"Set",domain:["Function",["Some","Anything"],"Set"]},{name:"SetMinus",domain:["Function","Set","Expresison","Set"],wikidata:"Q18192442",evaluate:function(e,t){return e.symbol("EmptySet")}},{name:"SymmetricDifference",domain:["Function",["Some","Set"],"Set"],wikidata:"Q1147242"}]},{functions:[{name:"Sequence"}]}],logic:jt,relop:{functions:[{name:"Equal",domain:"RelationalOperator",commutative:!0,complexity:11e3,evaluate:(e,t)=>{if(t.length<2)return e.symbol("True");let i;for(const n of t)if(i){if(!1===i.isEqual(n))return e.symbol("False")}else i=n;return e.symbol("True")}},{name:"NotEqual",wikidata:"Q28113351",commutative:!0,complexity:11e3,domain:"RelationalOperator",evaluate:(e,t)=>{if(t.length<2)return e.symbol("False");let i;for(const n of t)if(i){if(!0===i.isEqual(n))return e.symbol("False")}else i=n;return e.symbol("True")}},{name:"Less",complexity:11e3,domain:"RelationalOperator",evaluate:(e,t)=>{if(t.length<2)return e.symbol("True");let i;for(const n of t){if(!n.isNumber)return;if(i){const t=e.fn("Subtract",[n,i]).N().sgn;if(null==t)return;if(t<=0)return e.symbol("False");i=n}else i=n}return e.symbol("True")}},{name:"NotLess",complexity:11e3,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("Less",t)])},{name:"Greater",complexity:11e3,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Less",t.reverse()),evaluate:(e,t)=>{if(t.length<2)return e.symbol("True");let i;for(const n of t){if(!n.isNumber)return;if(i){const t=e.fn("Subtract",[n,i]).N().sgn;if(null==t)return;if(t>=0)return e.symbol("False");i=n}else i=n}return e.symbol("True")}},{name:"NotGreater",complexity:11e3,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("Greater",t)])},{name:"LessEqual",complexity:11e3,domain:"RelationalOperator",evaluate:(e,t)=>{if(t.length<2)return e.symbol("True");let i;for(const n of t){if(!n.isNumber)return;if(i){const t=e.fn("Subtract",[n,i]).N().sgn;if(null==t)return;if(t<0)return e.symbol("False");i=n}else i=n}return e.symbol("True")}},{name:"NotLessNotEqual",complexity:11e3,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("LessEqual",t)])},{name:"GreaterEqual",complexity:11e3,domain:"RelationalOperator",canonical:(e,t)=>e._fn("LessEqual",t.reverse()),evaluate:(e,t)=>{if(t.length<2)return e.symbol("True");let i;for(const n of t){if(!n.isNumber)return;if(i){const t=e.fn("Subtract",[n,i]).N().sgn;if(null==t)return;if(t>0)return e.symbol("False");i=n}else i=n}return e.symbol("True")}},{name:"NotGreaterNotEqual",complexity:11e3,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("GreaterEqual",t)])},{name:"TildeFullEqual",description:"Indicate isomorphism, congruence and homotopic equivalence",domain:"RelationalOperator"},{name:"NotTildeFullEqual",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("TildeFullEqual",t)])},{name:"TildeEqual",description:"Approximately or asymptotically equal",domain:"RelationalOperator",complexity:11e3},{name:"NotTildeEqual",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("TildeEqual",t)])},{name:"Approx",complexity:11100,domain:"RelationalOperator"},{name:"NotApprox",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("Approx",t)])},{name:"ApproxEqual",complexity:11100,domain:"RelationalOperator"},{name:"NotApproxEqual",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("ApproxEqual",t)])},{name:"ApproxNotEqual",domain:"RelationalOperator",complexity:11100},{name:"NotApproxNotEqual",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("ApproxNotEqual",t)])},{name:"Precedes",complexity:11100,domain:"RelationalOperator"},{name:"NotPrecedes",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("Precedes",t)])},{name:"Succeeds",domain:"RelationalOperator"},{name:"NotSucceeds",complexity:11100,domain:"RelationalOperator",canonical:(e,t)=>e._fn("Not",[e._fn("Succeeds",t)])}]},polynomials:[{functions:[{name:"Expand",description:"Expand out products and positive integer powers",evaluate:(e,t)=>t[0]?function(e){if("Multiply"===(e=e.simplify()).head)return 2===e.nops?hi(e.op1,e.op2):e.ops.reduce(((e,t)=>hi(e,t)),e.engine.ONE);if("Power"===e.head){const t=e.op1.head;if("Multiply"===t)return e.engine.mul(e.op1.ops.map((t=>e.engine.power(t,e.op2))));if("Negate"===t){const t=e.op2.asSmallInteger;if(null!==t&&t>0)return t%2==0?e.engine.power(e.op1.op1,e.op2):e.engine.negate(e.engine.power(e.op1.op1,e.op2))}if("Add"===t){const t=e.op2.asSmallInteger;if(null!==t)return t>0?mi(e.op1,t):e.engine.inverse(mi(e.op1,-t))}}return e}(t[0]):e.symbol("Nothing")}]}],physics:{symbols:[{name:"Mu-0",description:"Vaccum permeability",constant:!0,wikidata:"Q1515261",domain:"RealNumber",value:125663706212e-17}]},trigonometry:Ut};function pi(e,t){if("object"!=typeof t||!("name"in t)||!t.name)throw Error("Missing name for definition "+JSON.stringify(t));if(!/[A-Za-z][A-Za-z0-9-]*/.test(t.name)&&1!==t.name.length)throw Error("Invalid definition name "+t.name)}function di(e,t){if(void 0===t)return;if(Array.isArray(t)){for(const i of t)di(e,i);return}e.context.dictionary||(e.context.dictionary={symbols:new Map,functions:new Map,symbolWikidata:new Map,functionWikidata:new Map});const i=e.context.dictionary;if(t.symbols)for(const n of t.symbols){pi(0,n);const t=new li(e,n);if(n.wikidata){if(i.symbolWikidata.has(n.wikidata))throw Error(`Duplicate symbol with wikidata ${n.wikidata}, ${n.name} and ${i.symbolWikidata.get(n.wikidata).name}`);i.symbolWikidata.set(n.wikidata,t)}if(i.symbols.has(n.name))throw Error(`Duplicate symbol definition ${n.name}:\n${JSON.stringify(i.symbols.get(n.name))}\n${JSON.stringify(n)}`);i.symbols.set(n.name,t)}if(t.functions)for(const n of t.functions){pi(0,n);const t=ci(e,n);if(i.functions.has(n.name)?i.functions.set(n.name,[...i.functions.get(n.name),t]):i.functions.set(n.name,[t]),n.wikidata){if(i.functionWikidata.has(n.wikidata))throw Error(`Duplicate function with wikidata ${n.wikidata}, ${n.name} and ${i.functionWikidata.get(n.wikidata).name}`);i.functionWikidata.set(n.wikidata,t)}}}function vi(e){return Number.isInteger(e)?Math.floor(Math.log2(Math.abs(e))/Math.log2(10))+(e>0?1:2):2}const bi=function e(t){if(t.symbol)return 1;if(t.isLiteral){if(t.isZero)return 1;if(t.isInteger&&null!==t.asFloat)return vi(t.asFloat);const[e,i]=t.rationalValue;if(null!==e&&null!==i)return vi(e)+vi(i)+1;if(t.complexValue){const e=t.complexValue;return vi(e.re)+vi(e.im)+1}if(t.isNumber)return 2}const i=t.head;return("string"==typeof i?1:e(i))+(t.ops?.reduce(((t,i)=>t+e(i)),0)??0)};class yi{constructor(e){this._items=e?e instanceof yi?new Map(e._items):new Map(e):new Map}has(e){for(const t of this._items.keys())if(t.isSame(e))return!0;return!1}get(e){for(const[t,i]of this._items)if(t.isSame(e))return i}clear(){this._items.clear()}set(e,t){for(const i of this._items.keys())if(i.isSame(e))return void this._items.set(i,t);this._items.set(e,t)}delete(e){this._items.delete(e)}[Symbol.iterator](){return this._items.entries()}entries(){return this._items.entries()}}class Ni extends Pe{constructor(e,t,i){super(e,i),this._pattern=Ze(t)?e.parse(t):e.box(t),this._pattern.isCanonical&&(this._canonicalPattern=this._pattern)}get hash(){return Qe("Pattern")^this._pattern.hash}_purge(){this._pattern._purge(),this._canonicalPattern?._purge()}get json(){return nt(this.engine,"Pattern",[this._pattern])}get head(){return"Pattern"}get valueDomain(){return this.engine.domain("Pattern")}get isCanonical(){return!0}set isCanonical(e){}isSame(e){return this===e||e instanceof Ni&&this._pattern.isSame(e._pattern)}isEqual(e){return e instanceof Ni&&this._pattern.isEqual(e._pattern)}match(e,t){let i=this._pattern;return t?.exact||(this._canonicalPattern||(this._canonicalPattern=this._pattern.canonical),i=this._canonicalPattern),function(e,t,i){return _i(e,t,{},{numericTolerance:i?.numericTolerance??1e-10})||null}(e,i,{recursive:t?.recursive??!1,numericTolerance:t?.numericTolerance??0})}test(e,t){return null!==this.match(e,t)}count(e,t){let i=0;for(const n of e)null!==this.match(n,t)&&(i+=1);return i}subs(e){return new Ni(this.engine,this._pattern.subs(e).canonical)}}function xi(e,t,i){const n=function(e){const t=e.match(/^__?_?([a-zA-Z0-9]+)/);return null===t?"":t[1]}(e);return""===n?i:i[n]?t.isSame(i[n])?i:null:(i[n]=t,i)}function _i(e,t,i,n){const r=e.engine;if(t instanceof yt)return e instanceof yt?0===n.numericTolerance?t.isSame(e)?i:null:t.isEqualWithTolerance(e,n.numericTolerance)?i:null:null;const s=t.string;if(null!==s)return e.string===s?i:null;const a=t.symbol;if(null!==a)return a.startsWith("_")?xi(a,e,i):a===e.symbol?i:null;if(t.nops!==e.nops)return null;const o=t.keys;if(null!==o){const t=e.keys;if(null===t)return null;for(const e of o){const r=_i(t[e],o[e],i,n);if(null===r)return null;i=r}return i}if(t.ops){const s=t.head;if("string"==typeof s&&s.startsWith("_"))return xi(s,r.box(e.head),i);{const t=_i(r.box(e.head),r.pattern(s),i,n);if(null===t)return null;i=t}const a=e.ops;let o={...i},l=0;const u=t.ops.map((e=>r.pattern(e)));for(;l<t.nops;){const e=u[l],t=e.symbol;if(null!==t)if(t.startsWith("__")){let e=0;if(void 0===u[l+1])e=a.length+1;else{let t=!1;for(;!t&&e<a.length;)t=null!==_i(a[e],u[l+1],i,n),e+=1;if(!t)return null}if(!t.startsWith("___")&&e<=1)return null;o=xi(t,r.fn("Sequence",a.splice(0,e-1)),o)}else if(t.startsWith("_"))o=xi(t,a.shift(),o);else{const t=_i(a.shift(),e,i,n);if(null===t)return null;o={...o,...t}}else{const t=_i(a.shift(),e,i,n);if(null===t)return null;o={...o,...t}}if(null===o)return null;l+=1}return o}return null}class Si extends Pe{constructor(e,t,i){if(super(e,i),this._name=t.normalize(),n=this._name,/[\u0000-\u0020\u0022\u0060\ufffe\uffff]/.test(n)||/^[\u0021\u0022\u0024-\u002e\u003a\u003f\u0040\u005b\u005d\u005e\u007b\u007d\u007e]$/.test(n[0]))throw Error(`The name "${this._name}" cannot be used as a symbol name`);var n;this._repairDefinition(),e._register(this)}get hash(){return void 0===this._hash&&(this._hash=Qe(this._name)),this._hash}_purge(){return this._def?._purge()}get isPure(){return(this._def?.constant&&this._def.value?.isPure)??!1}get isCanonical(){return!0}set isCanonical(e){}get wikidata(){return this._wikidata??this._def?.wikidata??""}get description(){return this._def&&this._def.description?"string"==typeof this._def.description?[this._def.description]:this._def.description:[]}get url(){return this._def?.url??""}get complexity(){return 7}get head(){return"Symbol"}get symbol(){return this._name}get isMissing(){return"Missing"===this._name}get isLiteral(){return!1}get symbolDefinition(){return this._def}_repairDefinition(){if("_"===this._name[0])return;let e;this._wikidata&&(e=this.engine.getSymbolDefinition("",this._wikidata)),e||(e=this.engine.getSymbolDefinition(this._name),e&&e.wikidata&&this._wikidata&&e.wikidata!==this._wikidata&&(e=void 0)),e?(this._name=e.name,this._def=e):null!==this.engine.defaultDomain?(this._def=this.engine.defineSymbol({name:this._name,wikidata:this._wikidata,domain:this.engine.defaultDomain,...ai(this.engine.defaultDomain)}),this._name=this._def.name):this._def=void 0}get value(){return this._def?.value}set value(e){if("_"===this._name[0])throw Error(`The value of the wildcard "${this._name}" cannot be changed`);let t;if(this.engine.forget(this._name),void 0!==e){const i=this.engine.box(e);t=i.value??i.evaluate()}this._def?this._def.value=t:this._def=this.engine.defineSymbol({name:this._name,value:t,domain:this.engine.defaultDomain??this.engine.domain("Anything")})}get numericValue(){return this._def?.value?.numericValue}get domain(){return"function"==typeof this._def?.domain?this.engine.domain(this._def.domain(this.engine,[])):this._def?.domain??this.engine.domain("Anything")}set domain(e){if("_"===this._name[0])throw Error(`The domain of the wildcard "${this._name}" cannot be changed`);this._def?this._def.domain=e:this._def=this.engine.defineSymbol({name:this._name,domain:e,...ai(e)})}get json(){return rt(this.engine,this._name,{wikidata:this._wikidata})}get sgn(){const e=this.value?.sgn;return void 0!==e?e:!0===this._def?.zero?0:!0===this._def?.positive?1:!0===this._def?.negative?-1:void 0}has(e){return"string"==typeof e?this._name===e:e.includes(this._name)}isSame(e){return e instanceof Si&&this._name===e._name}match(e,t){return e instanceof Si&&this._name===e._name?{}:null}isEqual(e){if(this===e)return!0;if(null!==e.symbol)return e.symbol===this._name;const t=this._def?.value;if(t)return t.isEqual(e);if(e.isZero){if(this.isZero)return!0;if(this.isNotZero)return!1}return this.isZero&&e.isNotZero||this.engine.ask(["NotEqual",this,e]).length,!1}isLess(e){if(null!==e.symbol&&e.symbol===this._name)return!1;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<0}}isLessEqual(e){if(null!==e.symbol&&e.symbol===this._name)return!0;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e<=0}return this.isLess(e)||this.isEqual(e)}isGreater(e){if(null!==e.symbol&&e.symbol===this._name)return!1;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>0}}isGreaterEqual(e){if(null!==e.symbol&&e.symbol===this._name)return!0;if(e.isZero){const e=this.sgn;if(null===e)return!1;if(void 0!==e)return e>=0}return this.isGreater(e)||this.isEqual(e)}get isZero(){return this._def?.zero??this._def?.value?.isZero}get isNotZero(){const e=this._def?.notZero;if("boolean"==typeof e)return e;const t=this.sgn;return"number"==typeof t?0!==t:void 0}get isOne(){return this._def?.one}get isNegativeOne(){return this._def?.negativeOne}get isOdd(){return this._def?.odd}get isEven(){return this._def?.even}get isPrime(){return this._def?.prime}get isComposite(){return this._def?.composite}get isInfinity(){return this._def?.infinity}get isNaN(){return this._def?.NaN}get isPositive(){return this._def?.positive}get isNonPositive(){return this._def?.nonPositive}get isNegative(){return this._def?.negative}get isNonNegative(){return this._def?.nonNegative}get isNumber(){return this._def?.number}get isInteger(){return this._def?.integer}get isRational(){return this._def?.rational}get isAlgebraic(){return this._def?.rational}get isReal(){return this._def?.real}get isExtendedReal(){return this._def?.extendedReal}get isComplex(){return this._def?.complex}get isImaginary(){return this._def?.imaginary}get canonical(){return!1===this._def?.hold?this._def?.value?.value??this._def?.value??this:this}simplify(e){const t=e?.rules?this.replace(e.rules)??this:this;if(!1===t.symbolDefinition?.hold){const i=t.value;if(i)return i.simplify(e)}return t}evaluate(e){return!0===this.symbolDefinition?.hold?this:this._def?.value?.evaluate(e)??this}N(e){const t=this._def?.value;return t?.N(e)??t?.evaluate(e)??t??this}replace(e,t){return ct(this,e,t)}subs(e){return e[this._name]??this}}class wi extends Pe{constructor(e,t,i){super(e,i),this._value=t}get domainExpression(){return this._value}get hash(){return void 0===this._hash&&(this._hash=Ai(this._value)),this._hash}get isCanonical(){return!0}isEqual(e){return!1}isSame(e){return!1}isSubdomainOf(e){return function(e,t){const i=t instanceof wi?t._value:t,n=e instanceof wi?e._value:e;if("string"==typeof n&&"string"==typeof i){const e=Ii(n,i);if("boolean"==typeof e)return e}return!0}(this,e)}isMemberOf(e){return!1}get json(){return"string"==typeof this._value?rt(this.engine,this._value,{wikidata:this._wikidata}):["Domain",this._value]}match(e,t){return e instanceof wi&&this.isSame(e)?{}:null}get head(){return"Domain"}get domain(){return this.engine.domain("Domain")}get codomain(){return"string"==typeof this._value||"Function"!==this._value[0]?null:this.engine.domain(this._value[this._value.length-1])}is(e){return this.isSame(e)}get isNothing(){return"Nothing"===this._value}get isFunction(){return"string"!=typeof this._value&&"Function"===this._value[0]}get isPredicate(){if("string"==typeof this._value)return!1;if("Function"!==this._value[0])return!1;const e=this._value[this._value.length];return e instanceof wi&&e.isBoolean}get isNumericFunction(){if("string"==typeof this._value)return!1;if("Function"!==this._value[0])return!1;for(const e of this._value)if(!Ii(e,"Number"))return!1;return!0}get isBoolean(){return ki(this._value)}get isRealFunction(){if("string"==typeof this._value)return!1;if("Function"!==this._value[0])return!1;for(const e of this._value)if(!Ii(e,"ExtendedRealNumber"))return!1;return!0}get isNumeric(){return this.isSubdomainOf("Number")}get isLogicOperator(){return!("string"==typeof this._value||"Function"!==this._value[0]||this._value.length<2||this._value.length>3||!ki(this._value[this._value.length-1])||!ki(this._value[1])||3===this._value.length&&!ki(this._value[2]))}get isRelationalOperator(){return"string"!=typeof this._value&&"Function"===this._value[0]&&3===this._value.length&&!!ki(this._value[this._value.length-1])}}function Ei(e,t,i){if(t instanceof wi)return t;let n;if(!n&&"string"==typeof t){const r={Function:["Function",["Optional",["Some","Anything"]],"Anything"],NumericFunction:["Function",["Optional",["Some","Number"]],"Number"],RealFunction:["Function",["Optional",["Some","ExtendedRealNumber"]],"ExtendedRealNumber"],TrigonometricFunction:["Function","Number","Number"],HyperbolicFunction:["Function","Number","Number"],LogicOperator:["Function","MaybeBoolean",["Optional","MaybeBoolean"],"MaybeBoolean"],Predicate:["Function",["Optional",["Some","Anything"]],"MaybeBoolean"],RelationalOperator:["Function","Anything","Anything","MaybeBoolean"]}[t];r&&(n=new wi(e,r,i))}return n||(n=new wi(e,t,i)),n}function Ii(e,t){return"string"==typeof e&&({Number:["Number","ExtendedComplexNumber","ExtendedRealNumber","ComplexNumber","ImaginaryNumber","RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],ExtendedComplexNumber:["Number","ExtendedRealNumber","ComplexNumber","ImaginaryNumber","RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],ExtendedRealNumber:["ExtendedRealNumber","RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],ComplexNumber:["ComplexNumber","ImaginaryNumber"],ImaginaryNumber:["ImaginaryNumber"],RealNumber:["RealNumber","TranscendentalNumber","AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NegativeNumber","NonNegativeNumber","NonNegativeInteger","NonPositiveNumber","NonPositiveInteger","PositiveInteger","PositiveNumber"],TranscendentalNumber:["TranscendentalNumber"],AlgebraicNumber:["AlgebraicNumber","RationalNumber","Integer","NegativeInteger","NonNegativeInteger","NonPositiveInteger","PositiveInteger"],RationalNumber:["RationalNumber","Integer","NegativeInteger","NonNegativeInteger","NonPositiveInteger","PositiveInteger"],Integer:["Integer","NegativeInteger","NonNegativeInteger","NonPositiveInteger","PositiveInteger"],NegativeNumber:["NegativeNumber","NegativeInteger"],NonNegativeNumber:["NonNegativeNumber","PositiveNumber","NonNegativeInteger","PositiveInteger"],NonPositiveNumber:["NonPositiveNumber","NegativeNumber","NegativeInteger"],PositiveNumber:["PositiveNumber","PositiveInteger"],NegativeInteger:["NegativeInteger"],PositiveInteger:["PositiveInteger"],NonNegativeInteger:["NonNegativeInteger","PositiveInteger"],NonPositiveInteger:["NegativeInteger"]}[t]?.includes(e)??void 0)}function ki(e){return"string"==typeof e&&["Boolean","MaybeBoolean","True","False","Maybe"].includes(e)}function Ai(e){if("string"==typeof e)return Qe("domain:"+e);let t="";for(const i of e)t+=""+Ai(i);return Qe(t)}class Mi{constructor(e){this._cache={},this._commonSymbols={True:null,False:null,Maybe:null,All:null,Missing:null,Nothing:null,None:null,Undefined:null,Pi:null,ImaginaryUnit:null},this._commonNumbers={0:null,1:null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null},this._commonDomains={Anything:null,Nothing:null,Boolean:null,MaybeBoolean:null,String:null,Domain:null,Symbol:null,Integer:null,RationalNumber:null,AlgebraicNumber:null,RealNumber:null,ExtendedRealNumber:null,ImaginaryNumber:null,ComplexNumber:null,ExtendedComplexNumber:null,Number:null,PositiveInteger:null,TranscendentalNumber:null,PositiveNumber:null,Function:null,NumericFunction:null,RealFunction:null,TrigonometricFunction:null,HyperbolicFunction:null,LogicOperator:null,Predicate:null,RelationalOperator:null,Expression:null,BooleanExpression:null,NumericExpression:null},this._latexDictionary=e?.latexDictionary,this._jsonSerializationOptions={exclude:[],shorthands:["function","symbol","string","dictionary","number"],metadata:[],repeatingDecimal:!0},this._stats={highwaterMark:0,symbols:new Set,expressions:new Set},this._defaultDomain=null,this._numericMode=e?.numericMode??"auto",this._precision=Math.max(e?.numericPrecision??100,Math.floor(Se)),this._decimal=l.exports.Decimal.clone({precision:this._precision}),this.decimal=e=>new this._decimal(e),this.complex=(e,t)=>new c.exports.Complex(e,t),this.tolerance=e?.tolerance??1e-10,this.ZERO=new yt(this,0),this.ONE=new yt(this,1),this.TWO=new yt(this,2),this.HALF=new yt(this,[1,2]),this.NEGATIVE_ONE=new yt(this,-1),this.I=new yt(this,c.exports.Complex.I),this.NAN=new yt(this,NaN),this.POSITIVE_INFINITY=new yt(this,1/0),this.NEGATIVE_INFINITY=new yt(this,-1/0),this.COMPLEX_INFINITY=new yt(this,c.exports.Complex.INFINITY),this.purge();const t=e?.dictionaries??Mi.getDictionaries();this.pushScope({dictionary:t,scope:{warn:e=>{for(const t of e)t.message},timeLimit:2,memoryLimit:1,recursionLimit:1024}}),null===e?.assumptions?this.pushScope():this.pushScope({assumptions:e?.assumptions});for(const e of Object.keys(this._commonDomains))this._commonDomains[e]&&!this._commonDomains[e].symbolDefinition&&this._commonDomains[e]._repairDefinition();for(const e of Object.keys(this._commonSymbols))this._commonSymbols[e]&&!this._commonSymbols[e].symbolDefinition&&this._commonSymbols[e]._repairDefinition();this._defaultDomain=null===e?.defaultDomain?null:this.domain(e?.defaultDomain??"ExtendedRealNumber")}static getDictionaries(e="all"){return fi(e)}purge(){this.DECIMAL_NEGATIVE_ONE=this.decimal(-1),this.DECIMAL_NAN=this.decimal(NaN),this.DECIMAL_ZERO=this.decimal(0),this.DECIMAL_ONE=this.decimal(1),this.DECIMAL_TWO=this.decimal(2),this.DECIMAL_HALF=this.DECIMAL_ONE.div(this.DECIMAL_TWO),this.DECIMAL_PI=this.DECIMAL_NEGATIVE_ONE.acos();const e=this._stats.symbols.values(),t=this._stats.expressions.values();this._stats.symbols=new Set,this._stats.expressions=new Set;for(const t of e)t._purge();for(const e of t)e._purge();for(const e of Object.values(this._commonDomains))e?._purge();for(const e of Object.values(this._commonSymbols))e?._purge();let i=this.context;for(;i;){if(i.dictionary?.functions)for(const[e,t]of i.dictionary.functions)for(const e of t)e._purge();if(i.dictionary?.symbols)for(const[e,t]of i.dictionary.symbols)t._purge();i=i.parentScope}for(const e of Object.keys(this._cache))this._cache[e].value&&(this._cache[e].purge?this._cache[e].value=this._cache[e].purge(this._cache[e].value):delete this._cache[e])}_register(e){this._stats.highwaterMark+=1}_unregister(e){}get stats(){const e=this._stats.expressions;return this._stats.expressions=null,this._stats.expressions=e,{...this._stats}}get precision(){return this._precision}set precision(e){const t=this._precision;"machine"===e&&(e=Math.floor(Se)),e!==t&&(this._latexSyntax&&this.latexSyntax.updateOptions({precision:e,avoidExponentsInRange:[-6,e]}),this._precision=Math.max(e,Math.floor(Se)),this._decimal=this._decimal.config({precision:this._precision}),this.purge())}get numericMode(){return this._numericMode}set numericMode(e){e!==this._numericMode&&(this._numericMode=e,"complex"!==e&&"machine"!==e||(this._precision=Math.floor(Se)),this._latexSyntax&&this.latexSyntax.options.precision>this._precision&&this.latexSyntax.updateOptions({precision:this._precision}),this.purge())}get timeLimit(){let e=this.context;for(;e;){if(void 0!==e.timeLimit)return e.timeLimit;e=e.parentScope}return 2}get iterationLimit(){let e=this.context;for(;e;){if(void 0!==e.iterationLimit)return e.iterationLimit;e=e.parentScope}return 1024}get recursionLimit(){let e=this.context;for(;e;){if(void 0!==e.recursionLimit)return e.recursionLimit;e=e.parentScope}return 1024}get defaultDomain(){return this._defaultDomain}set defaultDomain(e){this._defaultDomain=null===e?null:this.domain(e)}get tolerance(){return this._tolerance}set tolerance(e){this._tolerance="number"==typeof e&&Number.isFinite(e)?Math.max(e,0):1e-10,this._decimalTolerance=this.decimal(this._tolerance)}chop(e){return"number"==typeof e&&Math.abs(e)<=this._tolerance||e instanceof l.exports.Decimal&&e.abs().lte(this._decimalTolerance)||e instanceof c.exports.Complex&&Math.abs(e.re)<=this._tolerance&&Math.abs(e.im)<=this._tolerance?0:e}get latexSyntax(){return this._latexSyntax||(this._latexSyntax=new _e({computeEngine:this,dictionary:this._latexDictionary,precision:this.precision,avoidExponentsInRange:[-6,this.precision],onError:e=>{throw Error(e[0].message.toString())}})),this._latexSyntax}static getLatexDictionary(e="all"){return _e.getDictionary(e)}set costFunction(e){"function"!=typeof e&&(this._cost=bi),this._cost=e}get costFunction(){return this._cost??bi}getSymbolDefinition(e,t){let i,n=this.context;if(t)for(;n&&!i;)i=n.dictionary?.symbolWikidata.get(t),n=n.parentScope;for(;n&&!i;)t&&(i=n.dictionary?.symbolWikidata.get(t)),i||(i=n.dictionary?.symbols.get(e)),n=n.parentScope;return i}getFunctionDefinition(e,t){if(!t){let t=this.context;for(;t;){const i=t.dictionary?.functions.get(e);if(i)return i[0];t=t.parentScope}return}const i=this.domain(["Function",...t?.map((e=>e.domain.json))]);let n=this.context;for(;n;){const r=n.dictionary?.functions.get(e);if(r)for(const e of r)if(e.domain)if("function"==typeof e.domain){const n=this.domain(e.domain(this,t));if(n&&i.isSubdomainOf(n))return e}else if(i.isSubdomainOf(e.domain))return e;n=n.parentScope}}defineSymbol(e){const t=new li(this,e);return this.context.dictionary||(this.context.dictionary={symbols:new Map,functions:new Map,symbolWikidata:new Map,functionWikidata:new Map}),e.name&&this.context.dictionary.symbols.set(e.name,t),e.wikidata&&this.context.dictionary.symbolWikidata.set(e.wikidata,t),t}pushScope(e){if(this.context={...e?.scope,parentScope:this.context,assumptions:this.context?new yi(this.context.assumptions):new yi},di(this,e?.dictionary),void 0!==e?.assumptions)for(const t of e.assumptions)this.assume(this.parse(je(t))??t)}popScope(){const e=this.context?.parentScope;if(this.context.warnings){const e=[...this.context.warnings];this.context.warnings=[],this.context.warn&&this.context.warn(e)}e&&this.context.warnings&&this.context.warnings.length>0&&(e.warnings?e.warnings=[...e.warnings,...this.context.warnings]:e.warnings=[...this.context.warnings]),this.context=e}get assumptions(){return this.context.assumptions||(this.context.assumptions=new yi),this.context.assumptions}shouldContinueExecution(){return void 0===this.deadline||this.deadline>=Date.now()}checkContinueExecution(){if(!this.shouldContinueExecution())throw Error("timeout")}assert(e,t,i,n){e||this.signal(t,i,n)}signal(e,t,i){"object"==typeof e&&"message"in e?i=e.message:e.latex,void 0===i||"string"==typeof i||Array.isArray(i)&&i.map((e=>e.toString())).join(", ")}cache(e,t,i){if(void 0===this._cache[e])try{this._cache[e]={build:t,purge:i,value:t()}}catch(e){}return this._cache[e]?.value}box(e){return xt(this,e)}fn(e,t,i){if("Hold"===e)return this._fn("Hold",t,i);if(t=t.map((e=>e.canonical)),"String"===e)return this.string(t.map((e=>e.string??e.latex)).join(""),i);if("Symbol"===e)return this.symbol(t.map((e=>e.string??e.latex)).join(""),i);if(("Divide"===e||"Rational"===e)&&2===t.length){const e=t[0].asSmallInteger,i=t[1].asSmallInteger;if(null!==e&&null!==i&&Number.isInteger(e)&&Number.isInteger(i))return this.number([e,i])}if("Number"===e){if(1===t.length){const e=t[0],i=e.decimalValue??e.complexValue??e.machineValue;if(null!==i)return this.number(i);const[n,r]=e.rationalValue;if(null!==n&&null!==r)return this.number([n,r])}return this.NAN}if("Complex"===e){if(1===t.length){const e=t[0].asFloat;return null!==e?this.number(this.complex(0,e)):this.mul([t[0],this.I])}if(2===t.length){const e=t[0].asFloat,n=t[1].asFloat;return null!==e&&null!==n&&this.number(this.complex(e,n)),0===n?t[0]:this.add([t[0],this.mul([t[1],this.I])],i)}}if("Negate"===e&&1===t.length)return It(t[0]??this.symbol("Missing"),i);if("Single"===e||"Pair"===e||"Triple"===e||"KeyValuePair"===e)return this.tuple(t,i);if("Dictionary"===e){const e={};for(const i of t)if("Tuple"===i.head){const t=i.op1;if(!t.isMissing){i.op2;let n=t.symbol??t.string;if(!n&&t.isLiteral){const e=t.machineValue??t.asSmallInteger;e&&Number.isFinite(e)&&Number.isInteger(e)&&(n=e.toString())}n&&e[n]}}return new ot(this,e,i)}return"Add"===e?this.add(t,i):"Multiply"===e?this.mul(t,i):"Divide"===e?this.divide(t[0]??this.symbol("Missing"),t[1]??this.symbol("Missing"),i):"Power"===e?this.power(t[0]??this.symbol("Missing"),t[1]??this.symbol("Missing"),i):new ft(this,e,t,i).canonical}_fn(e,t,i){const n=new ft(this,e,t,i);return n.isCanonical=!0,n}error(e,t,i){return this._fn("Error",[e,this.string(t),this.box(i)])}add(e,t){const i=Ft(this,e);return t?.latex&&(i.latex=t.latex),t?.wikidata&&(i.wikidata=t.wikidata),i}mul(e,t){const i=Ct(this,e);return t?.latex&&(i.latex=t.latex),t?.wikidata&&(i.wikidata=t.wikidata),i}power(e,t,i){let n=null;if("number"==typeof t?n=t:Array.isArray(t)&&1===t[1]&&(n=t[0]),1===n)return e;if(-1===n&&e.isLiteral){const[t,i]=e.rationalValue;if(null!==t&&null!==i)return this.number([i,t]);const n=e.asSmallInteger;if(null!==n)return this.number([1,n])}return("number"==typeof t||Array.isArray(t))&&(t=this.number(t)),qt(this,e,t,i)??this._fn("Power",[e,t],i)}inverse(e,t){let i=this.NEGATIVE_ONE;if("Power"===e.head){if(e.op2.isNegativeOne)return e.op1;i=It(e.op2),e=e.op1}return qt(this,e,i,t)??this._fn("Power",[e,i],t)}negate(e,t){return It(e,t)}divide(e,t,i){const n=Tt(this,e,t);return i?.latex&&(n.latex=i.latex),i?.wikidata&&(n.wikidata=i.wikidata),n}pair(e,t,i){return this._fn("Tuple",[e,t],i)}tuple(e,t){return this._fn("Tuple",e,t)}string(e,t){return new Nt(this,e,t)}symbol(e,t){if("Infinity"===e)return this.POSITIVE_INFINITY;if("+Infinity"===e)return this.POSITIVE_INFINITY;if("-Infinity"===e)return this.NEGATIVE_INFINITY;if("Half"===e)return this.HALF;let i=this._commonSymbols[e];return i?t?.wikidata&&i.wikidata&&i.wikidata!==t.wikidata?new Si(this,e,t):i:null===i?(i=new Si(this,e),this._commonSymbols[e]=i,i):new Si(this,e,t)}domain(e,t){return e instanceof wi?e:(e instanceof Pe&&e.symbol&&(e=e.symbol),"string"==typeof e&&(null===this._commonDomains[e]&&(this._commonDomains[e]=Ei(this,e,t)),this._commonDomains[e]&&this._commonDomains[e]),e instanceof Pe?Ei(this,"Anything"):Ei(this,e,t))}number(e,t){if(Array.isArray(e)&&1===e[1]&&(e=e[0]),"number"==typeof e){if(-1===e)return this.NEGATIVE_ONE;if(null===this._commonNumbers[e]&&(this._commonNumbers[e]=_t(this,e)??null),this._commonNumbers[e])return this._commonNumbers[e]}return _t(this,e,t)??this.NAN}rules(e){return lt(this,e)}pattern(e){return new Ni(this,e)}parse(e){return null===e?null:this.box(this.latexSyntax.parse(je(e)??e))}serialize(e){return"object"==typeof e&&"json"in e?this.latexSyntax.serialize(e.json):this.latexSyntax.serialize(e)}get latexOptions(){return{...this.latexSyntax.options,...this.latexSyntax.serializer.options}}set latexOptions(e){this.latexSyntax.updateOptions(e)}get jsonSerializationOptions(){return this._jsonSerializationOptions}set jsonSerializationOptions(e){e.exclude&&(this._jsonSerializationOptions.exclude=[...e.exclude]),e.shorthands&&("all"===e.shorthands||e.shorthands.includes("all")?this._jsonSerializationOptions.shorthands=["function","symbol","string","dictionary","number"]:this._jsonSerializationOptions.shorthands=[...e.shorthands]),e.metadata&&("all"===e.metadata||e.metadata.includes("all")?this._jsonSerializationOptions.metadata=["latex","wikidata"]:this._jsonSerializationOptions.metadata=[...e.metadata])}ask(e){const t=this.pattern(e),i=[];for(const[e,n]of this.assumptions){const r=t.match(e,{numericTolerance:this._tolerance});null!==r&&!0===n&&i.push(r)}return i}assume(e,t){try{const i=je(e);let n=i?this.parse(i):this.box(e);return t&&(n=this.box(["Element",e,this.domain(t)])),"not-a-predicate"}catch{return"internal-error"}}forget(e){if(void 0!==e){if(Array.isArray(e))for(const t of e)this.forget(t);else if("string"==typeof e){this.context.dictionary?.symbols.delete(e);for(const[t,i]of this.assumptions)He(t).includes(e)&&this.assumptions.delete(t)}}else this.assumptions.clear()}}const Fi="0.6.0";export{Mi as ComputeEngine,He as getVars,s as isEnvironmentEntry,i as isInfixEntry,t as isMatchfixEntry,r as isPostfixEntry,n as isPrefixEntry,e as isSymbolEntry,Fi as version};
|