@pie-framework/math-validation 1.4.2 → 2.0.0-next.20261110063142

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +233 -0
  2. package/README.md +41 -110
  3. package/dist/conversion/ast-to-mathjs.d.ts +3 -0
  4. package/dist/conversion/error.d.ts +4 -0
  5. package/dist/conversion/flatten.d.ts +1 -0
  6. package/{lib → dist}/conversion/latex-to-ast.d.ts +14 -13
  7. package/{lib → dist}/conversion/lexer.d.ts +7 -7
  8. package/dist/difference.d.ts +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.js +1594 -0
  11. package/dist/latex-equal.d.ts +2 -0
  12. package/dist/literal/index.d.ts +3 -0
  13. package/dist/log.d.ts +1 -0
  14. package/dist/mathjs.d.ts +11 -0
  15. package/{lib → dist}/node-sort.d.ts +1 -1
  16. package/dist/options.d.ts +13 -0
  17. package/{lib → dist}/symbolic/compare-compound-inequations.d.ts +4 -4
  18. package/{lib → dist}/symbolic/compare-equations.d.ts +1 -1
  19. package/dist/symbolic/index.d.ts +1 -0
  20. package/dist/symbolic/simplify.d.ts +2 -0
  21. package/{lib → dist}/symbolic/utils.d.ts +8 -4
  22. package/dist/value.d.ts +6 -0
  23. package/package.json +32 -53
  24. package/lib/conversion/ast-to-mathjs.d.ts +0 -12
  25. package/lib/conversion/ast-to-mathjs.js +0 -329
  26. package/lib/conversion/ast-to-mathjs.js.map +0 -1
  27. package/lib/conversion/error.d.ts +0 -5
  28. package/lib/conversion/error.js +0 -13
  29. package/lib/conversion/error.js.map +0 -1
  30. package/lib/conversion/flatten.d.ts +0 -12
  31. package/lib/conversion/flatten.js +0 -103
  32. package/lib/conversion/flatten.js.map +0 -1
  33. package/lib/conversion/latex-to-ast.js +0 -1479
  34. package/lib/conversion/latex-to-ast.js.map +0 -1
  35. package/lib/conversion/lexer.js +0 -135
  36. package/lib/conversion/lexer.js.map +0 -1
  37. package/lib/conversion/util.d.ts +0 -3
  38. package/lib/conversion/util.js +0 -36
  39. package/lib/conversion/util.js.map +0 -1
  40. package/lib/demo.d.ts +0 -4
  41. package/lib/demo.js +0 -173
  42. package/lib/demo.js.map +0 -1
  43. package/lib/difference.d.ts +0 -2
  44. package/lib/difference.js +0 -24
  45. package/lib/difference.js.map +0 -1
  46. package/lib/index.d.ts +0 -5
  47. package/lib/index.js +0 -9
  48. package/lib/index.js.map +0 -1
  49. package/lib/latex-equal.d.ts +0 -10
  50. package/lib/latex-equal.js +0 -41
  51. package/lib/latex-equal.js.map +0 -1
  52. package/lib/literal/index.d.ts +0 -10
  53. package/lib/literal/index.js +0 -22
  54. package/lib/literal/index.js.map +0 -1
  55. package/lib/log.d.ts +0 -1
  56. package/lib/log.js +0 -14
  57. package/lib/log.js.map +0 -1
  58. package/lib/mathjs.d.ts +0 -3
  59. package/lib/mathjs.js +0 -9
  60. package/lib/mathjs.js.map +0 -1
  61. package/lib/node-sort.js +0 -236
  62. package/lib/node-sort.js.map +0 -1
  63. package/lib/symbolic/compare-compound-inequations.js +0 -68
  64. package/lib/symbolic/compare-compound-inequations.js.map +0 -1
  65. package/lib/symbolic/compare-equations.js +0 -108
  66. package/lib/symbolic/compare-equations.js.map +0 -1
  67. package/lib/symbolic/index.d.ts +0 -4
  68. package/lib/symbolic/index.js +0 -215
  69. package/lib/symbolic/index.js.map +0 -1
  70. package/lib/symbolic/utils.js +0 -207
  71. package/lib/symbolic/utils.js.map +0 -1
