rf-touchstone
Version:
A Javascript/TypeScript library for reading, manipulating, and writing Touchstone files (.snp files) used in radio frequency (RF) and microwave engineering.
1,383 lines (1,382 loc) • 312 kB
JavaScript
function at() {
return at = Object.assign ? Object.assign.bind() : function(e) {
for (var r = 1; r < arguments.length; r++) {
var t = arguments[r];
for (var n in t) ({}).hasOwnProperty.call(t, n) && (e[n] = t[n]);
}
return e;
}, at.apply(null, arguments);
}
var ti = {
// minimum relative difference between two compared values,
// used by all comparison functions
relTol: 1e-12,
// minimum absolute difference between two compared values,
// used by all comparison functions
absTol: 1e-15,
// type of default matrix output. Choose 'matrix' (default) or 'array'
matrix: "Matrix",
// type of default number output. Choose 'number' (default) 'BigNumber', 'bigint', or 'Fraction'
number: "number",
// type of fallback used for config { number: 'bigint' } when a value cannot be represented
// in the configured numeric type. Choose 'number' (default) or 'BigNumber'.
numberFallback: "number",
// number of significant digits in BigNumbers
precision: 64,
// predictable output type of functions. When true, output type depends only
// on the input types. When false (default), output type can vary depending
// on input values. For example `math.sqrt(-4)` returns `complex('2i')` when
// predictable is false, and returns `NaN` when true.
predictable: !1,
// random seed for seeded pseudo random number generation
// null = randomly seed
randomSeed: null,
// legacy behavior for matrix subset. When true, the subset function
// returns a matrix or array with the same size as the index (except for scalars).
// When false, it returns a matrix or array with a size depending on the type of index.
legacySubset: !1
};
function ni(e, r) {
if (st(e, r))
return e[r];
throw typeof e[r] == "function" && Ou(e, r) ? new Error('Cannot access method "' + r + '" as a property') : new Error('No access to property "' + r + '"');
}
function ii(e, r, t) {
if (st(e, r))
return e[r] = t, t;
throw new Error('No access to property "' + r + '"');
}
function st(e, r) {
return !$u(e) && !Array.isArray(e) ? !1 : Zr(Pu, r) ? !0 : !(r in Object.prototype || r in Function.prototype);
}
function Ou(e, r) {
return e == null || typeof e[r] != "function" || Zr(e, r) && Object.getPrototypeOf && r in Object.getPrototypeOf(e) ? !1 : Zr(qu, r) ? !0 : !(r in Object.prototype || r in Function.prototype);
}
function $u(e) {
return typeof e == "object" && e && e.constructor === Object;
}
var Pu = {
length: !0,
name: !0
}, qu = {
toString: !0,
valueOf: !0,
toLocaleString: !0
};
class Uu {
constructor(r) {
this.wrappedObject = r, this[Symbol.iterator] = this.entries;
}
keys() {
return Object.keys(this.wrappedObject).filter((r) => this.has(r)).values();
}
get(r) {
return ni(this.wrappedObject, r);
}
set(r, t) {
return ii(this.wrappedObject, r, t), this;
}
has(r) {
return st(this.wrappedObject, r) && r in this.wrappedObject;
}
entries() {
return Ru(this.keys(), (r) => [r, this.get(r)]);
}
forEach(r) {
for (var t of this.keys())
r(this.get(t), t, this);
}
delete(r) {
st(this.wrappedObject, r) && delete this.wrappedObject[r];
}
clear() {
for (var r of this.keys())
this.delete(r);
}
get size() {
return Object.keys(this.wrappedObject).length;
}
}
function Ru(e, r) {
return {
next: () => {
var t = e.next();
return t.done ? t : {
value: r(t.value),
done: !1
};
}
};
}
function ne(e) {
return typeof e == "number";
}
function Ee(e) {
return !e || typeof e != "object" || typeof e.constructor != "function" ? !1 : e.isBigNumber === !0 && typeof e.constructor.prototype == "object" && e.constructor.prototype.isBigNumber === !0 || typeof e.constructor.isDecimal == "function" && e.constructor.isDecimal(e) === !0;
}
function Lu(e) {
return typeof e == "bigint";
}
function ui(e) {
return e && typeof e == "object" && Object.getPrototypeOf(e).isComplex === !0 || !1;
}
function oi(e) {
return e && typeof e == "object" && Object.getPrototypeOf(e).isFraction === !0 || !1;
}
function ai(e) {
return e && e.constructor.prototype.isUnit === !0 || !1;
}
function Te(e) {
return typeof e == "string";
}
var ve = Array.isArray;
function ye(e) {
return e && e.constructor.prototype.isMatrix === !0 || !1;
}
function ft(e) {
return Array.isArray(e) || ye(e);
}
function Hu(e) {
return e && e.isDenseMatrix && e.constructor.prototype.isMatrix === !0 || !1;
}
function Zu(e) {
return e && e.isSparseMatrix && e.constructor.prototype.isMatrix === !0 || !1;
}
function si(e) {
return e && e.constructor.prototype.isRange === !0 || !1;
}
function Ct(e) {
return e && e.constructor.prototype.isIndex === !0 || !1;
}
function Wu(e) {
return typeof e == "boolean";
}
function Vu(e) {
return e && e.constructor.prototype.isResultSet === !0 || !1;
}
function Gu(e) {
return e && e.constructor.prototype.isHelp === !0 || !1;
}
function Ju(e) {
return typeof e == "function";
}
function ku(e) {
return e instanceof Date;
}
function Yu(e) {
return e instanceof RegExp;
}
function jt(e) {
return !!(e && typeof e == "object" && e.constructor === Object && !ui(e) && !oi(e));
}
function Xu(e) {
return e ? e instanceof Map || e instanceof Uu || typeof e.set == "function" && typeof e.get == "function" && typeof e.keys == "function" && typeof e.has == "function" : !1;
}
function Qu(e) {
return e === null;
}
function Ku(e) {
return e === void 0;
}
function ju(e) {
return e && e.isAccessorNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function eo(e) {
return e && e.isArrayNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ro(e) {
return e && e.isAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function to(e) {
return e && e.isBlockNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function no(e) {
return e && e.isConditionalNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function io(e) {
return e && e.isConstantNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function uo(e) {
return e && e.isFunctionAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function oo(e) {
return e && e.isFunctionNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ao(e) {
return e && e.isIndexNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function so(e) {
return e && e.isNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function fo(e) {
return e && e.isObjectNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function co(e) {
return e && e.isOperatorNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function lo(e) {
return e && e.isParenthesisNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ho(e) {
return e && e.isRangeNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function po(e) {
return e && e.isRelationalNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function mo(e) {
return e && e.isSymbolNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function Do(e) {
return e && e.constructor.prototype.isChain === !0 || !1;
}
function ur(e) {
var r = typeof e;
return r === "object" ? e === null ? "null" : Ee(e) ? "BigNumber" : e.constructor && e.constructor.name ? e.constructor.name : "Object" : r;
}
function de(e) {
var r = typeof e;
if (r === "number" || r === "bigint" || r === "string" || r === "boolean" || e === null || e === void 0)
return e;
if (typeof e.clone == "function")
return e.clone();
if (Array.isArray(e))
return e.map(function(t) {
return de(t);
});
if (e instanceof Date) return new Date(e.valueOf());
if (Ee(e)) return e;
if (jt(e))
return go(e, de);
if (r === "function")
return e;
throw new TypeError("Cannot clone: unknown type of value (value: ".concat(e, ")"));
}
function go(e, r) {
var t = {};
for (var n in e)
Zr(e, n) && (t[n] = r(e[n]));
return t;
}
function vo(e, r) {
for (var t in r)
Zr(r, t) && (e[t] = r[t]);
return e;
}
function Dr(e, r) {
var t, n, i;
if (Array.isArray(e)) {
if (!Array.isArray(r) || e.length !== r.length)
return !1;
for (n = 0, i = e.length; n < i; n++)
if (!Dr(e[n], r[n]))
return !1;
return !0;
} else {
if (typeof e == "function")
return e === r;
if (e instanceof Object) {
if (Array.isArray(r) || !(r instanceof Object))
return !1;
for (t in e)
if (!(t in r) || !Dr(e[t], r[t]))
return !1;
for (t in r)
if (!(t in e))
return !1;
return !0;
} else
return e === r;
}
}
function Zr(e, r) {
return e && Object.hasOwnProperty.call(e, r);
}
function wo(e, r) {
for (var t = {}, n = 0; n < r.length; n++) {
var i = r[n], u = e[i];
u !== void 0 && (t[i] = u);
}
return t;
}
var yo = ["Matrix", "Array"], Fo = ["number", "BigNumber", "bigint", "Fraction"], qe = function(r) {
if (r)
throw new Error(`The global config is readonly.
Please create a mathjs instance if you want to change the default configuration.
Example:
import { create, all } from 'mathjs';
const mathjs = create(all);
mathjs.config({ number: 'BigNumber' });
`);
return Object.freeze(ti);
};
at(qe, ti, {
MATRIX_OPTIONS: yo,
NUMBER_OPTIONS: Fo
});
function sn() {
return !0;
}
function Ye() {
return !1;
}
function _r() {
}
const fn = "Argument is not a typed-function.";
function fi() {
function e(E) {
return typeof E == "object" && E !== null && E.constructor === Object;
}
const r = [{
name: "number",
test: function(E) {
return typeof E == "number";
}
}, {
name: "string",
test: function(E) {
return typeof E == "string";
}
}, {
name: "boolean",
test: function(E) {
return typeof E == "boolean";
}
}, {
name: "Function",
test: function(E) {
return typeof E == "function";
}
}, {
name: "Array",
test: Array.isArray
}, {
name: "Date",
test: function(E) {
return E instanceof Date;
}
}, {
name: "RegExp",
test: function(E) {
return E instanceof RegExp;
}
}, {
name: "Object",
test: e
}, {
name: "null",
test: function(E) {
return E === null;
}
}, {
name: "undefined",
test: function(E) {
return E === void 0;
}
}], t = {
name: "any",
test: sn,
isAny: !0
};
let n, i, u = 0, o = {
createCount: 0
};
function a(E) {
const C = n.get(E);
if (C)
return C;
let N = 'Unknown type "' + E + '"';
const T = E.toLowerCase();
let P;
for (P of i)
if (P.toLowerCase() === T) {
N += '. Did you mean "' + P + '" ?';
break;
}
throw new TypeError(N);
}
function s(E) {
let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "any";
const N = C ? a(C).index : i.length, T = [];
for (let I = 0; I < E.length; ++I) {
if (!E[I] || typeof E[I].name != "string" || typeof E[I].test != "function")
throw new TypeError("Object with properties {name: string, test: function} expected");
const Z = E[I].name;
if (n.has(Z))
throw new TypeError('Duplicate type name "' + Z + '"');
T.push(Z), n.set(Z, {
name: Z,
test: E[I].test,
isAny: E[I].isAny,
index: N + I,
conversionsTo: []
// Newly added type can't have any conversions to it
});
}
const P = i.slice(N);
i = i.slice(0, N).concat(T).concat(P);
for (let I = N + T.length; I < i.length; ++I)
n.get(i[I]).index = I;
}
function f() {
n = /* @__PURE__ */ new Map(), i = [], u = 0, s([t], !1);
}
f(), s(r);
function D() {
let E;
for (E of i)
n.get(E).conversionsTo = [];
u = 0;
}
function l(E) {
const C = i.filter((N) => {
const T = n.get(N);
return !T.isAny && T.test(E);
});
return C.length ? C : ["any"];
}
function h(E) {
return E && typeof E == "function" && "_typedFunctionData" in E;
}
function p(E, C, N) {
if (!h(E))
throw new TypeError(fn);
const T = N && N.exact, P = Array.isArray(C) ? C.join(",") : C, I = A(P), Z = d(I);
if (!T || Z in E.signatures) {
const fe = E._typedFunctionData.signatureMap.get(Z);
if (fe)
return fe;
}
const U = I.length;
let W;
if (T) {
W = [];
let fe;
for (fe in E.signatures)
W.push(E._typedFunctionData.signatureMap.get(fe));
} else
W = E._typedFunctionData.signatures;
for (let fe = 0; fe < U; ++fe) {
const me = I[fe], _e = [];
let He;
for (He of W) {
const Le = b(He.params, fe);
if (!(!Le || me.restParam && !Le.restParam)) {
if (!Le.hasAny) {
const Ke = g(Le);
if (me.types.some((je) => !Ke.has(je.name)))
continue;
}
_e.push(He);
}
}
if (W = _e, W.length === 0) break;
}
let q;
for (q of W)
if (q.params.length <= U)
return q;
throw new TypeError("Signature not found (signature: " + (E.name || "unnamed") + "(" + d(I, ", ") + "))");
}
function m(E, C, N) {
return p(E, C, N).implementation;
}
function c(E, C) {
const N = a(C);
if (N.test(E))
return E;
const T = N.conversionsTo;
if (T.length === 0)
throw new Error("There are no conversions to " + C + " defined.");
for (let P = 0; P < T.length; P++)
if (a(T[P].from).test(E))
return T[P].convert(E);
throw new Error("Cannot convert " + E + " to " + C);
}
function d(E) {
let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ",";
return E.map((N) => N.name).join(C);
}
function v(E) {
const C = E.indexOf("...") === 0, T = (C ? E.length > 3 ? E.slice(3) : "any" : E).split("|").map((U) => a(U.trim()));
let P = !1, I = C ? "..." : "";
return {
types: T.map(function(U) {
return P = U.isAny || P, I += U.name + "|", {
name: U.name,
typeIndex: U.index,
test: U.test,
isAny: U.isAny,
conversion: null,
conversionIndex: -1
};
}),
name: I.slice(0, -1),
// remove trailing '|' from above
hasAny: P,
hasConversion: !1,
restParam: C
};
}
function y(E) {
const C = E.types.map((Z) => Z.name), N = Q(C);
let T = E.hasAny, P = E.name;
const I = N.map(function(Z) {
const U = a(Z.from);
return T = U.isAny || T, P += "|" + Z.from, {
name: Z.from,
typeIndex: U.index,
test: U.test,
isAny: U.isAny,
conversion: Z,
conversionIndex: Z.index
};
});
return {
types: E.types.concat(I),
name: P,
hasAny: T,
hasConversion: I.length > 0,
restParam: E.restParam
};
}
function g(E) {
return E.typeSet || (E.typeSet = /* @__PURE__ */ new Set(), E.types.forEach((C) => E.typeSet.add(C.name))), E.typeSet;
}
function A(E) {
const C = [];
if (typeof E != "string")
throw new TypeError("Signatures must be strings");
const N = E.trim();
if (N === "")
return C;
const T = N.split(",");
for (let P = 0; P < T.length; ++P) {
const I = v(T[P].trim());
if (I.restParam && P !== T.length - 1)
throw new SyntaxError('Unexpected rest parameter "' + T[P] + '": only allowed for the last parameter');
if (I.types.length === 0)
return null;
C.push(I);
}
return C;
}
function F(E) {
const C = le(E);
return C ? C.restParam : !1;
}
function w(E) {
if (!E || E.types.length === 0)
return sn;
if (E.types.length === 1)
return a(E.types[0].name).test;
if (E.types.length === 2) {
const C = a(E.types[0].name).test, N = a(E.types[1].name).test;
return function(P) {
return C(P) || N(P);
};
} else {
const C = E.types.map(function(N) {
return a(N.name).test;
});
return function(T) {
for (let P = 0; P < C.length; P++)
if (C[P](T))
return !0;
return !1;
};
}
}
function _(E) {
let C, N, T;
if (F(E)) {
C = Re(E).map(w);
const P = C.length, I = w(le(E)), Z = function(U) {
for (let W = P; W < U.length; W++)
if (!I(U[W]))
return !1;
return !0;
};
return function(W) {
for (let q = 0; q < C.length; q++)
if (!C[q](W[q]))
return !1;
return Z(W) && W.length >= P + 1;
};
} else
return E.length === 0 ? function(I) {
return I.length === 0;
} : E.length === 1 ? (N = w(E[0]), function(I) {
return N(I[0]) && I.length === 1;
}) : E.length === 2 ? (N = w(E[0]), T = w(E[1]), function(I) {
return N(I[0]) && T(I[1]) && I.length === 2;
}) : (C = E.map(w), function(I) {
for (let Z = 0; Z < C.length; Z++)
if (!C[Z](I[Z]))
return !1;
return I.length === C.length;
});
}
function b(E, C) {
return C < E.length ? E[C] : F(E) ? le(E) : null;
}
function B(E, C) {
const N = b(E, C);
return N ? g(N) : /* @__PURE__ */ new Set();
}
function S(E) {
return E.conversion === null || E.conversion === void 0;
}
function x(E, C) {
const N = /* @__PURE__ */ new Set();
return E.forEach((T) => {
const P = B(T.params, C);
let I;
for (I of P)
N.add(I);
}), N.has("any") ? ["any"] : Array.from(N);
}
function O(E, C, N) {
let T, P;
const I = E || "unnamed";
let Z = N, U;
for (U = 0; U < C.length; U++) {
const me = [];
if (Z.forEach((_e) => {
const He = b(_e.params, U), Le = w(He);
(U < _e.params.length || F(_e.params)) && Le(C[U]) && me.push(_e);
}), me.length === 0) {
if (P = x(Z, U), P.length > 0) {
const _e = l(C[U]);
return T = new TypeError("Unexpected type of argument in function " + I + " (expected: " + P.join(" or ") + ", actual: " + _e.join(" | ") + ", index: " + U + ")"), T.data = {
category: "wrongType",
fn: I,
index: U,
actual: _e,
expected: P
}, T;
}
} else
Z = me;
}
const W = Z.map(function(me) {
return F(me.params) ? 1 / 0 : me.params.length;
});
if (C.length < Math.min.apply(null, W))
return P = x(Z, U), T = new TypeError("Too few arguments in function " + I + " (expected: " + P.join(" or ") + ", index: " + C.length + ")"), T.data = {
category: "tooFewArgs",
fn: I,
index: C.length,
expected: P
}, T;
const q = Math.max.apply(null, W);
if (C.length > q)
return T = new TypeError("Too many arguments in function " + I + " (expected: " + q + ", actual: " + C.length + ")"), T.data = {
category: "tooManyArgs",
fn: I,
index: C.length,
expectedLength: q
}, T;
const fe = [];
for (let me = 0; me < C.length; ++me)
fe.push(l(C[me]).join("|"));
return T = new TypeError('Arguments of type "' + fe.join(", ") + '" do not match any of the defined signatures of function ' + I + "."), T.data = {
category: "mismatch",
actual: fe
}, T;
}
function V(E) {
let C = i.length + 1;
for (let N = 0; N < E.types.length; N++)
S(E.types[N]) && (C = Math.min(C, E.types[N].typeIndex));
return C;
}
function R(E) {
let C = u + 1;
for (let N = 0; N < E.types.length; N++)
S(E.types[N]) || (C = Math.min(C, E.types[N].conversionIndex));
return C;
}
function H(E, C) {
if (E.hasAny) {
if (!C.hasAny)
return 1;
} else if (C.hasAny)
return -1;
if (E.restParam) {
if (!C.restParam)
return 1;
} else if (C.restParam)
return -1;
if (E.hasConversion) {
if (!C.hasConversion)
return 1;
} else if (C.hasConversion)
return -1;
const N = V(E) - V(C);
if (N < 0)
return -1;
if (N > 0)
return 1;
const T = R(E) - R(C);
return T < 0 ? -1 : T > 0 ? 1 : 0;
}
function $(E, C) {
const N = E.params, T = C.params, P = le(N), I = le(T), Z = F(N), U = F(T);
if (Z && P.hasAny) {
if (!U || !I.hasAny)
return 1;
} else if (U && I.hasAny)
return -1;
let W = 0, q = 0, fe;
for (fe of N)
fe.hasAny && ++W, fe.hasConversion && ++q;
let me = 0, _e = 0;
for (fe of T)
fe.hasAny && ++me, fe.hasConversion && ++_e;
if (W !== me)
return W - me;
if (Z && P.hasConversion) {
if (!U || !I.hasConversion)
return 1;
} else if (U && I.hasConversion)
return -1;
if (q !== _e)
return q - _e;
if (Z) {
if (!U)
return 1;
} else if (U)
return -1;
const He = (N.length - T.length) * (Z ? -1 : 1);
if (He !== 0)
return He;
const Le = [];
let Ke = 0;
for (let Cr = 0; Cr < N.length; ++Cr) {
const Qr = H(N[Cr], T[Cr]);
Le.push(Qr), Ke += Qr;
}
if (Ke !== 0)
return Ke;
let je;
for (je of Le)
if (je !== 0)
return je;
return 0;
}
function Q(E) {
if (E.length === 0)
return [];
const C = E.map(a);
E.length > 1 && C.sort((P, I) => P.index - I.index);
let N = C[0].conversionsTo;
if (E.length === 1)
return N;
N = N.concat([]);
const T = new Set(E);
for (let P = 1; P < C.length; ++P) {
let I;
for (I of C[P].conversionsTo)
T.has(I.from) || (N.push(I), T.add(I.from));
}
return N;
}
function J(E, C) {
let N = C;
if (E.some((P) => P.hasConversion)) {
const P = F(E), I = E.map(X);
N = function() {
const U = [], W = P ? arguments.length - 1 : arguments.length;
for (let q = 0; q < W; q++)
U[q] = I[q](arguments[q]);
return P && (U[W] = arguments[W].map(I[W])), C.apply(this, U);
};
}
let T = N;
if (F(E)) {
const P = E.length - 1;
T = function() {
return N.apply(this, se(arguments, 0, P).concat([se(arguments, P)]));
};
}
return T;
}
function X(E) {
let C, N, T, P;
const I = [], Z = [];
switch (E.types.forEach(function(U) {
U.conversion && (I.push(a(U.conversion.from).test), Z.push(U.conversion.convert));
}), Z.length) {
case 0:
return function(W) {
return W;
};
case 1:
return C = I[0], T = Z[0], function(W) {
return C(W) ? T(W) : W;
};
case 2:
return C = I[0], N = I[1], T = Z[0], P = Z[1], function(W) {
return C(W) ? T(W) : N(W) ? P(W) : W;
};
default:
return function(W) {
for (let q = 0; q < Z.length; q++)
if (I[q](W))
return Z[q](W);
return W;
};
}
}
function ee(E) {
function C(N, T, P) {
if (T < N.length) {
const I = N[T];
let Z = [];
if (I.restParam) {
const U = I.types.filter(S);
U.length < I.types.length && Z.push({
types: U,
name: "..." + U.map((W) => W.name).join("|"),
hasAny: U.some((W) => W.isAny),
hasConversion: !1,
restParam: !0
}), Z.push(I);
} else
Z = I.types.map(function(U) {
return {
types: [U],
name: U.name,
hasAny: U.isAny,
hasConversion: U.conversion,
restParam: !1
};
});
return Ie(Z, function(U) {
return C(N, T + 1, P.concat([U]));
});
} else
return [P];
}
return C(E, 0, []);
}
function ue(E, C) {
const N = Math.max(E.length, C.length);
for (let U = 0; U < N; U++) {
const W = B(E, U), q = B(C, U);
let fe = !1, me;
for (me of q)
if (W.has(me)) {
fe = !0;
break;
}
if (!fe)
return !1;
}
const T = E.length, P = C.length, I = F(E), Z = F(C);
return I ? Z ? T === P : P >= T : Z ? T >= P : T === P;
}
function oe(E) {
return E.map((C) => sr(C) ? ke(C.referToSelf.callback) : ar(C) ? Se(C.referTo.references, C.referTo.callback) : C);
}
function ce(E, C, N) {
const T = [];
let P;
for (P of E) {
let I = N[P];
if (typeof I != "number")
throw new TypeError('No definition for referenced signature "' + P + '"');
if (I = C[I], typeof I != "function")
return !1;
T.push(I);
}
return T;
}
function Ce(E, C, N) {
const T = oe(E), P = new Array(T.length).fill(!1);
let I = !0;
for (; I; ) {
I = !1;
let Z = !0;
for (let U = 0; U < T.length; ++U) {
if (P[U]) continue;
const W = T[U];
if (sr(W))
T[U] = W.referToSelf.callback(N), T[U].referToSelf = W.referToSelf, P[U] = !0, Z = !1;
else if (ar(W)) {
const q = ce(W.referTo.references, T, C);
q ? (T[U] = W.referTo.callback.apply(this, q), T[U].referTo = W.referTo, P[U] = !0, Z = !1) : I = !0;
}
}
if (Z && I)
throw new SyntaxError("Circular reference detected in resolving typed.referTo");
}
return T;
}
function be(E) {
const C = /\bthis(\(|\.signatures\b)/;
Object.keys(E).forEach((N) => {
const T = E[N];
if (C.test(T.toString()))
throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.");
});
}
function Ae(E, C) {
if (o.createCount++, Object.keys(C).length === 0)
throw new SyntaxError("No signatures provided");
o.warnAgainstDeprecatedThis && be(C);
const N = [], T = [], P = {}, I = [];
let Z;
for (Z in C) {
if (!Object.prototype.hasOwnProperty.call(C, Z))
continue;
const ae = A(Z);
if (!ae) continue;
N.forEach(function(Lr) {
if (ue(Lr, ae))
throw new TypeError('Conflicting signatures "' + d(Lr) + '" and "' + d(ae) + '".');
}), N.push(ae);
const Ze = T.length;
T.push(C[Z]);
const Iu = ae.map(y);
let Kr;
for (Kr of ee(Iu)) {
const Lr = d(Kr);
I.push({
params: Kr,
name: Lr,
fn: Ze
}), Kr.every((zu) => !zu.hasConversion) && (P[Lr] = Ze);
}
}
I.sort($);
const U = Ce(T, P, Rr);
let W;
for (W in P)
Object.prototype.hasOwnProperty.call(P, W) && (P[W] = U[P[W]]);
const q = [], fe = /* @__PURE__ */ new Map();
for (W of I)
fe.has(W.name) || (W.fn = U[W.fn], q.push(W), fe.set(W.name, W));
const me = q[0] && q[0].params.length <= 2 && !F(q[0].params), _e = q[1] && q[1].params.length <= 2 && !F(q[1].params), He = q[2] && q[2].params.length <= 2 && !F(q[2].params), Le = q[3] && q[3].params.length <= 2 && !F(q[3].params), Ke = q[4] && q[4].params.length <= 2 && !F(q[4].params), je = q[5] && q[5].params.length <= 2 && !F(q[5].params), Cr = me && _e && He && Le && Ke && je;
for (let ae = 0; ae < q.length; ++ae)
q[ae].test = _(q[ae].params);
const Qr = me ? w(q[0].params[0]) : Ye, uu = _e ? w(q[1].params[0]) : Ye, ou = He ? w(q[2].params[0]) : Ye, au = Le ? w(q[3].params[0]) : Ye, su = Ke ? w(q[4].params[0]) : Ye, fu = je ? w(q[5].params[0]) : Ye, cu = me ? w(q[0].params[1]) : Ye, lu = _e ? w(q[1].params[1]) : Ye, hu = He ? w(q[2].params[1]) : Ye, pu = Le ? w(q[3].params[1]) : Ye, mu = Ke ? w(q[4].params[1]) : Ye, Du = je ? w(q[5].params[1]) : Ye;
for (let ae = 0; ae < q.length; ++ae)
q[ae].implementation = J(q[ae].params, q[ae].fn);
const du = me ? q[0].implementation : _r, gu = _e ? q[1].implementation : _r, vu = He ? q[2].implementation : _r, wu = Le ? q[3].implementation : _r, yu = Ke ? q[4].implementation : _r, Fu = je ? q[5].implementation : _r, Eu = me ? q[0].params.length : -1, Au = _e ? q[1].params.length : -1, bu = He ? q[2].params.length : -1, Cu = Le ? q[3].params.length : -1, _u = Ke ? q[4].params.length : -1, Bu = je ? q[5].params.length : -1, Nu = Cr ? 6 : 0, Su = q.length, Mu = q.map((ae) => ae.test), xu = q.map((ae) => ae.implementation), Tu = function() {
for (let Ze = Nu; Ze < Su; Ze++)
if (Mu[Ze](arguments))
return xu[Ze].apply(this, arguments);
return o.onMismatch(E, arguments, q);
};
function Rr(ae, Ze) {
return arguments.length === Eu && Qr(ae) && cu(Ze) ? du.apply(this, arguments) : arguments.length === Au && uu(ae) && lu(Ze) ? gu.apply(this, arguments) : arguments.length === bu && ou(ae) && hu(Ze) ? vu.apply(this, arguments) : arguments.length === Cu && au(ae) && pu(Ze) ? wu.apply(this, arguments) : arguments.length === _u && su(ae) && mu(Ze) ? yu.apply(this, arguments) : arguments.length === Bu && fu(ae) && Du(Ze) ? Fu.apply(this, arguments) : Tu.apply(this, arguments);
}
try {
Object.defineProperty(Rr, "name", {
value: E
});
} catch {
}
return Rr.signatures = P, Rr._typedFunctionData = {
signatures: q,
signatureMap: fe
}, Rr;
}
function ge(E, C, N) {
throw O(E, C, N);
}
function Re(E) {
return se(E, 0, E.length - 1);
}
function le(E) {
return E[E.length - 1];
}
function se(E, C, N) {
return Array.prototype.slice.call(E, C, N);
}
function Je(E, C) {
for (let N = 0; N < E.length; N++)
if (C(E[N]))
return E[N];
}
function Ie(E, C) {
return Array.prototype.concat.apply([], E.map(C));
}
function he() {
const E = Re(arguments).map((N) => d(A(N))), C = le(arguments);
if (typeof C != "function")
throw new TypeError("Callback function expected as last argument");
return Se(E, C);
}
function Se(E, C) {
return {
referTo: {
references: E,
callback: C
}
};
}
function ke(E) {
if (typeof E != "function")
throw new TypeError("Callback function expected as first argument");
return {
referToSelf: {
callback: E
}
};
}
function ar(E) {
return E && typeof E.referTo == "object" && Array.isArray(E.referTo.references) && typeof E.referTo.callback == "function";
}
function sr(E) {
return E && typeof E.referToSelf == "object" && typeof E.referToSelf.callback == "function";
}
function Ar(E, C) {
if (!E)
return C;
if (C && C !== E) {
const N = new Error("Function names do not match (expected: " + E + ", actual: " + C + ")");
throw N.data = {
actual: C,
expected: E
}, N;
}
return E;
}
function br(E) {
let C;
for (const N in E)
Object.prototype.hasOwnProperty.call(E, N) && (h(E[N]) || typeof E[N].signature == "string") && (C = Ar(C, E[N].name));
return C;
}
function Pt(E, C) {
let N;
for (N in C)
if (Object.prototype.hasOwnProperty.call(C, N)) {
if (N in E && C[N] !== E[N]) {
const T = new Error('Signature "' + N + '" is defined twice');
throw T.data = {
signature: N,
sourceFunction: C[N],
destFunction: E[N]
}, T;
}
E[N] = C[N];
}
}
const iu = o;
o = function(E) {
const C = typeof E == "string", N = C ? 1 : 0;
let T = C ? E : "";
const P = {};
for (let I = N; I < arguments.length; ++I) {
const Z = arguments[I];
let U = {}, W;
if (typeof Z == "function" ? (W = Z.name, typeof Z.signature == "string" ? U[Z.signature] = Z : h(Z) && (U = Z.signatures)) : e(Z) && (U = Z, C || (W = br(Z))), Object.keys(U).length === 0) {
const q = new TypeError("Argument to 'typed' at index " + I + " is not a (typed) function, nor an object with signatures as keys and functions as values.");
throw q.data = {
index: I,
argument: Z
}, q;
}
C || (T = Ar(T, W)), Pt(P, U);
}
return Ae(T || "", P);
}, o.create = fi, o.createCount = iu.createCount, o.onMismatch = ge, o.throwMismatchError = ge, o.createError = O, o.clear = f, o.clearConversions = D, o.addTypes = s, o._findType = a, o.referTo = he, o.referToSelf = ke, o.convert = c, o.findSignature = p, o.find = m, o.isTypedFunction = h, o.warnAgainstDeprecatedThis = !0, o.addType = function(E, C) {
let N = "any";
C !== !1 && n.has("Object") && (N = "Object"), o.addTypes([E], N);
};
function an(E) {
if (!E || typeof E.from != "string" || typeof E.to != "string" || typeof E.convert != "function")
throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");
if (E.to === E.from)
throw new SyntaxError('Illegal to define conversion from "' + E.from + '" to itself.');
}
return o.addConversion = function(E) {
let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
override: !1
};
an(E);
const N = a(E.to), T = N.conversionsTo.find((P) => P.from === E.from);
if (T)
if (C && C.override)
o.removeConversion({
from: T.from,
to: E.to,
convert: T.convert
});
else
throw new Error('There is already a conversion from "' + E.from + '" to "' + N.name + '"');
N.conversionsTo.push({
from: E.from,
convert: E.convert,
index: u++
});
}, o.addConversions = function(E, C) {
E.forEach((N) => o.addConversion(N, C));
}, o.removeConversion = function(E) {
an(E);
const C = a(E.to), N = Je(C.conversionsTo, (P) => P.from === E.from);
if (!N)
throw new Error("Attempt to remove nonexistent conversion from " + E.from + " to " + E.to);
if (N.convert !== E.convert)
throw new Error("Conversion to remove does not match existing conversion");
const T = C.conversionsTo.indexOf(N);
C.conversionsTo.splice(T, 1);
}, o.resolve = function(E, C) {
if (!h(E))
throw new TypeError(fn);
const N = E._typedFunctionData.signatures;
for (let T = 0; T < N.length; ++T)
if (N[T].test(C))
return N[T];
return null;
}, o;
}
const ct = fi();
function G(e, r, t, n) {
function i(u) {
var o = wo(u, r.map(bo));
return Eo(e, r, u), t(o);
}
return i.isFactory = !0, i.fn = e, i.dependencies = r.slice().sort(), n && (i.meta = n), i;
}
function Eo(e, r, t) {
var n = r.filter((u) => !Ao(u)).every((u) => t[u] !== void 0);
if (!n) {
var i = r.filter((u) => t[u] === void 0);
throw new Error('Cannot create function "'.concat(e, '", ') + "some dependencies are missing: ".concat(i.map((u) => '"'.concat(u, '"')).join(", "), "."));
}
}
function Ao(e) {
return e && e[0] === "?";
}
function bo(e) {
return e && e[0] === "?" ? e.slice(1) : e;
}
function we(e) {
return typeof e == "boolean" ? !0 : Number.isFinite(e) ? e === Math.round(e) : !1;
}
var Co = Math.log10 || function(r) {
return Math.log(r) / Math.LN10;
};
function qt(e, r, t) {
var n = {
2: "0b",
8: "0o",
16: "0x"
}, i = n[r], u = "";
if (t) {
if (t < 1)
throw new Error("size must be in greater than 0");
if (!we(t))
throw new Error("size must be an integer");
if (e > 2 ** (t - 1) - 1 || e < -(2 ** (t - 1)))
throw new Error("Value must be in range [-2^".concat(t - 1, ", 2^").concat(t - 1, "-1]"));
if (!we(e))
throw new Error("Value must be an integer");
e < 0 && (e = e + 2 ** t), u = "i".concat(t);
}
var o = "";
return e < 0 && (e = -e, o = "-"), "".concat(o).concat(i).concat(e.toString(r)).concat(u);
}
function Wt(e, r) {
if (typeof r == "function")
return r(e);
if (e === 1 / 0)
return "Infinity";
if (e === -1 / 0)
return "-Infinity";
if (isNaN(e))
return "NaN";
var {
notation: t,
precision: n,
wordSize: i
} = ci(r);
switch (t) {
case "fixed":
return li(e, n);
case "exponential":
return hi(e, n);
case "engineering":
return _o(e, n);
case "bin":
return qt(e, 2, i);
case "oct":
return qt(e, 8, i);
case "hex":
return qt(e, 16, i);
case "auto":
return Bo(e, n, r).replace(/((\.\d*?)(0+))($|e)/, function() {
var u = arguments[2], o = arguments[4];
return u !== "." ? u + o : o;
});
default:
throw new Error('Unknown notation "' + t + '". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.');
}
}
function ci(e) {
var r = "auto", t, n;
if (e !== void 0)
if (ne(e))
t = e;
else if (Ee(e))
t = e.toNumber();
else if (jt(e))
e.precision !== void 0 && (t = cn(e.precision, () => {
throw new Error('Option "precision" must be a number or BigNumber');
})), e.wordSize !== void 0 && (n = cn(e.wordSize, () => {
throw new Error('Option "wordSize" must be a number or BigNumber');
})), e.notation && (r = e.notation);
else
throw new Error("Unsupported type of options, number, BigNumber, or object expected");
return {
notation: r,
precision: t,
wordSize: n
};
}
function Gr(e) {
var r = String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);
if (!r)
throw new SyntaxError("Invalid number " + e);
var t = r[1], n = r[2], i = parseFloat(r[4] || "0"), u = n.indexOf(".");
i += u !== -1 ? u - 1 : n.length - 1;
var o = n.replace(".", "").replace(/^0*/, function(a) {
return i -= a.length, "";
}).replace(/0*$/, "").split("").map(function(a) {
return parseInt(a);
});
return o.length === 0 && (o.push(0), i++), {
sign: t,
coefficients: o,
exponent: i
};
}
function _o(e, r) {
if (isNaN(e) || !Number.isFinite(e))
return String(e);
var t = Gr(e), n = _t(t, r), i = n.exponent, u = n.coefficients, o = i % 3 === 0 ? i : i < 0 ? i - 3 - i % 3 : i - i % 3;
if (ne(r))
for (; r > u.length || i - o + 1 > u.length; )
u.push(0);
else
for (var a = Math.abs(i - o) - (u.length - 1), s = 0; s < a; s++)
u.push(0);
for (var f = Math.abs(i - o), D = 1; f > 0; )
D++, f--;
var l = u.slice(D).join(""), h = ne(r) && l.length || l.match(/[1-9]/) ? "." + l : "", p = u.slice(0, D).join("") + h + "e" + (i >= 0 ? "+" : "") + o.toString();
return n.sign + p;
}
function li(e, r) {
if (isNaN(e) || !Number.isFinite(e))
return String(e);
var t = Gr(e), n = typeof r == "number" ? _t(t, t.exponent + 1 + r) : t, i = n.coefficients, u = n.exponent + 1, o = u + (r || 0);
return i.length < o && (i = i.concat(xr(o - i.length))), u < 0 && (i = xr(-u + 1).concat(i), u = 1), u < i.length && i.splice(u, 0, u === 0 ? "0." : "."), n.sign + i.join("");
}
function hi(e, r) {
if (isNaN(e) || !Number.isFinite(Number(e)))
return String(e);
var t = Gr(e), n = r ? _t(t, r) : t, i = n.coefficients, u = n.exponent;
i.length < r && (i = i.concat(xr(r - i.length)));
var o = i.shift();
return n.sign + o + (i.length > 0 ? "." + i.join("") : "") + "e" + (u >= 0 ? "+" : "") + u;
}
function Bo(e, r, t) {
if (isNaN(e) || !Number.isFinite(e))
return String(e);
var n = ln(t?.lowerExp, -3), i = ln(t?.upperExp, 5), u = Gr(e), o = r ? _t(u, r) : u;
if (o.exponent < n || o.exponent >= i)
return hi(e, r);
var a = o.coefficients, s = o.exponent;
a.length < r && (a = a.concat(xr(r - a.length))), a = a.concat(xr(s - a.length + 1 + (a.length < r ? r - a.length : 0))), a = xr(-s).concat(a);
var f = s > 0 ? s : 0;
return f < a.length - 1 && a.splice(f + 1, 0, "."), o.sign + a.join("");
}
function _t(e, r) {
for (var t = {
sign: e.sign,
coefficients: e.coefficients,
exponent: e.exponent
}, n = t.coefficients; r <= 0; )
n.unshift(0), t.exponent++, r++;
if (n.length > r) {
var i = n.splice(r, n.length - r);
if (i[0] >= 5) {
var u = r - 1;
for (n[u]++; n[u] === 10; )
n.pop(), u === 0 && (n.unshift(0), t.exponent++, u++), u--, n[u]++;
}
}
return t;
}
function xr(e) {
for (var r = [], t = 0; t < e; t++)
r.push(0);
return r;
}
function No(e) {
return e.toExponential().replace(/e.*$/, "").replace(/^0\.?0*|\./, "").length;
}
function tr(e, r) {
var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1e-8, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
if (t <= 0)
throw new Error("Relative tolerance must be greater than 0");
if (n < 0)
throw new Error("Absolute tolerance must be at least 0");
return isNaN(e) || isNaN(r) ? !1 : !Number.isFinite(e) || !Number.isFinite(r) ? e === r : e === r ? !0 : Math.abs(e - r) <= Math.max(t * Math.max(Math.abs(e), Math.abs(r)), n);
}
function cn(e, r) {
if (ne(e))
return e;
if (Ee(e))
return e.toNumber();
r();
}
function ln(e, r) {
return ne(e) ? e : Ee(e) ? e.toNumber() : r;
}
var pi = function() {
return pi = ct.create, ct;
}, So = ["?BigNumber", "?Complex", "?DenseMatrix", "?Fraction"], Mo = /* @__PURE__ */ G("typed", So, function(r) {
var {
BigNumber: t,
Complex: n,
DenseMatrix: i,
Fraction: u
} = r, o = pi();
return o.clear(), o.addTypes([
{
name: "number",
test: ne
},
{
name: "Complex",
test: ui
},
{
name: "BigNumber",
test: Ee
},
{
name: "bigint",
test: Lu
},
{
name: "Fraction",
test: oi
},
{
name: "Unit",
test: ai
},
// The following type matches a valid variable name, i.e., an alphanumeric
// string starting with an alphabetic character. It is used (at least)
// in the definition of the derivative() function, as the argument telling
// what to differentiate over must (currently) be a variable.
// TODO: deprecate the identifier type (it's not used anymore, see https://github.com/josdejong/mathjs/issues/3253)
{
name: "identifier",
test: (a) => Te && /^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52