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,379 lines (1,378 loc) • 310 kB
JavaScript
function nt() {
return nt = 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;
}, nt.apply(null, arguments);
}
var ri = {
// 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
};
function ti(e, r) {
if (it(e, r))
return e[r];
throw typeof e[r] == "function" && Tu(e, r) ? new Error('Cannot access method "' + r + '" as a property') : new Error('No access to property "' + r + '"');
}
function ni(e, r, t) {
if (it(e, r))
return e[r] = t, t;
throw new Error('No access to property "' + r + '"');
}
function it(e, r) {
return !Iu(e) && !Array.isArray(e) ? !1 : Rr(zu, r) ? !0 : !(r in Object.prototype || r in Function.prototype);
}
function Tu(e, r) {
return e == null || typeof e[r] != "function" || Rr(e, r) && Object.getPrototypeOf && r in Object.getPrototypeOf(e) ? !1 : Rr(Ou, r) ? !0 : !(r in Object.prototype || r in Function.prototype);
}
function Iu(e) {
return typeof e == "object" && e && e.constructor === Object;
}
var zu = {
length: !0,
name: !0
}, Ou = {
toString: !0,
valueOf: !0,
toLocaleString: !0
};
class $u {
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 ti(this.wrappedObject, r);
}
set(r, t) {
return ni(this.wrappedObject, r, t), this;
}
has(r) {
return it(this.wrappedObject, r) && r in this.wrappedObject;
}
entries() {
return Pu(this.keys(), (r) => [r, this.get(r)]);
}
forEach(r) {
for (var t of this.keys())
r(this.get(t), t, this);
}
delete(r) {
it(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 Pu(e, r) {
return {
next: () => {
var t = e.next();
return t.done ? t : {
value: r(t.value),
done: !1
};
}
};
}
function de(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 Uu(e) {
return typeof e == "bigint";
}
function ii(e) {
return e && typeof e == "object" && Object.getPrototypeOf(e).isComplex === !0 || !1;
}
function ui(e) {
return e && typeof e == "object" && Object.getPrototypeOf(e).isFraction === !0 || !1;
}
function oi(e) {
return e && e.constructor.prototype.isUnit === !0 || !1;
}
function Qe(e) {
return typeof e == "string";
}
var ye = Array.isArray;
function ve(e) {
return e && e.constructor.prototype.isMatrix === !0 || !1;
}
function ut(e) {
return Array.isArray(e) || ve(e);
}
function qu(e) {
return e && e.isDenseMatrix && e.constructor.prototype.isMatrix === !0 || !1;
}
function Ru(e) {
return e && e.isSparseMatrix && e.constructor.prototype.isMatrix === !0 || !1;
}
function ai(e) {
return e && e.constructor.prototype.isRange === !0 || !1;
}
function yt(e) {
return e && e.constructor.prototype.isIndex === !0 || !1;
}
function Lu(e) {
return typeof e == "boolean";
}
function Hu(e) {
return e && e.constructor.prototype.isResultSet === !0 || !1;
}
function Zu(e) {
return e && e.constructor.prototype.isHelp === !0 || !1;
}
function Wu(e) {
return typeof e == "function";
}
function Vu(e) {
return e instanceof Date;
}
function Gu(e) {
return e instanceof RegExp;
}
function Kt(e) {
return !!(e && typeof e == "object" && e.constructor === Object && !ii(e) && !ui(e));
}
function Ju(e) {
return e ? e instanceof Map || e instanceof $u || typeof e.set == "function" && typeof e.get == "function" && typeof e.keys == "function" && typeof e.has == "function" : !1;
}
function Yu(e) {
return e === null;
}
function ku(e) {
return e === void 0;
}
function Xu(e) {
return e && e.isAccessorNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function Qu(e) {
return e && e.isArrayNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function Ku(e) {
return e && e.isAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ju(e) {
return e && e.isBlockNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function eo(e) {
return e && e.isConditionalNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ro(e) {
return e && e.isConstantNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function to(e) {
return e && e.isFunctionAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function no(e) {
return e && e.isFunctionNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function io(e) {
return e && e.isIndexNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function uo(e) {
return e && e.isNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function oo(e) {
return e && e.isObjectNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ao(e) {
return e && e.isOperatorNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function so(e) {
return e && e.isParenthesisNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function fo(e) {
return e && e.isRangeNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function co(e) {
return e && e.isRelationalNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function lo(e) {
return e && e.isSymbolNode === !0 && e.constructor.prototype.isNode === !0 || !1;
}
function ho(e) {
return e && e.constructor.prototype.isChain === !0 || !1;
}
function ir(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 me(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 me(t);
});
if (e instanceof Date) return new Date(e.valueOf());
if (Ee(e)) return e;
if (Kt(e))
return po(e, me);
if (r === "function")
return e;
throw new TypeError("Cannot clone: unknown type of value (value: ".concat(e, ")"));
}
function po(e, r) {
var t = {};
for (var n in e)
Rr(e, n) && (t[n] = r(e[n]));
return t;
}
function Do(e, r) {
for (var t in r)
Rr(r, t) && (e[t] = r[t]);
return e;
}
function mr(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 (!mr(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) || !mr(e[t], r[t]))
return !1;
for (t in r)
if (!(t in e))
return !1;
return !0;
} else
return e === r;
}
}
function Rr(e, r) {
return e && Object.hasOwnProperty.call(e, r);
}
function mo(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 go = ["Matrix", "Array"], vo = ["number", "BigNumber", "Fraction"], Pe = 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(ri);
};
nt(Pe, ri, {
MATRIX_OPTIONS: go,
NUMBER_OPTIONS: vo
});
function an() {
return !0;
}
function Ye() {
return !1;
}
function _r() {
}
const sn = "Argument is not a typed-function.";
function si() {
function e(F) {
return typeof F == "object" && F !== null && F.constructor === Object;
}
const r = [{
name: "number",
test: function(F) {
return typeof F == "number";
}
}, {
name: "string",
test: function(F) {
return typeof F == "string";
}
}, {
name: "boolean",
test: function(F) {
return typeof F == "boolean";
}
}, {
name: "Function",
test: function(F) {
return typeof F == "function";
}
}, {
name: "Array",
test: Array.isArray
}, {
name: "Date",
test: function(F) {
return F instanceof Date;
}
}, {
name: "RegExp",
test: function(F) {
return F instanceof RegExp;
}
}, {
name: "Object",
test: e
}, {
name: "null",
test: function(F) {
return F === null;
}
}, {
name: "undefined",
test: function(F) {
return F === void 0;
}
}], t = {
name: "any",
test: an,
isAny: !0
};
let n, i, u = 0, o = {
createCount: 0
};
function a(F) {
const _ = n.get(F);
if (_)
return _;
let N = 'Unknown type "' + F + '"';
const T = F.toLowerCase();
let $;
for ($ of i)
if ($.toLowerCase() === T) {
N += '. Did you mean "' + $ + '" ?';
break;
}
throw new TypeError(N);
}
function c(F) {
let _ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "any";
const N = _ ? a(_).index : i.length, T = [];
for (let I = 0; I < F.length; ++I) {
if (!F[I] || typeof F[I].name != "string" || typeof F[I].test != "function")
throw new TypeError("Object with properties {name: string, test: function} expected");
const H = F[I].name;
if (n.has(H))
throw new TypeError('Duplicate type name "' + H + '"');
T.push(H), n.set(H, {
name: H,
test: F[I].test,
isAny: F[I].isAny,
index: N + I,
conversionsTo: []
// Newly added type can't have any conversions to it
});
}
const $ = i.slice(N);
i = i.slice(0, N).concat(T).concat($);
for (let I = N + T.length; I < i.length; ++I)
n.get(i[I]).index = I;
}
function l() {
n = /* @__PURE__ */ new Map(), i = [], u = 0, c([t], !1);
}
l(), c(r);
function f() {
let F;
for (F of i)
n.get(F).conversionsTo = [];
u = 0;
}
function h(F) {
const _ = i.filter((N) => {
const T = n.get(N);
return !T.isAny && T.test(F);
});
return _.length ? _ : ["any"];
}
function D(F) {
return F && typeof F == "function" && "_typedFunctionData" in F;
}
function p(F, _, N) {
if (!D(F))
throw new TypeError(sn);
const T = N && N.exact, $ = Array.isArray(_) ? _.join(",") : _, I = A($), H = d(I);
if (!T || H in F.signatures) {
const se = F._typedFunctionData.signatureMap.get(H);
if (se)
return se;
}
const U = I.length;
let Z;
if (T) {
Z = [];
let se;
for (se in F.signatures)
Z.push(F._typedFunctionData.signatureMap.get(se));
} else
Z = F._typedFunctionData.signatures;
for (let se = 0; se < U; ++se) {
const pe = I[se], _e = [];
let Le;
for (Le of Z) {
const Re = b(Le.params, se);
if (!(!Re || pe.restParam && !Re.restParam)) {
if (!Re.hasAny) {
const Ke = v(Re);
if (pe.types.some((je) => !Ke.has(je.name)))
continue;
}
_e.push(Le);
}
}
if (Z = _e, Z.length === 0) break;
}
let P;
for (P of Z)
if (P.params.length <= U)
return P;
throw new TypeError("Signature not found (signature: " + (F.name || "unnamed") + "(" + d(I, ", ") + "))");
}
function m(F, _, N) {
return p(F, _, N).implementation;
}
function s(F, _) {
const N = a(_);
if (N.test(F))
return F;
const T = N.conversionsTo;
if (T.length === 0)
throw new Error("There are no conversions to " + _ + " defined.");
for (let $ = 0; $ < T.length; $++)
if (a(T[$].from).test(F))
return T[$].convert(F);
throw new Error("Cannot convert " + F + " to " + _);
}
function d(F) {
let _ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ",";
return F.map((N) => N.name).join(_);
}
function g(F) {
const _ = F.indexOf("...") === 0, T = (_ ? F.length > 3 ? F.slice(3) : "any" : F).split("|").map((U) => a(U.trim()));
let $ = !1, I = _ ? "..." : "";
return {
types: T.map(function(U) {
return $ = U.isAny || $, 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: $,
hasConversion: !1,
restParam: _
};
}
function E(F) {
const _ = F.types.map((H) => H.name), N = Q(_);
let T = F.hasAny, $ = F.name;
const I = N.map(function(H) {
const U = a(H.from);
return T = U.isAny || T, $ += "|" + H.from, {
name: H.from,
typeIndex: U.index,
test: U.test,
isAny: U.isAny,
conversion: H,
conversionIndex: H.index
};
});
return {
types: F.types.concat(I),
name: $,
hasAny: T,
hasConversion: I.length > 0,
restParam: F.restParam
};
}
function v(F) {
return F.typeSet || (F.typeSet = /* @__PURE__ */ new Set(), F.types.forEach((_) => F.typeSet.add(_.name))), F.typeSet;
}
function A(F) {
const _ = [];
if (typeof F != "string")
throw new TypeError("Signatures must be strings");
const N = F.trim();
if (N === "")
return _;
const T = N.split(",");
for (let $ = 0; $ < T.length; ++$) {
const I = g(T[$].trim());
if (I.restParam && $ !== T.length - 1)
throw new SyntaxError('Unexpected rest parameter "' + T[$] + '": only allowed for the last parameter');
if (I.types.length === 0)
return null;
_.push(I);
}
return _;
}
function y(F) {
const _ = ce(F);
return _ ? _.restParam : !1;
}
function w(F) {
if (!F || F.types.length === 0)
return an;
if (F.types.length === 1)
return a(F.types[0].name).test;
if (F.types.length === 2) {
const _ = a(F.types[0].name).test, N = a(F.types[1].name).test;
return function($) {
return _($) || N($);
};
} else {
const _ = F.types.map(function(N) {
return a(N.name).test;
});
return function(T) {
for (let $ = 0; $ < _.length; $++)
if (_[$](T))
return !0;
return !1;
};
}
}
function C(F) {
let _, N, T;
if (y(F)) {
_ = qe(F).map(w);
const $ = _.length, I = w(ce(F)), H = function(U) {
for (let Z = $; Z < U.length; Z++)
if (!I(U[Z]))
return !1;
return !0;
};
return function(Z) {
for (let P = 0; P < _.length; P++)
if (!_[P](Z[P]))
return !1;
return H(Z) && Z.length >= $ + 1;
};
} else
return F.length === 0 ? function(I) {
return I.length === 0;
} : F.length === 1 ? (N = w(F[0]), function(I) {
return N(I[0]) && I.length === 1;
}) : F.length === 2 ? (N = w(F[0]), T = w(F[1]), function(I) {
return N(I[0]) && T(I[1]) && I.length === 2;
}) : (_ = F.map(w), function(I) {
for (let H = 0; H < _.length; H++)
if (!_[H](I[H]))
return !1;
return I.length === _.length;
});
}
function b(F, _) {
return _ < F.length ? F[_] : y(F) ? ce(F) : null;
}
function B(F, _) {
const N = b(F, _);
return N ? v(N) : /* @__PURE__ */ new Set();
}
function M(F) {
return F.conversion === null || F.conversion === void 0;
}
function S(F, _) {
const N = /* @__PURE__ */ new Set();
return F.forEach((T) => {
const $ = B(T.params, _);
let I;
for (I of $)
N.add(I);
}), N.has("any") ? ["any"] : Array.from(N);
}
function R(F, _, N) {
let T, $;
const I = F || "unnamed";
let H = N, U;
for (U = 0; U < _.length; U++) {
const pe = [];
if (H.forEach((_e) => {
const Le = b(_e.params, U), Re = w(Le);
(U < _e.params.length || y(_e.params)) && Re(_[U]) && pe.push(_e);
}), pe.length === 0) {
if ($ = S(H, U), $.length > 0) {
const _e = h(_[U]);
return T = new TypeError("Unexpected type of argument in function " + I + " (expected: " + $.join(" or ") + ", actual: " + _e.join(" | ") + ", index: " + U + ")"), T.data = {
category: "wrongType",
fn: I,
index: U,
actual: _e,
expected: $
}, T;
}
} else
H = pe;
}
const Z = H.map(function(pe) {
return y(pe.params) ? 1 / 0 : pe.params.length;
});
if (_.length < Math.min.apply(null, Z))
return $ = S(H, U), T = new TypeError("Too few arguments in function " + I + " (expected: " + $.join(" or ") + ", index: " + _.length + ")"), T.data = {
category: "tooFewArgs",
fn: I,
index: _.length,
expected: $
}, T;
const P = Math.max.apply(null, Z);
if (_.length > P)
return T = new TypeError("Too many arguments in function " + I + " (expected: " + P + ", actual: " + _.length + ")"), T.data = {
category: "tooManyArgs",
fn: I,
index: _.length,
expectedLength: P
}, T;
const se = [];
for (let pe = 0; pe < _.length; ++pe)
se.push(h(_[pe]).join("|"));
return T = new TypeError('Arguments of type "' + se.join(", ") + '" do not match any of the defined signatures of function ' + I + "."), T.data = {
category: "mismatch",
actual: se
}, T;
}
function V(F) {
let _ = i.length + 1;
for (let N = 0; N < F.types.length; N++)
M(F.types[N]) && (_ = Math.min(_, F.types[N].typeIndex));
return _;
}
function q(F) {
let _ = u + 1;
for (let N = 0; N < F.types.length; N++)
M(F.types[N]) || (_ = Math.min(_, F.types[N].conversionIndex));
return _;
}
function W(F, _) {
if (F.hasAny) {
if (!_.hasAny)
return 1;
} else if (_.hasAny)
return -1;
if (F.restParam) {
if (!_.restParam)
return 1;
} else if (_.restParam)
return -1;
if (F.hasConversion) {
if (!_.hasConversion)
return 1;
} else if (_.hasConversion)
return -1;
const N = V(F) - V(_);
if (N < 0)
return -1;
if (N > 0)
return 1;
const T = q(F) - q(_);
return T < 0 ? -1 : T > 0 ? 1 : 0;
}
function O(F, _) {
const N = F.params, T = _.params, $ = ce(N), I = ce(T), H = y(N), U = y(T);
if (H && $.hasAny) {
if (!U || !I.hasAny)
return 1;
} else if (U && I.hasAny)
return -1;
let Z = 0, P = 0, se;
for (se of N)
se.hasAny && ++Z, se.hasConversion && ++P;
let pe = 0, _e = 0;
for (se of T)
se.hasAny && ++pe, se.hasConversion && ++_e;
if (Z !== pe)
return Z - pe;
if (H && $.hasConversion) {
if (!U || !I.hasConversion)
return 1;
} else if (U && I.hasConversion)
return -1;
if (P !== _e)
return P - _e;
if (H) {
if (!U)
return 1;
} else if (U)
return -1;
const Le = (N.length - T.length) * (H ? -1 : 1);
if (Le !== 0)
return Le;
const Re = [];
let Ke = 0;
for (let Cr = 0; Cr < N.length; ++Cr) {
const kr = W(N[Cr], T[Cr]);
Re.push(kr), Ke += kr;
}
if (Ke !== 0)
return Ke;
let je;
for (je of Re)
if (je !== 0)
return je;
return 0;
}
function Q(F) {
if (F.length === 0)
return [];
const _ = F.map(a);
F.length > 1 && _.sort(($, I) => $.index - I.index);
let N = _[0].conversionsTo;
if (F.length === 1)
return N;
N = N.concat([]);
const T = new Set(F);
for (let $ = 1; $ < _.length; ++$) {
let I;
for (I of _[$].conversionsTo)
T.has(I.from) || (N.push(I), T.add(I.from));
}
return N;
}
function Y(F, _) {
let N = _;
if (F.some(($) => $.hasConversion)) {
const $ = y(F), I = F.map(J);
N = function() {
const U = [], Z = $ ? arguments.length - 1 : arguments.length;
for (let P = 0; P < Z; P++)
U[P] = I[P](arguments[P]);
return $ && (U[Z] = arguments[Z].map(I[Z])), _.apply(this, U);
};
}
let T = N;
if (y(F)) {
const $ = F.length - 1;
T = function() {
return N.apply(this, ae(arguments, 0, $).concat([ae(arguments, $)]));
};
}
return T;
}
function J(F) {
let _, N, T, $;
const I = [], H = [];
switch (F.types.forEach(function(U) {
U.conversion && (I.push(a(U.conversion.from).test), H.push(U.conversion.convert));
}), H.length) {
case 0:
return function(Z) {
return Z;
};
case 1:
return _ = I[0], T = H[0], function(Z) {
return _(Z) ? T(Z) : Z;
};
case 2:
return _ = I[0], N = I[1], T = H[0], $ = H[1], function(Z) {
return _(Z) ? T(Z) : N(Z) ? $(Z) : Z;
};
default:
return function(Z) {
for (let P = 0; P < H.length; P++)
if (I[P](Z))
return H[P](Z);
return Z;
};
}
}
function ee(F) {
function _(N, T, $) {
if (T < N.length) {
const I = N[T];
let H = [];
if (I.restParam) {
const U = I.types.filter(M);
U.length < I.types.length && H.push({
types: U,
name: "..." + U.map((Z) => Z.name).join("|"),
hasAny: U.some((Z) => Z.isAny),
hasConversion: !1,
restParam: !0
}), H.push(I);
} else
H = I.types.map(function(U) {
return {
types: [U],
name: U.name,
hasAny: U.isAny,
hasConversion: U.conversion,
restParam: !1
};
});
return Te(H, function(U) {
return _(N, T + 1, $.concat([U]));
});
} else
return [$];
}
return _(F, 0, []);
}
function oe(F, _) {
const N = Math.max(F.length, _.length);
for (let U = 0; U < N; U++) {
const Z = B(F, U), P = B(_, U);
let se = !1, pe;
for (pe of P)
if (Z.has(pe)) {
se = !0;
break;
}
if (!se)
return !1;
}
const T = F.length, $ = _.length, I = y(F), H = y(_);
return I ? H ? T === $ : $ >= T : H ? T >= $ : T === $;
}
function ie(F) {
return F.map((_) => sr(_) ? Je(_.referToSelf.callback) : ar(_) ? Me(_.referTo.references, _.referTo.callback) : _);
}
function fe(F, _, N) {
const T = [];
let $;
for ($ of F) {
let I = N[$];
if (typeof I != "number")
throw new TypeError('No definition for referenced signature "' + $ + '"');
if (I = _[I], typeof I != "function")
return !1;
T.push(I);
}
return T;
}
function Ce(F, _, N) {
const T = ie(F), $ = new Array(T.length).fill(!1);
let I = !0;
for (; I; ) {
I = !1;
let H = !0;
for (let U = 0; U < T.length; ++U) {
if ($[U]) continue;
const Z = T[U];
if (sr(Z))
T[U] = Z.referToSelf.callback(N), T[U].referToSelf = Z.referToSelf, $[U] = !0, H = !1;
else if (ar(Z)) {
const P = fe(Z.referTo.references, T, _);
P ? (T[U] = Z.referTo.callback.apply(this, P), T[U].referTo = Z.referTo, $[U] = !0, H = !1) : I = !0;
}
}
if (H && I)
throw new SyntaxError("Circular reference detected in resolving typed.referTo");
}
return T;
}
function be(F) {
const _ = /\bthis(\(|\.signatures\b)/;
Object.keys(F).forEach((N) => {
const T = F[N];
if (_.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(F, _) {
if (o.createCount++, Object.keys(_).length === 0)
throw new SyntaxError("No signatures provided");
o.warnAgainstDeprecatedThis && be(_);
const N = [], T = [], $ = {}, I = [];
let H;
for (H in _) {
if (!Object.prototype.hasOwnProperty.call(_, H))
continue;
const ue = A(H);
if (!ue) continue;
N.forEach(function(Ur) {
if (oe(Ur, ue))
throw new TypeError('Conflicting signatures "' + d(Ur) + '" and "' + d(ue) + '".');
}), N.push(ue);
const He = T.length;
T.push(_[H]);
const Su = ue.map(E);
let Xr;
for (Xr of ee(Su)) {
const Ur = d(Xr);
I.push({
params: Xr,
name: Ur,
fn: He
}), Xr.every((xu) => !xu.hasConversion) && ($[Ur] = He);
}
}
I.sort(O);
const U = Ce(T, $, Pr);
let Z;
for (Z in $)
Object.prototype.hasOwnProperty.call($, Z) && ($[Z] = U[$[Z]]);
const P = [], se = /* @__PURE__ */ new Map();
for (Z of I)
se.has(Z.name) || (Z.fn = U[Z.fn], P.push(Z), se.set(Z.name, Z));
const pe = P[0] && P[0].params.length <= 2 && !y(P[0].params), _e = P[1] && P[1].params.length <= 2 && !y(P[1].params), Le = P[2] && P[2].params.length <= 2 && !y(P[2].params), Re = P[3] && P[3].params.length <= 2 && !y(P[3].params), Ke = P[4] && P[4].params.length <= 2 && !y(P[4].params), je = P[5] && P[5].params.length <= 2 && !y(P[5].params), Cr = pe && _e && Le && Re && Ke && je;
for (let ue = 0; ue < P.length; ++ue)
P[ue].test = C(P[ue].params);
const kr = pe ? w(P[0].params[0]) : Ye, tu = _e ? w(P[1].params[0]) : Ye, nu = Le ? w(P[2].params[0]) : Ye, iu = Re ? w(P[3].params[0]) : Ye, uu = Ke ? w(P[4].params[0]) : Ye, ou = je ? w(P[5].params[0]) : Ye, au = pe ? w(P[0].params[1]) : Ye, su = _e ? w(P[1].params[1]) : Ye, fu = Le ? w(P[2].params[1]) : Ye, cu = Re ? w(P[3].params[1]) : Ye, lu = Ke ? w(P[4].params[1]) : Ye, hu = je ? w(P[5].params[1]) : Ye;
for (let ue = 0; ue < P.length; ++ue)
P[ue].implementation = Y(P[ue].params, P[ue].fn);
const pu = pe ? P[0].implementation : _r, Du = _e ? P[1].implementation : _r, mu = Le ? P[2].implementation : _r, du = Re ? P[3].implementation : _r, gu = Ke ? P[4].implementation : _r, vu = je ? P[5].implementation : _r, wu = pe ? P[0].params.length : -1, yu = _e ? P[1].params.length : -1, Fu = Le ? P[2].params.length : -1, Eu = Re ? P[3].params.length : -1, Au = Ke ? P[4].params.length : -1, bu = je ? P[5].params.length : -1, Cu = Cr ? 6 : 0, _u = P.length, Bu = P.map((ue) => ue.test), Nu = P.map((ue) => ue.implementation), Mu = function() {
for (let He = Cu; He < _u; He++)
if (Bu[He](arguments))
return Nu[He].apply(this, arguments);
return o.onMismatch(F, arguments, P);
};
function Pr(ue, He) {
return arguments.length === wu && kr(ue) && au(He) ? pu.apply(this, arguments) : arguments.length === yu && tu(ue) && su(He) ? Du.apply(this, arguments) : arguments.length === Fu && nu(ue) && fu(He) ? mu.apply(this, arguments) : arguments.length === Eu && iu(ue) && cu(He) ? du.apply(this, arguments) : arguments.length === Au && uu(ue) && lu(He) ? gu.apply(this, arguments) : arguments.length === bu && ou(ue) && hu(He) ? vu.apply(this, arguments) : Mu.apply(this, arguments);
}
try {
Object.defineProperty(Pr, "name", {
value: F
});
} catch {
}
return Pr.signatures = $, Pr._typedFunctionData = {
signatures: P,
signatureMap: se
}, Pr;
}
function we(F, _, N) {
throw R(F, _, N);
}
function qe(F) {
return ae(F, 0, F.length - 1);
}
function ce(F) {
return F[F.length - 1];
}
function ae(F, _, N) {
return Array.prototype.slice.call(F, _, N);
}
function Ge(F, _) {
for (let N = 0; N < F.length; N++)
if (_(F[N]))
return F[N];
}
function Te(F, _) {
return Array.prototype.concat.apply([], F.map(_));
}
function le() {
const F = qe(arguments).map((N) => d(A(N))), _ = ce(arguments);
if (typeof _ != "function")
throw new TypeError("Callback function expected as last argument");
return Me(F, _);
}
function Me(F, _) {
return {
referTo: {
references: F,
callback: _
}
};
}
function Je(F) {
if (typeof F != "function")
throw new TypeError("Callback function expected as first argument");
return {
referToSelf: {
callback: F
}
};
}
function ar(F) {
return F && typeof F.referTo == "object" && Array.isArray(F.referTo.references) && typeof F.referTo.callback == "function";
}
function sr(F) {
return F && typeof F.referToSelf == "object" && typeof F.referToSelf.callback == "function";
}
function Ar(F, _) {
if (!F)
return _;
if (_ && _ !== F) {
const N = new Error("Function names do not match (expected: " + F + ", actual: " + _ + ")");
throw N.data = {
actual: _,
expected: F
}, N;
}
return F;
}
function br(F) {
let _;
for (const N in F)
Object.prototype.hasOwnProperty.call(F, N) && (D(F[N]) || typeof F[N].signature == "string") && (_ = Ar(_, F[N].name));
return _;
}
function zt(F, _) {
let N;
for (N in _)
if (Object.prototype.hasOwnProperty.call(_, N)) {
if (N in F && _[N] !== F[N]) {
const T = new Error('Signature "' + N + '" is defined twice');
throw T.data = {
signature: N,
sourceFunction: _[N],
destFunction: F[N]
}, T;
}
F[N] = _[N];
}
}
const ru = o;
o = function(F) {
const _ = typeof F == "string", N = _ ? 1 : 0;
let T = _ ? F : "";
const $ = {};
for (let I = N; I < arguments.length; ++I) {
const H = arguments[I];
let U = {}, Z;
if (typeof H == "function" ? (Z = H.name, typeof H.signature == "string" ? U[H.signature] = H : D(H) && (U = H.signatures)) : e(H) && (U = H, _ || (Z = br(H))), Object.keys(U).length === 0) {
const P = 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 P.data = {
index: I,
argument: H
}, P;
}
_ || (T = Ar(T, Z)), zt($, U);
}
return Ae(T || "", $);
}, o.create = si, o.createCount = ru.createCount, o.onMismatch = we, o.throwMismatchError = we, o.createError = R, o.clear = l, o.clearConversions = f, o.addTypes = c, o._findType = a, o.referTo = le, o.referToSelf = Je, o.convert = s, o.findSignature = p, o.find = m, o.isTypedFunction = D, o.warnAgainstDeprecatedThis = !0, o.addType = function(F, _) {
let N = "any";
_ !== !1 && n.has("Object") && (N = "Object"), o.addTypes([F], N);
};
function on(F) {
if (!F || typeof F.from != "string" || typeof F.to != "string" || typeof F.convert != "function")
throw new TypeError("Object with properties {from: string, to: string, convert: function} expected");
if (F.to === F.from)
throw new SyntaxError('Illegal to define conversion from "' + F.from + '" to itself.');
}
return o.addConversion = function(F) {
let _ = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
override: !1
};
on(F);
const N = a(F.to), T = N.conversionsTo.find(($) => $.from === F.from);
if (T)
if (_ && _.override)
o.removeConversion({
from: T.from,
to: F.to,
convert: T.convert
});
else
throw new Error('There is already a conversion from "' + F.from + '" to "' + N.name + '"');
N.conversionsTo.push({
from: F.from,
convert: F.convert,
index: u++
});
}, o.addConversions = function(F, _) {
F.forEach((N) => o.addConversion(N, _));
}, o.removeConversion = function(F) {
on(F);
const _ = a(F.to), N = Ge(_.conversionsTo, ($) => $.from === F.from);
if (!N)
throw new Error("Attempt to remove nonexistent conversion from " + F.from + " to " + F.to);
if (N.convert !== F.convert)
throw new Error("Conversion to remove does not match existing conversion");
const T = _.conversionsTo.indexOf(N);
_.conversionsTo.splice(T, 1);
}, o.resolve = function(F, _) {
if (!D(F))
throw new TypeError(sn);
const N = F._typedFunctionData.signatures;
for (let T = 0; T < N.length; ++T)
if (N[T].test(_))
return N[T];
return null;
}, o;
}
const ot = si();
function G(e, r, t, n) {
function i(u) {
var o = mo(u, r.map(Fo));
return wo(e, r, u), t(o);
}
return i.isFactory = !0, i.fn = e, i.dependencies = r.slice().sort(), n && (i.meta = n), i;
}
function wo(e, r, t) {
var n = r.filter((u) => !yo(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 yo(e) {
return e && e[0] === "?";
}
function Fo(e) {
return e && e[0] === "?" ? e.slice(1) : e;
}
function ge(e) {
return typeof e == "boolean" ? !0 : isFinite(e) ? e === Math.round(e) : !1;
}
var Eo = Math.log10 || function(r) {
return Math.log(r) / Math.LN10;
};
function Ot(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 (!ge(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 (!ge(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 Zt(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
} = fi(r);
switch (t) {
case "fixed":
return ci(e, n);
case "exponential":
return li(e, n);
case "engineering":
return Ao(e, n);
case "bin":
return Ot(e, 2, i);
case "oct":
return Ot(e, 8, i);
case "hex":
return Ot(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 fi(e) {
var r = "auto", t, n;
if (e !== void 0)
if (de(e))
t = e;
else if (Ee(e))
t = e.toNumber();
else if (Kt(e))
e.precision !== void 0 && (t = fn(e.precision, () => {
throw new Error('Option "precision" must be a number or BigNumber');
})), e.wordSize !== void 0 && (n = fn(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 Zr(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 Ao(e, r) {
if (isNaN(e) || !isFinite(e))
return String(e);
var t = Zr(e), n = Ft(t, r), i = n.exponent, u = n.coefficients, o = i % 3 === 0 ? i : i < 0 ? i - 3 - i % 3 : i - i % 3;
if (de(r))
for (; r > u.length || i - o + 1 > u.length; )
u.push(0);
else
for (var a = Math.abs(i - o) - (u.length - 1), c = 0; c < a; c++)
u.push(0);
for (var l = Math.abs(i - o), f = 1; l > 0; )
f++, l--;
var h = u.slice(f).join(""), D = de(r) && h.length || h.match(/[1-9]/) ? "." + h : "", p = u.slice(0, f).join("") + D + "e" + (i >= 0 ? "+" : "") + o.toString();
return n.sign + p;
}
function ci(e, r) {
if (isNaN(e) || !isFinite(e))
return String(e);
var t = Zr(e), n = typeof r == "number" ? Ft(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 li(e, r) {
if (isNaN(e) || !isFinite(e))
return String(e);
var t = Zr(e), n = r ? Ft(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) || !isFinite(e))
return String(e);
var n = cn(t?.lowerExp, -3), i = cn(t?.upperExp, 5), u = Zr(e), o = r ? Ft(u, r) : u;
if (o.exponent < n || o.exponent >= i)
return li(e, r);
var a = o.coefficients, c = o.exponent;
a.length < r && (a = a.concat(xr(r - a.length))), a = a.concat(xr(c - a.length + 1 + (a.length < r ? r - a.length : 0))), a = xr(-c).concat(a);
var l = c > 0 ? c : 0;
return l < a.length - 1 && a.splice(l + 1, 0, "."), o.sign + a.join("");
}
function Ft(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 Co(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 : !isFinite(e) || !isFinite(r) ? e === r : e === r ? !0 : Math.abs(e - r) <= Math.max(t * Math.max(Math.abs(e), Math.abs(r)), n);
}
function fn(e, r) {
if (de(e))
return e;
if (Ee(e))
return e.toNumber();
r();
}
function cn(e, r) {
return de(e) ? e : Ee(e) ? e.toNumber() : r;
}
var hi = function() {
return hi = ot.create, ot;
}, _o = ["?BigNumber", "?Complex", "?DenseMatrix", "?Fraction"], Bo = /* @__PURE__ */ G("typed", _o, function(r) {
var {
BigNumber: t,
Complex: n,
DenseMatrix: i,
Fraction: u
} = r, o = hi();
return o.clear(), o.addTypes([
{
name: "number",
test: de
},
{
name: "Complex",
test: ii
},
{
name: "BigNumber",
test: Ee
},
{
name: "bigint",
test: Uu
},
{
name: "Fraction",
test: ui
},
{
name: "Unit",
test: oi
},
// 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) => Qe && /^(?:[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\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-