@@ -1,215 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMathEqual = exports.simplify = void 0;
4
- const log_1 = require("../log");
5
- const mathjs_1 = require("../mathjs");
6
- const node_sort_1 = require("../node-sort");
7
- const compare_equations_1 = require("./compare-equations");
8
- const compare_compound_inequations_1 = require("./compare-compound-inequations");
9
- const m = mathjs_1.mathjs;
10
- const log = log_1.logger("mv:symbolic");
11
- const positiveInfinity = 1.497258191621251e6;
12
- const negativeInfinity = -1.497258191621251e6;
13
- const { simplify: ms, rationalize } = mathjs_1.mathjs;
14
- const SIMPLIFY_RULES = [
15
- { l: "n1^(1/n2)", r: "nthRoot(n1, n2)" },
16
- { l: "sqrt(n1)", r: "nthRoot(n1, 2)" },
17
- { l: "nthRoot(-1, 2)", r: "i" },
18
- { l: "(v1-v2)/n", r: "v1/n-v2/n" },
19
- { l: "(v1-n)/n", r: "v1/n-1" },
20
- { l: "n/n1-c1", r: "(n-c1*n1)/n1" },
21
- { l: "i^2", r: "-1" },
22
- { l: "pi", r: "3.141592653589793" },
23
- { l: "n/(n*n1)", r: "1/n1" },
24
- { l: "c1/(c2*(n3))", r: "(c1/c2)*(1/n3)" },
25
- { l: "n1/(n(n+1)+1(n+1))", r: "n1/((n+1)^2)" },
26
- // perfect square formula
27
- { l: "(n1 + n2) ^ 2", r: "(n1 ^ 2) + 2*n1*n2 + (n2 ^ 2)" },
28
- { l: "tzn(n1, n2)", r: "n1" },
29
- { l: "n1/(-n2)", r: "-(n1/n2)" },
30
- { l: "sin(n*pi)", r: "0" },
31
- // logarithm rules
32
- { l: "log(n1*n2, n3)", r: "log(n1, n3)+log(n2,n3)" },
33
- { l: "log(n1/n2, n3)", r: "log(n1, n3)-log(n2,n3)" },
34
- { l: "log(n1^n2, n3)", r: "n2*log(n1,n3)" },
35
- // trigonometry: defining relations for tangent, cotangent, secant, and cosecant in terms of sine and cosine
36
- { l: "sin(n)/cos(n)", r: "tan(n)" },
37
- { l: "csc(n)", r: "1/sin(n)" },
38
- { l: "sec(n)", r: "1/cos(n)" },
39
- { l: "cot(n)", r: "1/tan(n)", r1: "cos(n)/sin(n)" },
40
- { l: "1/tan(n)", r: "cos(n)/sin(n)" },
41
- // TO DO: the Pythagorean formula for sines and cosines.
42
- // inverse trigonometric functions relations
43
- { l: "n1 == asin(n)", r: "n == sin(n1)" },
44
- { l: "n1 == acos(n)", r: "n == cos(n1)" },
45
- { l: "n1 == atan(n)", r: "n == tan(n1)" },
46
- { l: "n1 == acot(n)", r: "n == cot(n1)" },
47
- { l: "n1 == asec(n)", r: "n == sec(n1)" },
48
- { l: "n1 == acsc(n)", r: "n == csc(n1)" },
49
- // relationships between trigonometric functions and inverse trigonometric functions
50
- { l: "sin(asin(n))", r: "n" },
51
- { l: "cos(acos(n))", r: "n" },
52
- { l: "tan(atan(n))", r: "n" },
53
- { l: "sin(acsc(n))", r: "1/n" },
54
- { l: "cos(asec(n))", r: "1/n" },
55
- { l: "tan(acot(n))", r: "1/n" },
56
- ];
57
- const simplify = (v) => {
58
- const rules = SIMPLIFY_RULES.concat(ms.rules);
59
- return ms(v, rules); //.concat(SIMPLIFY_RULES));
60
- };
61
- exports.simplify = simplify;
62
- const normalize = (a) => {
63
- let r = a;
64
- let onlyConstant = true;
65
- let containsFunctionNode = false;
66
- let containsArrayNode = false;
67
- let pi = false;
68
- let containsInverseFlag = false;
69
- r.traverse(function (node, path, parent) {
70
- if (node.isArrayNode) {
71
- containsArrayNode = true;
72
- node.items = node.items.map((item) => exports.simplify(item));
73
- }
74
- if (node.isSymbolNode) {
75
- pi = pi || node.name === "pi";
76
- containsInverseFlag = containsInverseFlag || node.name === "f^{-1}";
77
- }
78
- });
79
- if (r.args) {
80
- r.args = r.args.map((arg) => {
81
- if (!arg.isFunctionNode &&
82
- !arg.isArrayNode &&
83
- !containsInverseFlag &&
84
- !pi) {
85
- try {
86
- arg = exports.simplify(arg);
87
- }
88
- catch (e) {
89
- // ok;
90
- }
91
- }
92
- containsFunctionNode = containsFunctionNode || arg.isFunctionNode;
93
- onlyConstant = onlyConstant && !!arg.isConstantNode;
94
- return arg;
95
- });
96
- if (containsFunctionNode || containsInverseFlag) {
97
- r.args = r.args.map((arg) => {
98
- if (!arg.isFunctionNode && !arg.isArrayNode) {
99
- try {
100
- arg = rationalize(exports.simplify(arg), {}, true).expression;
101
- }
102
- catch (e) {
103
- // ok;
104
- }
105
- }
106
- return arg;
107
- });
108
- }
109
- }
110
- if (r.fn !== "equal") {
111
- try {
112
- onlyConstant = false;
113
- r = rationalize(r, {}, true).expression;
114
- }
115
- catch (_a) { }
116
- }
117
- if (r.conditionals && r.params) {
118
- r.params = r.params.map((param) => node_sort_1.sort(exports.simplify(param)));
119
- }
120
- if (!containsArrayNode && !onlyConstant) {
121
- // overcome TypeError
122
- try {
123
- r = exports.simplify(r);
124
- }
125
- catch (e) { }
126
- }
127
- log("[normalize] input: ", a.toString(), "output: ", r.toString());
128
- // check for infinity
129
- if (r.toString() === "Infinity" ||
130
- +r.toString() >= positiveInfinity ||
131
- +r.toString() <= negativeInfinity) {
132
- r = new m.SymbolNode("Infinity");
133
- }
134
- if (r.value) {
135
- r.value = new m.Fraction(Math.round(r.value * 10000) / 10000);
136
- }
137
- else if (r.fn === "unaryMinus") {
138
- r.args[0].value = new m.Fraction(Math.round(r.args[0].value * 10000) / 10000);
139
- r = exports.simplify(r);
140
- }
141
- return r;
142
- };
143
- const isMathEqual = (a, b) => {
144
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
145
- let as;
146
- let bs;
147
- if ((a === null || a === void 0 ? void 0 : a.isUnit) && (b === null || b === void 0 ? void 0 : b.isUnit)) {
148
- try {
149
- return m.equal(a, b);
150
- }
151
- catch (e) {
152
- log("[isMathEqual] Error comparing units:", (_a = a === null || a === void 0 ? void 0 : a.toString) === null || _a === void 0 ? void 0 : _a.call(a), (_b = b === null || b === void 0 ? void 0 : b.toString) === null || _b === void 0 ? void 0 : _b.call(b), e);
153
- return false;
154
- }
155
- }
156
- if ((a === null || a === void 0 ? void 0 : a.isUnit) || (b === null || b === void 0 ? void 0 : b.isUnit)) {
157
- log("[isMathEqual] Mismatched unit comparison:", (_c = a === null || a === void 0 ? void 0 : a.toString) === null || _c === void 0 ? void 0 : _c.call(a), (_d = b === null || b === void 0 ? void 0 : b.toString) === null || _d === void 0 ? void 0 : _d.call(b));
158
- return false;
159
- }
160
- // apply sort if we are not in a relationalNode
161
- as = a.conditionals ? normalize(a) : node_sort_1.sort(normalize(a));
162
- bs = b.conditionals ? normalize(b) : node_sort_1.sort(normalize(b));
163
- log("[isMathEqual]", as.toString(), "==?", bs.toString());
164
- const isSortingEnough = node_sort_1.sort(a).equals(node_sort_1.sort(b));
165
- const isTexEnough = as.toTex().trim() === bs.toTex().trim();
166
- let equality = isTexEnough || as.equals(bs) || isSortingEnough;
167
- if (equality) {
168
- return true;
169
- }
170
- // if both expressions are equations
171
- if (as.fn === "equal" && bs.fn === "equal") {
172
- return compare_equations_1.compareEquations(as, bs, false);
173
- }
174
- // if both expressions are inequalities treat greater sign as equal sign
175
- if ((as.fn === "larger" && bs.fn === "larger") ||
176
- (as.fn === "largerEq" && bs.fn === "largerEq")) {
177
- // solving a 2 way inequality is the same as solving an equation, we can treat the greater sign as an equal sign
178
- // the difference is that solution should be plotted on a number line (or interval)
179
- // if we have the same signs and the same direction, the interval will always be the same, starting with the solution
180
- as.fn = "equal";
181
- bs.fn = "equal";
182
- as.op = "=";
183
- bs.op = "=";
184
- return compare_equations_1.compareEquations(as, bs, true);
185
- }
186
- // check for compound inequalities/3-way inequalities
187
- if (
188
- //@ts-ignore
189
- ((_e = as === null || as === void 0 ? void 0 : as.conditionals) === null || _e === void 0 ? void 0 : _e.length) === ((_f = bs === null || bs === void 0 ? void 0 : bs.conditionals) === null || _f === void 0 ? void 0 : _f.length) &&
190
- //@ts-ignore
191
- ((_g = as === null || as === void 0 ? void 0 : as.conditionals) === null || _g === void 0 ? void 0 : _g.length) === 2 &&
192
- //@ts-ignore
193
- ((_h = as === null || as === void 0 ? void 0 : as.conditionals) === null || _h === void 0 ? void 0 : _h.toString()) === ((_j = bs === null || bs === void 0 ? void 0 : bs.conditionals) === null || _j === void 0 ? void 0 : _j.toString())) {
194
- const params = [
195
- "smaller",
196
- "smallerEq",
197
- "larger",
198
- "largerEq",
199
- "equal",
200
- "unequal",
201
- ];
202
- const paramsIncludedA = params.some((param) =>
203
- //@ts-ignore
204
- as.conditionals.includes(param));
205
- const paramsIncludedB = params.some((param) =>
206
- //@ts-ignore
207
- bs.conditionals.includes(param));
208
- if (paramsIncludedA && paramsIncludedB) {
209
- return compare_compound_inequations_1.compareCompoundInequations(as, bs);
210
- }
211
- }
212
- return equality;
213
- };
214
- exports.isMathEqual = isMathEqual;
215
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/symbolic/index.ts"],"names":[],"mappings":";;;AAAA,gCAAgC;AAChC,sCAAmC;AAEnC,4CAAoC;AACpC,2DAAuD;AACvD,iFAA4E;AAE5E,MAAM,CAAC,GAAQ,eAAM,CAAC;AACtB,MAAM,GAAG,GAAG,YAAM,CAAC,aAAa,CAAC,CAAC;AAClC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAC7C,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,CAAC;AAI9C,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,eAAM,CAAC;AAE7C,MAAM,cAAc,GAAG;IACrB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE;IACxC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,gBAAgB,EAAE;IACtC,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE;IAClC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE;IAC9B,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE;IACnC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE;IACrB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,mBAAmB,EAAE;IACnC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE;IAC5B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,gBAAgB,EAAE;IAC1C,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,cAAc,EAAE;IAE9C,yBAAyB;IACzB,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,+BAA+B,EAAE;IAE1D,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE;IAC7B,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE;IAChC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE;IAE1B,kBAAkB;IAClB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,wBAAwB,EAAE;IACpD,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,wBAAwB,EAAE;IACpD,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,eAAe,EAAE;IAE3C,4GAA4G;IAC5G,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,QAAQ,EAAE;IACnC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE;IAC9B,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE;IAC9B,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE;IACnD,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE;IAErC,wDAAwD;IAExD,4CAA4C;IAC5C,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE;IACzC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE;IACzC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE;IACzC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE;IACzC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE;IACzC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE;IAEzC,oFAAoF;IACpF,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE;IAC/B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE;IAC/B,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE;CAChC,CAAC;AAEK,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE;IAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAE,EAAU,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,2BAA2B;AAClD,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB;AAEF,MAAM,SAAS,GAAG,CAAC,CAA0B,EAAE,EAAE;IAC/C,IAAI,CAAC,GAA4B,CAAC,CAAC;IACnC,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,iBAAiB,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;YAC9B,mBAAmB,GAAG,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;SACrE;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,IAAI,EAAE;QACV,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,IACE,CAAC,GAAG,CAAC,cAAc;gBACnB,CAAC,GAAG,CAAC,WAAW;gBAChB,CAAC,mBAAmB;gBACpB,CAAC,EAAE,EACH;gBACA,IAAI;oBACF,GAAG,GAAG,gBAAQ,CAAC,GAAG,CAAC,CAAC;iBACrB;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM;iBACP;aACF;YAED,oBAAoB,GAAG,oBAAoB,IAAI,GAAG,CAAC,cAAc,CAAC;YAElE,YAAY,GAAG,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;YAEpD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,IAAI,oBAAoB,IAAI,mBAAmB,EAAE;YAC/C,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1B,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;oBAC3C,IAAI;wBACF,GAAG,GAAG,WAAW,CAAC,gBAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC;qBACvD;oBAAC,OAAO,CAAC,EAAE;wBACV,MAAM;qBACP;iBACF;gBAED,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;SACJ;KACF;IAED,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE;QACpB,IAAI;YACF,YAAY,GAAG,KAAK,CAAC;YACrB,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC;SACzC;QAAC,WAAM,GAAE;KACX;IAED,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE;QAC9B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAI,CAAC,gBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE;QACvC,qBAAqB;QACrB,IAAI;YACF,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE,GAAE;KACf;IAED,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnE,qBAAqB;IACrB,IACE,CAAC,CAAC,QAAQ,EAAE,KAAK,UAAU;QAC3B,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,gBAAgB;QACjC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,gBAAgB,EACjC;QACA,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;KAClC;IAED,IAAI,CAAC,CAAC,KAAK,EAAE;QACX,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;KAC/D;SAAM,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,EAAE;QAChC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,CAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAC5C,CAAC;QACF,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE;;IAC5C,IAAI,EAAY,CAAC;IACjB,IAAI,EAAY,CAAC;IAEjB,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,EAAE;QAC1B,IAAI;YACF,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB;QAAC,OAAO,CAAC,EAAE;YACV,GAAG,CACD,sCAAsC,EACtC,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,+CAAX,CAAC,CAAc,EACf,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,+CAAX,CAAC,CAAc,EACf,CAAC,CACF,CAAC;YACF,OAAO,KAAK,CAAC;SACd;KACF;IAED,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,EAAE;QAC1B,GAAG,CACD,2CAA2C,EAC3C,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,+CAAX,CAAC,CAAc,EACf,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,+CAAX,CAAC,CAAc,CAChB,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IAED,+CAA+C;IAC/C,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1D,MAAM,eAAe,GAAG,gBAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IAE5D,IAAI,QAAQ,GAAG,WAAW,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,eAAe,CAAC;IAE/D,IAAI,QAAQ,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,oCAAoC;IACpC,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,OAAO,EAAE;QAC1C,OAAO,oCAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACxC;IAED,wEAAwE;IACxE,IACE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC;QAC1C,CAAC,EAAE,CAAC,EAAE,KAAK,UAAU,IAAI,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAC9C;QACA,gHAAgH;QAChH,mFAAmF;QACnF,qHAAqH;QACrH,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC;QAChB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC;QAChB,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;QACZ,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;QAEZ,OAAO,oCAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;KACvC;IAED,qDAAqD;IACrD;IACE,YAAY;IACZ,CAAA,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,0CAAE,MAAM,OAAK,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,0CAAE,MAAM,CAAA;QACrD,YAAY;QACZ,CAAA,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,0CAAE,MAAM,MAAK,CAAC;QAC9B,YAAY;QACZ,CAAA,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,0CAAE,QAAQ,EAAE,OAAK,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,0CAAE,QAAQ,EAAE,CAAA,EAC7D;QACA,MAAM,MAAM,GAAG;YACb,SAAS;YACT,WAAW;YACX,QAAQ;YACR,UAAU;YACV,OAAO;YACP,SAAS;SACV,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,YAAY;QACZ,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAChC,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,YAAY;QACZ,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAChC,CAAC;QAEF,IAAI,eAAe,IAAI,eAAe,EAAE;YACtC,OAAO,yDAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC3C;KACF;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAlGW,QAAA,WAAW,eAkGtB"}
@@ -1,207 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.equationsHaveTheSameVariables = exports.solveLinearEquation = exports.solveQuadraticEquation = exports.setXToOne = exports.getCoefficients = exports.getVariables = exports.transformEqualityInExpression = exports.areNumericallyEquivalent = exports.hasSymbolicExponent = exports.expressionsCanBeCompared = void 0;
4
- const mathjs_1 = require("../mathjs");
5
- const _1 = require("./");
6
- const { simplify } = mathjs_1.mathjs;
7
- const m = mathjs_1.mathjs;
8
- let simplifyRules = [
9
- { l: "-((n1)*(n2))", r: "(n1)*(n2)" },
10
- { l: "(n1-n2)/n3", r: "n1/n3-n2/n3" },
11
- { l: "(n1+n2)/n3", r: "n1/n3+n2/n3" },
12
- { l: "(n1-n2)*n3/n4", r: "(n1*n3)/n4-(n2*n3)/n4" },
13
- { l: "(n1+n2)*n3/n4", r: "(n1*n3)/n4+(n2*n3)/n4" },
14
- ];
15
- const customRound = (number) => Math.round(number * 10000000000000) / 10000000000000;
16
- // expressions can be compared if we have at least one symbol node and has no function node or array; do not treat math series as equations
17
- const expressionsCanBeCompared = (firstEquation, secondEquation) => {
18
- let noFunctionOrArray = true;
19
- let firstSymbolNode = false;
20
- let symbolNode = false;
21
- let seriesNode = false;
22
- firstEquation.traverse(function (node, path, parent) {
23
- if (node.isSymbolNode) {
24
- firstSymbolNode = true;
25
- seriesNode = seriesNode || node.name.includes("[");
26
- }
27
- noFunctionOrArray =
28
- noFunctionOrArray || node.isFunctionNode || node.isArrayNode;
29
- });
30
- secondEquation.traverse(function (node, path, parent) {
31
- if (node.isFunctionNode || node.isArrayNode) {
32
- noFunctionOrArray = false;
33
- }
34
- if (node.isSymbolNode && firstSymbolNode)
35
- symbolNode = true;
36
- });
37
- return noFunctionOrArray && symbolNode && !seriesNode;
38
- };
39
- exports.expressionsCanBeCompared = expressionsCanBeCompared;
40
- const hasSymbolicExponent = (node) => {
41
- let found = false;
42
- node.traverse((n) => {
43
- var _a;
44
- if (n.isOperatorNode &&
45
- n.op === "^" &&
46
- !((_a = n.args[1]) === null || _a === void 0 ? void 0 : _a.isConstantNode) // Exponent is symbolic or compound
47
- ) {
48
- found = true;
49
- }
50
- });
51
- return found;
52
- };
53
- exports.hasSymbolicExponent = hasSymbolicExponent;
54
- const areNumericallyEquivalent = (exprA, exprB, variables, tolerance = 1e-10) => {
55
- const compiledA = m.compile(exprA.toString());
56
- const compiledB = m.compile(exprB.toString());
57
- const testValues = [1, 2, 3, 4, 5];
58
- return testValues.every((val) => {
59
- const scope = variables.reduce((acc, v) => {
60
- acc[v] = val;
61
- return acc;
62
- }, {});
63
- try {
64
- const resultA = compiledA.evaluate(scope);
65
- const resultB = compiledB.evaluate(scope);
66
- return Math.abs(resultA - resultB) < tolerance;
67
- }
68
- catch (_a) {
69
- return false;
70
- }
71
- });
72
- };
73
- exports.areNumericallyEquivalent = areNumericallyEquivalent;
74
- // move the terms of the equations to the left hand side
75
- const transformEqualityInExpression = (equality) =>
76
- // remove added/subtracted numbers/variables from both sides of the equation
77
- _1.simplify(new m.OperatorNode("-", "subtract", equality.args));
78
- exports.transformEqualityInExpression = transformEqualityInExpression;
79
- // check if equation is valid and find out the number of variables and their name
80
- const getVariables = (equation) => {
81
- let variableNames = [];
82
- equation.traverse(function (node, path, parent) {
83
- if (node.isSymbolNode &&
84
- (node === null || node === void 0 ? void 0 : node.name.length) === 1 &&
85
- !variableNames.includes(node.name)) {
86
- variableNames.push(node.name);
87
- }
88
- });
89
- return variableNames.sort();
90
- };
91
- exports.getVariables = getVariables;
92
- const getCoefficients = (equation, isInequality) => {
93
- // coefficients will be determined if equation has only one variable
94
- try {
95
- const rationalizedEquation = m.rationalize(equation, {}, true);
96
- let coefficients = rationalizedEquation.coefficients;
97
- let allNegatives = coefficients.every((coefficient) => coefficient < 0);
98
- return allNegatives
99
- ? coefficients.map((coefficient) => Math.abs(coefficient))
100
- : coefficients;
101
- }
102
- catch (e) {
103
- // rationalize may fail if variable is isolated in a fraction
104
- // we give it another try to rationalize after applying a new round of simplify to separate the variable
105
- if (isInequality) {
106
- equation = simplify(equation, simplifyRules);
107
- }
108
- else {
109
- simplifyRules.push({ l: "-(n)", r: "n" });
110
- equation = simplify(equation, simplifyRules);
111
- }
112
- try {
113
- const rationalizedEquation = m.rationalize(equation, {}, true);
114
- return rationalizedEquation.coefficients;
115
- }
116
- catch (e) { }
117
- }
118
- return [1, 0];
119
- };
120
- exports.getCoefficients = getCoefficients;
121
- const setXToOne = (equation, variableName) => equation.transform(function (node, path, parent) {
122
- if (node.isSymbolNode && node.name === variableName) {
123
- return new m.ConstantNode(1);
124
- }
125
- return node;
126
- });
127
- exports.setXToOne = setXToOne;
128
- // quadratic equation solver for a second-order polynomial equation such as ax^2 + bx + c = 0 for x, where a is not zero
129
- // quadratic formula
130
- const solveQuadraticEquation = (coefficients) => {
131
- const [c, b, a] = coefficients;
132
- const discriminant = b * b - 4 * a * c;
133
- let addDiscriminant;
134
- let subtractDiscriminant;
135
- try {
136
- addDiscriminant = m.compile(m.fraction(-b + m.sqrt(discriminant)) / (2 * a));
137
- }
138
- catch (_a) {
139
- addDiscriminant = m.compile("(-b+sqrt(discriminant))/(2*a)");
140
- }
141
- try {
142
- subtractDiscriminant = m.compile(m.fraction(-b - m.sqrt(discriminant)) / (2 * a));
143
- }
144
- catch (_b) {
145
- subtractDiscriminant = m.compile("(-b-sqrt(discriminant))/(2*a)");
146
- }
147
- let firstRoot = addDiscriminant.evaluate({
148
- discriminant: discriminant,
149
- a: a,
150
- b: b,
151
- });
152
- let secondRoot = subtractDiscriminant.evaluate({
153
- discriminant: discriminant,
154
- a: a,
155
- b: b,
156
- });
157
- // roots are real numbers
158
- if (!firstRoot.im) {
159
- firstRoot = customRound(firstRoot);
160
- secondRoot = customRound(secondRoot);
161
- return [
162
- { re: firstRoot, im: 0 },
163
- { re: secondRoot, im: 0 },
164
- ];
165
- }
166
- return [
167
- {
168
- re: customRound(firstRoot.re),
169
- im: customRound(firstRoot.im),
170
- },
171
- {
172
- re: customRound(secondRoot.re),
173
- im: customRound(secondRoot.im),
174
- },
175
- ];
176
- };
177
- exports.solveQuadraticEquation = solveQuadraticEquation;
178
- // solve x
179
- const solveLinearEquation = (coefficients) => {
180
- let result;
181
- if (!coefficients) {
182
- return undefined;
183
- }
184
- if (coefficients.length === 3 && coefficients[0] === 0) {
185
- coefficients = coefficients.splice(1, 2);
186
- }
187
- if (coefficients.length === 2) {
188
- if (coefficients[0] === 0 && coefficients[1] === 0) {
189
- return Infinity;
190
- }
191
- if (coefficients[0] === 0) {
192
- return 0;
193
- }
194
- // equation with no solution : if coefficient for x is 0 => division by zero => result == -Infinity
195
- result = customRound(m.divide(coefficients[0], -1 * coefficients[1]));
196
- }
197
- return result;
198
- };
199
- exports.solveLinearEquation = solveLinearEquation;
200
- const equationsHaveTheSameVariables = (firstEquationVariables, secondEquationVariables) => {
201
- return (Array.isArray(firstEquationVariables) &&
202
- Array.isArray(secondEquationVariables) &&
203
- firstEquationVariables.length === secondEquationVariables.length &&
204
- firstEquationVariables.every((variable, index) => variable === secondEquationVariables[index]));
205
- };
206
- exports.equationsHaveTheSameVariables = equationsHaveTheSameVariables;
207
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/symbolic/utils.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AAEnC,yBAAgD;AAChD,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAM,CAAC;AAE5B,MAAM,CAAC,GAAQ,eAAM,CAAC;AAEtB,IAAI,aAAa,GAAG;IAClB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE;IACrC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE;IACrC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE;IACrC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,uBAAuB,EAAE;IAClD,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,uBAAuB,EAAE;CACnD,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE,CACrC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC;AAEvD,2IAA2I;AACpI,MAAM,wBAAwB,GAAG,CACtC,aAAuB,EACvB,cAAwB,EACf,EAAE;IACX,IAAI,iBAAiB,GAAY,IAAI,CAAC;IACtC,IAAI,eAAe,GAAY,KAAK,CAAC;IACrC,IAAI,UAAU,GAAY,KAAK,CAAC;IAChC,IAAI,UAAU,GAAY,KAAK,CAAC;IAEhC,aAAa,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM;QACjD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,eAAe,GAAG,IAAI,CAAC;YACvB,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpD;QACD,iBAAiB;YACf,iBAAiB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM;QAClD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE;YAC3C,iBAAiB,GAAG,KAAK,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,eAAe;YAAE,UAAU,GAAG,IAAI,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC;AACxD,CAAC,CAAC;AA3BW,QAAA,wBAAwB,4BA2BnC;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAc,EAAW,EAAE;IAC7D,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;;QAClB,IACE,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,EAAE,KAAK,GAAG;YACZ,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,cAAc,CAAA,CAAC,mCAAmC;UAC9D;YACA,KAAK,GAAG,IAAI,CAAC;SACd;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEK,MAAM,wBAAwB,GAAG,CACtC,KAAe,EACf,KAAe,EACf,SAAmB,EACnB,YAAoB,KAAK,EAChB,EAAE;IACX,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACxC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACb,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA4B,CAAC,CAAC;QAEjC,IAAI;YACF,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;SAChD;QAAC,WAAM;YACN,OAAO,KAAK,CAAC;SACd;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzBW,QAAA,wBAAwB,4BAyBnC;AAEF,wDAAwD;AACjD,MAAM,6BAA6B,GAAG,CAAC,QAAkB,EAAE,EAAE;AAClE,4EAA4E;AAC5E,WAAc,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAFxD,QAAA,6BAA6B,iCAE2B;AAErE,iFAAiF;AAC1E,MAAM,YAAY,GAAG,CAAC,QAAkB,EAAE,EAAE;IACjD,IAAI,aAAa,GAAa,EAAE,CAAC;IAEjC,QAAQ,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM;QAC5C,IACE,IAAI,CAAC,YAAY;YACjB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,MAAM,MAAK,CAAC;YACvB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC;YACA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AAdW,QAAA,YAAY,gBAcvB;AAEK,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,YAAqB,EAAE,EAAE;IAC3E,oEAAoE;IAEpE,IAAI;QACF,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAE/D,IAAI,YAAY,GAAG,oBAAoB,CAAC,YAAY,CAAC;QACrD,IAAI,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAExE,OAAO,YAAY;YACjB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1D,CAAC,CAAC,YAAY,CAAC;KAClB;IAAC,OAAO,CAAC,EAAE;QACV,6DAA6D;QAC7D,wGAAwG;QACxG,IAAI,YAAY,EAAE;YAChB,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;SAC9C;aAAM;YACL,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1C,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;SAC9C;QAED,IAAI;YACF,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO,oBAAoB,CAAC,YAAY,CAAC;SAC1C;QAAC,OAAO,CAAC,EAAE,GAAE;KACf;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC;AA7BW,QAAA,eAAe,mBA6B1B;AAEK,MAAM,SAAS,GAAG,CAAC,QAAa,EAAE,YAAoB,EAAE,EAAE,CAC/D,QAAQ,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM;IAC7C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;QACnD,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KAC9B;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAPQ,QAAA,SAAS,aAOjB;AAEL,wHAAwH;AACxH,oBAAoB;AACb,MAAM,sBAAsB,GAAG,CAAC,YAAsB,EAAE,EAAE;IAC/D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;IAC/B,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,eAAoB,CAAC;IACzB,IAAI,oBAAyB,CAAC;IAE9B,IAAI;QACF,eAAe,GAAG,CAAC,CAAC,OAAO,CACzB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAChD,CAAC;KACH;IAAC,WAAM;QACN,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;KAC9D;IAED,IAAI;QACF,oBAAoB,GAAG,CAAC,CAAC,OAAO,CAC9B,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAChD,CAAC;KACH;IAAC,WAAM;QACN,oBAAoB,GAAG,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;KACnE;IAED,IAAI,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC;QACvC,YAAY,EAAE,YAAY;QAC1B,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;KACL,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC;QAC7C,YAAY,EAAE,YAAY;QAC1B,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;KACL,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;QACjB,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACnC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE;YACxB,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE;SAC1B,CAAC;KACH;IAED,OAAO;QACL;YACE,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;SAC9B;QACD;YACE,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;SAC/B;KACF,CAAC;AACJ,CAAC,CAAC;AAvDW,QAAA,sBAAsB,0BAuDjC;AAEF,UAAU;AACH,MAAM,mBAAmB,GAAG,CAAC,YAAsB,EAAE,EAAE;IAC5D,IAAI,MAAc,CAAC;IAEnB,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QACtD,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1C;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YAClD,OAAO,QAAQ,CAAC;SACjB;QAED,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC;SACV;QAED,mGAAmG;QACnG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACvE;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAzBW,QAAA,mBAAmB,uBAyB9B;AAEK,MAAM,6BAA6B,GAAG,CAC3C,sBAAgC,EAChC,uBAAiC,EACjC,EAAE;IACF,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACrC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACtC,sBAAsB,CAAC,MAAM,KAAK,uBAAuB,CAAC,MAAM;QAChE,sBAAsB,CAAC,KAAK,CAC1B,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK,CAAC,CACjE,CACF,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,6BAA6B,iCAYxC"}